import { Acteur, Mandat, Organe } from "./acteurs_et_organes";
import { PointOdj, Reunion } from "./agendas";
import { Scrutin } from "./scrutins";
import { CodeActe } from "../shared_types/codes_actes";
export interface DossiersLegislatifs {
    textesLegislatifs: Document[];
    dossiersParlementaires: DossierParlementaire[];
}
export interface DossierParlementaire {
    schemaVersion?: string;
    xsiType?: DossierParlementaireXsiType;
    uid: string;
    legislature: string;
    titreDossier: TitreDossier;
    procedureParlementaire: ProcedureParlementaire;
    initiateur?: Initiateur;
    actesLegislatifs?: ActeLegislatif[];
    fusionDossier?: FusionDossier;
    indexation?: Indexation;
    plf?: EtudePlf[];
}
export declare enum DossierParlementaireXsiType {
    DossierCommissionEnqueteType = "DossierCommissionEnquete_Type",
    DossierIniativeExecutifType = "DossierIniativeExecutif_Type",
    DossierLegislatifType = "DossierLegislatif_Type",
    DossierMissionControleType = "DossierMissionControle_Type",
    DossierMissionInformationType = "DossierMissionInformation_Type",
    DossierResolutionAn = "DossierResolutionAN"
}
export interface EtudePlf {
    uid: string;
    organeRef: string;
    texteAssocie?: string;
    rapporteurs?: Rapporteur[];
    missionMinefi?: MissionMinefi;
    ordreDiqs: string;
    ordreCommission: string;
}
export interface MissionMinefi {
    typeMission: TypeMission;
    codeMission?: string;
    libelleLong: string;
    libelleCourt: string;
    typeBudget: TypeBudget;
    missions?: MissionMinefi[];
}
export declare enum TypeBudget {
    BudgetAnnexe = "Budget annexe",
    BudgetGénéral = "Budget g\u00E9n\u00E9ral",
    CompteDeConcoursFinancier = "Compte de concours financier",
    CompteSpécial = "Compte sp\u00E9cial",
    PremièrePartie = "Premi\u00E8re partie"
}
export declare enum TypeMission {
    MissionPrincipale = "mission principale",
    MissionSecondaire = "mission secondaire",
    PartieDeMission = "partie de mission"
}
export declare enum Qualite {
    Auteur = "auteur",
    Cosignataire = "cosignataire",
    Rapporteur = "rapporteur",
    RapporteurGénéral = "rapporteur g\u00E9n\u00E9ral",
    RapporteurPourAvis = "rapporteur pour avis",
    RapporteurSpécial = "rapporteur sp\u00E9cial"
}
export declare enum TypeActeLegislatif {
    AdoptionEuropeType = "Adoption_Europe_Type",
    ConclusionEtapeCcType = "ConclusionEtapeCC_Type",
    ConvocationCongresType = "ConvocationCongres_Type",
    CreationOrganeTemporaireType = "CreationOrganeTemporaire_Type",
    DecisionMotionCensureType = "DecisionMotionCensure_Type",
    DecisionRecevabiliteBureauType = "DecisionRecevabiliteBureau_Type",
    DecisionType = "Decision_Type",
    DeclarationGouvernementType = "DeclarationGouvernement_Type",
    DepotAccordInternationalType = "DepotAccordInternational_Type",
    DepotAvisConseilEtatType = "DepotAvisConseilEtat_Type",
    DepotInitiativeNavetteType = "DepotInitiativeNavette_Type",
    DepotInitiativeType = "DepotInitiative_Type",
    DepotLettreRectificativeType = "DepotLettreRectificative_Type",
    DepotMotionCensureType = "DepotMotionCensure_Type",
    DepotMotionReferendaireType = "DepotMotionReferendaire_Type",
    DepotRapportType = "DepotRapport_Type",
    DiscussionCommissionType = "DiscussionCommission_Type",
    DiscussionSeancePubliqueType = "DiscussionSeancePublique_Type",
    EtapeType = "Etape_Type",
    EtudeImpactType = "EtudeImpact_Type",
    MotionProcedureType = "MotionProcedure_Type",
    NominRapporteursType = "NominRapporteurs_Type",
    ProcedureAccelereType = "ProcedureAccelere_Type",
    PromulgationType = "Promulgation_Type",
    RenvoiCmpType = "RenvoiCMP_Type",
    RenvoiPrealableType = "RenvoiPrealable_Type",
    RetraitInitiativeType = "RetraitInitiative_Type",
    SaisieComAvisType = "SaisieComAvis_Type",
    SaisieComFondType = "SaisieComFond_Type",
    SaisineConseilConstitType = "SaisineConseilConstit_Type"
}
export interface ActeLegislatif {
    xsiType: TypeActeLegislatif;
    uid: string;
    codeActe: CodeActe;
    libelleActe: LibelleActe;
    organeRef?: string;
    organe?: Organe;
    dateActe?: Date;
    anneeDecision?: string;
    auteurMotion?: string;
    auteursRefs?: string[];
    casSaisine?: TypeDeclaration;
    codeLoi?: string;
    contributionInternaute?: ContributionInternaute;
    decision?: TypeDeclaration;
    depotInitialLectureDefinitiveRef?: string;
    depotInitialLectureDefinitive?: Document;
    formuleDecision?: string;
    infoJo?: InfoJo;
    infoJoce?: InfoJoce;
    infoJoRect?: InfoJo[];
    initiateur?: Initiateur;
    motif?: Motif;
    numDecision?: string;
    odjRef?: string;
    odj?: PointOdj;
    provenanceRef?: string;
    provenance?: Organe;
    rapporteurs?: Rapporteur[];
    referenceNor?: string;
    reunionRef?: string;
    reunion?: Reunion;
    statutAdoption?: TypeDeclaration;
    statutConclusion?: TypeDeclaration;
    texteAdopteRef?: string;
    texteAdopte?: Document;
    texteAssocieRef?: string;
    texteAssocie?: Document;
    texteEuropeen?: TexteEuropeen;
    texteExterneAssocie?: TexteExterneAssocie;
    texteLoiRef?: string;
    textesAssocies?: TexteAssocie[];
    titreLoi?: string;
    typeDeclaration?: TypeDeclaration;
    typeMotion?: TypeDeclaration;
    typeMotionCensure?: TypeDeclaration;
    urlConclusion?: string;
    urlEcheancierLoi?: string;
    urlLegifrance?: string;
    voteRefs?: string[];
    votes?: Scrutin[];
    actesLegislatifs?: ActeLegislatif[];
}
export interface LibelleActe {
    nomCanonique: string;
    libelleCourt?: string;
}
export interface Rapporteur {
    acteurRef: string;
    acteur?: Acteur;
    typeRapporteur: Qualite;
    etudePlfRef?: string;
}
export interface TypeDeclaration {
    famCode: string;
    libelle: string;
}
export interface TexteAssocie {
    typeTexte: TypeTexte;
    texteAssocieRef: string;
    texteAssocie?: Document;
}
export declare enum TypeTexte {
    Bta = "BTA",
    Tap = "TAP"
}
export interface ContributionInternaute {
    dateOuverture?: string;
    dateFermeture?: string;
}
export interface InfoJoce {
    refJoce: string;
    dateJoce: string;
}
export interface InitiateurActeur {
    acteurRef: string;
    acteur?: Acteur;
    mandatRef?: string;
    mandat?: Mandat;
}
export declare enum Motif {
    EnApplicationDeLArticle612DeLaConstitution = "En application de l'article 61\u00A72 de la Constitution"
}
export interface TexteEuropeen {
    typeTexteEuropeen: string;
    titreTexteEuropeen: string;
}
export interface InfoJo {
    typeJo: TypeJo;
    dateJo: string;
    numJo: string;
    urlLegifrance?: string;
    referenceNor?: string;
}
export declare enum TypeJo {
    JoLoiDecret = "JO_LOI_DECRET"
}
export interface InfoJoRectElement {
    typeJo: TypeJo;
    dateJo: string;
    numJo: string;
}
export interface FusionDossier {
    cause: Cause;
    dossierAbsorbantRef: string;
}
export declare enum Cause {
    DossierAbsorbé = "Dossier absorb\u00E9",
    ExamenCommun = "Examen commun"
}
export interface Indexation {
    themes: Themes;
}
export interface Themes {
    "@niveau": string;
    theme: Theme;
}
export interface Theme {
    libelleTheme: string;
}
export interface Initiateur {
    acteurs?: InitiateurActeur[];
    organeRef?: string;
    organe?: Organe;
}
export interface ProcedureParlementaire {
    code: string;
    libelle: string;
}
export interface TitreDossier {
    titre: string;
    titreChemin?: string;
    senatChemin?: string;
}
export interface TexteExterneAssocie {
    typeDoc: TexteExterneAssocieTypeDoc;
    texteRef: string;
    titreDoc: string;
    urlDoc: string;
}
export declare enum TexteExterneAssocieTypeDoc {
    Decret = "D\u00E9cret"
}
export interface Document {
    schemaVersion?: string;
    xsiType: TypeDocument;
    uid: string;
    legislature?: string;
    cycleDeVie: CycleDeVie;
    denominationStructurelle: DocumentDenominationStructurelle;
    provenance?: Provenance;
    titres: Titres;
    divisions?: Division[];
    dossierRef: string;
    dossier?: DossierParlementaire;
    classification: Classification;
    auteurs: Auteur[];
    correction?: Correction;
    notice: Notice;
    indexation?: Indexation;
    imprimerie?: Imprimerie;
    coSignataires?: CoSignataireElement[];
    depotAmendements?: DepotAmendements;
    organesReferents?: string[];
    rapportPublie?: boolean;
    subdivisions?: Subdivision[] | null;
}
export declare enum TypeDocument {
    AccordInternationalType = "accordInternational_Type",
    AvisConseilEtatType = "avisConseilEtat_Type",
    DocumentEtudeImpactType = "documentEtudeImpact_Type",
    RapportParlementaireType = "rapportParlementaire_Type",
    TexteLoiType = "texteLoi_Type"
}
export interface Subdivision {
    id: string;
    type?: string;
    niveau: number;
    niveauRelatif: number;
    titres?: ContenuSubdivision[];
    alineas?: ContenuSubdivision[];
}
export interface ContenuSubdivision {
    texte?: string;
    html?: string;
}
export interface Auteur {
    acteur?: AuteurActeur;
    organeRef?: string;
    organe?: Organe;
}
export interface AuteurActeur {
    acteurRef: string;
    acteur?: Acteur;
    qualite: Qualite;
}
export interface Classification {
    famille?: Famille;
    type: ProcedureParlementaire;
    sousType?: SousType;
    statutAdoption?: StatutAdoption;
}
export interface Famille {
    depot: ProcedureParlementaire;
    classe: ProcedureParlementaire;
    espece?: ProcedureParlementaire;
}
export interface SousType {
    code: string;
    libelle?: string;
    libelleEdition?: string;
}
export declare enum StatutAdoption {
    Adoptcom = "ADOPTCOM",
    Adoptseance = "ADOPTSEANCE",
    Rejetseance = "REJETSEANCE"
}
export interface CoSignataireElement {
    acteurRef?: string;
    dateCosignature: string;
    dateRetraitCosignature?: string;
    edite: boolean;
    organe?: CoSignataireOrgane;
}
export interface CoSignataireOrgane {
    organeRef: string;
    etApparentes: boolean;
}
export interface Correction {
    typeCorrection: TypeCorrection;
    niveauCorrection?: string;
}
export declare enum TypeCorrection {
    Rectifié = "Rectifi\u00E9"
}
export interface CycleDeVie {
    chrono: Chrono;
}
export interface Chrono {
    dateCreation?: Date;
    dateDepot?: Date;
    datePublication?: Date;
    datePublicationWeb?: Date;
}
export declare enum DocumentDenominationStructurelle {
    Allocution = "Allocution",
    Avis = "Avis",
    Déclaration = "D\u00E9claration",
    Lettre = "Lettre",
    Message = "Message",
    Motion = "Motion",
    ProjetDeLoi = "Projet de loi",
    PropositionDeLoi = "Proposition de loi",
    PropositionDeRésolution = "Proposition de r\u00E9solution",
    Rapport = "Rapport",
    RapportDInformation = "Rapport d'information",
    Résolution = "R\u00E9solution"
}
export interface DepotAmendements {
    amendementsSeance: AmendementsSeance;
    amendementsCommission?: AmendementsCommission[];
}
export interface AmendementsCommission {
    organeRef: string;
    amendable: boolean;
}
export interface AmendementsSeance {
    amendable: boolean;
}
export interface Division {
    xsiType: TypeDocument;
    uid: string;
    legislature?: string;
    cycleDeVie: CycleDeVie;
    denominationStructurelle: string;
    titres: Titres;
    divisions?: Division[];
    dossierRef: string;
    dossier?: DossierParlementaire;
    classification: Classification;
    auteurs: Auteur[];
    organesReferents?: string[];
    correction?: Correction;
    notice: Notice;
    indexation?: Indexation;
    imprimerie?: Imprimerie;
    rapportPublie?: boolean;
}
export interface Imprimerie {
    dian?: string;
    isbn?: string;
    nbPage?: string;
    prix?: string;
}
export interface Notice {
    numNotice?: string;
    formule?: string;
    adoptionConforme: boolean;
}
export interface Titres {
    titrePrincipal: string;
    titrePrincipalCourt: string;
}
export declare enum Provenance {
    Commission = "Commission",
    Séance = "S\u00E9ance",
    TexteDéposé = "Texte D\u00E9pos\u00E9"
}
export declare class Convert {
    static toDossiersLegislatifs(json: string): DossiersLegislatifs;
    static dossiersLegislatifsToJson(value: DossiersLegislatifs): string;
    static toDocument(json: string): Document;
    static documentToJson(value: Document): string;
    static toDossierParlementaire(json: string): DossierParlementaire;
    static dossierParlementaireToJson(value: DossierParlementaire): string;
}
