import { type Person } from "../commons/Person";
import type { ReadGed } from "../import/ReadGed";
import type { BookletSex } from './booklet-gender';
import type { BookletLocale } from './booklet-locale';
export type { BookletSex } from './booklet-gender';
export interface BookletRelationRef {
    readonly indi: number;
    readonly name: string;
    readonly datesLabel: string;
    readonly sex: BookletSex;
}
export interface BookletEventLine {
    readonly kind: string;
    readonly label: string;
    readonly date: string;
    readonly place: string;
}
export interface BookletUnionEntry {
    readonly familyId: number;
    readonly coParent: BookletRelationRef;
    readonly children: readonly BookletRelationRef[];
    readonly marriageLabel: string | null;
}
export interface BookletPersonEntry {
    readonly indi: number;
    readonly name: string;
    readonly sex: BookletSex;
    readonly datesLabel: string;
    readonly sosa: number | null;
    readonly generation: number | null;
    readonly events: readonly BookletEventLine[];
    readonly notesPreview: string | null;
    readonly parents: readonly BookletRelationRef[];
    readonly unions: readonly BookletUnionEntry[];
}
export { personDisplayName } from "../utils/gedcom/personName";
export declare function personDatesLabel(person: Person, locale?: BookletLocale): string;
export declare function bookletSexFromPerson(person: Person): BookletSex;
export declare function buildBookletPersonEntry(person: Person, ged: ReadGed, sosa: number | null, locale?: BookletLocale): BookletPersonEntry;
export declare function sortBookletEntries(entries: BookletPersonEntry[], locale?: BookletLocale): BookletPersonEntry[];
export type BookletScope = 'all' | 'from-reference';
export interface BookletCollectOptions {
    readonly scope: BookletScope;
    readonly ged: ReadGed;
    readonly referencePerson: Person | null;
    /** Limite de génération SOSA (1 = racine seulement). Ignoré si « tout l’arbre ». */
    readonly maxGeneration?: number | null;
    /** Booklet narrative language (default English). */
    readonly locale?: BookletLocale;
}
export declare function collectBookletPersons(options: BookletCollectOptions): BookletPersonEntry[];
