/**
 * Handles multi-view data for shared units.
 *
 * Shared units (e.g., Chaos Land Raider) appear in multiple factions with the
 * same UUID. Their abilities, models, and weapons tables contain repeated entry
 * groups — one per faction "view". Views are delimited by the line number
 * resetting to 1.
 *
 * For World Eaters, the correct view is identified by having
 * "Blessings of Khorne" as a Faction-type ability.
 */
export interface SourceAbility {
    datasheet_id: string;
    line: string;
    ability_id: string;
    model: string;
    name: string;
    description: string;
    type: string;
    parameter: string;
    phases: string[];
}
interface ViewGroup<T extends {
    line: string;
}> {
    index: number;
    entries: T[];
}
/** Split an array of line-numbered entries into view groups by line-number resets. */
export declare function splitIntoViews<T extends {
    line: string;
}>(entries: T[]): ViewGroup<T>[];
/**
 * Find the view index for a faction's shared unit.
 * Identifies the correct view by matching the faction's primary ability name
 * among the Faction-type abilities in each view.
 * Returns 0 for faction-exclusive units (single view).
 */
export declare function findFactionViewIndex(abilities: SourceAbility[], factionAbilityName: string): number;
/** Extract entries for a specific view index from a line-numbered array. */
export declare function getViewEntries<T extends {
    line: string;
}>(entries: T[], viewIndex: number): T[];
/**
 * Split points entries (no line field) into views for a shared unit.
 *
 * Points entries are ordered by view. For simple cases (1 entry per view),
 * indexing by viewIndex works. For multi-squad-size units, views are
 * delimited by the model count resetting (decreasing from prev entry).
 */
export declare function getPointsForView<T extends {
    models: string;
}>(entries: T[], viewIndex: number, numViews: number): T[];
export {};
//# sourceMappingURL=view-selector.d.ts.map