/// <reference types="@nativescript/objc-node-api" />

declare const ar_authorization_status_t: {
  ar_authorization_status_not_determined: 0,
  ar_authorization_status_allowed: 1,
  ar_authorization_status_denied: 2,
};

declare const ar_device_anchor_query_status_t: {
  ar_device_anchor_query_status_success: 0,
  ar_device_anchor_query_status_failure: 1,
};

declare const ar_session_error_code_t: {
  ar_session_error_code_data_provider_not_authorized: 100,
  ar_session_error_code_data_provider_failed_to_run: 101,
};

declare const ar_data_provider_state_t: {
  ar_data_provider_state_initialized: 0,
  ar_data_provider_state_running: 1,
  ar_data_provider_state_paused: 2,
  ar_data_provider_state_stopped: 3,
};

declare const ar_device_anchor_tracking_state_t: {
  ar_device_anchor_tracking_state_untracked: 0,
  ar_device_anchor_tracking_state_orientation_tracked: 1,
  ar_device_anchor_tracking_state_tracked: 2,
};

declare const ar_authorization_type_t: {
  ar_authorization_type_none: 0,
  ar_authorization_type_hand_tracking: 1,
  ar_authorization_type_world_sensing: 2,
  ar_authorization_type_camera_access: 8,
};

declare const ar_world_tracking_error_code_t: {
  ar_world_tracking_error_code_add_anchor_failed: 200,
  ar_world_tracking_error_code_anchor_max_limit_reached: 201,
  ar_world_tracking_error_code_remove_anchor_failed: 202,
};

declare function ar_retain(object: interop.PointerConvertible): interop.Pointer;

declare function ar_release(object: interop.PointerConvertible): void;

declare interface OS_ar_world_tracking_provider extends OS_ar_data_provider {
}

declare class OS_ar_world_tracking_provider extends NativeObject implements OS_ar_world_tracking_provider {
}

declare interface OS_ar_world_tracking_configuration extends NSObjectProtocol {
}

declare class OS_ar_world_tracking_configuration extends NativeObject implements OS_ar_world_tracking_configuration {
}

declare interface OS_ar_world_anchor extends OS_ar_trackable_anchor {
}

declare class OS_ar_world_anchor extends NativeObject implements OS_ar_world_anchor {
}

declare interface OS_ar_strings extends NSObjectProtocol {
}

declare class OS_ar_strings extends NativeObject implements OS_ar_strings {
}

declare interface OS_ar_session extends NSObjectProtocol {
}

declare class OS_ar_session extends NativeObject implements OS_ar_session {
}

declare interface OS_ar_device extends NSObjectProtocol {
}

declare class OS_ar_device extends NativeObject implements OS_ar_device {
}

declare interface OS_ar_error extends NSObjectProtocol {
}

declare class OS_ar_error extends NativeObject implements OS_ar_error {
}

declare interface OS_ar_trackable_anchor extends OS_ar_anchor {
}

declare class OS_ar_trackable_anchor extends NativeObject implements OS_ar_trackable_anchor {
}

declare interface OS_ar_anchor extends NSObjectProtocol {
}

declare class OS_ar_anchor extends NativeObject implements OS_ar_anchor {
}

declare interface OS_ar_data_provider extends NSObjectProtocol {
}

declare class OS_ar_data_provider extends NativeObject implements OS_ar_data_provider {
}

declare interface OS_ar_authorization_results extends NSObjectProtocol {
}

declare class OS_ar_authorization_results extends NativeObject implements OS_ar_authorization_results {
}

declare interface OS_ar_device_anchor extends OS_ar_trackable_anchor {
}

declare class OS_ar_device_anchor extends NativeObject implements OS_ar_device_anchor {
}

declare interface OS_ar_world_anchors extends NSObjectProtocol {
}

declare class OS_ar_world_anchors extends NativeObject implements OS_ar_world_anchors {
}

declare interface OS_ar_authorization_result extends NSObjectProtocol {
}

declare class OS_ar_authorization_result extends NativeObject implements OS_ar_authorization_result {
}

declare interface OS_ar_data_providers extends NSObjectProtocol {
}

declare class OS_ar_data_providers extends NativeObject implements OS_ar_data_providers {
}

