import type { BaseToolHandler } from "../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js";
import type { ShellToolResult } from "../../shellExecution/shell.commandExecution/core.js";
import { type ShellLifecycleManagementOutput, type ShellLifecycleManagementRequest } from "./core.js";
import { type ShellLifecycleManagementDependencies, type ShellLifecycleManagementPracticeProviderName, type ShellLifecycleManagementProvider, type ShellLifecycleManagementProviderPractice } from "./dependencies.js";
export * from "./core.js";
export type ShellLifecycleManagementBestPracticeRequest = ShellLifecycleManagementRequest & {
    executor?: ShellLifecycleManagementDependencies["executor"];
    provider?: ShellLifecycleManagementProvider;
    preferredProvider?: ShellLifecycleManagementPracticeProviderName;
};
export type ShellLifecycleManagementHandlerInput = Omit<ShellLifecycleManagementBestPracticeRequest, "executor" | "provider">;
export type ShellLifecycleManagementPracticeSelection = {
    providerName: ShellLifecycleManagementPracticeProviderName;
    practice: ShellLifecycleManagementProviderPractice;
    provider?: ShellLifecycleManagementProvider;
};
export declare const shellLifecycleManagementProviderPractices: readonly [{
    readonly providerName: "anthropic";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Claude Code shell session lifecycle boundary";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Claude-style shell lifecycle is owned by the host runtime; baseTools expose the lifecycle request and audit envelope only.", "Praxis keeps approval, PTY/session handles, suspend/resume/close policy, and cleanup outside the baseTool core."];
    readonly createProvider: ({ provider, executor }: ShellLifecycleManagementDependencies) => ShellLifecycleManagementProvider | undefined;
}, {
    readonly providerName: "openai";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Codex shell/session runtime boundary";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Codex keeps shell/session ownership in the host runtime while tool definitions describe safe call and result envelopes.", "Praxis baseTools never create, attach, suspend, resume, or close shell sessions without a runtime provider and guard."];
    readonly createProvider: ({ provider, executor }: ShellLifecycleManagementDependencies) => ShellLifecycleManagementProvider | undefined;
}, {
    readonly providerName: "deepmind";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Gemini CLI shell lifecycle boundary";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Gemini-style shell lifecycle behavior is mediated by the CLI/runtime rather than static tool files.", "Praxis mirrors that split by requiring runtime-owned shell lifecycle providers for real side effects."];
    readonly createProvider: ({ provider, executor }: ShellLifecycleManagementDependencies) => ShellLifecycleManagementProvider | undefined;
}];
export declare const shellLifecycleManagementBestPracticeDescriptor: {
    readonly toolId: "shell.shellLifecycleManagement";
    readonly bestPractice: "runtime-governed-shell-lifecycle-management";
    readonly sourcePriority: readonly ["cli", "agent-sdk", "api-sdk", "praxis-native"];
    readonly providerOrder: readonly ["anthropic", "openai", "deepmind"];
    readonly dependencies: ({
        dependencyId: string;
        kind: "runtime";
        required: true;
        description: string;
    } | {
        dependencyId: string;
        kind: "permission";
        required: true;
        description: string;
    })[];
};
export declare function selectShellLifecycleManagementPractice(dependencies?: ShellLifecycleManagementDependencies & {
    preferredProvider?: ShellLifecycleManagementPracticeProviderName;
}): ShellLifecycleManagementPracticeSelection;
export declare function executeShellLifecycleManagement(request?: ShellLifecycleManagementBestPracticeRequest): Promise<ShellToolResult<ShellLifecycleManagementOutput, string>>;
export declare const shellLifecycleManagementBaseToolDefinition: import("../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js").BaseToolDefinition<ShellLifecycleManagementHandlerInput, ShellLifecycleManagementOutput>;
export declare const shellLifecycleManagementHandler: BaseToolHandler<ShellLifecycleManagementHandlerInput, ShellLifecycleManagementOutput>;
