import type { ToolDependencyDeclaration } from "./dependencyManager.js";
import { type ToolDependencySourceEntry } from "./dependencySourceRegistry.js";
export type LspLanguageConfidence = "explicit" | "high" | "medium" | "low";
export type LspWorkspaceFacts = {
    markerFiles?: readonly string[];
    fileContentSample?: string;
};
export type LspDependencyResolveRequest = {
    toolId?: string;
    target?: {
        filePath?: string;
        languageId?: string;
    };
    workspaceRoot?: string;
    workspaceFacts?: LspWorkspaceFacts;
};
export type LspDependencyProfile = {
    languageId: string;
    languageName: string;
    dependencyId: string;
    serverCommand: string;
    serverCandidates: readonly string[];
    serverArgs: readonly string[];
    fileExtensions: readonly string[];
    workspaceMarkers: readonly string[];
    confidence: LspLanguageConfidence;
    reasons: readonly string[];
    source?: ToolDependencySourceEntry;
};
export type LspDependencyResolveResult = {
    ok: true;
    profile: LspDependencyProfile;
    events: readonly string[];
} | {
    ok: false;
    error: {
        code: "MISSING_TARGET" | "UNRESOLVED_LSP_LANGUAGE";
        message: string;
        publicSafe: true;
    };
    events: readonly string[];
};
type LspLanguageProfileRegistryEntry = {
    languageId: string;
    aliases?: readonly string[];
    languageName: string;
    dependencyId: string;
    serverArgs?: readonly string[];
    fileExtensions: readonly string[];
    workspaceMarkers: readonly string[];
    shebangPatterns?: readonly RegExp[];
};
export declare const lspLanguageProfileRegistry: readonly LspLanguageProfileRegistryEntry[];
export declare function resolveLspDependency(request?: LspDependencyResolveRequest): LspDependencyResolveResult;
export declare function declarationsFromLspProfile(profile: LspDependencyProfile): readonly ToolDependencyDeclaration[];
export {};
