{"version":3,"sources":["src/app/store/subscription/subscription.state.module.ts","src/app/models/subscription-plan.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { SubscriptionState } from './subscription.state';\nimport { SubscriptionService } from './subscription.service';\n\n@NgModule({\n declarations: [],\n imports: [NgxsModule.forFeature([SubscriptionState])],\n providers: [SubscriptionService],\n exports: [],\n})\nexport class SubscriptionStateModule {}\n","import { FeatureAvailability } from '../store/subscription/subscription.state';\nimport { PreviewInvoice } from './billing';\n\nexport enum SubscriptionStatus {\n ACTIVE = 'ACTIVE',\n PENDING = 'PENDING',\n INCOMPLETE = 'INCOMPLETE',\n UNPAID = 'UNPAID',\n TRIALING = 'TRIALING',\n CANCELED = 'CANCELED',\n}\n\nexport interface ChangeSubscriptionOptions {\n planName: string;\n priceId: string;\n isTrial?: boolean;\n discountCodes?: string[];\n}\n\nexport interface SubscriptionPlan {\n id: string;\n canStartTrial: boolean;\n canChange: boolean;\n status: SubscriptionStatus;\n plan: Plan;\n details: SubscriptionDetails;\n}\n\nexport type BillingCycle = 'day' | 'month' | 'quarter' | 'year';\n\nexport interface Plan {\n id: string;\n name: string;\n order: number;\n features: Feature[];\n prices: Price[];\n}\n\nexport interface Price {\n id: string;\n currency: string;\n interval: BillingCycle;\n intervalCount: number;\n trialPeriodDays: number;\n amount: number;\n}\n\nexport interface Feature {\n id: string;\n name: string;\n tier: number;\n quota?: Quota;\n usage?: Usage;\n availability?: FeatureAvailability;\n}\n\nexport interface Usage {\n unit: string;\n value: number;\n}\n\nexport interface Quota {\n type: string;\n quota: number;\n}\n\nexport interface SubscriptionDetails {\n currentPlan: SubscriptionPlanDetails;\n changeAt?: Date;\n nextPlan?: SubscriptionPlanDetails;\n currentPeriodStart: Date;\n currentPeriodEnd: Date;\n cancelAt: Date;\n upcomingInvoice?: PreviewInvoice;\n}\n\nexport interface SubscriptionPlanDetails {\n plan: Plan;\n price: number;\n currency: string;\n billingCycle: BillingCycle;\n}\n"],"names":["SubscriptionStateModule","SubscriptionService","imports","NgxsModule","forFeature","SubscriptionState","SubscriptionStatus"],"mappings":";;wIAWA,IAAaA,GAAuB,IAAA,CAA9B,MAAOA,CAAuB,iDAAvBA,EAAuB,CAAA,+BAAvBA,CAAuB,CAAA,CAAA,oCAHvB,CAACC,CAAmB,EAACC,QAAA,CADtBC,EAAWC,WAAW,CAACC,CAAiB,CAAC,CAAC,CAAA,CAAA,CAAA,SAIzCL,CAAuB,GAAA,ECRpC,IAAYM,EAAZ,SAAYA,EAAkB,CAC5BA,OAAAA,EAAA,OAAA,SACAA,EAAA,QAAA,UACAA,EAAA,WAAA,aACAA,EAAA,OAAA,SACAA,EAAA,SAAA,WACAA,EAAA,SAAA,WANUA,CAOZ,EAPYA,GAAkB,CAAA,CAAA","debug_id":"02fb81f4-9a3f-50dc-86fe-7c069b6e1e97"}