import type { IPricingSheet } from './BasePricingSheet.ts'; import { type IBaseAdapter, type PricingCalculation } from '@unchainedshop/utils'; import type { Discount } from './BasePricingDirector.ts'; import type { Order, OrderDiscount } from '@unchainedshop/core-orders'; interface IDiscountableItem { _id: string; orderId?: string; } export interface BasePricingAdapterContext { order?: Order; discounts: OrderDiscount[]; } export type BasePricingContext = { order?: Order; discounts?: OrderDiscount[]; } | { item: IDiscountableItem; }; export interface IPricingAdapterActions> { calculate: () => Promise; resultSheet: () => Sheet; } export type IPricingAdapter, DiscountConfiguration = unknown> = IBaseAdapter & { orderIndex: number; isActivatedFor: (context: PricingAdapterContext) => boolean; actions: (params: { context: PricingAdapterContext; calculationSheet: Sheet; discounts: Discount[]; }) => IPricingAdapterActions; }; export declare const BasePricingAdapter: () => IPricingAdapter>; export {};