import type { AgentTool } from "@pie-lab/agent-core";
import { type Static, Type } from "typebox";
import { type LspClientLike } from "../../utils/lsp-client.ts";
import type { ToolDefinition } from "../extensions/types.ts";
declare const lspSchema: Type.TObject<{
    file: Type.TOptional<Type.TString>;
    line: Type.TOptional<Type.TNumber>;
    column: Type.TOptional<Type.TNumber>;
    action: Type.TUnion<[Type.TLiteral<"hover">, Type.TLiteral<"definition">, Type.TLiteral<"references">, Type.TLiteral<"diagnostics">, Type.TLiteral<"rename">, Type.TLiteral<"code_actions">, Type.TLiteral<"capabilities">, Type.TLiteral<"status">]>;
    newName: Type.TOptional<Type.TString>;
    apply: Type.TOptional<Type.TBoolean>;
    codeActionIndex: Type.TOptional<Type.TNumber>;
    timeoutMs: Type.TOptional<Type.TNumber>;
}>;
export type LspToolInput = Static<typeof lspSchema>;
export interface LspToolOptions {
    clientFactory?: (cwd: string) => LspClientLike;
}
export declare function createLspToolDefinition(cwd: string, options?: LspToolOptions): ToolDefinition<typeof lspSchema, undefined>;
export declare function createLspTool(cwd: string): AgentTool<typeof lspSchema>;
export {};
//# sourceMappingURL=lsp.d.ts.map