import { Amount } from '../../../commonStateTypes/amount'; import { FetchStateAndError, FetchedState, ID } from '../../../commonStateTypes/common'; import { InvoicingCoupon } from '../../../entity/invoicing/coupon/couponState'; /** * Draft form state for the create/edit discount-coupon form. Held in CES so the * form flows its data from here (mirrors the customer form pattern). Dates are * stored as ISO `YYYY-MM-DD` strings; the discount amount as an `Amount` (as on * the coupon entity); remaining quantities as raw strings. */ export interface InvoicingCouponFormLocalData { applyOn: string; couponCode: string; couponId: string; discountPercentage: string; discountQuantity: string; discountType: string; durationType: string; invoiceName: string; invoiceNotes: string; maxRedemptions: string; name: string; period: string; periodUnit: string; validFrom: string; validTill: string; /** Unset until the user enters one, so an explicit 0 stays distinguishable. */ discountAmount?: Amount; } export interface EditInvoicingCouponDetailViewState extends FetchedState { /** Lifecycle action (archive, activate, …) fetch state per coupon id. */ actionStateById: Record; editDraftById: Record; newCouponDraft: InvoicingCouponFormLocalData; /** Detail-load state per coupon id. */ recordStateById: Record; savedCouponId?: ID; } export declare const initialInvoicingCouponFormLocalData: InvoicingCouponFormLocalData; /** Seed the form draft from an existing coupon entity (edit mode). */ export declare const entityToInvoicingCouponFormLocalData: (coupon?: InvoicingCoupon) => InvoicingCouponFormLocalData;