export type WindowScreenRecordingBoundary = "input" | "contract" | "governance" | "scope" | "resource" | "provider";
export type WindowScreenRecordingGate = {
    accepted?: boolean;
    allowed?: boolean;
    reason?: string;
};
export type WindowScreenRecordingContext = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    dryRun?: boolean;
    guard?: WindowScreenRecordingGate;
    contract?: WindowScreenRecordingGate;
    governance?: WindowScreenRecordingGate;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type WindowScreenRecordingOutputFormat = "video/webm" | "video/mp4" | "video/quicktime";
export type WindowScreenRecordingTarget = {
    windowId?: string;
    titleHint?: string;
    maxDurationMs: number;
    frameRate: number;
    includeCursor: boolean;
    outputFormat: WindowScreenRecordingOutputFormat;
    destinationHint?: string;
};
export type WindowScreenRecordingProviderRequest = {
    operation: "computeruse.windowScreenRecording.start";
    target: WindowScreenRecordingTarget;
    context: {
        runtimeId?: string;
        sessionId?: string;
        invocationId?: string;
        auditMetadata?: Readonly<Record<string, unknown>>;
    };
    purpose: string;
};
export type WindowScreenRecordingProviderResult = {
    recordingId: string;
    metadata?: Readonly<Record<string, unknown>>;
};
export type WindowScreenRecordingProvider = (request: WindowScreenRecordingProviderRequest) => Promise<WindowScreenRecordingProviderResult> | WindowScreenRecordingProviderResult;
export type WindowScreenRecordingRequest = {
    target?: unknown;
    context?: unknown;
    windowId?: unknown;
    titleHint?: unknown;
    maxDurationMs?: unknown;
    frameRate?: unknown;
    includeCursor?: unknown;
    outputFormat?: unknown;
    destinationHint?: unknown;
    purpose?: unknown;
    metadata?: unknown;
    provider?: WindowScreenRecordingProvider;
};
export type WindowScreenRecordingErrorCode = "INVALID_REQUEST" | "INVALID_TARGET" | "INVALID_CONTEXT" | "MISSING_RUNTIME_ID" | "MISSING_PURPOSE" | "MISSING_WINDOW_TARGET" | "INVALID_WINDOW_TARGET" | "INVALID_MAX_DURATION" | "INVALID_FRAME_RATE" | "INVALID_INCLUDE_CURSOR" | "INVALID_OUTPUT_FORMAT" | "INVALID_DESTINATION_HINT" | "SCOPE_DENIED" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "PROVIDER_UNAVAILABLE" | "PROVIDER_FAILURE";
export type WindowScreenRecordingError = {
    code: WindowScreenRecordingErrorCode;
    message: string;
    boundary: WindowScreenRecordingBoundary;
    publicSafe: true;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type WindowScreenRecordingAuditEvent = {
    type: string;
    toolId: "computeruse.windowScreenRecording";
    invocationId: string;
    dryRun: boolean;
    windowId?: string;
    titleHint?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type WindowScreenRecordingOutput = {
    kind: "agentCore.basicTool.computeruse.windowScreenRecording";
    target: WindowScreenRecordingTarget;
    purpose: string;
    dispatch: "dry-run" | "runtime-computeruse";
    dryRun: boolean;
    providerCalled: boolean;
    executionBlocked: boolean;
    unsafeSideEffects: true;
    permissionsRequired: readonly ("screen:record" | "display:capture" | "window:inspect" | "recording:session")[];
    requiresTapApproval: true;
    acceptedScopes: readonly string[];
    runtimeEntry: {
        port: "BaseToolExecutorPort.computeruse.startRecording";
        operation: "computeruse.windowScreenRecording.start";
        runtimeOwnsScreenAccess: true;
        runtimeOwnsWindowSelection: true;
        runtimeOwnsRecordingSession: true;
        runtimeOwnsArtifactStorage: true;
        baseToolOwnsTapStrategy: false;
    };
    recordingEnvelope: {
        resource: "screen";
        target: "window";
        started: boolean;
        metadataOnly: boolean;
        recordingId?: string;
    };
    providerMetadata?: Readonly<Record<string, unknown>>;
};
export type WindowScreenRecordingResult = {
    ok: true;
    toolId: "computeruse.windowScreenRecording";
    output: WindowScreenRecordingOutput;
    audit: readonly WindowScreenRecordingAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "computeruse.windowScreenRecording";
    error: WindowScreenRecordingError;
    audit: readonly WindowScreenRecordingAuditEvent[];
    events: readonly string[];
};
export declare const windowScreenRecordingDescriptor: {
    readonly toolId: "computeruse.windowScreenRecording";
    readonly capability: "start-window-screen-recording";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.computeruseBase.screenRecording";
    readonly defaultDryRun: true;
    readonly defaultMaxDurationMs: 60000;
    readonly maxDurationMs: 3600000;
    readonly defaultFrameRate: 15;
    readonly maxFrameRate: 60;
    readonly defaultOutputFormat: "video/webm";
    readonly allowedDestinationSchemes: readonly ["artifact://", "session://", "runtime://", "memory://"];
    readonly tapOwnsApproval: true;
    readonly runtimeEntry: "BaseToolExecutorPort.computeruse.startRecording";
    readonly unsafeSideEffects: true;
};
export declare function executeWindowScreenRecording(request?: unknown): Promise<WindowScreenRecordingResult>;
export declare function planWindowScreenRecording(request?: unknown): Promise<WindowScreenRecordingResult>;
