export interface ToolDescriptor {
    readonly name: string;
    readonly description: string;
    readonly inputSchema: Record<string, {
        type: 'string' | 'number' | 'boolean';
        required?: boolean;
        description?: string;
    }>;
    readonly availability?: {
        surface?: ('web' | 'desktop' | 'mobile' | 'teams' | 'cli')[];
        permissions?: string[];
        requiredCapabilities?: import('./host-capability.types').HostCapability[];
    };
    readonly writeAction?: boolean;
    readonly controlTool?: boolean;
    readonly dispatchKey?: string;
}
export interface ToolInvocation {
    readonly organizationId: string;
    readonly userId: string;
    readonly sessionId?: string;
    readonly turnId?: string;
    readonly input: Record<string, unknown>;
}
export interface ToolResult {
    readonly ok: boolean;
    readonly output?: unknown;
    readonly errorMessage?: string;
}
export interface AgentTool {
    readonly descriptor: ToolDescriptor;
    invoke(invocation: ToolInvocation): Promise<ToolResult>;
}
