import { Settlement } from "../Settlement" import { Agent } from "./Agent" import { Complete } from "./Complete" import { CostPlus } from "./CostPlus" import { Master } from "./Master" import { Merchant } from "./Merchant" export function convert(settlements: Settlement[], role: "master" | undefined, costPlus: true | undefined): Master.Csv export function convert(settlements: Settlement[], role: "agent", costPlus: true | undefined): Agent.Csv export function convert(settlements: Settlement[], role: "merchant", costPlus: true): CostPlus.Csv export function convert(settlements: Settlement[], role: "merchant", costPlus: undefined): Merchant.Csv export function convert( settlements: Settlement[], role: "merchant" | "agent" | "master" | undefined, costPlus: true | undefined ): Master.Csv | Agent.Csv | CostPlus.Csv | Merchant.Csv export function convert( settlements: Settlement[], role: "merchant" | "agent" | "master" | undefined, costPlus: true | undefined ): Master.Csv | Agent.Csv | CostPlus.Csv | Merchant.Csv { const complete: Complete[] = settlements.reduce((r, c) => [...r, Complete.from(c)], []) return role == "master" || role == undefined ? Master.Csv.from(complete.map(Master.from)) : role == "agent" ? Agent.Csv.from(complete.map(Agent.from)) : costPlus == true ? CostPlus.Csv.from(complete.map(CostPlus.from)) : Merchant.Csv.from(complete.map(Merchant.from)) }