import { type IBaseAdapter } from '@unchainedshop/utils'; import type { IPricingSheet } from './BasePricingSheet.ts'; import type { PricingCalculation } from '@unchainedshop/utils'; import type { Order, OrderDiscount } from '@unchainedshop/core-orders'; import type { Modules } from '../modules.ts'; export interface DiscountContext { code?: string; orderDiscount?: OrderDiscount; order: Order; } export type IDiscountAdapter = IBaseAdapter & { orderIndex: number; isManualAdditionAllowed: (code?: string) => Promise; isManualRemovalAllowed: () => Promise; actions: (params: { context: DiscountContext & { modules: Modules; }; }) => Promise>; }; export interface DiscountAdapterActions { isValidForSystemTriggering: () => Promise; isValidForCodeTriggering: (params: { code: string; }) => Promise; discountForPricingAdapterKey: (params: { pricingAdapterKey: string; calculationSheet: IPricingSheet; }) => DiscountConfiguration | null; reserve: (params: { code?: string; }) => Promise; release: () => Promise; } export declare const BaseDiscountAdapter: Omit, 'key' | 'label' | 'version'>;