import type { NobjcObject } from "objc-js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NIConfiguration } from "./NIConfiguration.js";
import type { _NIDeviceCapability } from "./NIDeviceCapability.js";
import type { _NIDiscoveryToken } from "./NIDiscoveryToken.js";
import type { _NINearbyObject } from "./NINearbyObject.js";
import type { _NISessionDelegate } from "./NISessionDelegate.js";
import type { simd_float4x4 } from "../structs/simd_float4x4.js";
export declare class _NISession extends _NSObject {
    static alloc(): _NISession;
    static new(): _NISession;
    init(): _NISession;
    /**
     * Whether or not this device is capable of participating in a nearby interaction session.
     * @deprecated Use deviceCapabilities property and check the supportsPreciseDistanceMeasurement property
     */
    static supported(): boolean;
    /**
     * Get the protocol that describes nearby interaction capabilities on this device. @discussion Detailed description on the capability protocol is in NIDeviceCapability.h.
     */
    static deviceCapabilities(): _NIDeviceCapability;
    /**
     * Start a nearby interaction session. @param configuration Nearby interaction configuration for this session. Both devices must call -runWithConfiguration: with a valid configuration identifying the other device in order to receive nearby object updates.
     */
    runWithConfiguration$(configuration: _NIConfiguration): void;
    /**
     * Pause an ongoing nearby interaction session. @discussion Paused sessions may be restarted by calling -runWithConfiguration:. The same local discoveryToken will be used.
     */
    pause(): void;
    /**
     * Invalidate an ongoing nearby interaction session. @discussion Invalidate sessions you wish to terminate and do not intend to restart. A peer device in a nearby interaction session will receive a callback to -didRemoveNearbyObject:withReason: some time after a call to invalidate (see NINearbyObjectRemovalReason). calling -runWithConfiguration: after invalidation will result in an error.
     */
    invalidate(): void;
    /**
     * Provide an ARSession object for use with the NISession @param session The ARSession to use for camera assistance @discussion If not provided, an ARSession will be created automatically if the cameraAssistanceEnabled property on the configuration is YES @discussion The developer is responsible for running the ARSession if provided. @discussion If the ARConfiguration used to run the session is not compatible with the NISession, the NISession will invalidate with error @discussion If the platform does not support camera assistance or an ARSession is provided without enabling cameraAssistanceEnabled property in the NIConfiguration, the NISession will invalidate with error (see NIError.h)
     */
    setARSession$(session: NobjcObject): void;
    /**
     * Compute a transform in ARKit's world coordinate system for a given nearby object. @param object The nearby object for which to compute the world transform. @return The transformation matrix in ARKit world coordinates. @discussion When not available returns NINearbyObjectWorldTransformNotAvailable.
     */
    worldTransformForObject$(object_: _NINearbyObject): simd_float4x4;
    /** A delegate for receiving NISession updates. */
    delegate(): _NISessionDelegate | null;
    setDelegate$(value: _NISessionDelegate | null): void;
    /**
     * The dispatch queue on which the delegate calls are performed. @discussion If not provided or nil, delegate calls will be performed on the main queue.
     */
    delegateQueue(): _NSObject | null;
    setDelegateQueue$(value: _NSObject | null): void;
    /**
     * A unique nearby interaction identifier for this session. @discussion Copy this discoveryToken and share it with a peer device. The discoveryToken is unique to this device and this session.
     */
    discoveryToken(): _NIDiscoveryToken | null;
    /** The nearby interaction configuration currently being used by the session. */
    configuration(): _NIConfiguration | null;
}
