import { AutoEncoder } from '@simonbackx/simple-encoding'; import { ValidatedAddress } from '../addresses/Address.js'; import { StamhoofdFilter } from '../filters/StamhoofdFilter.js'; import { I18n } from '../I18nInterface.js'; import { ObjectWithRecords, PatchAnswers } from '../members/ObjectWithRecords.js'; import { RecordAnswer } from '../members/records/RecordAnswer.js'; import { RecordCategory } from '../members/records/RecordCategory.js'; import { RecordSettings } from '../members/records/RecordSettings.js'; import { OrganizationMetaData } from '../OrganizationMetaData.js'; import { PaymentMethod } from '../PaymentMethod.js'; import { PriceBreakdown } from '../PriceBreakdown.js'; import { User } from '../User.js'; import { Cart } from './Cart.js'; import { Customer } from './Customer.js'; import { Discount } from './Discount.js'; import { DiscountCode } from './DiscountCode.js'; import { Webshop } from './Webshop.js'; import { WebshopFieldAnswer } from './WebshopField.js'; import { CheckoutMethod, WebshopDeliveryMethod, WebshopTimeSlot } from './WebshopMetaData.js'; export declare class Checkout extends AutoEncoder implements ObjectWithRecords { timeSlot: WebshopTimeSlot | null; checkoutMethod: CheckoutMethod | null; /** * Only needed for delivery */ address: ValidatedAddress | null; customer: Customer; fieldAnswers: WebshopFieldAnswer[]; recordAnswers: Map; cart: Cart; paymentMethod: PaymentMethod | null; administrationFee: number; discounts: Discount[]; discountCodes: DiscountCode[]; /** * Applied fixed discount (not applicable to a specific cart item) */ fixedDiscount: number; /** * Applied percentage discount (not applicable to a specific cart item) * in pertenthousand */ percentageDiscount: number; /** * Number of persons we did reserve in webshop time slots (and maybe future other maximums) */ reservedPersons: number; /** * Whether we reserved order stock in webshop time slots (and maybe future other maximums) */ reservedOrder: boolean; get paymentContext(): null | 'takeout' | 'delivery'; get deliveryPrice(): number; get appliedPercentageDiscount(): number; get totalPrice(): number; get amount(): number; get priceBreakown(): PriceBreakdown; get totalPriceWithoutAdministrationFee(): number; doesMatchFilter(filter: StamhoofdFilter): boolean; isRecordEnabled(_record: RecordSettings): boolean; getRecordAnswers(): Map; patchRecordAnswers(patch: PatchAnswers): this; validateAnswers(webshop: Webshop): void; validateCart(webshop: Webshop, organizationMeta: OrganizationMetaData, asAdmin?: boolean): void; validateCheckoutMethod(webshop: Webshop, organizationMeta: OrganizationMetaData): void; validateDeliveryAddress(webshop: Webshop, organizationMeta: OrganizationMetaData): void; validateTimeSlot(_webshop: Webshop, _organizationMeta: OrganizationMetaData): void; validateCustomer(webshop: Webshop, organizationMeta: OrganizationMetaData, i18n: I18n, asAdmin?: boolean, user?: User | null): void; validatePayment(webshop: Webshop, organizationMeta: OrganizationMetaData): void; validateRecordAnswersFor(webshop: Webshop, category: RecordCategory): void; validateRecordAnswers(webshop: Webshop): void; private updateAdministrationFee; private updateDiscounts; private calculatePrices; update(webshop: Webshop): void; validate(webshop: Webshop, organizationMeta: OrganizationMetaData, i18n: I18n, asAdmin?: boolean, user?: User | null): void; /** * Convenience mapper */ get deliveryMethod(): WebshopDeliveryMethod | null; } //# sourceMappingURL=Checkout.d.ts.map