import type { BaseToolDefinition, BaseToolDependencyDeclaration, BaseToolHandler, BaseToolInvokeRequest, BaseToolInvokeResult, BaseToolRiskLevel, BaseToolSchemaLike } from "../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js";
export type ComputerUseBestPracticeProviderName = "anthropic" | "openai" | "deepmind" | "praxis-native";
export type ComputerUseBestPracticeSource = {
    kind: "cli" | "agent-sdk" | "api-sdk" | "praxis-native";
    label: string;
    path?: string;
};
export type ComputerUseBestPracticeMetadata<Name extends string = ComputerUseBestPracticeProviderName> = {
    providerName: Name;
    source: ComputerUseBestPracticeSource;
    directCliSupport: boolean;
    sideEffectPolicy: "runtime-governed";
    notes: readonly string[];
};
export type ComputerUseProviderPracticeMetadata<Name extends string, Provider, Dependencies> = ComputerUseBestPracticeMetadata<Name> & {
    createProvider(dependencies: Dependencies): Provider | undefined;
};
export type ComputerUseProviderPracticeSelection<Name extends string, Provider, Practice> = {
    providerName: Name;
    practice: Practice;
    provider?: Provider;
};
export type ComputerUseBaseToolDefinitionOptions<Input, Output> = {
    toolId: string;
    title: string;
    description: string;
    summary: string;
    storageGroup: string;
    riskLevel?: BaseToolRiskLevel;
    permissionHints: readonly string[];
    dependencies: readonly BaseToolDependencyDeclaration[];
    inputSchema?: BaseToolSchemaLike;
    outputSchema?: BaseToolSchemaLike;
    storagePolicy?: BaseToolDefinition["storagePolicy"];
    metadata?: Readonly<Record<string, unknown>>;
};
export type ComputerUseCoreResult<Output> = {
    ok: true;
    toolId: string;
    output: Output;
    events: readonly string[];
    audit?: unknown;
} | {
    ok: false;
    toolId: string;
    error: {
        code: string;
        message: string;
    };
    events: readonly string[];
};
export declare function jsonSchema(name: string, schema: unknown): BaseToolSchemaLike;
export declare function computerUseToolSkillDocPath(toolId: string, storageGroup: string): string;
export declare function computerUseToolSourcePath(toolId: string, storageGroup: string): string;
export declare function computerUseToolStoragePracticePath(toolId: string, storageGroup: string): string;
export declare function createComputerUseBaseToolDefinition<Input, Output>(options: ComputerUseBaseToolDefinitionOptions<Input, Output>): BaseToolDefinition<Input, Output>;
export declare function orderComputerUsePractices<Name extends string, Practice extends ComputerUseBestPracticeMetadata<Name>>(practices: readonly Practice[], preferredProvider: Name | undefined): readonly Practice[];
export declare function selectComputerUseProviderPractice<Name extends string, Provider, Dependencies>(practices: readonly ComputerUseProviderPracticeMetadata<Name, Provider, Dependencies>[], dependencies: Dependencies & {
    preferredProvider?: Name;
}, fallbackPractice: ComputerUseProviderPracticeMetadata<Name, Provider, Dependencies>): ComputerUseProviderPracticeSelection<Name, Provider, ComputerUseProviderPracticeMetadata<Name, Provider, Dependencies>>;
export declare function buildComputerUsePracticeAuditMetadata(selection: Pick<ComputerUseProviderPracticeSelection<string, unknown, ComputerUseBestPracticeMetadata<string>>, "providerName" | "practice">): Readonly<Record<string, unknown>>;
export declare function injectRuntimeInvocationMetadata(base: Readonly<Record<string, unknown>>, existing: Readonly<Record<string, unknown>> | undefined, request: Pick<BaseToolInvokeRequest, "runtimeId" | "sessionId" | "toolCallId" | "metadata">): Readonly<Record<string, unknown>>;
export declare function adaptComputerUseCoreResult<Output>(result: ComputerUseCoreResult<Output>): BaseToolInvokeResult<Output>;
export declare function createComputerUseCoreHandler<Input, Output>(definition: BaseToolDefinition<Input, Output>, invokeCore: (request: BaseToolInvokeRequest<Input>) => Promise<ComputerUseCoreResult<Output>> | ComputerUseCoreResult<Output>): BaseToolHandler<Input, Output>;
