import type { ApprovalReviewMode, CapabilityRequest, RiskClass, SandboxProfile } from "@best-agent/protocol";
export type PolicyVerdict = "allow" | "ask" | "deny";
export type CapabilityGroup = "tool" | "filesystem" | "shell" | "network";
export interface PolicyDecision {
    verdict: PolicyVerdict;
    group: CapabilityGroup;
    riskClass: RiskClass;
    reviewMode: ApprovalReviewMode;
    sandboxProfile: SandboxProfile;
    reason?: string;
}
export interface RuntimePolicyOptions {
    allowedShellPrefixes?: string[][];
    allowedNetworkHosts?: string[];
    allowedTools?: string[];
    allowAllShell?: boolean;
    cwd?: string;
    readableRoots?: string[];
    writableRoots?: string[];
}
export interface RuntimePolicySnapshot {
    allowedShellPrefixes: string[][];
    allowedNetworkHosts: string[];
    allowedTools: string[];
    allowAllShell: boolean;
    readableRoots: string[];
    writableRoots: string[];
}
export declare const DEFAULT_ALLOWED_TOOLS: readonly ["echo", "ask-user", "delegate_tasks", "workspace-search", "workspace-files", "content-search", "read-file", "inspect-env", "read-scratch", "shell", "fetch-url", "web-search", "write-scratch", "append-scratch", "write-workspace", "edit", "apply_patch", "verify-swift-package", "attach-text", "write-artifact"];
export declare class RuntimePolicy {
    #private;
    constructor(options: RuntimePolicyOptions);
    evaluate(request: CapabilityRequest): PolicyDecision;
    allowTools(toolNames: string[]): void;
    snapshot(): RuntimePolicySnapshot;
    overlay(options?: RuntimePolicyOptions & {
        deniedTools?: string[];
    }): RuntimePolicy;
}
export declare function createDefaultRuntimePolicy(options?: RuntimePolicyOptions): RuntimePolicy;
export declare function readsSensitiveShellCommand(command: string): boolean;
export declare function isSensitiveCapabilityRequest(request: CapabilityRequest): boolean;
//# sourceMappingURL=runtime-policy.d.ts.map