import { ConverterConfig, Language, ConversionResult, CustomUnits, CustomScales } from '../types/converterTypes';
import { WordMapping, NumberScale } from '../types/mappingTypes';
/**
 * BaseConverter
 * Abstract class for number-to-words conversion logic.
 * Handles custom mappings, scale lookups, and large number processing.
 */
export declare abstract class BaseConverter {
    protected wordCache: Map<number, WordMapping>;
    protected scales: NumberScale[];
    protected customUnits: CustomUnits;
    protected customScales: CustomScales;
    constructor();
    /**
     * Set custom unit and scale mappings from config.
     * Throws if config is invalid.
     */
    protected setCustomMappings(config: Required<ConverterConfig>): void;
    /**
     * Get the word mapping for a number in the specified language.
     * Checks custom units first, then default cache.
     */
    protected getWordMapping(num: number, lang: Language): string;
    /**
     * Get the scale name for a value in the specified language.
     * Checks custom scales first, then default scale list.
     */
    protected getScaleName(value: bigint, lang: Language): string;
    /**
     * Process a large number by recursively breaking it down into smaller components
     * using the appropriate scale values.
     * Uses binary search for performance (O(log n) for n scales).
     */
    protected processLargeNumber(num: bigint, words: string[], config: Required<ConverterConfig>): void;
    protected formatResult(words: string[], config: Required<ConverterConfig>): string;
    abstract convert(num: number | string | bigint, config: Required<ConverterConfig>): ConversionResult;
}
