UNPKG

amberflo-metering-typescript

Version:
137 lines (136 loc) 3.78 kB
import { IValidatable } from './validation'; import { BillingPeriodInterval, PaymentStatus } from './payments'; export declare class AllInvoicesQuery implements IValidatable { customerId: string; productId?: string; fromCache?: boolean; withPaymentStatus?: boolean; constructor(customerId: string); validate(): void; } export declare class LatestInvoiceQuery extends AllInvoicesQuery { latest: boolean; } export declare class InvoiceQuery extends AllInvoicesQuery { productPlanId: string; year: number; month: number; day: number; constructor(customerId: string, productPlanId: string, year: number, month: number, day: number); validate(): void; } declare enum PromotionType { planFreeTier = "plan_free_tier", automaticPromotion = "automatic_promotion", discount = "discount", coupon = "coupon" } declare enum InvoiceStatus { open = "open", gracePeriod = "grace_period", priceLocked = "price_locked" } declare class InvoiceKey { accountId: string; customerId: string; productId: string; productPlanId: string; year: number; month: number; day: number; } declare class BillingPeriod { interval: BillingPeriodInterval; intervalsCount: number; } declare class ProductItemInvoiceKey extends InvoiceKey { productItemKey: string; } declare class ItemVariantBill { priceInCredits?: number; priceInBaseCurrency?: number; startTimeInSeconds: number; endTimeInSeconds: number; meterUnits: number; price: number; meteredUnitsPerTier?: { [key: string]: number; }; } declare class ProductItemVariantInvoice { key: string; itemDimensions: { [key: string]: string; }; hourlyBillInfos?: ItemVariantBill[]; totalBill: ItemVariantBill; lateArrivalMeters: number; } declare class ProductItemInvoice { key: ProductItemInvoiceKey; productItemId: string; productItemName: string; meterApiName: string; productPlanName: string; productItemVariants: ProductItemVariantInvoice[]; totalBill: ItemVariantBill; } declare class AppliedPromotion { promotionId: string; promotionName: string; promotionType: PromotionType; discount: number; promotionAppliedTimeInSeconds: number; maxDiscountPossible: number; canBeUsedForPayAsYouGo: boolean; discountInCredits: number; } declare class ProductPlanFee { id: string; name: string; description: string; cost: number; isOneTimeFee: boolean; } declare class ProductPlanBill { startTimeInSeconds: number; endTimeInSeconds: number; itemPrice: number; fixPrice: number; prepaid: number; totalDiscount: number; totalPriceBeforeDiscount: number; totalPriceBeforePrepaid: number; totalPrice: number; } declare class CreditUnit { id: string; shortName: string; name: string; description: string; ratioToCurrency: number; } export declare class CustomerProductInvoice { invoiceUri: string; invoiceKey: InvoiceKey; planBillingPeriod: BillingPeriod; planName: string; invoiceStartTimeInSeconds: number; invoiceEndTimeInSeconds: number; gracePeriodInHours: number; productItemInvoices: ProductItemInvoice[]; appliedPromotions: AppliedPromotion[]; productPlanFees: ProductPlanFee[]; totalBill: ProductPlanBill; invoicePriceStatus: InvoiceStatus; creditUnit?: CreditUnit; paymentStatus: PaymentStatus; paymentCreatedInSeconds?: number; externalSystemStatus?: string; invoiceBillInCredits?: ProductPlanBill; availablePrepaidLeft?: number; availablePrepaidLeftInCredits?: number; availablePayAsYouGoMoney?: number; availablePayAsYouGoMoneyInCredits?: number; } export {};