import { type LspLocation, type LspTextDocumentPosition, type LspToolContext, type LspToolResult } from "../code.lsp_locateDefinition/core.js";
import { type LspLocateDefinitionRuntimeOptions } from "../_shared/runtime.js";
export type LspTraceReferencesOutput = {
    kind: "agentCore.basicTool.lsp.traceReferences";
    target: LspTextDocumentPosition;
    references: readonly LspLocation[];
    includeDeclaration: boolean;
    dryRun: boolean;
    providerCalled: boolean;
    permissionsRequired: readonly ["workspace:read", "lsp:read"];
    unsafeSideEffects: false;
};
export type LspTraceReferencesProvider = (target: LspTextDocumentPosition, context: LspToolContext, includeDeclaration: boolean) => readonly LspLocation[] | Promise<readonly LspLocation[]>;
export type LspTraceReferencesRequest = {
    target?: Partial<LspTextDocumentPosition>;
    includeDeclaration?: boolean;
    context?: LspToolContext;
    provider?: LspTraceReferencesProvider;
    runtime?: LspLocateDefinitionRuntimeOptions;
};
export declare const lspTraceReferencesDescriptor: {
    readonly toolId: "code.lsp_traceReferences";
    readonly capability: "trace-references";
    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 traceLspReferences(request?: LspTraceReferencesRequest): Promise<LspToolResult<LspTraceReferencesOutput>>;
