import { Entity } from '../base/Entity.js'; import { SubscriptionStatus } from '../value-objects/SubscriptionStatus.js'; import { OverrideType } from '../value-objects/OverrideType.js'; export interface FeatureOverride { featureId: number; value: string; type: OverrideType; createdAt: Date; } export interface SubscriptionProps { key: string; customerId: number; planId: number; billingCycleId: number; status: SubscriptionStatus; isArchived: boolean; activationDate?: Date; expirationDate?: Date; cancellationDate?: Date; trialEndDate?: Date; currentPeriodStart?: Date; currentPeriodEnd?: Date | null; stripeSubscriptionId?: string; featureOverrides: FeatureOverride[]; metadata?: Record; createdAt: Date; updatedAt: Date; transitionedAt?: Date; } export declare class Subscription extends Entity { get key(): string; get customerId(): number; get planId(): number; get status(): SubscriptionStatus; activate(): void; cancel(): void; renew(): void; expire(): void; archive(): void; markAsTransitioned(): void; unarchive(): void; get isArchived(): boolean; setExpirationDate(date: Date): void; setActivationDate(date: Date): void; setTrialEndDate(date: Date | null): void; setCurrentPeriod(start: Date, end: Date): void; addFeatureOverride(featureId: number, value: string, type: OverrideType): void; removeFeatureOverride(featureId: number): void; getFeatureOverride(featureId: number): FeatureOverride | null; clearTemporaryOverrides(): void; canDelete(): boolean; } //# sourceMappingURL=Subscription.d.ts.map