export type ToolDependencySourceSafety = "trusted-managed" | "trusted-detect-only" | "custom-source" | "system-global";
export type ToolDependencyInstallTarget = "praxis-managed" | "project-local" | "system-global";
export type ToolDependencyPackageManager = "npm" | "dotnet-tool" | "go-install" | "manual" | "detect-only";
export type ToolDependencyProbeCommand = {
    command: string;
    args?: readonly string[];
};
export type ToolDependencyInstallStep = {
    stepId: string;
    command: string;
    args: readonly string[];
    cwd?: string;
    env?: Readonly<Record<string, string>>;
    writesTo: readonly string[];
    requiresSudo: boolean;
    modifiesUserShell: boolean;
    modifiesProjectFiles: boolean;
};
export type ToolDependencyInstallPlan = {
    dependencyId: string;
    sourceId: string;
    safety: ToolDependencySourceSafety;
    target: ToolDependencyInstallTarget;
    packageManager: ToolDependencyPackageManager;
    managedRoot?: string;
    binDir?: string;
    steps: readonly ToolDependencyInstallStep[];
    postInstallProbe: ToolDependencyProbeCommand;
    approvalRequired: boolean;
    approvalReason?: string;
    audit: {
        event: "agentCore.basicToolLayer.toolDependency.source.installPlan";
        metadata: Readonly<Record<string, unknown>>;
    };
};
export type ToolDependencySourceEntry = {
    dependencyId: string;
    sourceId: string;
    displayName: string;
    safety: ToolDependencySourceSafety;
    packageManager: ToolDependencyPackageManager;
    packageName?: string;
    executableName: string;
    alternateExecutableNames?: readonly string[];
    versionCommand?: ToolDependencyProbeCommand;
    managedInstall?: {
        command: string;
        args: readonly string[];
        env?: Readonly<Record<string, string>>;
    };
    metadata?: Readonly<Record<string, unknown>>;
};
export type ToolDependencySourceLookupResult = {
    ok: true;
    source: ToolDependencySourceEntry;
} | {
    ok: false;
    error: {
        code: "DEPENDENCY_SOURCE_NOT_FOUND";
        message: string;
        publicSafe: true;
    };
};
export type ToolDependencyInstallPlanRequest = {
    dependencyId: string;
    target?: ToolDependencyInstallTarget;
    managedRoot?: string;
    env?: Readonly<Record<string, string | undefined>>;
    homeDir?: string;
    projectRoot?: string;
    source?: ToolDependencySourceEntry;
};
export type ToolDependencyInstallPlanResult = {
    ok: true;
    plan: ToolDependencyInstallPlan;
} | {
    ok: false;
    error: {
        code: "DEPENDENCY_SOURCE_NOT_FOUND" | "INSTALL_TARGET_NOT_ALLOWED" | "INSTALL_RECIPE_UNAVAILABLE";
        message: string;
        publicSafe: true;
    };
};
export declare const dependencySourceRegistryDescriptor: {
    readonly layer: "agent_executionEngine.basic_toolLayer.toolDependency";
    readonly capability: "dependency-source-registry";
    readonly defaultInstallTarget: "praxis-managed";
    readonly tapBypassForTrustedManaged: true;
};
export declare const builtinDependencySources: readonly [{
    readonly dependencyId: "runtime.binary.rg";
    readonly sourceId: "detect:rg";
    readonly displayName: "ripgrep";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "detect-only";
    readonly executableName: "rg";
    readonly versionCommand: {
        readonly command: "rg";
        readonly args: readonly ["--version"];
    };
}, {
    readonly dependencyId: "binary:bwrap";
    readonly sourceId: "system:binary:bwrap";
    readonly displayName: "bubblewrap";
    readonly safety: "system-global";
    readonly packageManager: "manual";
    readonly executableName: "bwrap";
    readonly alternateExecutableNames: readonly ["bubblewrap"];
    readonly versionCommand: {
        readonly command: "bwrap";
        readonly args: readonly ["--version"];
    };
}, {
    readonly dependencyId: "runtime.binary.ffmpeg";
    readonly sourceId: "detect:ffmpeg";
    readonly displayName: "FFmpeg";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "detect-only";
    readonly executableName: "ffmpeg";
    readonly versionCommand: {
        readonly command: "ffmpeg";
        readonly args: readonly ["-version"];
    };
}, {
    readonly dependencyId: "runtime.binary.imagemagick";
    readonly sourceId: "detect:imagemagick";
    readonly displayName: "ImageMagick";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "detect-only";
    readonly executableName: "magick";
    readonly alternateExecutableNames: readonly ["convert"];
    readonly versionCommand: {
        readonly command: "magick";
        readonly args: readonly ["--version"];
    };
}, {
    readonly dependencyId: "runtime.binary.xdotool";
    readonly sourceId: "detect:xdotool";
    readonly displayName: "xdotool";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "detect-only";
    readonly executableName: "xdotool";
    readonly versionCommand: {
        readonly command: "xdotool";
        readonly args: readonly ["--version"];
    };
}, {
    readonly dependencyId: "runtime.binary.ydotool";
    readonly sourceId: "detect:ydotool";
    readonly displayName: "ydotool";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "detect-only";
    readonly executableName: "ydotool";
    readonly versionCommand: {
        readonly command: "ydotool";
        readonly args: readonly ["--version"];
    };
}, {
    readonly dependencyId: "runtime.desktop.screenshotProvider.linux";
    readonly sourceId: "detect:linux-desktop-screenshot-provider";
    readonly displayName: "Linux desktop screenshot provider stack";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "detect-only";
    readonly executableName: "python3";
    readonly versionCommand: {
        readonly command: "python3";
        readonly args: readonly ["-c", string];
    };
    readonly metadata: {
        readonly platform: "linux";
        readonly providerCandidates: readonly ["gtk-launch + GTK4/libportal + xdg-desktop-portal", "grim/slurp for wlroots compositors", "gnome-screenshot for GNOME fallback", "maim/scrot/xwd/ImageMagick import for X11 fallback"];
        readonly installHint: "Install a Linux screenshot provider stack through the host dependency manager, for example xdg-desktop-portal, xdg-desktop-portal-gnome or gtk, python3-gi, gir1.2-gtk-4.0, gir1.2-xdp-1.0, gir1.2-xdpgtk4-1.0, grim, slurp, gnome-screenshot, maim, or scrot depending on the desktop session.";
    };
}, {
    readonly dependencyId: "mcp.testServer.echo";
    readonly sourceId: "builtin:mcp-test-server:echo";
    readonly displayName: "Praxis MCP echo test server";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "detect-only";
    readonly executableName: "node";
    readonly versionCommand: {
        readonly command: "node";
        readonly args: readonly ["--version"];
    };
    readonly metadata: {
        readonly provider: "praxis";
        readonly purpose: "repeatable local MCP smoke";
    };
}, {
    readonly dependencyId: "lsp.server.typescript-language-server";
    readonly sourceId: "npm:typescript-language-server";
    readonly displayName: "TypeScript Language Server";
    readonly safety: "trusted-managed";
    readonly packageManager: "npm";
    readonly packageName: "typescript-language-server";
    readonly executableName: "typescript-language-server";
    readonly versionCommand: {
        readonly command: "typescript-language-server";
        readonly args: readonly ["--version"];
    };
    readonly managedInstall: {
        readonly command: "npm";
        readonly args: readonly ["install", "--prefix", "{managedRoot}", "typescript-language-server", "typescript"];
    };
}, {
    readonly dependencyId: "lsp.server.pyright-langserver";
    readonly sourceId: "npm:pyright";
    readonly displayName: "Pyright Language Server";
    readonly safety: "trusted-managed";
    readonly packageManager: "npm";
    readonly packageName: "pyright";
    readonly executableName: "pyright-langserver";
    readonly alternateExecutableNames: readonly ["pyright"];
    readonly versionCommand: {
        readonly command: "pyright-langserver";
        readonly args: readonly ["--version"];
    };
    readonly managedInstall: {
        readonly command: "npm";
        readonly args: readonly ["install", "--prefix", "{managedRoot}", "pyright"];
    };
}, {
    readonly dependencyId: "lsp.server.csharp-ls";
    readonly sourceId: "dotnet-tool:csharp-ls";
    readonly displayName: "C# Language Server";
    readonly safety: "trusted-managed";
    readonly packageManager: "dotnet-tool";
    readonly packageName: "csharp-ls";
    readonly executableName: "csharp-ls";
    readonly versionCommand: {
        readonly command: "csharp-ls";
        readonly args: readonly ["--version"];
    };
    readonly managedInstall: {
        readonly command: "dotnet";
        readonly args: readonly ["tool", "install", "csharp-ls", "--tool-path", "{binDir}"];
    };
}, {
    readonly dependencyId: "lsp.server.gopls";
    readonly sourceId: "go-install:gopls";
    readonly displayName: "Go language server";
    readonly safety: "trusted-managed";
    readonly packageManager: "go-install";
    readonly packageName: "golang.org/x/tools/gopls@latest";
    readonly executableName: "gopls";
    readonly versionCommand: {
        readonly command: "gopls";
        readonly args: readonly ["version"];
    };
    readonly managedInstall: {
        readonly command: "go";
        readonly args: readonly ["install", "golang.org/x/tools/gopls@latest"];
        readonly env: {
            readonly GOBIN: "{binDir}";
        };
    };
}, {
    readonly dependencyId: "lsp.server.clangd";
    readonly sourceId: "detect:clangd";
    readonly displayName: "Clangd";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "detect-only";
    readonly executableName: "clangd";
    readonly versionCommand: {
        readonly command: "clangd";
        readonly args: readonly ["--version"];
    };
}, {
    readonly dependencyId: "lsp.server.rust-analyzer";
    readonly sourceId: "detect:rust-analyzer";
    readonly displayName: "Rust Analyzer";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "detect-only";
    readonly executableName: "rust-analyzer";
    readonly versionCommand: {
        readonly command: "rust-analyzer";
        readonly args: readonly ["--version"];
    };
}, {
    readonly dependencyId: "lsp.server.jdtls";
    readonly sourceId: "manual:jdtls";
    readonly displayName: "Eclipse JDT Language Server";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "manual";
    readonly executableName: "jdtls";
    readonly versionCommand: {
        readonly command: "jdtls";
        readonly args: readonly ["--version"];
    };
}, {
    readonly dependencyId: "lsp.server.kotlin-language-server";
    readonly sourceId: "manual:kotlin-language-server";
    readonly displayName: "Kotlin Language Server";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "manual";
    readonly executableName: "kotlin-language-server";
    readonly versionCommand: {
        readonly command: "kotlin-language-server";
        readonly args: readonly ["--version"];
    };
}, {
    readonly dependencyId: "lsp.server.sourcekit-lsp";
    readonly sourceId: "detect:sourcekit-lsp";
    readonly displayName: "SourceKit LSP";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "detect-only";
    readonly executableName: "sourcekit-lsp";
    readonly versionCommand: {
        readonly command: "sourcekit-lsp";
        readonly args: readonly ["--version"];
    };
}, {
    readonly dependencyId: "lsp.server.intelephense";
    readonly sourceId: "npm:intelephense";
    readonly displayName: "Intelephense";
    readonly safety: "trusted-managed";
    readonly packageManager: "npm";
    readonly packageName: "intelephense";
    readonly executableName: "intelephense";
    readonly versionCommand: {
        readonly command: "intelephense";
        readonly args: readonly ["--version"];
    };
    readonly managedInstall: {
        readonly command: "npm";
        readonly args: readonly ["install", "--prefix", "{managedRoot}", "intelephense"];
    };
}, {
    readonly dependencyId: "lsp.server.bash-language-server";
    readonly sourceId: "npm:bash-language-server";
    readonly displayName: "Bash Language Server";
    readonly safety: "trusted-managed";
    readonly packageManager: "npm";
    readonly packageName: "bash-language-server";
    readonly executableName: "bash-language-server";
    readonly versionCommand: {
        readonly command: "bash-language-server";
        readonly args: readonly ["--version"];
    };
    readonly managedInstall: {
        readonly command: "npm";
        readonly args: readonly ["install", "--prefix", "{managedRoot}", "bash-language-server"];
    };
}, {
    readonly dependencyId: "lsp.server.yaml-language-server";
    readonly sourceId: "npm:yaml-language-server";
    readonly displayName: "YAML Language Server";
    readonly safety: "trusted-managed";
    readonly packageManager: "npm";
    readonly packageName: "yaml-language-server";
    readonly executableName: "yaml-language-server";
    readonly versionCommand: {
        readonly command: "yaml-language-server";
        readonly args: readonly ["--version"];
    };
    readonly managedInstall: {
        readonly command: "npm";
        readonly args: readonly ["install", "--prefix", "{managedRoot}", "yaml-language-server"];
    };
}, {
    readonly dependencyId: "lsp.server.marksman";
    readonly sourceId: "detect:marksman";
    readonly displayName: "Marksman";
    readonly safety: "trusted-detect-only";
    readonly packageManager: "detect-only";
    readonly executableName: "marksman";
    readonly versionCommand: {
        readonly command: "marksman";
        readonly args: readonly ["--version"];
    };
}];
export declare function lookupDependencySource(dependencyId: string): ToolDependencySourceLookupResult;
export declare function managedBinDir(request: Pick<ToolDependencyInstallPlanRequest, "env" | "homeDir" | "managedRoot">): string;
export declare function planDependencyInstallation(request: ToolDependencyInstallPlanRequest): ToolDependencyInstallPlanResult;
