import type { InterruptKind, SymbolKind, SymbolTable } from "../symbolTable.js";
import type { AgencyProgram, FunctionParameter } from "../types.js";
import type { SourceLocation, VariableType } from "../types.js";
export type SemanticSymbol = {
    name: string;
    originalName: string;
    kind: SymbolKind;
    source: "local" | "imported";
    filePath: string;
    loc?: SourceLocation;
    parameters?: FunctionParameter[];
    returnType?: VariableType | null;
    aliasedType?: VariableType;
    importPath?: string;
    interruptKinds?: InterruptKind[];
};
export type SemanticIndex = Record<string, SemanticSymbol>;
export declare function buildSemanticIndex(program: AgencyProgram, fsPath: string, symbolTable: SymbolTable, interruptKindsByFunction?: Record<string, InterruptKind[]>): SemanticIndex;
export declare function lookupSemanticSymbol(source: string, line: number, character: number, index: SemanticIndex): SemanticSymbol | null;
export declare function formatSemanticHover(symbol: SemanticSymbol): string;
