import { type ToolDependencyInstallPlan, type ToolDependencySourceEntry } from "./dependencySourceRegistry.js";
export type DependencyCommandExecution = {
    exitCode: number;
    stdout: string;
    stderr: string;
};
export type EnsureDependencyAvailableRequest = {
    dependencyId: string;
    source?: ToolDependencySourceEntry;
    managedRoot?: string;
    env?: Readonly<Record<string, string | undefined>>;
    homeDir?: string;
    timeoutMs?: number;
};
export type EnsuredDependencyAvailability = {
    dependencyId: string;
    sourceId: string;
    managedRoot: string;
    binDir: string;
    resolvedPath: string;
    version?: string;
    installedNow: boolean;
    audit: {
        event: "agentCore.basicToolLayer.toolDependency.installer.ensured";
        metadata: Readonly<Record<string, unknown>>;
    };
};
export type EnsureDependencyAvailableResult = {
    ok: true;
    availability: EnsuredDependencyAvailability;
    events: readonly string[];
} | {
    ok: false;
    error: {
        code: "DEPENDENCY_SOURCE_NOT_FOUND" | "DEPENDENCY_INSTALL_APPROVAL_REQUIRED" | "DEPENDENCY_INSTALL_FAILED" | "DEPENDENCY_PROBE_FAILED";
        message: string;
        publicSafe: true;
    };
    plan?: ToolDependencyInstallPlan;
    events: readonly string[];
};
export declare const dependencyInstallerDescriptor: {
    readonly layer: "agent_executionEngine.basic_toolLayer.toolDependency";
    readonly capability: "dependency-installation";
    readonly installsToManagedRootOnly: true;
    readonly autoInstallsTrustedManagedSources: true;
};
export declare function ensureDependencyAvailable(request: EnsureDependencyAvailableRequest): Promise<EnsureDependencyAvailableResult>;
