export type ShellCommandValidationPermission = "shell:validate";
export type ShellCommandValidationBoundary = "input" | "permission" | "contract" | "governance" | "provider";
export type ShellCommandValidationVerdict = "allowed" | "requires-approval" | "blocked";
export type ShellCommandValidationContext = {
    runtimeId?: string;
    invocationId?: string;
    dryRun?: boolean;
    guard?: {
        allowed?: boolean;
        accepted?: boolean;
        reason?: string;
    };
    grantedPermissions?: readonly ShellCommandValidationPermission[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type ShellCommandValidationPolicy = {
    allowedCommands?: readonly string[];
    deniedCommands?: readonly string[];
    deniedPatterns?: readonly string[];
    allowShellOperators?: boolean;
    requireApprovalForSudo?: boolean;
};
export type ShellCommandValidationRequest = {
    command?: string;
    workingDirectory?: string;
    shell?: "sh" | "bash" | "zsh";
    policy?: ShellCommandValidationPolicy;
    context?: ShellCommandValidationContext;
};
export type ShellCommandValidationErrorCode = "MISSING_COMMAND" | "INVALID_SHELL" | "PERMISSION_DENIED" | "REAL_EXECUTION_BLOCKED" | "GOVERNANCE_REJECTED" | "PROVIDER_UNAVAILABLE" | "PROVIDER_REJECTED";
export type ShellCommandValidationError = {
    code: ShellCommandValidationErrorCode;
    message: string;
    boundary: ShellCommandValidationBoundary;
    publicSafe: true;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type ShellCommandValidationAuditEvent = {
    type: string;
    toolId: "shell.commandValidation";
    invocationId: string;
    dryRun: boolean;
    commandPreview?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type ShellCommandValidationOutput = {
    kind: "agentCore.basicTool.shell.commandValidation";
    command: string;
    workingDirectory?: string;
    shell: "sh" | "bash" | "zsh";
    verdict: ShellCommandValidationVerdict;
    reasons: readonly string[];
    requiredPermission: ShellCommandValidationPermission;
    requiresTapApproval: boolean;
    dryRun: boolean;
    providerCalled: boolean;
    executionBlocked: boolean;
    finalApprovalGranted: false;
    runtimeGuardRequired: true;
    unsafeSideEffects: false;
};
export type ShellCommandValidationResult = {
    ok: true;
    toolId: "shell.commandValidation";
    output: ShellCommandValidationOutput;
    audit: readonly ShellCommandValidationAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "shell.commandValidation";
    error: ShellCommandValidationError;
    audit: readonly ShellCommandValidationAuditEvent[];
    events: readonly string[];
};
export declare const shellCommandValidationDescriptor: {
    readonly toolId: "shell.commandValidation";
    readonly capability: "shell-command-safety-validation";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.shellBase.executionGuard";
    readonly defaultDryRun: true;
    readonly tapOwnsApproval: true;
    readonly requiredPermission: "shell:validate";
    readonly unsafeSideEffects: false;
};
export declare function validateShellCommandSafety(request?: ShellCommandValidationRequest): ShellCommandValidationResult;
