import { type LspLocation, type LspToolContext, type LspToolResult } from "../code.lsp_locateDefinition/core.js";
import { type LspLocateDefinitionRuntimeOptions } from "../_shared/runtime.js";
export type LspWorkspaceSymbol = {
    name: string;
    kind: string;
    location?: LspLocation;
    containerName?: string;
    detail?: string;
    source: "provider" | "dry-run";
};
export type LspWorkspaceSymbolProviderResult = Omit<LspWorkspaceSymbol, "source"> & {
    source?: LspWorkspaceSymbol["source"];
};
export type LspSearchWorkspaceSymbolsOutput = {
    kind: "agentCore.basicTool.lsp.searchWorkspaceSymbols";
    query: string;
    symbols: readonly LspWorkspaceSymbol[];
    limit: number;
    dryRun: boolean;
    providerCalled: boolean;
    permissionsRequired: readonly ["workspace:read", "lsp:read"];
    unsafeSideEffects: false;
};
export type LspSearchWorkspaceSymbolsProvider = (query: string, context: LspToolContext, limit: number) => readonly LspWorkspaceSymbolProviderResult[] | Promise<readonly LspWorkspaceSymbolProviderResult[]>;
export type LspSearchWorkspaceSymbolsRequest = {
    query?: string;
    limit?: number;
    context?: LspToolContext;
    provider?: LspSearchWorkspaceSymbolsProvider;
    runtime?: LspLocateDefinitionRuntimeOptions;
};
export declare const lspSearchWorkspaceSymbolsDescriptor: {
    readonly toolId: "code.lsp_searchWorkspaceSymbols";
    readonly capability: "search-workspace-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 searchLspWorkspaceSymbols(request?: LspSearchWorkspaceSymbolsRequest): Promise<LspToolResult<LspSearchWorkspaceSymbolsOutput>>;
