import type { BaseToolHandler } from "../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js";
import type { BaseToolExecutorPort } from "../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolExecutorPort.js";
import { type ShellArgumentAssemblyOutput, type ShellArgumentAssemblyRequest, type ShellArgumentAssemblyResult } from "./core.js";
import { type ShellArgumentAssemblyDependencies, type ShellArgumentAssemblyProvider, type ShellArgumentAssemblyPracticeProviderName, type ShellArgumentAssemblyProviderPractice } from "./dependencies.js";
export type ShellArgumentAssemblyBestPracticeRequest = ShellArgumentAssemblyRequest & {
    executor?: BaseToolExecutorPort;
    provider?: ShellArgumentAssemblyProvider;
    preferredProvider?: ShellArgumentAssemblyPracticeProviderName;
};
export type ShellArgumentAssemblyHandlerInput = Omit<ShellArgumentAssemblyBestPracticeRequest, "executor" | "provider">;
export type ShellArgumentAssemblyPracticeSelection = {
    providerName: ShellArgumentAssemblyPracticeProviderName;
    practice: ShellArgumentAssemblyProviderPractice;
    provider?: ShellArgumentAssemblyProvider;
};
export declare const shellArgumentAssemblyProviderPractices: readonly [{
    readonly providerName: "anthropic";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Claude Code BashTool argument construction before governed shell execution";
        readonly path: "/home/proview/Desktop/three/claude_code_2_1_88/tools/BashTool";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Claude Code BashTool accepts command material as validated tool input before permission checks.", "Praxis keeps argument assembly pure; runtime/TAP still owns approval and execution."];
    readonly createProvider: ({ provider, executor }: ShellArgumentAssemblyDependencies) => ShellArgumentAssemblyProvider | undefined;
}, {
    readonly providerName: "openai";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Codex ShellToolCallParams command vector and shlex_join preview";
        readonly path: "/home/proview/Desktop/three/codex_rust_0_123_0/codex-rs/core/src/tools/context.rs";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Codex local shell payload keeps command as a vector and derives the log preview with shlex_join.", "Praxis mirrors that by preserving argv separately from rendered command previews."];
    readonly createProvider: ({ provider, executor }: ShellArgumentAssemblyDependencies) => ShellArgumentAssemblyProvider | undefined;
}, {
    readonly providerName: "deepmind";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Gemini CLI shell-utils command roots and shell-quote handling";
        readonly path: "/home/proview/Desktop/three/gemini_cli_0_39_0/packages/core/src/utils/shell-utils.ts";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Gemini CLI extracts command roots and normalizes command material before policy and execution.", "Praxis translates that preparation into a pure argv envelope."];
    readonly createProvider: ({ provider, executor }: ShellArgumentAssemblyDependencies) => ShellArgumentAssemblyProvider | undefined;
}];
export declare const shellArgumentAssemblyBestPracticeDescriptor: {
    readonly toolId: "shell.argumentAssembly";
    readonly bestPractice: "runtime-governed-shell-argument-assembly";
    readonly sourcePriority: readonly ["cli", "agent-sdk", "api-sdk", "praxis-native"];
    readonly providerOrder: readonly ["anthropic", "openai", "deepmind"];
    readonly dependencies: ({
        dependencyId: string;
        kind: "permission";
        required: true;
        description: string;
    } | {
        dependencyId: string;
        kind: "runtime";
        required: false;
        description: string;
    })[];
};
export declare function selectShellArgumentAssemblyPractice(dependencies?: ShellArgumentAssemblyDependencies & {
    preferredProvider?: ShellArgumentAssemblyPracticeProviderName;
}): ShellArgumentAssemblyPracticeSelection;
export declare function assembleShellArgumentsBestPractice(request?: ShellArgumentAssemblyBestPracticeRequest): Promise<ShellArgumentAssemblyResult>;
export declare const shellArgumentAssemblyBaseToolDefinition: import("../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js").BaseToolDefinition<ShellArgumentAssemblyHandlerInput, ShellArgumentAssemblyOutput>;
export declare const shellArgumentAssemblyHandler: BaseToolHandler<ShellArgumentAssemblyHandlerInput, ShellArgumentAssemblyOutput>;
