/**
 * Character table core — store binding, table cache, and entry resolution.
 *
 * Owns the single source of truth for the parsed `CharacterTable.json`:
 * the store reference, the lazy parse cache, and the multi-key resolver
 * (id / CN name / EN name / engName). The operations module
 * (`./characters.js`) and the profiles module (`./characterProfiles.js`)
 * both resolve entries through `resolveCharacterEntry` so lookup
 * precedence stays consistent across the character domain.
 *
 * ## Table shape
 *
 * CharacterTable.json: `{ [characterId: string]: CharacterEntry }`.
 * The characterId format is `chr_NNNN_slug` (e.g. `chr_0002_endminm`).
 * There are ~29 entries (as of the first export, 2026-06).
 *
 * Name / CV fields come through the i18n resolver (`./texts.ts`) so
 * callers get actual strings, not int64 hashes.
 */
import { type LanguageCode, type LocalizedText } from "./texts.js";
import type { JsonStore } from "./stores.js";
/** The cvName sub-object shape. */
interface CvNameObject {
    ChiCVName?: LocalizedText;
    EngCVName?: LocalizedText;
    JapCVName?: LocalizedText;
    KorCVName?: LocalizedText;
    charId?: string;
}
/** Raw CharacterTable.json entry. Only fields we read are typed. */
export interface CharacterEntry {
    charId: string;
    name: LocalizedText;
    engName?: string;
    phoneticName?: string;
    profession: number;
    rarity: number;
    department?: string;
    charTypeId?: string;
    weaponType?: number;
    mainAttrType?: number;
    subAttrType?: number;
    sortOrder?: number;
    defaultWeaponId?: string;
    superArmor?: number;
    cvName?: CvNameObject;
    profileRecord?: unknown[];
    profileVoice?: unknown[];
    attributes?: unknown[];
}
export declare function clearCharacterCaches(): void;
export declare function bindCharacterStore(store: JsonStore): void;
/**
 * Return the parsed table sorted by `sortOrder` (ascending, stable).
 * The operations module uses this to produce deterministic list/search output.
 */
export declare function sortedEntries(): Array<[string, CharacterEntry]>;
/**
 * Resolve a character by id, CN name, requested-lang name, or engName.
 * Returns `{id, entry}` on hit, `null` on miss. Shared by getCharacterInfo
 * (operations) and getCharacterArchives/getCharacterVoices (profiles) so
 * both use the same lookup precedence.
 */
export declare function resolveCharacterEntry(idOrName: string, lang?: LanguageCode): {
    id: string;
    entry: CharacterEntry;
} | null;
export {};
