import { type LspRange, type LspToolContext, type LspToolResult } from "../code.lsp_locateDefinition/core.js";
import { type LspLocateDefinitionRuntimeOptions } from "../_shared/runtime.js";
export type LspCodeActionDiagnostic = {
    message: string;
    range?: LspRange;
    severity?: "error" | "warning" | "information" | "hint";
    code?: string;
    source?: string;
};
export type LspCodeActionSuggestion = {
    title: string;
    kind?: string;
    diagnostics?: readonly LspCodeActionDiagnostic[];
    isPreferred?: boolean;
    editAvailable: boolean;
    commandAvailable: boolean;
    source: "provider" | "dry-run";
};
export type LspCodeActionSuggestionProviderResult = Omit<LspCodeActionSuggestion, "source"> & {
    source?: LspCodeActionSuggestion["source"];
};
export type LspSuggestCodeActionsTarget = {
    filePath: string;
    range: LspRange;
    languageId?: string;
};
export type LspSuggestCodeActionsOutput = {
    kind: "agentCore.basicTool.lsp.suggestCodeActions";
    target: LspSuggestCodeActionsTarget;
    only: readonly string[];
    diagnostics: readonly LspCodeActionDiagnostic[];
    actions: readonly LspCodeActionSuggestion[];
    dryRun: boolean;
    providerCalled: boolean;
    appliesChanges: false;
    permissionsRequired: readonly ["workspace:read", "lsp:read"];
    unsafeSideEffects: false;
};
export type LspSuggestCodeActionsProvider = (target: LspSuggestCodeActionsTarget, context: LspToolContext, diagnostics: readonly LspCodeActionDiagnostic[], only: readonly string[]) => readonly LspCodeActionSuggestionProviderResult[] | Promise<readonly LspCodeActionSuggestionProviderResult[]>;
export type LspSuggestCodeActionsRequest = {
    target?: Partial<LspSuggestCodeActionsTarget>;
    diagnostics?: readonly LspCodeActionDiagnostic[];
    only?: readonly string[];
    context?: LspToolContext;
    provider?: LspSuggestCodeActionsProvider;
    runtime?: LspLocateDefinitionRuntimeOptions;
};
export declare const lspSuggestCodeActionsDescriptor: {
    readonly toolId: "code.lsp_suggestCodeActions";
    readonly capability: "suggest-code-actions";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.codeBase.lsp";
    readonly permissionsRequired: readonly ["workspace:read", "lsp:read"];
    readonly defaultDryRun: true;
    readonly appliesChanges: false;
    readonly unsafeSideEffects: false;
    readonly tapOwnsApproval: true;
};
export declare function suggestLspCodeActions(request?: LspSuggestCodeActionsRequest): Promise<LspToolResult<LspSuggestCodeActionsOutput>>;
