import { BaseModel } from '@/models/BaseModel'; import { SubscriptionRequest, SubscriptionCreateOptions, SubscriptionSearchFilters, SUBSCRIPTION_INTERVALS, SUBSCRIPTION_PERIODS, CANCELLATION_INTERVALS } from '@/types/subscription'; import { Currency } from '@/types'; export declare class Subscription extends BaseModel implements SubscriptionRequest { userId: number; psp: number; purpose: string; amount: number; currency: Currency; paymentInterval: string; period: string; cancellationInterval: string; referenceId?: string; offset?: number; limit?: number; constructor(data?: Partial); setUserId(userId: number): this; getUserId(): number; setPsp(psp: number): this; getPsp(): number; setPurpose(purpose: string): this; getPurpose(): string; setAmount(amount: number): this; getAmount(): number; setCurrency(currency: Currency): this; getCurrency(): Currency; setPaymentInterval(interval: string): this; getPaymentInterval(): string; setPeriod(period: string): this; getPeriod(): string; setCancellationInterval(interval: string): this; getCancellationInterval(): string; setReferenceId(referenceId: string): this; getReferenceId(): string | undefined; setOffset(offset: number): this; setLimit(limit: number): this; getApiEndpoint(): string; validate(): void; toApiFormat(): SubscriptionRequest; private isValidISO8601Duration; static calculateNextBillingDate(startDate: Date, interval: string, occurrences?: number): Date; static getDurationInDays(interval: string): number; canBeCancelled(nextBillingDate: Date, cancellationInterval: string): boolean; private negateDuration; static createMonthly(userId: number, psp: number, purpose: string, amount: number, currency: Currency, periodInMonths?: number): Subscription; static createAnnual(userId: number, psp: number, purpose: string, amount: number, currency: Currency, periodInYears?: number): Subscription; static createQuarterly(userId: number, psp: number, purpose: string, amount: number, currency: Currency, periodInYears?: number): Subscription; static createCustom(options: SubscriptionCreateOptions): Subscription; static forListing(filters?: SubscriptionSearchFilters, offset?: number, limit?: number): Subscription; static getIntervalDescription(interval: string): string; static getCommonIntervals(): typeof SUBSCRIPTION_INTERVALS; static getCommonPeriods(): typeof SUBSCRIPTION_PERIODS; static getCommonCancellationIntervals(): typeof CANCELLATION_INTERVALS; static validateIntervalVsPeriod(paymentInterval: string, period: string): boolean; static getRecommendedCancellationInterval(paymentInterval: string): string; } //# sourceMappingURL=Subscription.d.ts.map