import { IRNode } from "../types.js"; import type { BaseConverterContext, RefTypeName, RefTypeNamingConfig } from "./BaseConverter.js"; /** Pure helper: singularize a word, respecting uncountable allow-lists. */ export declare function singularize(word: string, extraUncountable?: string[]): string; /** Default ref-type naming configuration shared by all language converters. */ export declare function defaultRefTypeNamingConfig(): RefTypeNamingConfig; /** * Returns the effective ref-type naming config for the given context: the * default merged shallow with the language profile's `refTypeNamingConfig` overrides. */ export declare function getRefTypeNamingConfig(c: BaseConverterContext): RefTypeNamingConfig; /** * Computes a path-derived, collision-free ref type name for a (signature, nodePath) pair. * * Algorithm: * 1. Parse the path into segments and pick the array-item / `*` / regular postfix list. * 2. Try increasingly more parent segments combined with each postfix. * 3. If a refType already exists for (signature, proposedName), reuse it. * 4. If no name is free after exhausting postfixes, fall back to `` with a * deterministic instance-scoped counter on `c.fallbackCounter`. */ export declare function getUniqueRefTypeName(c: BaseConverterContext, signature: string, nodePath: string): RefTypeName; /** Default resolver for a ref-type name from an IR node and signature. */ export declare function defaultResolveRefTypeName(c: BaseConverterContext, ir: IRNode, signature: string): string; /** * Returns names of all extracted ref types in declaration order. * Subclasses may filter further (e.g. to exclude the root type). */ export declare function computeExtractedTypeNames(c: BaseConverterContext): string[];