/**
 * Bridge army-assist's two datasheet id-spaces. The wargear-option table
 * (`Datasheets_options.json`) and the unit-composition table
 * (`Datasheets_unit_composition.json`) key on a *numeric* datasheet id
 * (`000002627`) that never appears in the UUID-keyed `Datasheets.json` /
 * `Datasheets_models.json`. The link is **model names**: composition
 * descriptions name a datasheet's models (numeric side), and `Datasheets_models`
 * names them (UUID side).
 *
 * Globally the match is ambiguous (the same model name recurs across factions),
 * but the converter runs one faction at a time, so candidates are restricted to
 * that faction's ~50–90 datasheets where model-name sets are effectively unique.
 * Ties that survive are returned for the caller to report rather than guessed.
 */
/** Normalise a model name for matching: lowercase, keep alphanumerics + spaces. */
export declare function normModelName(s: string): string;
/**
 * Extract a model name from a unit-composition description by dropping the
 * leading count or range ("1 Khorne Berzerker Champion" → "khorne berzerker
 * champion"; "9-19 Khorne Berzerkers" → "khorne berzerkers").
 */
export declare function modelNameFromComposition(desc: string): string;
export interface BridgeResult {
    /** numeric datasheet id → UUID datasheet id (unique best model-name match). */
    byNumeric: Map<string, string>;
    /** numeric ids that overlap the faction but tie across ≥2 UUIDs. */
    ambiguous: string[];
}
/**
 * Resolve each numeric datasheet id that carries options to a faction UUID by
 * best model-name-set overlap. Numeric ids with no overlap are treated as
 * belonging to another faction and dropped silently; ties (overlap > 0 but no
 * unique winner) are returned in `ambiguous`.
 */
export declare function bridgeOptionsToUnits(factionUuids: readonly string[], modelsByUuid: Map<string, Set<string>>, compByNumeric: Map<string, Set<string>>, optionNumericIds: Iterable<string>): BridgeResult;
//# sourceMappingURL=option-bridge.d.ts.map