import type { CompilationUnit } from "../compilationUnit.js";
import { AgencyConfig } from "../config.js";
import { AgencyProgram, VariableType } from "../types.js";
import { TypeCheckError, TypeCheckResult } from "./types.js";
export type { TypeCheckError, TypeCheckResult } from "./types.js";
export declare class TypeChecker {
    private program;
    private config;
    private scopedTypeAliases;
    private currentScopeKey;
    private functionDefs;
    private nodeDefs;
    private importedFunctions;
    private jsImportedNames;
    private interruptKindsByFunction;
    private errors;
    private inferredReturnTypes;
    private inferringReturnType;
    private sourceText;
    constructor(program: AgencyProgram, config?: AgencyConfig, info?: CompilationUnit);
    private get typeAliases();
    private withScope;
    private makeContext;
    check(): TypeCheckResult;
    private applySuppressions;
    private deduplicateErrors;
    /** Delegating method preserved for test compatibility. */
    isAssignable(source: VariableType | "any", target: VariableType | "any"): boolean;
}
export declare function typeCheck(program: AgencyProgram, config?: AgencyConfig, info?: CompilationUnit): TypeCheckResult;
export declare function formatErrors(errors: TypeCheckError[], errorType?: "warning" | "error"): string;
