export type MicrophoneSelectBoundary = "input" | "contract" | "governance" | "scope" | "resource" | "provider";
export type MicrophoneSelectGate = {
    accepted?: boolean;
    allowed?: boolean;
    reason?: string;
};
export type MicrophoneAccessBoundary = MicrophoneSelectBoundary;
export type MicrophoneAccessGate = MicrophoneSelectGate;
export type MicrophoneSelectableDeviceKind = "integrated" | "usb" | "virtual" | "unknown";
export type MicrophoneSelectableDevice = {
    id: string;
    label?: string;
    kind?: MicrophoneSelectableDeviceKind;
};
export type MicrophoneSelectContext = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    dryRun?: boolean;
    guard?: MicrophoneSelectGate;
    contract?: MicrophoneSelectGate;
    governance?: MicrophoneSelectGate;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type MicrophoneSelectTarget = {
    deviceId: string;
    targetApplication: string;
    permissionLeaseId?: string;
    selectionReason?: string;
    availableDevices?: readonly MicrophoneSelectableDevice[];
};
export type MicrophoneSelectProviderRequest = {
    operation: "computeruse.microphoneSelect.select";
    target: MicrophoneSelectTarget;
    context: {
        runtimeId?: string;
        sessionId?: string;
        invocationId?: string;
        auditMetadata?: Readonly<Record<string, unknown>>;
    };
};
export type MicrophoneSelectProviderResult = {
    selected: boolean;
    deviceId: string;
    metadata?: Readonly<Record<string, unknown>>;
};
export type MicrophoneSelectProvider = (request: MicrophoneSelectProviderRequest) => Promise<MicrophoneSelectProviderResult> | MicrophoneSelectProviderResult;
export type MicrophoneSelectRequest = {
    target?: unknown;
    context?: unknown;
    deviceId?: unknown;
    targetApplication?: unknown;
    permissionLeaseId?: unknown;
    selectionReason?: unknown;
    availableDevices?: unknown;
    metadata?: unknown;
    provider?: MicrophoneSelectProvider;
};
export type MicrophoneSelectErrorCode = "INVALID_REQUEST" | "INVALID_CONTEXT" | "INVALID_TARGET" | "MISSING_RUNTIME_ID" | "MISSING_MICROPHONE_DEVICE" | "MISSING_TARGET_APPLICATION" | "INVALID_MICROPHONE_DEVICE" | "INVALID_TARGET_APPLICATION" | "INVALID_PERMISSION_LEASE" | "INVALID_SELECTION_REASON" | "MICROPHONE_DEVICE_NOT_AVAILABLE" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED" | "PROVIDER_UNAVAILABLE" | "PROVIDER_FAILURE";
export type MicrophoneSelectError = {
    code: MicrophoneSelectErrorCode;
    message: string;
    boundary: MicrophoneSelectBoundary;
    publicSafe: true;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type MicrophoneSelectAuditEvent = {
    type: string;
    toolId: "computeruse.microphoneSelect";
    invocationId: string;
    dryRun: boolean;
    deviceId?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type MicrophoneSelectOutput = {
    kind: "agentCore.basicTool.computeruse.microphoneSelect";
    target: MicrophoneSelectTarget;
    dispatch: "dry-run" | "runtime-computeruse";
    dryRun: boolean;
    providerCalled: boolean;
    executionBlocked: boolean;
    unsafeSideEffects: true;
    permissionsRequired: readonly ["microphone:select"];
    requiresTapApproval: true;
    acceptedScopes: readonly string[];
    runtimeEntry: {
        port: "BaseToolExecutorPort.computeruse.selectDevice";
        operation: "computeruse.microphoneSelect.select";
        runtimeOwnsDeviceSelection: true;
        runtimeOwnsPermissionLease: true;
        baseToolOwnsTapStrategy: false;
    };
    selectionEnvelope: {
        resource: "microphone";
        requested: boolean;
        selected: boolean;
        metadataOnly: boolean;
        deviceId: string;
        permissionLeaseId?: string;
    };
    providerMetadata?: Readonly<Record<string, unknown>>;
};
export type MicrophoneSelectResult = {
    ok: true;
    toolId: "computeruse.microphoneSelect";
    output: MicrophoneSelectOutput;
    audit: readonly MicrophoneSelectAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "computeruse.microphoneSelect";
    error: MicrophoneSelectError;
    audit: readonly MicrophoneSelectAuditEvent[];
    events: readonly string[];
};
export declare const microphoneSelectDescriptor: {
    readonly toolId: "computeruse.microphoneSelect";
    readonly capability: "microphone-device-select";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.computeruseBase.microphoneAccess";
    readonly defaultDryRun: true;
    readonly tapOwnsApproval: true;
    readonly runtimeEntry: "BaseToolExecutorPort.computeruse.selectDevice";
    readonly permissionsRequired: readonly ["microphone:select"];
    readonly unsafeSideEffects: true;
};
export declare function executeMicrophoneSelect(request?: MicrophoneSelectRequest): Promise<MicrophoneSelectResult>;
export declare function planMicrophoneSelect(request?: unknown): Promise<MicrophoneSelectResult>;
