import { z } from 'zod';
import { ActeurCleanSchema, MandatCleanSchema, OrganeClean, DeportCleanSchema } from '../clean/acteurs_et_organes.js';
/**
 * Suppleant enriched - extends SuppleantClean
 * Adds resolved acteur from suppleantRef
 */
export declare const SuppleantEnrichedSchema: z.ZodObject<{
    dateDebut: z.ZodPipe<z.ZodPipe<z.ZodTransform<string | Date | undefined, unknown>, z.ZodOptional<z.ZodDate>> & z.ZodType<Date, unknown, z.core.$ZodTypeInternals<Date, unknown>>, z.ZodTransform<Date, Date>>;
    dateFin: z.ZodPipe<z.ZodTransform<string | Date | undefined, unknown>, z.ZodOptional<z.ZodDate>>;
    suppleantRef: z.ZodString;
    suppleant: z.ZodOptional<z.ZodLazy<z.ZodType<ActeurEnriched, unknown, z.core.$ZodTypeInternals<ActeurEnriched, unknown>>>>;
}, z.core.$strip>;
export type SuppleantEnriched = z.infer<typeof SuppleantEnrichedSchema>;
/**
 * Mandat enriched - extends MandatClean
 * Adds:
 * - acteur?: Acteur (from acteurRef)
 * - organes?: Organe[] (from organesRefs)
 */
export declare const MandatEnrichedSchema: z.ZodType<MandatEnriched>;
export type MandatEnriched = z.infer<typeof MandatCleanSchema> & {
    acteur?: ActeurEnriched;
    organes?: OrganeEnriched[];
    suppleant?: SuppleantEnriched;
};
/**
 * Organe enriched - extends OrganeClean
 * Note: organeParent and organePrecedent already in clean schema
 * (they were added by cleanOrgane, not by enrichment)
 */
export declare const OrganeEnrichedSchema: z.ZodType<OrganeClean, unknown, z.core.$ZodTypeInternals<OrganeClean, unknown>>;
export type OrganeEnriched = OrganeClean;
/**
 * Deport enriched - extends DeportClean
 * Adds:
 * - acteur?: Acteur (from refActeur)
 */
export declare const DeportEnrichedSchema: z.ZodType<DeportEnriched>;
export type DeportEnriched = z.infer<typeof DeportCleanSchema> & {
    acteur?: ActeurEnriched;
};
/**
 * Acteur enriched - extends ActeurClean
 * Note: Acteur doesn't have enrichment fields (doesn't reference other entities)
 * But mandats array contains MandatEnriched
 */
export declare const ActeurEnrichedSchema: z.ZodType<ActeurEnriched>;
export type ActeurEnriched = z.infer<typeof ActeurCleanSchema> & {
    mandats?: MandatEnriched[];
    deports?: DeportEnriched[];
};
/**
 * ActeursEtOrganes enriched - extends ActeursEtOrganesClean
 */
export declare const ActeursEtOrganesEnrichedSchema: z.ZodObject<{
    organes: z.ZodArray<z.ZodType<OrganeClean, unknown, z.core.$ZodTypeInternals<OrganeClean, unknown>>>;
    acteurs: z.ZodArray<z.ZodType<ActeurEnriched, unknown, z.core.$ZodTypeInternals<ActeurEnriched, unknown>>>;
}, z.core.$strip>;
export type ActeursEtOrganesEnriched = z.infer<typeof ActeursEtOrganesEnrichedSchema>;
/**
 * Parse Acteur from JSON string
 */
export declare function parseActeurEnriched(json: string): ActeurEnriched;
/**
 * Parse Organe from JSON string
 */
export declare function parseOrganeEnriched(json: string): OrganeEnriched;
/**
 * Parse Deport from JSON string
 */
export declare function parseDeportEnriched(json: string): DeportEnriched;
/**
 * Parse ActeursEtOrganes from JSON string
 */
export declare function parseActeursEtOrganesEnriched(json: string): ActeursEtOrganesEnriched;
/**
 * Serialize Acteur to JSON string
 */
export declare function acteurEnrichedToJson(value: ActeurEnriched): string;
/**
 * Serialize Organe to JSON string
 */
export declare function organeEnrichedToJson(value: OrganeEnriched): string;
/**
 * Serialize Deport to JSON string
 */
export declare function deportEnrichedToJson(value: DeportEnriched): string;
/**
 * Serialize ActeursEtOrganes to JSON string
 */
export declare function acteursEtOrganesEnrichedToJson(value: ActeursEtOrganesEnriched): string;
/**
 * File-specific Convert object matching Quicktype's Convert class API
 *
 * @example
 * ```typescript
 * import { ActeursEtOrganesEnrichedConvert } from "@tricoteuses/assemblee/zod"
 *
 * const acteur = ActeursEtOrganesEnrichedConvert.toActeur(json)
 * const json = ActeursEtOrganesEnrichedConvert.acteurToJson(acteur)
 * ```
 */
export declare const ActeursEtOrganesEnrichedConvert: {
    toActeur: typeof parseActeurEnriched;
    acteurToJson: typeof acteurEnrichedToJson;
    toOrgane: typeof parseOrganeEnriched;
    organeToJson: typeof organeEnrichedToJson;
    toDeport: typeof parseDeportEnriched;
    deportToJson: typeof deportEnrichedToJson;
    toActeursEtOrganes: typeof parseActeursEtOrganesEnriched;
    acteursEtOrganesToJson: typeof acteursEtOrganesEnrichedToJson;
};
