export type ComputeruseInvocationBoundary = "input" | "contract" | "governance" | "scope" | "runtime-state";
export type ComputeruseInvocationGate = {
    accepted: boolean;
    reason?: string;
};
export type ComputeruseInvocationRequest = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    action?: string;
    eventSource?: string;
    surfaceHint?: string;
    payload?: Record<string, unknown>;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    subscribers?: readonly string[];
    runtimeReady?: boolean;
    dryRun?: boolean;
    contract?: ComputeruseInvocationGate;
    governance?: ComputeruseInvocationGate;
};
export type ComputeruseInvocationErrorCode = "MISSING_RUNTIME_ID" | "MISSING_SESSION_ID" | "MISSING_ACTION" | "MISSING_EVENT_SOURCE" | "INVALID_INVOCATION_PAYLOAD" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED" | "REAL_SIDE_EFFECT_NOT_ALLOWED";
export type ComputeruseInvocationError = {
    code: ComputeruseInvocationErrorCode;
    message: string;
    boundary: ComputeruseInvocationBoundary;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type ComputeruseInvocationEvent = {
    plane: "eventExposurePlane";
    category: "basic-tool-invocation";
    toolKind: "computeruse";
    runtimeId: string;
    sessionId: string;
    invocationId: string;
    action: string;
    eventSource: string;
    surfaceHint?: string;
    payload: Readonly<Record<string, unknown>>;
    acceptedScopes: readonly string[];
    subscribers: readonly string[];
    execution: {
        dryRun: true;
        invoked: false;
        unsafeSideEffects: false;
    };
    audit: {
        contractSurface: "runtime.contractSurface";
        governanceRequired: true;
    };
};
export type ComputeruseInvocationExposureResult = {
    ok: true;
    invocation: ComputeruseInvocationEvent;
    events: readonly string[];
} | {
    ok: false;
    error: ComputeruseInvocationError;
    events: readonly string[];
};
export declare const computeruseInvocationDescriptor: {
    readonly plane: "eventExposurePlane";
    readonly category: "basic-tool-invocation";
    readonly toolKind: "computeruse";
    readonly purpose: "expose computer use tool invocation events without operating the desktop";
    readonly unsafeSideEffects: false;
};
export declare function exposeComputeruseInvocationEvent(request?: ComputeruseInvocationRequest): ComputeruseInvocationExposureResult;
