@forklaunch/implementation-billing-stripe 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/LICENSE +21 -0
  2. package/lib/domain/index.d.mts +189 -0
  3. package/lib/domain/index.d.ts +189 -0
  4. package/lib/domain/index.js +231 -0
  5. package/lib/domain/index.mjs +201 -0
  6. package/lib/eject/domain/schemas/billingPortal.schema.ts +37 -0
  7. package/lib/eject/domain/schemas/checkoutSession.schema.ts +74 -0
  8. package/lib/eject/domain/schemas/index.ts +5 -0
  9. package/lib/eject/domain/schemas/paymentLink.schema.ts +62 -0
  10. package/lib/eject/domain/schemas/plan.schema.ts +68 -0
  11. package/lib/eject/domain/schemas/subscription.schema.ts +78 -0
  12. package/lib/eject/services/billingPortal.service.ts +185 -0
  13. package/lib/eject/services/checkoutSession.service.ts +179 -0
  14. package/lib/eject/services/index.ts +6 -0
  15. package/lib/eject/services/paymentLink.service.ts +239 -0
  16. package/lib/eject/services/plan.service.ts +219 -0
  17. package/lib/eject/services/subscription.service.ts +285 -0
  18. package/lib/eject/services/webhook.service.ts +272 -0
  19. package/lib/eject/types/index.ts +2 -0
  20. package/lib/eject/types/stripe.dto.types.ts +214 -0
  21. package/lib/eject/types/stripe.entity.types.ts +83 -0
  22. package/lib/schemas/index.d.mts +376 -0
  23. package/lib/schemas/index.d.ts +376 -0
  24. package/lib/schemas/index.js +704 -0
  25. package/lib/schemas/index.mjs +737 -0
  26. package/lib/services/index.d.mts +223 -0
  27. package/lib/services/index.d.ts +223 -0
  28. package/lib/services/index.js +788 -0
  29. package/lib/services/index.mjs +776 -0
  30. package/lib/types/index.d.mts +121 -0
  31. package/lib/types/index.d.ts +121 -0
  32. package/lib/types/index.js +18 -0
  33. package/lib/types/index.mjs +0 -0
  34. package/package.json +74 -0
