export module Grain { export type SimulationCommunaute = { puissance: number economies?: number autoconso: number autoprod: number fraisDivers: number prix: number apport: number interet: number echeances: number consoMoyenneFoyer: number productible: number degradation: number inflation: number ratio: number enedis: number tarifCRE: { limites: number[] prix: number[] inflation: number } coutElec: number inflationElec: number maintenance: number turpe: number turpeInjection: number provisionOnduleurs: number assurance: number divers: number ratioDcAc: number dureeAmortissement: number tauxIS: number tauxDSRA: number } export function newSimulationCommunaute(): SimulationCommunaute { return { puissance: 0, autoconso: 90, autoprod: 10, fraisDivers: 1000, prix: 0.13, apport: 10000, interet: 4.5, echeances: 96, consoMoyenneFoyer: 2500, //Kwh/an productible: 1100, degradation: 0.6, inflation: 1, ratio: 1.1, // €/Wc enedis: 1500, tarifCRE: { limites: [0, 9, 100], prix: [0.1339, 0.0803, 0.1312], inflation: 1, }, coutElec: 0.24, // € inflationElec: 12, // % maintenance: 7, // €/kWc turpe: 16, // €/kWc turpeInjection: 0.0278, provisionOnduleurs: 0.1, // €/Wc assurance: 1, // % des travaux estimé entre 0.5% et 0.8% divers: 12, ratioDcAc: 0.8, dureeAmortissement: 10, // durée fiscale en années tauxIS: 25, tauxDSRA: 1.7, // % } } export type ListProjets = { ListProjets: null } export type ListProjetsResp = { id: string nom: string puissance: number t: number }[] export type CreateProjet = { CreateProjet: { nom?: string porteur?: string tel?: string adresse?: string centrales: Centrale[] simulation?: SimulationCommunaute prms: Prm[] } } export type Centrale = { position?: { lat: number; lng: number } azimuth?: number inclinaison?: number } export type CreateProjetResp = null | string export type SaveProjet = { SaveProjet: { id: string nom?: string porteur?: string tel?: string adresse?: string position?: { lat: number; lng: number } azimuth?: number inclinaison?: number simulation?: SimulationCommunaute prms: Prm[] centrales: Centrale[] } } export type Prm = { prm: number | null; nom: string; prenom: string } export type GetProjet = { GetProjet: string } export type GetProjetResp = null | { id: string nom?: string porteur?: string tel?: string adresse?: string position?: { lat: number; lng: number } azimuth?: number inclinaison?: number simulation?: SimulationCommunaute img?: string } export type DelProjet = { DelProjet: { id: string } } export type Cmd = | ListProjets | CreateProjet | SaveProjet | DelProjet | GetProjet }