import { type IBaseAdapter } from '@unchainedshop/utils'; import { type Enrollment, type EnrollmentOrderPositionTemplate, type EnrollmentPeriod, type EnrollmentPlan } from '@unchainedshop/core-enrollments'; import type { Product, ProductPlan } from '@unchainedshop/core-products'; import type { OrderPosition } from '@unchainedshop/core-orders'; export interface EnrollmentContext { enrollment: Enrollment; product: Product; } export interface EnrollmentAdapterActions { configurationForOrder: (params: { period: EnrollmentPeriod; }) => Promise<{ orderContext?: Record; orderPositionTemplates: EnrollmentOrderPositionTemplate[]; } | null>; isOverdue: () => Promise; isValidForActivation: () => Promise; nextPeriod: () => Promise; } export type IEnrollmentAdapter = IBaseAdapter & { isActivatedFor: (productPlan?: ProductPlan) => boolean; transformOrderItemToEnrollmentPlan: (orderPosition: OrderPosition, unchainedAPI: any) => Promise; actions: (params: EnrollmentContext) => EnrollmentAdapterActions; }; export declare const periodForReferenceDate: (referenceDate: Date, intervalCount?: number, interval?: string) => { start: Date; end: any; }; export declare const EnrollmentAdapter: Omit;