import { Person } from '../commons/Person';
import type { ObjeRecord } from "../commons/ObjeRecord";
/** Options d’export `.ged` / `.zip` (round-trip partiel avec {@link ReadGed.preservedTopLevelRecords}). */
export type GedcomExportOptions = {
    /** Blocs `0 …` à recoller avant `SUBM` / `TRLR` (ex. `readGed.preservedTopLevelRecords`). */
    extraTopLevelRecords?: readonly string[] | null;
    /** Enregistrements `OBJE` complets (ex. `readGed.objeRecordsById`) pour multi-`FILE` / `MEDI` / `TRAN`. */
    objeRecordsById?: ReadonlyMap<number, ObjeRecord> | null;
    /** Balise BCP 47 pour `1 LANG` sous `HEAD` (défaut `en-US`). */
    headLanguageTag?: string | null;
    /** Texte `1 COPR` sous `HEAD` (copyright / mention légale), une ligne logique. */
    headCopyright?: string | null;
    /**
     * Définitions d’extensions `HEAD`.`SCHMA` (`2 TAG …`), ex. `{ tag: "_FOO", uri: "https://…" }`.
     * Les tags sont émis tels quels (GEDCOM 7 : souvent préfixe `_`).
     */
    headSchemaTagDefs?: readonly {
        readonly tag: string;
        readonly uri: string;
    }[] | null;
    /**
     * Valeur `1 DEST` sous `HEAD` (URI ou identifiant d’application cible, ex. `https://gedcom.io/`).
     */
    headDestination?: string | null;
    /** Rapport d’avancement import / export (0–100 %). */
    onProgress?: import("../utils/gedcom/transferProgress").GedcomTransferProgressCallback;
};
declare class GEDCOM {
    protected title: string;
    protected persons: Array<Person>;
    protected onCreate: number;
    private haveFiles;
    protected readonly exportOptions: GedcomExportOptions;
    constructor(title: string | undefined, persons: Array<Person>, haveFiles: boolean, exportOptions?: GedcomExportOptions | null);
    private get beginGedcom();
    private get defaultSubmitterRecord();
    /** Enregistrements `OBJE` pour les médias avec {@link MultimediaFile.objeXrefId}. */
    private collectObjeRecords;
    private joinExtraTopLevelRecords;
    private get contentGedcom();
    gedcomBlob(): Blob;
}
export declare class ExportGedzipFile extends GEDCOM {
    constructor(...args: [Person[]] | [string, Person[]] | [Person[], GedcomExportOptions] | [string, Person[], GedcomExportOptions]);
    gedzipBlob(): Promise<Blob>;
    download(): Promise<void>;
    private collectGedzipMediaEntries;
    private resolvePersonIndi;
    private resolveActIndis;
    private resolveZipPath;
}
export declare class ExportGedcomFile extends GEDCOM {
    constructor(...args: [Person[]] | [string, Person[]] | [Person[], GedcomExportOptions] | [string, Person[], GedcomExportOptions]);
    download(): void;
}
export declare class FamilyLine {
    private readonly persons;
    private readonly haveFiles;
    private informationFamilies;
    constructor(persons: Person[], haveFiles: boolean);
    lines(): string;
    private setInformationFamilies;
}
export declare class PersonLine {
    private readonly INDI;
    private readonly NAME;
    private readonly SEX;
    private readonly ATTRS;
    private readonly FAMS;
    private readonly FAMC;
    private readonly FILES;
    private readonly ACTS;
    private readonly NOTES;
    private readonly haveFiles;
    constructor(person: Person, haveFiles: boolean, allPersons: readonly Person[]);
    line(): string;
    private getIndi;
    private getName;
    private getIndiAttributes;
    private getSex;
    private buildPersonMultimediaLines;
    private getFams;
    private getFamc;
}
export {};
