import { z } from 'zod';
import type { ComputerUseHost } from '../../types/computer-use/index.js';
import type { ToolDefinition } from '../../types/tool/index.js';
export declare const COMPUTER_USE_TOOL_NAME: "computer_use";
declare const actionSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    type: z.ZodLiteral<"screenshot">;
}, "strip", z.ZodTypeAny, {
    type: "screenshot";
}, {
    type: "screenshot";
}>, z.ZodObject<{
    type: z.ZodLiteral<"cursor_position">;
}, "strip", z.ZodTypeAny, {
    type: "cursor_position";
}, {
    type: "cursor_position";
}>, z.ZodObject<{
    type: z.ZodLiteral<"mouse_move">;
    to: z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        x: number;
        y: number;
    }, {
        x: number;
        y: number;
    }>;
}, "strip", z.ZodTypeAny, {
    type: "mouse_move";
    to: {
        x: number;
        y: number;
    };
}, {
    type: "mouse_move";
    to: {
        x: number;
        y: number;
    };
}>, z.ZodObject<{
    type: z.ZodLiteral<"mouse_click">;
    at: z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        x: number;
        y: number;
    }, {
        x: number;
        y: number;
    }>;
    button: z.ZodEnum<["left", "right", "middle"]>;
}, "strip", z.ZodTypeAny, {
    at: {
        x: number;
        y: number;
    };
    type: "mouse_click";
    button: "left" | "right" | "middle";
}, {
    at: {
        x: number;
        y: number;
    };
    type: "mouse_click";
    button: "left" | "right" | "middle";
}>, z.ZodObject<{
    type: z.ZodLiteral<"mouse_drag">;
    from: z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        x: number;
        y: number;
    }, {
        x: number;
        y: number;
    }>;
    to: z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        x: number;
        y: number;
    }, {
        x: number;
        y: number;
    }>;
    button: z.ZodEnum<["left", "right", "middle"]>;
}, "strip", z.ZodTypeAny, {
    type: "mouse_drag";
    from: {
        x: number;
        y: number;
    };
    to: {
        x: number;
        y: number;
    };
    button: "left" | "right" | "middle";
}, {
    type: "mouse_drag";
    from: {
        x: number;
        y: number;
    };
    to: {
        x: number;
        y: number;
    };
    button: "left" | "right" | "middle";
}>, z.ZodObject<{
    type: z.ZodLiteral<"scroll">;
    at: z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        x: number;
        y: number;
    }, {
        x: number;
        y: number;
    }>;
    direction: z.ZodEnum<["up", "down", "left", "right"]>;
    amount: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    at: {
        x: number;
        y: number;
    };
    type: "scroll";
    direction: "left" | "right" | "up" | "down";
    amount: number;
}, {
    at: {
        x: number;
        y: number;
    };
    type: "scroll";
    direction: "left" | "right" | "up" | "down";
    amount: number;
}>, z.ZodObject<{
    type: z.ZodLiteral<"type_text">;
    text: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "type_text";
    text: string;
}, {
    type: "type_text";
    text: string;
}>, z.ZodObject<{
    type: z.ZodLiteral<"key">;
    keys: z.ZodString;
}, "strip", z.ZodTypeAny, {
    keys: string;
    type: "key";
}, {
    keys: string;
    type: "key";
}>]>;
type ActionInput = z.infer<typeof actionSchema>;
/**
 * Factory: given a ComputerUseHost (provided by the consumer — e.g.
 * @namzu/computer-use's SubprocessComputerUseHost), returns a ToolDefinition
 * that routes the discriminated action to the host and maps results back to
 * the SDK's ToolResult shape.
 *
 * The tool's description reflects the host's frozen capabilities, and any
 * action targeting an unavailable capability is rejected with a clear error
 * rather than hanging or failing silently.
 *
 * @example
 * ```ts
 * import { SubprocessComputerUseHost } from '@namzu/computer-use'
 * import { createComputerUseTool } from '@namzu/sdk'
 *
 * const host = new SubprocessComputerUseHost()
 * await host.initialize?.()
 * registry.register(createComputerUseTool(host))
 * ```
 */
export declare function createComputerUseTool(host: ComputerUseHost): ToolDefinition<ActionInput>;
export {};
//# sourceMappingURL=computer-use.d.ts.map