@@ -0,0 +1,223 @@
1
+ import { IdDto, InstanceTypeRecord, IdsDto } from '@forklaunch/common';
2
+ import { TtlCache } from '@forklaunch/core/cache';
3
+ import { OpenTelemetryCollector, MetricsDefinition, TelemetryOptions } from '@forklaunch/core/http';
4
+ import { BaseBillingPortalService, BaseCheckoutSessionService, BasePaymentLinkService, BasePlanService, BaseSubscriptionService } from '@forklaunch/implementation-billing-base/services';
5
+ import { BillingPortalService, CheckoutSessionService, PaymentLinkService, PlanService, SubscriptionService } from '@forklaunch/interfaces-billing/interfaces';
6
+ import { ResponseMapperConstructor, RequestMapperConstructor, InternalMapper } from '@forklaunch/internal';
7
+ import { AnySchemaValidator } from '@forklaunch/validator';
8
+ import { EntityManager } from '@mikro-orm/core';
9
+ import Stripe__default from 'stripe';
10
+ import { StripeBillingPortalEntities, StripeBillingPortalDtos, StripeCreateBillingPortalDto, StripeUpdateBillingPortalDto, StripeBillingPortalDto, StripeCheckoutSessionEntities, StripeCheckoutSessionDtos, StripePaymentLinkEntities, StripePaymentLinkDtos, StripeCreatePaymentLinkDto, StripeUpdatePaymentLinkDto, StripePaymentLinkDto, StripePlanEntities, StripePlanDtos, StripeCreatePlanDto, StripeUpdatePlanDto, StripePlanDto, StripeSubscriptionEntities, StripeSubscriptionDtos, StripeCreateSubscriptionDto, StripeUpdateSubscriptionDto, StripeSubscriptionDto } from '../types/index.mjs';
11
+ import { PaymentMethodEnum, CurrencyEnum, PlanCadenceEnum, BillingProviderEnum } from '../domain/index.mjs';
12
+ import '@forklaunch/interfaces-billing/types';
13
+
14
+ declare class StripeBillingPortalService<SchemaValidator extends AnySchemaValidator, Entities extends StripeBillingPortalEntities, Dto extends StripeBillingPortalDtos = StripeBillingPortalDtos> implements BillingPortalService<{
15
+ CreateBillingPortalDto: StripeCreateBillingPortalDto;
16
+ UpdateBillingPortalDto: StripeUpdateBillingPortalDto;
17
+ BillingPortalDto: StripeBillingPortalDto;
18
+ IdDto: IdDto;
19
+ }> {
20
+ protected stripeClient: Stripe__default;
21
+ protected em: EntityManager;
22
+ protected cache: TtlCache;
23
+ protected openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
24
+ protected schemaValidator: SchemaValidator;
25
+ protected mappers: {
26
+ BillingPortalMapper: ResponseMapperConstructor<SchemaValidator, Dto['BillingPortalMapper'], Entities['BillingPortalMapper']>;
27
+ CreateBillingPortalMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateBillingPortalMapper'], Entities['CreateBillingPortalMapper'], (dto: Dto['CreateBillingPortalMapper'], em: EntityManager, session: Stripe__default.BillingPortal.Session) => Promise<Entities['CreateBillingPortalMapper']>>;
28
+ UpdateBillingPortalMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateBillingPortalMapper'], Entities['UpdateBillingPortalMapper'], (dto: Dto['UpdateBillingPortalMapper'], em: EntityManager, session: Stripe__default.BillingPortal.Session) => Promise<Entities['UpdateBillingPortalMapper']>>;
29
+ };
30
+ readonly options?: {
31
+ telemetry?: TelemetryOptions;
32
+ enableDatabaseBackup?: boolean;
33
+ } | undefined;
34
+ private readonly billingPortalSessionExpiryDurationMs;
35
+ baseBillingPortalService: BaseBillingPortalService<SchemaValidator, Entities, Entities>;
36
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
37
+ constructor(stripeClient: Stripe__default, em: EntityManager, cache: TtlCache, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
38
+ BillingPortalMapper: ResponseMapperConstructor<SchemaValidator, Dto['BillingPortalMapper'], Entities['BillingPortalMapper']>;
39
+ CreateBillingPortalMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateBillingPortalMapper'], Entities['CreateBillingPortalMapper'], (dto: Dto['CreateBillingPortalMapper'], em: EntityManager, session: Stripe__default.BillingPortal.Session) => Promise<Entities['CreateBillingPortalMapper']>>;
40
+ UpdateBillingPortalMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateBillingPortalMapper'], Entities['UpdateBillingPortalMapper'], (dto: Dto['UpdateBillingPortalMapper'], em: EntityManager, session: Stripe__default.BillingPortal.Session) => Promise<Entities['UpdateBillingPortalMapper']>>;
41
+ }, options?: {
42
+ telemetry?: TelemetryOptions;
43
+ enableDatabaseBackup?: boolean;
44
+ } | undefined);
45
+ createBillingPortalSession(billingPortalDto: Dto['CreateBillingPortalMapper']): Promise<Dto['BillingPortalMapper']>;
46
+ getBillingPortalSession(idDto: IdDto): Promise<Dto['BillingPortalMapper']>;
47
+ expireBillingPortalSession(idDto: IdDto): Promise<void>;
48
+ updateBillingPortalSession(billingPortalDto: Dto['UpdateBillingPortalMapper']): Promise<Dto['BillingPortalMapper']>;
49
+ }
50
+
51
+ declare class StripeCheckoutSessionService<SchemaValidator extends AnySchemaValidator, StatusEnum, Entities extends StripeCheckoutSessionEntities<StatusEnum>, Dto extends StripeCheckoutSessionDtos<StatusEnum> = StripeCheckoutSessionDtos<StatusEnum>> implements CheckoutSessionService<typeof PaymentMethodEnum, typeof CurrencyEnum, StatusEnum, {
52
+ CreateCheckoutSessionDto: Dto['CreateCheckoutSessionMapper'];
53
+ CheckoutSessionDto: Dto['CheckoutSessionMapper'];
54
+ IdDto: IdDto;
55
+ }> {
56
+ protected readonly stripeClient: Stripe__default;
57
+ protected readonly em: EntityManager;
58
+ protected readonly cache: TtlCache;
59
+ protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
60
+ protected readonly schemaValidator: SchemaValidator;
61
+ protected readonly mappers: {
62
+ CheckoutSessionMapper: ResponseMapperConstructor<SchemaValidator, Dto['CheckoutSessionMapper'], Entities['CheckoutSessionMapper']>;
63
+ CreateCheckoutSessionMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateCheckoutSessionMapper'], Entities['CreateCheckoutSessionMapper'], (dto: Dto['CreateCheckoutSessionMapper'], em: EntityManager, session: Stripe__default.Checkout.Session) => Promise<Entities['CreateCheckoutSessionMapper']>>;
64
+ UpdateCheckoutSessionMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateCheckoutSessionMapper'], Entities['UpdateCheckoutSessionMapper'], (dto: Dto['UpdateCheckoutSessionMapper'], em: EntityManager, session: Stripe__default.Checkout.Session) => Promise<Entities['UpdateCheckoutSessionMapper']>>;
65
+ };
66
+ readonly options?: {
67
+ enableDatabaseBackup?: boolean;
68
+ telemetry?: TelemetryOptions;
69
+ } | undefined;
70
+ baseCheckoutSessionService: BaseCheckoutSessionService<SchemaValidator, typeof PaymentMethodEnum, typeof CurrencyEnum, StatusEnum, Entities, Entities>;
71
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
72
+ constructor(stripeClient: Stripe__default, em: EntityManager, cache: TtlCache, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
73
+ CheckoutSessionMapper: ResponseMapperConstructor<SchemaValidator, Dto['CheckoutSessionMapper'], Entities['CheckoutSessionMapper']>;
74
+ CreateCheckoutSessionMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateCheckoutSessionMapper'], Entities['CreateCheckoutSessionMapper'], (dto: Dto['CreateCheckoutSessionMapper'], em: EntityManager, session: Stripe__default.Checkout.Session) => Promise<Entities['CreateCheckoutSessionMapper']>>;
75
+ UpdateCheckoutSessionMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateCheckoutSessionMapper'], Entities['UpdateCheckoutSessionMapper'], (dto: Dto['UpdateCheckoutSessionMapper'], em: EntityManager, session: Stripe__default.Checkout.Session) => Promise<Entities['UpdateCheckoutSessionMapper']>>;
76
+ }, options?: {
77
+ enableDatabaseBackup?: boolean;
78
+ telemetry?: TelemetryOptions;
79
+ } | undefined);
80
+ createCheckoutSession(checkoutSessionDto: Dto['CreateCheckoutSessionMapper']): Promise<Dto['CheckoutSessionMapper']>;
81
+ getCheckoutSession({ id }: IdDto): Promise<Dto['CheckoutSessionMapper']>;
82
+ expireCheckoutSession({ id }: IdDto): Promise<void>;
83
+ handleCheckoutSuccess({ id }: IdDto): Promise<void>;
84
+ handleCheckoutFailure({ id }: IdDto): Promise<void>;
85
+ }
86
+
87
+ declare class StripePaymentLinkService<SchemaValidator extends AnySchemaValidator, StatusEnum, Entities extends StripePaymentLinkEntities<StatusEnum>, Dto extends StripePaymentLinkDtos<StatusEnum> = StripePaymentLinkDtos<StatusEnum>> implements PaymentLinkService<PaymentMethodEnum, CurrencyEnum, StatusEnum, {
88
+ CreatePaymentLinkDto: StripeCreatePaymentLinkDto<StatusEnum>;
89
+ UpdatePaymentLinkDto: StripeUpdatePaymentLinkDto<StatusEnum>;
90
+ PaymentLinkDto: StripePaymentLinkDto<StatusEnum>;
91
+ IdDto: IdDto;
92
+ IdsDto: IdsDto;
93
+ }> {
94
+ protected readonly stripeClient: Stripe__default;
95
+ protected readonly em: EntityManager;
96
+ protected readonly cache: TtlCache;
97
+ protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
98
+ protected readonly schemaValidator: SchemaValidator;
99
+ protected readonly mappers: {
100
+ PaymentLinkMapper: ResponseMapperConstructor<SchemaValidator, Dto['PaymentLinkMapper'], Entities['PaymentLinkMapper']>;
101
+ CreatePaymentLinkMapper: RequestMapperConstructor<SchemaValidator, Dto['CreatePaymentLinkMapper'], Entities['CreatePaymentLinkMapper'], (dto: Dto['CreatePaymentLinkMapper'], em: EntityManager, paymentLink: Stripe__default.PaymentLink) => Promise<Entities['CreatePaymentLinkMapper']>>;
102
+ UpdatePaymentLinkMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdatePaymentLinkMapper'], Entities['UpdatePaymentLinkMapper'], (dto: Dto['UpdatePaymentLinkMapper'], em: EntityManager, paymentLink: Stripe__default.PaymentLink) => Promise<Entities['UpdatePaymentLinkMapper']>>;
103
+ };
104
+ readonly options?: {
105
+ enableDatabaseBackup?: boolean;
106
+ telemetry?: TelemetryOptions;
107
+ } | undefined;
108
+ basePaymentLinkService: BasePaymentLinkService<SchemaValidator, typeof PaymentMethodEnum, typeof CurrencyEnum, StatusEnum, Entities, Entities>;
109
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
110
+ constructor(stripeClient: Stripe__default, em: EntityManager, cache: TtlCache, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
111
+ PaymentLinkMapper: ResponseMapperConstructor<SchemaValidator, Dto['PaymentLinkMapper'], Entities['PaymentLinkMapper']>;
112
+ CreatePaymentLinkMapper: RequestMapperConstructor<SchemaValidator, Dto['CreatePaymentLinkMapper'], Entities['CreatePaymentLinkMapper'], (dto: Dto['CreatePaymentLinkMapper'], em: EntityManager, paymentLink: Stripe__default.PaymentLink) => Promise<Entities['CreatePaymentLinkMapper']>>;
113
+ UpdatePaymentLinkMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdatePaymentLinkMapper'], Entities['UpdatePaymentLinkMapper'], (dto: Dto['UpdatePaymentLinkMapper'], em: EntityManager, paymentLink: Stripe__default.PaymentLink) => Promise<Entities['UpdatePaymentLinkMapper']>>;
114
+ }, options?: {
115
+ enableDatabaseBackup?: boolean;
116
+ telemetry?: TelemetryOptions;
117
+ } | undefined);
118
+ createPaymentLink(paymentLinkDto: Dto['CreatePaymentLinkMapper']): Promise<Dto['PaymentLinkMapper']>;
119
+ updatePaymentLink(paymentLinkDto: Dto['UpdatePaymentLinkMapper']): Promise<Dto['PaymentLinkMapper']>;
120
+ getPaymentLink({ id }: IdDto): Promise<Dto['PaymentLinkMapper']>;
121
+ expirePaymentLink({ id }: IdDto): Promise<void>;
122
+ handlePaymentSuccess({ id }: IdDto): Promise<void>;
123
+ handlePaymentFailure({ id }: IdDto): Promise<void>;
124
+ listPaymentLinks(idsDto?: IdsDto): Promise<Dto['PaymentLinkMapper'][]>;
125
+ }
126
+
127
+ declare class StripePlanService<SchemaValidator extends AnySchemaValidator, Entities extends StripePlanEntities, Dto extends StripePlanDtos = StripePlanDtos> implements PlanService<typeof PlanCadenceEnum, typeof CurrencyEnum, typeof BillingProviderEnum, {
128
+ CreatePlanDto: StripeCreatePlanDto;
129
+ UpdatePlanDto: StripeUpdatePlanDto;
130
+ PlanDto: StripePlanDto;
131
+ IdDto: IdDto;
132
+ IdsDto: IdsDto;
133
+ }> {
134
+ protected readonly stripeClient: Stripe__default;
135
+ protected readonly em: EntityManager;
136
+ protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
137
+ protected readonly schemaValidator: SchemaValidator;
138
+ protected readonly mappers: {
139
+ PlanMapper: ResponseMapperConstructor<SchemaValidator, Dto['PlanMapper'], Entities['PlanMapper']>;
140
+ CreatePlanMapper: RequestMapperConstructor<SchemaValidator, Dto['CreatePlanMapper'], Entities['CreatePlanMapper'], (dto: Dto['CreatePlanMapper'], em: EntityManager, plan: Stripe__default.Plan) => Promise<Entities['CreatePlanMapper']>>;
141
+ UpdatePlanMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdatePlanMapper'], Entities['UpdatePlanMapper'], (dto: Dto['UpdatePlanMapper'], em: EntityManager, plan: Stripe__default.Plan) => Promise<Entities['UpdatePlanMapper']>>;
142
+ };
143
+ readonly options?: {
144
+ telemetry?: TelemetryOptions;
145
+ databaseTableName?: string;
146
+ } | undefined;
147
+ basePlanService: BasePlanService<SchemaValidator, typeof PlanCadenceEnum, typeof CurrencyEnum, typeof BillingProviderEnum, Entities, Entities>;
148
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
149
+ constructor(stripeClient: Stripe__default, em: EntityManager, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
150
+ PlanMapper: ResponseMapperConstructor<SchemaValidator, Dto['PlanMapper'], Entities['PlanMapper']>;
151
+ CreatePlanMapper: RequestMapperConstructor<SchemaValidator, Dto['CreatePlanMapper'], Entities['CreatePlanMapper'], (dto: Dto['CreatePlanMapper'], em: EntityManager, plan: Stripe__default.Plan) => Promise<Entities['CreatePlanMapper']>>;
152
+ UpdatePlanMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdatePlanMapper'], Entities['UpdatePlanMapper'], (dto: Dto['UpdatePlanMapper'], em: EntityManager, plan: Stripe__default.Plan) => Promise<Entities['UpdatePlanMapper']>>;
153
+ }, options?: {
154
+ telemetry?: TelemetryOptions;
155
+ databaseTableName?: string;
156
+ } | undefined);
157
+ createPlan(planDto: Dto['CreatePlanMapper'], em?: EntityManager): Promise<Dto['PlanMapper']>;
158
+ getPlan(idDto: IdDto, em?: EntityManager): Promise<Dto['PlanMapper']>;
159
+ updatePlan(planDto: Dto['UpdatePlanMapper'], em?: EntityManager): Promise<Dto['PlanMapper']>;
160
+ deletePlan(idDto: {
161
+ id: string;
162
+ }, em?: EntityManager): Promise<void>;
163
+ listPlans(idsDto?: IdsDto, em?: EntityManager): Promise<Dto['PlanMapper'][]>;
164
+ }
165
+
166
+ declare class StripeSubscriptionService<SchemaValidator extends AnySchemaValidator, PartyType, Entities extends StripeSubscriptionEntities<PartyType>, Dto extends StripeSubscriptionDtos<PartyType> = StripeSubscriptionDtos<PartyType>> implements SubscriptionService<PartyType, typeof BillingProviderEnum, {
167
+ CreateSubscriptionDto: StripeCreateSubscriptionDto<PartyType>;
168
+ UpdateSubscriptionDto: StripeUpdateSubscriptionDto<PartyType>;
169
+ SubscriptionDto: StripeSubscriptionDto<PartyType>;
170
+ IdDto: IdDto;
171
+ IdsDto: IdsDto;
172
+ }> {
173
+ protected readonly stripe: Stripe__default;
174
+ protected readonly em: EntityManager;
175
+ protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
176
+ protected readonly schemaValidator: SchemaValidator;
177
+ protected readonly mappers: {
178
+ SubscriptionMapper: ResponseMapperConstructor<SchemaValidator, Dto['SubscriptionMapper'], Entities['SubscriptionMapper']>;
179
+ CreateSubscriptionMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateSubscriptionMapper'], Entities['CreateSubscriptionMapper'], (dto: Dto['CreateSubscriptionMapper'], em: EntityManager, subscription: Stripe__default.Subscription) => Promise<Entities['CreateSubscriptionMapper']>>;
180
+ UpdateSubscriptionMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateSubscriptionMapper'], Entities['UpdateSubscriptionMapper'], (dto: Dto['UpdateSubscriptionMapper'], em: EntityManager, subscription: Stripe__default.Subscription) => Promise<Entities['UpdateSubscriptionMapper']>>;
181
+ };
182
+ readonly options?: {
183
+ telemetry?: TelemetryOptions;
184
+ databaseTableName?: string;
185
+ } | undefined;
186
+ baseSubscriptionService: BaseSubscriptionService<SchemaValidator, PartyType, typeof BillingProviderEnum, Entities, Entities>;
187
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
188
+ constructor(stripe: Stripe__default, em: EntityManager, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
189
+ SubscriptionMapper: ResponseMapperConstructor<SchemaValidator, Dto['SubscriptionMapper'], Entities['SubscriptionMapper']>;
190
+ CreateSubscriptionMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateSubscriptionMapper'], Entities['CreateSubscriptionMapper'], (dto: Dto['CreateSubscriptionMapper'], em: EntityManager, subscription: Stripe__default.Subscription) => Promise<Entities['CreateSubscriptionMapper']>>;
191
+ UpdateSubscriptionMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateSubscriptionMapper'], Entities['UpdateSubscriptionMapper'], (dto: Dto['UpdateSubscriptionMapper'], em: EntityManager, subscription: Stripe__default.Subscription) => Promise<Entities['UpdateSubscriptionMapper']>>;
192
+ }, options?: {
193
+ telemetry?: TelemetryOptions;
194
+ databaseTableName?: string;
195
+ } | undefined);
196
+ createSubscription(subscriptionDto: Dto['CreateSubscriptionMapper'], em?: EntityManager): Promise<Dto['SubscriptionMapper']>;
197
+ getSubscription(idDto: IdDto, em?: EntityManager): Promise<Dto['SubscriptionMapper']>;
198
+ getUserSubscription(idDto: IdDto, em?: EntityManager): Promise<Dto['SubscriptionMapper']>;
199
+ getOrganizationSubscription(idDto: IdDto, em?: EntityManager): Promise<Dto['SubscriptionMapper']>;
200
+ updateSubscription(subscriptionDto: Dto['UpdateSubscriptionMapper'], em?: EntityManager): Promise<Dto['SubscriptionMapper']>;
201
+ deleteSubscription(idDto: {
202
+ id: string;
203
+ }, em?: EntityManager): Promise<void>;
204
+ listSubscriptions(idsDto: IdsDto, em?: EntityManager): Promise<Dto['SubscriptionMapper'][]>;
205
+ cancelSubscription(idDto: IdDto, em?: EntityManager): Promise<void>;
206
+ resumeSubscription(idDto: IdDto, em?: EntityManager): Promise<void>;
207
+ }
208
+
209
+ declare class StripeWebhookService<SchemaValidator extends AnySchemaValidator, StatusEnum, PartyEnum, BillingPortalEntities extends StripeBillingPortalEntities = StripeBillingPortalEntities, CheckoutSessionEntities extends StripeCheckoutSessionEntities<StatusEnum> = StripeCheckoutSessionEntities<StatusEnum>, PaymentLinkEntities extends StripePaymentLinkEntities<StatusEnum> = StripePaymentLinkEntities<StatusEnum>, PlanEntities extends StripePlanEntities = StripePlanEntities, SubscriptionEntities extends StripeSubscriptionEntities<PartyEnum> = StripeSubscriptionEntities<PartyEnum>> {
210
+ protected readonly stripeClient: Stripe__default;
211
+ protected readonly em: EntityManager;
212
+ protected readonly schemaValidator: SchemaValidator;
213
+ protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
214
+ protected readonly billingPortalService: StripeBillingPortalService<SchemaValidator, BillingPortalEntities>;
215
+ protected readonly checkoutSessionService: StripeCheckoutSessionService<SchemaValidator, StatusEnum, CheckoutSessionEntities>;
216
+ protected readonly paymentLinkService: StripePaymentLinkService<SchemaValidator, StatusEnum, PaymentLinkEntities>;
217
+ protected readonly planService: StripePlanService<SchemaValidator, PlanEntities>;
218
+ protected readonly subscriptionService: StripeSubscriptionService<SchemaValidator, PartyEnum, SubscriptionEntities>;
219
+ constructor(stripeClient: Stripe__default, em: EntityManager, schemaValidator: SchemaValidator, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, billingPortalService: StripeBillingPortalService<SchemaValidator, BillingPortalEntities>, checkoutSessionService: StripeCheckoutSessionService<SchemaValidator, StatusEnum, CheckoutSessionEntities>, paymentLinkService: StripePaymentLinkService<SchemaValidator, StatusEnum, PaymentLinkEntities>, planService: StripePlanService<SchemaValidator, PlanEntities>, subscriptionService: StripeSubscriptionService<SchemaValidator, PartyEnum, SubscriptionEntities>);
220
+ handleWebhookEvent(event: Stripe__default.Event): Promise<void>;
221
+ }
222
+
223
+ export { StripeBillingPortalService, StripeCheckoutSessionService, StripePaymentLinkService, StripePlanService, StripeSubscriptionService, StripeWebhookService };
@@ -0,0 +1,223 @@
1
+ import { IdDto, InstanceTypeRecord, IdsDto } from '@forklaunch/common';
2
+ import { TtlCache } from '@forklaunch/core/cache';
3
+ import { OpenTelemetryCollector, MetricsDefinition, TelemetryOptions } from '@forklaunch/core/http';
4
+ import { BaseBillingPortalService, BaseCheckoutSessionService, BasePaymentLinkService, BasePlanService, BaseSubscriptionService } from '@forklaunch/implementation-billing-base/services';
5
+ import { BillingPortalService, CheckoutSessionService, PaymentLinkService, PlanService, SubscriptionService } from '@forklaunch/interfaces-billing/interfaces';
6
+ import { ResponseMapperConstructor, RequestMapperConstructor, InternalMapper } from '@forklaunch/internal';
7
+ import { AnySchemaValidator } from '@forklaunch/validator';
8
+ import { EntityManager } from '@mikro-orm/core';
9
+ import Stripe__default from 'stripe';
10
+ import { StripeBillingPortalEntities, StripeBillingPortalDtos, StripeCreateBillingPortalDto, StripeUpdateBillingPortalDto, StripeBillingPortalDto, StripeCheckoutSessionEntities, StripeCheckoutSessionDtos, StripePaymentLinkEntities, StripePaymentLinkDtos, StripeCreatePaymentLinkDto, StripeUpdatePaymentLinkDto, StripePaymentLinkDto, StripePlanEntities, StripePlanDtos, StripeCreatePlanDto, StripeUpdatePlanDto, StripePlanDto, StripeSubscriptionEntities, StripeSubscriptionDtos, StripeCreateSubscriptionDto, StripeUpdateSubscriptionDto, StripeSubscriptionDto } from '../types/index.js';
11
+ import { PaymentMethodEnum, CurrencyEnum, PlanCadenceEnum, BillingProviderEnum } from '../domain/index.js';
12
+ import '@forklaunch/interfaces-billing/types';
13
+
14
+ declare class StripeBillingPortalService<SchemaValidator extends AnySchemaValidator, Entities extends StripeBillingPortalEntities, Dto extends StripeBillingPortalDtos = StripeBillingPortalDtos> implements BillingPortalService<{
15
+ CreateBillingPortalDto: StripeCreateBillingPortalDto;
16
+ UpdateBillingPortalDto: StripeUpdateBillingPortalDto;
17
+ BillingPortalDto: StripeBillingPortalDto;
18
+ IdDto: IdDto;
19
+ }> {
20
+ protected stripeClient: Stripe__default;
21
+ protected em: EntityManager;
22
+ protected cache: TtlCache;
23
+ protected openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
24
+ protected schemaValidator: SchemaValidator;
25
+ protected mappers: {
26
+ BillingPortalMapper: ResponseMapperConstructor<SchemaValidator, Dto['BillingPortalMapper'], Entities['BillingPortalMapper']>;
27
+ CreateBillingPortalMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateBillingPortalMapper'], Entities['CreateBillingPortalMapper'], (dto: Dto['CreateBillingPortalMapper'], em: EntityManager, session: Stripe__default.BillingPortal.Session) => Promise<Entities['CreateBillingPortalMapper']>>;
28
+ UpdateBillingPortalMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateBillingPortalMapper'], Entities['UpdateBillingPortalMapper'], (dto: Dto['UpdateBillingPortalMapper'], em: EntityManager, session: Stripe__default.BillingPortal.Session) => Promise<Entities['UpdateBillingPortalMapper']>>;
29
+ };
30
+ readonly options?: {
31
+ telemetry?: TelemetryOptions;
32
+ enableDatabaseBackup?: boolean;
33
+ } | undefined;
34
+ private readonly billingPortalSessionExpiryDurationMs;
35
+ baseBillingPortalService: BaseBillingPortalService<SchemaValidator, Entities, Entities>;
36
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
37
+ constructor(stripeClient: Stripe__default, em: EntityManager, cache: TtlCache, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
38
+ BillingPortalMapper: ResponseMapperConstructor<SchemaValidator, Dto['BillingPortalMapper'], Entities['BillingPortalMapper']>;
39
+ CreateBillingPortalMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateBillingPortalMapper'], Entities['CreateBillingPortalMapper'], (dto: Dto['CreateBillingPortalMapper'], em: EntityManager, session: Stripe__default.BillingPortal.Session) => Promise<Entities['CreateBillingPortalMapper']>>;
40
+ UpdateBillingPortalMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateBillingPortalMapper'], Entities['UpdateBillingPortalMapper'], (dto: Dto['UpdateBillingPortalMapper'], em: EntityManager, session: Stripe__default.BillingPortal.Session) => Promise<Entities['UpdateBillingPortalMapper']>>;
41
+ }, options?: {
42
+ telemetry?: TelemetryOptions;
43
+ enableDatabaseBackup?: boolean;
44
+ } | undefined);
45
+ createBillingPortalSession(billingPortalDto: Dto['CreateBillingPortalMapper']): Promise<Dto['BillingPortalMapper']>;
46
+ getBillingPortalSession(idDto: IdDto): Promise<Dto['BillingPortalMapper']>;
47
+ expireBillingPortalSession(idDto: IdDto): Promise<void>;
48
+ updateBillingPortalSession(billingPortalDto: Dto['UpdateBillingPortalMapper']): Promise<Dto['BillingPortalMapper']>;
49
+ }
50
+
51
+ declare class StripeCheckoutSessionService<SchemaValidator extends AnySchemaValidator, StatusEnum, Entities extends StripeCheckoutSessionEntities<StatusEnum>, Dto extends StripeCheckoutSessionDtos<StatusEnum> = StripeCheckoutSessionDtos<StatusEnum>> implements CheckoutSessionService<typeof PaymentMethodEnum, typeof CurrencyEnum, StatusEnum, {
52
+ CreateCheckoutSessionDto: Dto['CreateCheckoutSessionMapper'];
53
+ CheckoutSessionDto: Dto['CheckoutSessionMapper'];
54
+ IdDto: IdDto;
55
+ }> {
56
+ protected readonly stripeClient: Stripe__default;
57
+ protected readonly em: EntityManager;
58
+ protected readonly cache: TtlCache;
59
+ protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
60
+ protected readonly schemaValidator: SchemaValidator;
61
+ protected readonly mappers: {
62
+ CheckoutSessionMapper: ResponseMapperConstructor<SchemaValidator, Dto['CheckoutSessionMapper'], Entities['CheckoutSessionMapper']>;
63
+ CreateCheckoutSessionMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateCheckoutSessionMapper'], Entities['CreateCheckoutSessionMapper'], (dto: Dto['CreateCheckoutSessionMapper'], em: EntityManager, session: Stripe__default.Checkout.Session) => Promise<Entities['CreateCheckoutSessionMapper']>>;
64
+ UpdateCheckoutSessionMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateCheckoutSessionMapper'], Entities['UpdateCheckoutSessionMapper'], (dto: Dto['UpdateCheckoutSessionMapper'], em: EntityManager, session: Stripe__default.Checkout.Session) => Promise<Entities['UpdateCheckoutSessionMapper']>>;
65
+ };
66
+ readonly options?: {
67
+ enableDatabaseBackup?: boolean;
68
+ telemetry?: TelemetryOptions;
69
+ } | undefined;
70
+ baseCheckoutSessionService: BaseCheckoutSessionService<SchemaValidator, typeof PaymentMethodEnum, typeof CurrencyEnum, StatusEnum, Entities, Entities>;
71
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
72
+ constructor(stripeClient: Stripe__default, em: EntityManager, cache: TtlCache, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
73
+ CheckoutSessionMapper: ResponseMapperConstructor<SchemaValidator, Dto['CheckoutSessionMapper'], Entities['CheckoutSessionMapper']>;
74
+ CreateCheckoutSessionMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateCheckoutSessionMapper'], Entities['CreateCheckoutSessionMapper'], (dto: Dto['CreateCheckoutSessionMapper'], em: EntityManager, session: Stripe__default.Checkout.Session) => Promise<Entities['CreateCheckoutSessionMapper']>>;
75
+ UpdateCheckoutSessionMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateCheckoutSessionMapper'], Entities['UpdateCheckoutSessionMapper'], (dto: Dto['UpdateCheckoutSessionMapper'], em: EntityManager, session: Stripe__default.Checkout.Session) => Promise<Entities['UpdateCheckoutSessionMapper']>>;
76
+ }, options?: {
77
+ enableDatabaseBackup?: boolean;
78
+ telemetry?: TelemetryOptions;
79
+ } | undefined);
80
+ createCheckoutSession(checkoutSessionDto: Dto['CreateCheckoutSessionMapper']): Promise<Dto['CheckoutSessionMapper']>;
81
+ getCheckoutSession({ id }: IdDto): Promise<Dto['CheckoutSessionMapper']>;
82
+ expireCheckoutSession({ id }: IdDto): Promise<void>;
83
+ handleCheckoutSuccess({ id }: IdDto): Promise<void>;
84
+ handleCheckoutFailure({ id }: IdDto): Promise<void>;
85
+ }
86
+
87
+ declare class StripePaymentLinkService<SchemaValidator extends AnySchemaValidator, StatusEnum, Entities extends StripePaymentLinkEntities<StatusEnum>, Dto extends StripePaymentLinkDtos<StatusEnum> = StripePaymentLinkDtos<StatusEnum>> implements PaymentLinkService<PaymentMethodEnum, CurrencyEnum, StatusEnum, {
88
+ CreatePaymentLinkDto: StripeCreatePaymentLinkDto<StatusEnum>;
89
+ UpdatePaymentLinkDto: StripeUpdatePaymentLinkDto<StatusEnum>;
90
+ PaymentLinkDto: StripePaymentLinkDto<StatusEnum>;
91
+ IdDto: IdDto;
92
+ IdsDto: IdsDto;
93
+ }> {
94
+ protected readonly stripeClient: Stripe__default;
95
+ protected readonly em: EntityManager;
96
+ protected readonly cache: TtlCache;
97
+ protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
98
+ protected readonly schemaValidator: SchemaValidator;
99
+ protected readonly mappers: {
100
+ PaymentLinkMapper: ResponseMapperConstructor<SchemaValidator, Dto['PaymentLinkMapper'], Entities['PaymentLinkMapper']>;
101
+ CreatePaymentLinkMapper: RequestMapperConstructor<SchemaValidator, Dto['CreatePaymentLinkMapper'], Entities['CreatePaymentLinkMapper'], (dto: Dto['CreatePaymentLinkMapper'], em: EntityManager, paymentLink: Stripe__default.PaymentLink) => Promise<Entities['CreatePaymentLinkMapper']>>;
102
+ UpdatePaymentLinkMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdatePaymentLinkMapper'], Entities['UpdatePaymentLinkMapper'], (dto: Dto['UpdatePaymentLinkMapper'], em: EntityManager, paymentLink: Stripe__default.PaymentLink) => Promise<Entities['UpdatePaymentLinkMapper']>>;
103
+ };
104
+ readonly options?: {
105
+ enableDatabaseBackup?: boolean;
106
+ telemetry?: TelemetryOptions;
107
+ } | undefined;
108
+ basePaymentLinkService: BasePaymentLinkService<SchemaValidator, typeof PaymentMethodEnum, typeof CurrencyEnum, StatusEnum, Entities, Entities>;
109
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
110
+ constructor(stripeClient: Stripe__default, em: EntityManager, cache: TtlCache, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
111
+ PaymentLinkMapper: ResponseMapperConstructor<SchemaValidator, Dto['PaymentLinkMapper'], Entities['PaymentLinkMapper']>;
112
+ CreatePaymentLinkMapper: RequestMapperConstructor<SchemaValidator, Dto['CreatePaymentLinkMapper'], Entities['CreatePaymentLinkMapper'], (dto: Dto['CreatePaymentLinkMapper'], em: EntityManager, paymentLink: Stripe__default.PaymentLink) => Promise<Entities['CreatePaymentLinkMapper']>>;
113
+ UpdatePaymentLinkMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdatePaymentLinkMapper'], Entities['UpdatePaymentLinkMapper'], (dto: Dto['UpdatePaymentLinkMapper'], em: EntityManager, paymentLink: Stripe__default.PaymentLink) => Promise<Entities['UpdatePaymentLinkMapper']>>;
114
+ }, options?: {
115
+ enableDatabaseBackup?: boolean;
116
+ telemetry?: TelemetryOptions;
117
+ } | undefined);
118
+ createPaymentLink(paymentLinkDto: Dto['CreatePaymentLinkMapper']): Promise<Dto['PaymentLinkMapper']>;
119
+ updatePaymentLink(paymentLinkDto: Dto['UpdatePaymentLinkMapper']): Promise<Dto['PaymentLinkMapper']>;
120
+ getPaymentLink({ id }: IdDto): Promise<Dto['PaymentLinkMapper']>;
121
+ expirePaymentLink({ id }: IdDto): Promise<void>;
122
+ handlePaymentSuccess({ id }: IdDto): Promise<void>;
123
+ handlePaymentFailure({ id }: IdDto): Promise<void>;
124
+ listPaymentLinks(idsDto?: IdsDto): Promise<Dto['PaymentLinkMapper'][]>;
125
+ }
126
+
127
+ declare class StripePlanService<SchemaValidator extends AnySchemaValidator, Entities extends StripePlanEntities, Dto extends StripePlanDtos = StripePlanDtos> implements PlanService<typeof PlanCadenceEnum, typeof CurrencyEnum, typeof BillingProviderEnum, {
128
+ CreatePlanDto: StripeCreatePlanDto;
129
+ UpdatePlanDto: StripeUpdatePlanDto;
130
+ PlanDto: StripePlanDto;
131
+ IdDto: IdDto;
132
+ IdsDto: IdsDto;
133
+ }> {
134
+ protected readonly stripeClient: Stripe__default;
135
+ protected readonly em: EntityManager;
136
+ protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
137
+ protected readonly schemaValidator: SchemaValidator;
138
+ protected readonly mappers: {
139
+ PlanMapper: ResponseMapperConstructor<SchemaValidator, Dto['PlanMapper'], Entities['PlanMapper']>;
140
+ CreatePlanMapper: RequestMapperConstructor<SchemaValidator, Dto['CreatePlanMapper'], Entities['CreatePlanMapper'], (dto: Dto['CreatePlanMapper'], em: EntityManager, plan: Stripe__default.Plan) => Promise<Entities['CreatePlanMapper']>>;
141
+ UpdatePlanMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdatePlanMapper'], Entities['UpdatePlanMapper'], (dto: Dto['UpdatePlanMapper'], em: EntityManager, plan: Stripe__default.Plan) => Promise<Entities['UpdatePlanMapper']>>;
142
+ };
143
+ readonly options?: {
144
+ telemetry?: TelemetryOptions;
145
+ databaseTableName?: string;
146
+ } | undefined;
147
+ basePlanService: BasePlanService<SchemaValidator, typeof PlanCadenceEnum, typeof CurrencyEnum, typeof BillingProviderEnum, Entities, Entities>;
148
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
149
+ constructor(stripeClient: Stripe__default, em: EntityManager, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
150
+ PlanMapper: ResponseMapperConstructor<SchemaValidator, Dto['PlanMapper'], Entities['PlanMapper']>;
151
+ CreatePlanMapper: RequestMapperConstructor<SchemaValidator, Dto['CreatePlanMapper'], Entities['CreatePlanMapper'], (dto: Dto['CreatePlanMapper'], em: EntityManager, plan: Stripe__default.Plan) => Promise<Entities['CreatePlanMapper']>>;
152
+ UpdatePlanMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdatePlanMapper'], Entities['UpdatePlanMapper'], (dto: Dto['UpdatePlanMapper'], em: EntityManager, plan: Stripe__default.Plan) => Promise<Entities['UpdatePlanMapper']>>;
153
+ }, options?: {
154
+ telemetry?: TelemetryOptions;
155
+ databaseTableName?: string;
156
+ } | undefined);
157
+ createPlan(planDto: Dto['CreatePlanMapper'], em?: EntityManager): Promise<Dto['PlanMapper']>;
158
+ getPlan(idDto: IdDto, em?: EntityManager): Promise<Dto['PlanMapper']>;
159
+ updatePlan(planDto: Dto['UpdatePlanMapper'], em?: EntityManager): Promise<Dto['PlanMapper']>;
160
+ deletePlan(idDto: {
161
+ id: string;
162
+ }, em?: EntityManager): Promise<void>;
163
+ listPlans(idsDto?: IdsDto, em?: EntityManager): Promise<Dto['PlanMapper'][]>;
164
+ }
165
+
166
+ declare class StripeSubscriptionService<SchemaValidator extends AnySchemaValidator, PartyType, Entities extends StripeSubscriptionEntities<PartyType>, Dto extends StripeSubscriptionDtos<PartyType> = StripeSubscriptionDtos<PartyType>> implements SubscriptionService<PartyType, typeof BillingProviderEnum, {
167
+ CreateSubscriptionDto: StripeCreateSubscriptionDto<PartyType>;
168
+ UpdateSubscriptionDto: StripeUpdateSubscriptionDto<PartyType>;
169
+ SubscriptionDto: StripeSubscriptionDto<PartyType>;
170
+ IdDto: IdDto;
171
+ IdsDto: IdsDto;
172
+ }> {
173
+ protected readonly stripe: Stripe__default;
174
+ protected readonly em: EntityManager;
175
+ protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
176
+ protected readonly schemaValidator: SchemaValidator;
177
+ protected readonly mappers: {
178
+ SubscriptionMapper: ResponseMapperConstructor<SchemaValidator, Dto['SubscriptionMapper'], Entities['SubscriptionMapper']>;
179
+ CreateSubscriptionMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateSubscriptionMapper'], Entities['CreateSubscriptionMapper'], (dto: Dto['CreateSubscriptionMapper'], em: EntityManager, subscription: Stripe__default.Subscription) => Promise<Entities['CreateSubscriptionMapper']>>;
180
+ UpdateSubscriptionMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateSubscriptionMapper'], Entities['UpdateSubscriptionMapper'], (dto: Dto['UpdateSubscriptionMapper'], em: EntityManager, subscription: Stripe__default.Subscription) => Promise<Entities['UpdateSubscriptionMapper']>>;
181
+ };
182
+ readonly options?: {
183
+ telemetry?: TelemetryOptions;
184
+ databaseTableName?: string;
185
+ } | undefined;
186
+ baseSubscriptionService: BaseSubscriptionService<SchemaValidator, PartyType, typeof BillingProviderEnum, Entities, Entities>;
187
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
188
+ constructor(stripe: Stripe__default, em: EntityManager, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
189
+ SubscriptionMapper: ResponseMapperConstructor<SchemaValidator, Dto['SubscriptionMapper'], Entities['SubscriptionMapper']>;
190
+ CreateSubscriptionMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateSubscriptionMapper'], Entities['CreateSubscriptionMapper'], (dto: Dto['CreateSubscriptionMapper'], em: EntityManager, subscription: Stripe__default.Subscription) => Promise<Entities['CreateSubscriptionMapper']>>;
191
+ UpdateSubscriptionMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateSubscriptionMapper'], Entities['UpdateSubscriptionMapper'], (dto: Dto['UpdateSubscriptionMapper'], em: EntityManager, subscription: Stripe__default.Subscription) => Promise<Entities['UpdateSubscriptionMapper']>>;
192
+ }, options?: {
193
+ telemetry?: TelemetryOptions;
194
+ databaseTableName?: string;
195
+ } | undefined);
196
+ createSubscription(subscriptionDto: Dto['CreateSubscriptionMapper'], em?: EntityManager): Promise<Dto['SubscriptionMapper']>;
197
+ getSubscription(idDto: IdDto, em?: EntityManager): Promise<Dto['SubscriptionMapper']>;
198
+ getUserSubscription(idDto: IdDto, em?: EntityManager): Promise<Dto['SubscriptionMapper']>;
199
+ getOrganizationSubscription(idDto: IdDto, em?: EntityManager): Promise<Dto['SubscriptionMapper']>;
200
+ updateSubscription(subscriptionDto: Dto['UpdateSubscriptionMapper'], em?: EntityManager): Promise<Dto['SubscriptionMapper']>;
201
+ deleteSubscription(idDto: {
202
+ id: string;
203
+ }, em?: EntityManager): Promise<void>;
204
+ listSubscriptions(idsDto: IdsDto, em?: EntityManager): Promise<Dto['SubscriptionMapper'][]>;
205
+ cancelSubscription(idDto: IdDto, em?: EntityManager): Promise<void>;
206
+ resumeSubscription(idDto: IdDto, em?: EntityManager): Promise<void>;
207
+ }
208
+
209
+ declare class StripeWebhookService<SchemaValidator extends AnySchemaValidator, StatusEnum, PartyEnum, BillingPortalEntities extends StripeBillingPortalEntities = StripeBillingPortalEntities, CheckoutSessionEntities extends StripeCheckoutSessionEntities<StatusEnum> = StripeCheckoutSessionEntities<StatusEnum>, PaymentLinkEntities extends StripePaymentLinkEntities<StatusEnum> = StripePaymentLinkEntities<StatusEnum>, PlanEntities extends StripePlanEntities = StripePlanEntities, SubscriptionEntities extends StripeSubscriptionEntities<PartyEnum> = StripeSubscriptionEntities<PartyEnum>> {
210
+ protected readonly stripeClient: Stripe__default;
211
+ protected readonly em: EntityManager;
212
+ protected readonly schemaValidator: SchemaValidator;
213
+ protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
214
+ protected readonly billingPortalService: StripeBillingPortalService<SchemaValidator, BillingPortalEntities>;
215
+ protected readonly checkoutSessionService: StripeCheckoutSessionService<SchemaValidator, StatusEnum, CheckoutSessionEntities>;
216
+ protected readonly paymentLinkService: StripePaymentLinkService<SchemaValidator, StatusEnum, PaymentLinkEntities>;
217
+ protected readonly planService: StripePlanService<SchemaValidator, PlanEntities>;
218
+ protected readonly subscriptionService: StripeSubscriptionService<SchemaValidator, PartyEnum, SubscriptionEntities>;
219
+ constructor(stripeClient: Stripe__default, em: EntityManager, schemaValidator: SchemaValidator, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, billingPortalService: StripeBillingPortalService<SchemaValidator, BillingPortalEntities>, checkoutSessionService: StripeCheckoutSessionService<SchemaValidator, StatusEnum, CheckoutSessionEntities>, paymentLinkService: StripePaymentLinkService<SchemaValidator, StatusEnum, PaymentLinkEntities>, planService: StripePlanService<SchemaValidator, PlanEntities>, subscriptionService: StripeSubscriptionService<SchemaValidator, PartyEnum, SubscriptionEntities>);
220
+ handleWebhookEvent(event: Stripe__default.Event): Promise<void>;
221
+ }
222
+
223
+ export { StripeBillingPortalService, StripeCheckoutSessionService, StripePaymentLinkService, StripePlanService, StripeSubscriptionService, StripeWebhookService };