import type { ScannedObject, ScannedObjectType } from '../instances/ScannedObject.nitro';
import type { CameraOutput } from './CameraOutput.nitro';
/**
 * Options for the {@linkcode CameraObjectOutput}.
 * @see {@linkcode ObjectOutputOptions}
 * @see {@linkcode useObjectOutput | useObjectOutput(...)}
 * @platform iOS
 */
export interface ObjectOutputOptions {
    /**
     * The array of {@linkcode ScannedObjectType}s to
     * detect.
     */
    enabledObjectTypes: ScannedObjectType[];
}
/**
 * The {@linkcode CameraObjectOutput} allows scanning various
 * objects ({@linkcode ScannedObject}), faces ({@linkcode ScannedFace}),
 * or machine-readable codes ({@linkcode ScannedCode}) in the Camera, using
 * a platform-native detection algorithm.
 *
 * @see {@linkcode ObjectOutputOptions}
 * @see {@linkcode useObjectOutput | useObjectOutput(...)}
 * @platform iOS
 * @example
 * Creating a `CameraObjectOutput` via the Hooks API:
 * ```ts
 * const objectOutput = useObjectOutput({
 *   types: ['qr-code'],
 *   onObjectsScanned(objects) {
 *     console.log(`Scanned ${objects.length} objects!`)
 *   }
 * })
 * ```
 *
 * @example
 * Creating a `CameraObjectOutput` via the Imperative API:
 * ```ts
 * const objectOutput = VisionCamera.createObjectOutput({
 *   enabledObjectTypes: ['qr-code'],
 * })
 * ```
 */
export interface CameraObjectOutput extends CameraOutput {
    /**
     * Sets the {@linkcode onObjectsScanned} callback.
     */
    setOnObjectsScannedCallback(onObjectsScanned: ((objects: ScannedObject[]) => void) | undefined): void;
}
