export type MouseEmulationBoundary = "input" | "contract" | "governance" | "scope" | "provider";
export type MouseEmulationGate = {
    accepted?: boolean;
    allowed?: boolean;
    reason?: string;
};
export type MouseEmulationContext = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    dryRun?: boolean;
    guard?: MouseEmulationGate;
    contract?: MouseEmulationGate;
    governance?: MouseEmulationGate;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type MouseEmulationCoordinateSpace = "screen" | "window" | "normalized";
export type MouseEmulationButton = "left" | "right" | "middle" | "back" | "forward";
export type MouseEmulationPoint = {
    x: number;
    y: number;
};
export type MouseEmulationLocateStep = {
    kind: "locate";
    coordinateSpace: MouseEmulationCoordinateSpace;
    displayId?: string;
};
export type MouseEmulationMoveStep = {
    kind: "move";
    target: MouseEmulationPoint;
    coordinateSpace: MouseEmulationCoordinateSpace;
    displayId?: string;
    windowId?: string;
    durationMs?: number;
};
export type MouseEmulationClickStep = {
    kind: "click";
    button: MouseEmulationButton;
    clickCount: number;
    at?: MouseEmulationPoint;
    coordinateSpace: MouseEmulationCoordinateSpace;
    displayId?: string;
    windowId?: string;
    usesCurrentCursor: boolean;
};
export type MouseEmulationStep = MouseEmulationLocateStep | MouseEmulationMoveStep | MouseEmulationClickStep;
export type MouseEmulationProviderStepResult = {
    index: number;
    kind: MouseEmulationStep["kind"];
    actionId?: string;
    position?: {
        x: number;
        y: number;
        coordinateSpace: MouseEmulationCoordinateSpace;
        displayId?: string;
    };
    metadata?: Readonly<Record<string, unknown>>;
};
export type MouseEmulationProviderRequest = {
    operation: "computeruse.mouseEmulation.pointerSequence";
    steps: readonly MouseEmulationStep[];
    context: {
        runtimeId?: string;
        sessionId?: string;
        invocationId?: string;
        auditMetadata?: Readonly<Record<string, unknown>>;
    };
    purpose: string;
};
export type MouseEmulationProviderResult = {
    stepResults: readonly MouseEmulationProviderStepResult[];
    metadata?: Readonly<Record<string, unknown>>;
};
export type MouseEmulationProvider = (request: MouseEmulationProviderRequest) => Promise<MouseEmulationProviderResult> | MouseEmulationProviderResult;
export type MouseEmulationRequest = {
    steps?: unknown;
    context?: unknown;
    maxSteps?: unknown;
    purpose?: unknown;
    metadata?: unknown;
    provider?: MouseEmulationProvider;
};
export type MouseEmulationErrorCode = "INVALID_REQUEST" | "MISSING_STEPS" | "STEP_LIMIT_EXCEEDED" | "INVALID_STEP" | "INVALID_TARGET" | "INVALID_CLICK_COUNT" | "INVALID_COORDINATE_SPACE" | "INVALID_CONTEXT" | "MISSING_RUNTIME_ID" | "MISSING_PURPOSE" | "SCOPE_DENIED" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "PROVIDER_UNAVAILABLE" | "PROVIDER_FAILURE";
export type MouseEmulationError = {
    code: MouseEmulationErrorCode;
    message: string;
    boundary: MouseEmulationBoundary;
    publicSafe: true;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type MouseEmulationAuditEvent = {
    type: string;
    toolId: "computeruse.mouseEmulation";
    invocationId: string;
    dryRun: boolean;
    metadata: Readonly<Record<string, unknown>>;
};
export type MouseEmulationStepEnvelope = {
    index: number;
    kind: MouseEmulationStep["kind"];
    executed: boolean;
    metadataOnly: boolean;
    actionId?: string;
    position?: MouseEmulationProviderStepResult["position"];
};
export type MouseEmulationOutput = {
    kind: "agentCore.basicTool.computeruse.mouseEmulation";
    operation: "simulate-mouse-operations";
    purpose: string;
    steps: readonly MouseEmulationStep[];
    dispatch: "dry-run" | "runtime-computeruse";
    dryRun: boolean;
    providerCalled: boolean;
    executionBlocked: boolean;
    unsafeSideEffects: true;
    permissionsRequired: readonly ["pointer:read", "pointer:write", "ui:action"];
    requiresTapApproval: true;
    acceptedScopes: readonly string[];
    runtimeEntry: {
        ports: readonly [
            "BaseToolExecutorPort.computeruse.locateCursor",
            "BaseToolExecutorPort.computeruse.pointerAction"
        ];
        operation: "computeruse.mouseEmulation.pointerSequence";
        runtimeOwnsPointerEvents: true;
        runtimeOwnsCursorObservation: true;
        runtimeOwnsInputPolicy: true;
        baseToolOwnsTapStrategy: false;
    };
    sequenceEnvelope: {
        maxSteps: number;
        executed: boolean;
        metadataOnly: boolean;
        stepResults: readonly MouseEmulationStepEnvelope[];
    };
    providerMetadata?: Readonly<Record<string, unknown>>;
};
export type MouseEmulationResult = {
    ok: true;
    toolId: "computeruse.mouseEmulation";
    output: MouseEmulationOutput;
    audit: readonly MouseEmulationAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "computeruse.mouseEmulation";
    error: MouseEmulationError;
    audit: readonly MouseEmulationAuditEvent[];
    events: readonly string[];
};
export declare const mouseEmulationDescriptor: {
    readonly toolId: "computeruse.mouseEmulation";
    readonly capability: "simulate-mouse-operations";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.computeruseBase.mouseEmulation";
    readonly defaultDryRun: true;
    readonly defaultCoordinateSpace: "screen";
    readonly defaultButton: "left";
    readonly defaultClickCount: 1;
    readonly maxCoordinate: 100000;
    readonly defaultMaxSteps: 16;
    readonly tapOwnsApproval: true;
    readonly runtimeEntry: readonly ["BaseToolExecutorPort.computeruse.locateCursor", "BaseToolExecutorPort.computeruse.pointerAction"];
    readonly permissionsRequired: readonly ["pointer:read", "pointer:write", "ui:action"];
    readonly unsafeSideEffects: true;
};
export declare function executeMouseEmulation(request?: unknown): Promise<MouseEmulationResult>;
export declare function planMouseEmulation(request?: unknown): Promise<MouseEmulationResult>;
