interface IVpsColocalizerNativeInterface (Niantic.Experimental.ARDK.SharedAR.IVpsColocalizerNativeInterface)

interface IVpsColocalizerNativeInterface {
    // methods

    delegate void ColocalizationStateChangedCallbackType(
        IntPtr application_handle,
        byte state,
        byte failure_code,
        byte error_code
    );

    byte VpsColocalizer_AlignedPoseToLocal(
        IntPtr nativeHandle,
        float[] alignedPose,
        float[] outPose
    );

    void VpsColocalizer_GetAlignedSpaceOrigin(IntPtr nativeHandle, float[] outPose);

    IntPtr VpsColocalizer_Initialize(
        byte[] stageIdentifier,
        IntPtr networkingHandle,
        byte[] data,
        ulong dataSize
    );

    byte VpsColocalizer_LocalPoseToAligned(
        IntPtr nativeHandle,
        float[] localPose,
        float[] outPose
    );

    void VpsColocalizer_Release(IntPtr nativeHandle);

    void VpsColocalizer_SetColocalizationStateCallback(
        IntPtr applicationHandle,
        IntPtr nativeHandle,
        ColocalizationStateChangedCallbackType callback
    );

    void VpsColocalizer_StartColocalization(IntPtr nativeHandle);
};

// direct descendants

class NarVpsColocalizerNativeAPI;