import type { AgentToolCall, AgentToolName, ApprovalRequest, PermissionDecision, ToolResult, ToolSpec } from "./types.js";
type DocumentAnalyzer = (request: {
    path: string;
    prompt: string;
    signal?: AbortSignal;
}) => Promise<string>;
export type WorkspaceToolsOptions = {
    root: string;
    allowWrite: boolean;
    allowShell: boolean;
    allowShellMetacharacters?: boolean;
    allowExternalFileAnalysis?: boolean;
    documentAnalyzer?: DocumentAnalyzer;
    memoryEnabled?: boolean;
    timeoutMs?: number;
    signal?: AbortSignal;
    approvalHandler?: (request: ApprovalRequest) => Promise<PermissionDecision>;
};
export declare const toolSpecs: Record<AgentToolName, ToolSpec>;
export declare function getToolSpec(name: AgentToolName): ToolSpec;
export declare class WorkspaceTools {
    readonly root: string;
    private readonly rootRealPath;
    private readonly allowWrite;
    private readonly allowShell;
    private readonly allowShellMetacharacters;
    private readonly allowExternalFileAnalysis;
    private readonly memoryEnabled;
    private readonly documentAnalyzer?;
    private readonly timeoutMs;
    private readonly signal?;
    private readonly approvalHandler?;
    private readonly sessionApprovals;
    constructor(options: WorkspaceToolsOptions);
    execute(call: AgentToolCall): Promise<ToolResult>;
    private updateTodo;
    resolveInsideWorkspace(requestedPath: string): string;
    normalizeWorkspaceRelativePath(requestedPath: string): string;
    private listFiles;
    private findFiles;
    private readFile;
    private readRange;
    private fileInfo;
    private inspectDocument;
    private readTextDocument;
    private analyzeDocumentWithProvider;
    private providerAnalysisTimeoutMs;
    private memoryRemember;
    private memorySearch;
    private searchText;
    private writeFile;
    private createPdf;
    private createDocx;
    private requestWriteApproval;
    private editFile;
    private gitStatus;
    private gitDiff;
    private gitLog;
    private gitShow;
    private listChangedFiles;
    private listScripts;
    private repoOverview;
    private testList;
    private dependencyTree;
    private applyPatch;
    private runScript;
    private runTests;
    private runPackageScript;
    private runShell;
    private readPackageScripts;
    private readPackageJsonObject;
    private requestApproval;
    private resolveReadPath;
    private resolveDocumentPath;
    private resolveWritePath;
    private assertSafeResolvedWorkspacePath;
    private validatePatchTargets;
    private validateShellPathArguments;
}
export declare function isSensitivePath(value: string): boolean;
export {};
