import { QuoteType, Retailer, Fuel, PaymentMethod, ServiceType, Region, Usage, EnergyUsage, Insulation, UsagePeriod, UsageUnit, TariffId, BoltonName, BundleName } from './Enums'; import { Meter } from './Address'; import { LocalDate } from 'js-joda'; export interface Quote { quoteType: QuoteType, postcode: string, retailer: Retailer, fuel: Fuel, paymentMethod: PaymentMethod, serviceType?: ServiceType, economy7: boolean, dateCreated: LocalDate, region: Region, currentSupply: { [key: string]: CurrentSupply }, tariffs: { [tariffId: string]: Tariff }, boltons: Bolton[], bundles: Bundle[] } export interface QuoteWithMeters extends Quote { meters: Meter[]; } interface CurrentSupply { supplier: string, tariff: string, annualUsage: number, annualSpend: number } export interface Tariff { name: string, description?: string, tagline?: string, footnote?: string, renewableFuelPercentage: number, exitFees: number, discount: number, contractLength: number, expectedAnnualSpend: number, expectedAnnualSavings: number, tils: { [utility: string]: TIL } } // Used in the quote controller where we need to order and display multiple tariffs export interface TariffWithId extends Tariff { id: TariffId } export interface TIL { name: string, supplierName: string, paymentMethod: string, unitRate: number, nightUnitRate?: number, standingCharge: number, tariffEndDate?: LocalDate, exitFees: number, discount: number, annualUsage: number, annualSpend: number, comparisonRate: number } interface BaseQuoteRequestParams { retailer: Retailer, postcode: string, economy7: boolean, fuel: Fuel, paymentMethod: PaymentMethod, serviceType?: ServiceType, region?: Region } export interface Bolton { name: BoltonName, displayName: string, cost: number, description: string }; export interface Bundle { name: BundleName, displayName: string, tariff: TariffId, description: string, expectedAnnualSpend: number, benefits: { [benefitType: string]: string }, boltons: BundleBolton[] }; interface BundleBolton { name: BoltonName, discountPercentage: number }; export interface QuickQuoteRequestParams extends BaseQuoteRequestParams { usage: Usage } export interface EstimatedQuoteRequestParams extends BaseQuoteRequestParams { energyUsage: EnergyUsage, insulation: Insulation, numberOfOccupants: number, numberOfRooms: number } export interface UsageBasedQuoteRequestParams extends BaseQuoteRequestParams { electricityPeriod: UsagePeriod, electricitySupplierId: string electricityTariffId: string, electricityUnit: UsageUnit, electricityUsage: number, gasPeriod?: UsagePeriod gasSupplierId?: string, gasTariffId?: string, gasUnit?: UsageUnit, gasUsage?: number } export interface MoveInQuoteRequestParams extends BaseQuoteRequestParams { electricityUsage: number, gasUsage?: number } export interface SaveQuoteRequest { agentId?: string email: string, quote: Quote, tariffId: TariffId } export interface SaveQuoteResponse { id: string }