export type BasicToolDependencyKind = "binary" | "permission" | "mcp-server" | "environment" | "runtime-capability" | "package";
export type BasicToolDependencyBoundary = "input" | "contract" | "dependency" | "scope";
export type BasicToolDependencySeverity = "required" | "optional";
export type BasicToolDependencyDeclaration = {
    id: string;
    kind: BasicToolDependencyKind;
    severity?: BasicToolDependencySeverity;
    versionRange?: string;
    scope?: string;
    metadata?: Readonly<Record<string, unknown>>;
};
export type BasicToolDependencyProbe = {
    id: string;
    available: boolean;
    version?: string;
    resolvedPath?: string;
    scope?: string;
    detail?: string;
    metadata?: Readonly<Record<string, unknown>>;
};
export type BasicToolDependencyContext = {
    runtimeId?: string;
    toolId?: string;
    dryRun?: boolean;
    allowedScopes?: readonly string[];
    metadata?: Readonly<Record<string, unknown>>;
};
export type BasicToolDependencyCheckRequest = {
    context?: BasicToolDependencyContext;
    dependencies?: readonly BasicToolDependencyDeclaration[];
    probes?: readonly BasicToolDependencyProbe[];
    refreshPolicy?: "use-provided-probes" | "stale-ok";
};
export type BasicToolDependencyErrorCode = "MISSING_RUNTIME_ID" | "MISSING_TOOL_ID" | "MISSING_DEPENDENCIES" | "INVALID_DEPENDENCY" | "SCOPE_DENIED" | "DEPENDENCY_UNAVAILABLE" | "REFRESH_PROBE_BLOCKED";
export type BasicToolDependencyError = {
    code: BasicToolDependencyErrorCode;
    message: string;
    boundary: BasicToolDependencyBoundary;
    publicSafe: true;
};
export type BasicToolDependencyStatus = {
    id: string;
    kind: BasicToolDependencyKind;
    severity: BasicToolDependencySeverity;
    available: boolean;
    version?: string;
    resolvedPath?: string;
    versionRange?: string;
    scope?: string;
    staleProbeAccepted: boolean;
    detail?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type BasicToolDependencyProbeLocation = "praxis-managed" | "path";
export type BasicToolDependencyProbeCandidate = {
    id: string;
    command: string;
    args: readonly string[];
    location: BasicToolDependencyProbeLocation;
};
export type BasicToolDependencyProbePlan = {
    kind: "agentCore.basicTool.dependencyProbePlan";
    dependencyId: string;
    candidates: readonly BasicToolDependencyProbeCandidate[];
    externalProbePerformed: false;
    unsafeSideEffects: false;
};
export type BasicToolDependencyReport = {
    kind: "agentCore.basicTool.dependencyReport";
    runtimeId: string;
    toolId: string;
    status: "satisfied" | "degraded";
    dependencies: readonly BasicToolDependencyStatus[];
    missingRequired: readonly string[];
    optionalMissing: readonly string[];
    dryRun: true;
    externalProbePerformed: false;
    unsafeSideEffects: false;
    audit: {
        event: "agentCore.basicTool.dependencyChecker.checked";
        metadata: Readonly<Record<string, unknown>>;
    };
};
export type BasicToolDependencyCheckResult = {
    ok: true;
    report: BasicToolDependencyReport;
    events: readonly string[];
} | {
    ok: false;
    error: BasicToolDependencyError;
    report?: BasicToolDependencyReport;
    events: readonly string[];
};
export declare const basicToolDependencyCheckerDescriptor: {
    readonly capability: "check-basic-tool-runtime-dependencies";
    readonly layer: "agent_executionEngine.basic_toolLayer.toolDependency.dependencyChecker";
    readonly defaultRefreshPolicy: "use-provided-probes";
    readonly externalProbePerformed: false;
    readonly unsafeSideEffects: false;
};
export declare function planBasicToolDependencyProbe(dependency: BasicToolDependencyDeclaration, options?: {
    env?: Readonly<Record<string, string | undefined>>;
    homeDir?: string;
    managedRoot?: string;
}): BasicToolDependencyProbePlan;
export declare function checkBasicToolDependencies(request?: BasicToolDependencyCheckRequest): BasicToolDependencyCheckResult;
