# import * from 'scalars.graphql'
# import * from 'metas.graphql'

"Domaine minier"
type Domaine {
  "Id composée d'une seule lettre"
  id: ID!

  "Nom du domaine en français"
  nom: String!

  description: String
}

"Type de titre minier"
type TitreType {
  "Id composée de trois lettres"
  id: ID!

  domaineId: String!
  domaine: Domaine!
  typeId: String!
  archive: Boolean
}

"Type de titre minier"
type TitreTypeType {
  "Id composée de deux lettres"
  id: ID!

  "Nom du type en français"
  nom: String!

  description: String

  ordre: Int!
}

"Statut d'un titre minier"
type TitreStatut {
  "Id composée de trois lettres"
  id: ID!

  "Nom du statut en français"
  nom: String!

  description: String

  ordre: Int
}

"Type de démarche applicable à un titre minier"
type DemarcheType {
  "Id composée de trois lettres"
  id: ID!

  "Nom en français"
  nom: String!

  description: String

  "Si la démarche contient une information de duréee"
  duree: Boolean

  "Si la démarche contient des informations géographiques"
  points: Boolean

  "Si la démarche contient des informations de substances"
  substances: Boolean

  "Si la démarche contient des titulaires"
  titulaires: Boolean

  "Si la démarche est renouvelable"
  renouvelable: Boolean

  exception: Boolean

  "Si c'est une démarche de travaux"
  travaux: Boolean

  "Type de titre pour laquelle cette démarche existe"
  titreTypeId: ID
}

"Statut d'une démarche applicable à un titre minier"
type DemarcheStatut {
  "Id composée de trois lettres"
  id: ID!

  "Nom en français"
  nom: String!

  couleur: Couleur!

  description: String
}

"Statut d'une phase de titre minier"
type PhaseStatut {
  "Statut d'une phase de titre minier est composé de trois lettres"
  id: ID!

  "Nom d'une phase de titre minier en français"
  nom: String!

  couleur: Couleur!
}

"Type d'étape d'une démarche de titre minier"
type EtapeType {
  "Id composée de trois lettres"
  id: ID!

  parentId: ID

  "Nom en français"
  nom: String!

  description: String

  ordre: Int!

  sections: Json

  legalLien: String
  legalRef: String
  dateDebut: String
  dateFin: String

  fondamentale: Boolean

  "Si ce type d'étape est unique au sein de la démarche"
  unique: Boolean

  acceptationAuto: Boolean

  publicLecture: Boolean
  entreprisesLecture: Boolean
}

"Statut d'une étape de démarche de titre minier"
type EtapeStatut {
  "Id du statut d'étape est composé de trois lettres"
  id: ID!

  "Nom du domaine en français"
  nom: String!

  couleur: Couleur!

  description: String
}

"Référence métier"
type ReferenceType {
  "Id du type de références en 3 lettres"
  id: ID!

  "Nom de la référence"
  nom: String
}

type AdministrationType {
  id: ID!
  nom: String
  ordre: Int
}

"Unité"
type Unite {
  id: ID!
  nom: String!
  symbole: String!
  referenceUniteId: ID
  referenceUniteRatio: Float
}

"Devise"
type Devise {
  id: ID!

  nom: String!
}

"Système géographique"
type GeoSysteme {
  id: ID!
  nom: String!
  ordre: Int!
  zone: String!
  uniteId: String
}

type DocumentType {
  id: ID!
  nom: String!
  optionnel: Boolean
  description: String
}

type TitreTypeTitreStatut {
  titreTypeId: ID!
  titreStatutId: ID!
  titreType: TitreType
  titresModificationInterdit: Boolean
  demarchesModificationInterdit: Boolean
  etapesModificationInterdit: Boolean
  publicLecture: Boolean
}

type DemarcheTypeDemarcheStatut {
  demarcheTypeId: ID!
  demarcheStatutId: ID!
  ordre: Int!
}

type EtapeTypeDocumentType {
  etapeTypeId: ID!
  documentTypeId: ID!
  optionnel: Boolean
  description: String
}

"""
Liste de couleurs génériques
"""
enum Couleur {
  error
  info
  neutral
  success
  warning
}
