import type { CameraController } from '../../specs/CameraController.nitro';
import type { Constraint } from '../../specs/common-types/Constraint';
import type { MirrorMode } from '../../specs/common-types/MirrorMode';
import type { CameraDevice } from '../../specs/inputs/CameraDevice.nitro';
import type { CameraOutput } from '../../specs/outputs/CameraOutput.nitro';
import type { CameraSession } from '../../specs/session/CameraSession.nitro';
import type { CameraSessionConfig } from '../../specs/session/CameraSessionConfig.nitro';
interface Config {
    mirrorMode?: MirrorMode;
    allowBackgroundAudioPlayback?: boolean;
    constraints?: Constraint[];
    onSessionConfigSelected?: (config: CameraSessionConfig) => void;
    onConfigured?: () => void;
    getInitialZoom?: () => number | undefined;
    getInitialExposureBias?: () => number | undefined;
}
/**
 * Connect the given {@linkcode device} to the given {@linkcode outputs}
 * with the given {@linkcode mirrorMode}  applied to each output,
 * and return a {@linkcode CameraController}.
 *
 * @note The {@linkcode outputs} have to be explicitly memoized.
 */
export declare function useCameraController(session: CameraSession | undefined, device: CameraDevice | undefined, outputs: CameraOutput[], { mirrorMode, constraints, onSessionConfigSelected, allowBackgroundAudioPlayback, getInitialExposureBias, onConfigured, getInitialZoom, }?: Config): CameraController | undefined;
export {};
