/** Central permission gate for deciding which runtime tool actions require approval. */
import type { ToolDefinition } from '../../core/core-types.js';
import { BASH, EDIT, EXECUTE_CODE, FIND, GREP, LS, READ, TASK, WRITE } from '../../tool-names.js';
import { type ApprovalGate, type BashApprovalData, type FileAccessApprovalData, type TaskSpawnApprovalData } from '../approvals/types.js';
import type { ShortcutClientLogger } from '../observability/client-logging/client-logger.js';
import type { SettingsManager } from '../settings-manager.js';
export type PermissionedRuntimeToolName = typeof READ | typeof WRITE | typeof EDIT | typeof LS | typeof FIND | typeof GREP | typeof BASH | typeof EXECUTE_CODE | typeof TASK;
export declare const TOOL_GATES: {
    readonly read: {
        readonly kind: "filesystem";
        readonly access: "read";
        readonly resolvePath: (params: Record<string, unknown>, cwd: string) => string;
    };
    readonly write: {
        readonly kind: "filesystem";
        readonly access: "write";
        readonly resolvePath: (params: Record<string, unknown>, cwd: string) => string;
    };
    readonly edit: {
        readonly kind: "filesystem";
        readonly access: "write";
        readonly resolvePath: (params: Record<string, unknown>, cwd: string) => string;
    };
    readonly ls: {
        readonly kind: "filesystem";
        readonly access: "read";
        readonly resolvePath: (params: Record<string, unknown>, cwd: string) => string;
    };
    readonly find: {
        readonly kind: "filesystem";
        readonly access: "read";
        readonly resolvePath: (params: Record<string, unknown>, cwd: string) => string;
    };
    readonly grep: {
        readonly kind: "filesystem";
        readonly access: "read";
        readonly resolvePath: (params: Record<string, unknown>, cwd: string) => string;
    };
    readonly bash: {
        readonly kind: "shell";
    };
    readonly execute_code: {
        readonly kind: "self-gated";
    };
    readonly task: {
        readonly kind: "task";
    };
};
export declare const PERMISSIONED_RUNTIME_TOOL_NAMES: PermissionedRuntimeToolName[];
export interface RegisterRuntimeToolDeps {
    cwd: string;
    workspaceRoots: string[];
    settingsManager?: SettingsManager;
    filesystemApproval?: ApprovalGate<FileAccessApprovalData>;
    shellApproval?: ApprovalGate<BashApprovalData>;
    taskApproval?: ApprovalGate<TaskSpawnApprovalData>;
    observability?: Pick<ShortcutClientLogger, 'info' | 'warn' | 'error'>;
}
/** Register a runtime tool with the appropriate permission/approval wrapper. */
export declare function registerRuntimeTool(tools: ToolDefinition<any, any>[], tool: ToolDefinition<any, any>, deps: RegisterRuntimeToolDeps): void;
//# sourceMappingURL=tool-gates.d.ts.map