import { type LspRange, type LspToolContext, type LspToolResult } from "../code.lsp_locateDefinition/core.js";
import { type LspLocateDefinitionRuntimeOptions } from "../_shared/runtime.js";
export type LspDocumentTarget = {
    filePath: string;
    languageId?: string;
};
export type LspDocumentSymbol = {
    name: string;
    kind: string;
    range: LspRange;
    selectionRange?: LspRange;
    detail?: string;
    children?: readonly LspDocumentSymbol[];
};
export type LspScanDocumentSymbolsOutput = {
    kind: "agentCore.basicTool.lsp.scanDocumentSymbols";
    target: LspDocumentTarget;
    symbols: readonly LspDocumentSymbol[];
    dryRun: boolean;
    providerCalled: boolean;
    permissionsRequired: readonly ["workspace:read", "lsp:read"];
    unsafeSideEffects: false;
};
export type LspScanDocumentSymbolsProvider = (target: LspDocumentTarget, context: LspToolContext) => readonly LspDocumentSymbol[] | Promise<readonly LspDocumentSymbol[]>;
export type LspScanDocumentSymbolsRequest = {
    target?: Partial<LspDocumentTarget>;
    context?: LspToolContext;
    provider?: LspScanDocumentSymbolsProvider;
    runtime?: LspLocateDefinitionRuntimeOptions;
};
export declare const lspScanDocumentSymbolsDescriptor: {
    readonly toolId: "code.lsp_scanDocumentSymbols";
    readonly capability: "scan-document-symbols";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.codeBase.lsp";
    readonly permissionsRequired: readonly ["workspace:read", "lsp:read"];
    readonly defaultDryRun: true;
    readonly unsafeSideEffects: false;
    readonly tapOwnsApproval: true;
};
export declare function scanLspDocumentSymbols(request?: LspScanDocumentSymbolsRequest): Promise<LspToolResult<LspScanDocumentSymbolsOutput>>;
