/**
 * Types du workflow « Ajouter un transporteur » (M4 Transport, ERP-165 / ERP-166).
 *
 * Périmètre :
 *  - ERP-165 : formulaire PRINCIPAL minimal (Nom + Certification + Affréter).
 *  - ERP-166 : champs CONDITIONNELS du formulaire principal (indexation / benne /
 *    volume si affrété — RG-4.03 ; décharge si AUTRE — RG-4.02 ; immatriculations
 *    LIOT — RG-4.01) + saisie assistée QUALIMAT (copie name / certification /
 *    adresse + FK qualimatCarrier — RG-4.01 / § 2.5).
 *
 * L'upload réel de la décharge (file → IRI via useUpload) arrive à ERP-171 ; ici
 * on porte seulement l'IRI résolu (`dischargeDocumentIri`).
 */

/**
 * Brouillon du formulaire principal. Les décimales (indexation / volume) sont
 * portées en `string` car `MalioInputNumber` émet une chaîne ; le serveur parse.
 * `certificationType` est un code enum back (GMP_PLUS | OVOCOM | COMPTE_PROPRE |
 * AUTRE | QUALIMAT — ce dernier posé par la saisie assistée) ou `null`.
 * `containerType` vaut `BENNE` | `FOND_MOUVANT` (radio) ou `null`.
 */
export interface CarrierMainDraft {
    name: string
    certificationType: string | null
    isChartered: boolean
    indexationRate: string
    containerType: string | null
    volumeM3: string
    liotPlates: string
    /** IRI du document de décharge (résolu par useUpload — ERP-171). */
    dischargeDocumentIri: string | null
    /** IRI de la ligne QUALIMAT liée (saisie assistée — null si non QUALIMAT). */
    qualimatCarrierIri: string | null
}

/** Brouillon principal vide (état initial du formulaire de création). */
export function emptyCarrierMain(): CarrierMainDraft {
    return {
        name: '',
        certificationType: null,
        isChartered: false,
        indexationRate: '',
        containerType: null,
        volumeM3: '',
        liotPlates: '',
        dischargeDocumentIri: null,
        qualimatCarrierIri: null,
    }
}

/**
 * Adresse copiée depuis le référentiel QUALIMAT à la sélection (RG-4.01 / § 2.5).
 * Stockée dans l'état du formulaire pour alimenter l'onglet Adresses (ticket
 * ultérieur) ; pré-remplie « France » côté pays par défaut.
 */
export interface CarrierAddressCopy {
    country: string
    postalCode: string
    city: string
    street: string
}

/** Adresse copiée vide. */
export function emptyCarrierAddressCopy(): CarrierAddressCopy {
    return { country: 'France', postalCode: '', city: '', street: '' }
}

/**
 * Réponse du POST / PATCH principal (groupe `carrier:read`). Le serveur renvoie
 * le nom normalisé (UPPERCASE, RG-4.13) que l'UI réaffiche tel quel.
 */
export interface CarrierMainResponse {
    id: number
    name: string | null
    certificationType: string | null
    '@id'?: string
}
