import { type LspLocation, type LspTextDocumentPosition, type LspToolContext, type LspToolResult } from "../code.lsp_locateDefinition/core.js";
import { type LspLocateDefinitionRuntimeOptions } from "../_shared/runtime.js";
export type LspTraceImplementationsOutput = {
    kind: "agentCore.basicTool.lsp.traceImplementations";
    target: LspTextDocumentPosition;
    implementations: readonly LspLocation[];
    dryRun: boolean;
    providerCalled: boolean;
    permissionsRequired: readonly ["workspace:read", "lsp:read"];
    unsafeSideEffects: false;
};
export type LspTraceImplementationsProvider = (target: LspTextDocumentPosition, context: LspToolContext) => readonly LspLocation[] | Promise<readonly LspLocation[]>;
export type LspTraceImplementationsRequest = {
    target?: Partial<LspTextDocumentPosition>;
    context?: LspToolContext;
    provider?: LspTraceImplementationsProvider;
    runtime?: LspLocateDefinitionRuntimeOptions;
};
export declare const lspTraceImplementationsDescriptor: {
    readonly toolId: "code.lsp_traceImplementations";
    readonly capability: "trace-implementations";
    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 traceLspImplementations(request?: LspTraceImplementationsRequest): Promise<LspToolResult<LspTraceImplementationsOutput>>;
