export type CameraPermissionRequestBoundary = "input" | "contract" | "governance" | "scope" | "resource" | "provider";
export type CameraPermissionRequestGate = {
    accepted?: boolean;
    allowed?: boolean;
    reason?: string;
};
export type CameraPermissionRequestMode = "session" | "single-capture" | "recording";
export type CameraPermissionRequestContext = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    dryRun?: boolean;
    guard?: CameraPermissionRequestGate;
    contract?: CameraPermissionRequestGate;
    governance?: CameraPermissionRequestGate;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type CameraPermissionRequestTarget = {
    targetApplication: string;
    purpose: string;
    deviceId?: string;
    mode: CameraPermissionRequestMode;
    requestedDurationMs: number;
};
export type CameraPermissionProviderRequest = {
    operation: "computeruse.cameraPermissionRequest.request";
    target: CameraPermissionRequestTarget;
    context: {
        runtimeId?: string;
        sessionId?: string;
        invocationId?: string;
        auditMetadata?: Readonly<Record<string, unknown>>;
    };
};
export type CameraPermissionProviderResult = {
    granted: boolean;
    leaseId?: string;
    metadata?: Readonly<Record<string, unknown>>;
};
export type CameraPermissionProvider = (request: CameraPermissionProviderRequest) => Promise<CameraPermissionProviderResult> | CameraPermissionProviderResult;
export type CameraPermissionRequestInput = {
    target?: unknown;
    context?: unknown;
    targetApplication?: unknown;
    purpose?: unknown;
    deviceId?: unknown;
    mode?: unknown;
    requestedDurationMs?: unknown;
    maxDurationMs?: unknown;
    metadata?: unknown;
    provider?: CameraPermissionProvider;
};
export type CameraPermissionRequestErrorCode = "INVALID_REQUEST" | "INVALID_CONTEXT" | "INVALID_TARGET" | "MISSING_RUNTIME_ID" | "MISSING_TARGET_APPLICATION" | "MISSING_PURPOSE" | "INVALID_DEVICE_ID" | "INVALID_MODE" | "INVALID_DURATION" | "DURATION_LIMIT_EXCEEDED" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED" | "PROVIDER_UNAVAILABLE" | "PROVIDER_FAILURE";
export type CameraPermissionRequestError = {
    code: CameraPermissionRequestErrorCode;
    message: string;
    boundary: CameraPermissionRequestBoundary;
    publicSafe: true;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type CameraPermissionRequestAuditEvent = {
    type: string;
    toolId: "computeruse.cameraPermissionRequest";
    invocationId: string;
    dryRun: boolean;
    deviceId?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type CameraPermissionRequestOutput = {
    kind: "agentCore.basicTool.computeruse.cameraPermissionRequest";
    target: CameraPermissionRequestTarget;
    dispatch: "dry-run" | "runtime-computeruse";
    dryRun: boolean;
    providerCalled: boolean;
    executionBlocked: boolean;
    unsafeSideEffects: true;
    permissionsRequired: readonly ["camera:permission-request"];
    requiresTapApproval: true;
    acceptedScopes: readonly string[];
    runtimeEntry: {
        port: "BaseToolExecutorPort.computeruse.requestPermission";
        operation: "computeruse.cameraPermissionRequest.request";
        runtimeOwnsPermissionPrompt: true;
        runtimeOwnsDeviceLease: true;
        baseToolOwnsTapStrategy: false;
    };
    permissionEnvelope: {
        resource: "camera";
        requested: boolean;
        granted: boolean;
        metadataOnly: boolean;
        leaseId?: string;
    };
    providerMetadata?: Readonly<Record<string, unknown>>;
};
export type CameraPermissionRequestResult = {
    ok: true;
    toolId: "computeruse.cameraPermissionRequest";
    output: CameraPermissionRequestOutput;
    audit: readonly CameraPermissionRequestAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "computeruse.cameraPermissionRequest";
    error: CameraPermissionRequestError;
    audit: readonly CameraPermissionRequestAuditEvent[];
    events: readonly string[];
};
export declare const cameraPermissionRequestDescriptor: {
    readonly toolId: "computeruse.cameraPermissionRequest";
    readonly capability: "camera-permission-request";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.computeruseBase.cameraAccess";
    readonly defaultDryRun: true;
    readonly defaultMode: "session";
    readonly defaultRequestedDurationMs: 60000;
    readonly defaultMaxDurationMs: number;
    readonly tapOwnsApproval: true;
    readonly runtimeEntry: "BaseToolExecutorPort.computeruse.requestPermission";
    readonly permissionsRequired: readonly ["camera:permission-request"];
    readonly unsafeSideEffects: true;
};
export declare function executeCameraPermissionRequest(request?: unknown): Promise<CameraPermissionRequestResult>;
export declare function planCameraPermissionRequest(request?: unknown): Promise<CameraPermissionRequestResult>;
