@solvapay/react 1.0.8-preview.6 → 1.0.8-preview.8

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 (106) hide show
  1. package/README.md +12 -95
  2. package/dist/CancelPlanButton-Bb7cvym9.d.cts +1105 -0
  3. package/dist/CancelPlanButton-CieT9swn.d.cts +1102 -0
  4. package/dist/CancelPlanButton-Cq117t7h.d.ts +1105 -0
  5. package/dist/CancelPlanButton-f56UlQN-.d.ts +1102 -0
  6. package/dist/PaymentForm-B5dw0i1X.d.ts +934 -0
  7. package/dist/PaymentForm-CesoRQWu.d.cts +934 -0
  8. package/dist/chunk-C7SKOENW.js +1889 -0
  9. package/dist/chunk-ISYAH4ZL.js +1889 -0
  10. package/dist/chunk-MOP3ZBGC.js +4749 -0
  11. package/dist/chunk-Q7GPX6X4.js +4748 -0
  12. package/dist/chunk-TP4JPKE2.js +3126 -0
  13. package/dist/chunk-VTGIXJQU.js +4755 -0
  14. package/dist/chunk-XMQ4GBWQ.js +4752 -0
  15. package/dist/index-DLl3UwO3.d.ts +798 -0
  16. package/dist/index-Sj2lHLl8.d.cts +798 -0
  17. package/dist/index.cjs +11 -25
  18. package/dist/index.d.cts +2 -2
  19. package/dist/index.d.ts +2 -2
  20. package/dist/index.js +1 -1
  21. package/dist/primitives/index.cjs +4 -21
  22. package/dist/primitives/index.d.cts +2 -2
  23. package/dist/primitives/index.d.ts +2 -2
  24. package/dist/primitives/index.js +1 -1
  25. package/dist/src/PaymentForm.d.ts +56 -0
  26. package/dist/src/PaymentForm.d.ts.map +1 -0
  27. package/dist/src/PaymentForm.js +212 -0
  28. package/dist/src/PaymentForm.js.map +1 -0
  29. package/dist/src/SolvaPayProvider.d.ts +84 -0
  30. package/dist/src/SolvaPayProvider.d.ts.map +1 -0
  31. package/dist/src/SolvaPayProvider.js +537 -0
  32. package/dist/src/SolvaPayProvider.js.map +1 -0
  33. package/dist/src/adapters/auth.d.ts +43 -0
  34. package/dist/src/adapters/auth.d.ts.map +1 -0
  35. package/dist/src/adapters/auth.js +38 -0
  36. package/dist/src/adapters/auth.js.map +1 -0
  37. package/dist/src/components/PlanBadge.d.ts +31 -0
  38. package/dist/src/components/PlanBadge.d.ts.map +1 -0
  39. package/dist/src/components/PlanBadge.js +119 -0
  40. package/dist/src/components/PlanBadge.js.map +1 -0
  41. package/dist/src/components/PlanSelector.d.ts +49 -0
  42. package/dist/src/components/PlanSelector.d.ts.map +1 -0
  43. package/dist/src/components/PlanSelector.js +82 -0
  44. package/dist/src/components/PlanSelector.js.map +1 -0
  45. package/dist/src/components/Spinner.d.ts +10 -0
  46. package/dist/src/components/Spinner.d.ts.map +1 -0
  47. package/dist/src/components/Spinner.js +14 -0
  48. package/dist/src/components/Spinner.js.map +1 -0
  49. package/dist/src/components/StripePaymentFormWrapper.d.ts +17 -0
  50. package/dist/src/components/StripePaymentFormWrapper.d.ts.map +1 -0
  51. package/dist/src/components/StripePaymentFormWrapper.js +158 -0
  52. package/dist/src/components/StripePaymentFormWrapper.js.map +1 -0
  53. package/dist/src/components/SubscriptionGate.d.ts +21 -0
  54. package/dist/src/components/SubscriptionGate.d.ts.map +1 -0
  55. package/dist/src/components/SubscriptionGate.js +32 -0
  56. package/dist/src/components/SubscriptionGate.js.map +1 -0
  57. package/dist/src/hooks/__tests__/useSubscription.test.d.ts +2 -0
  58. package/dist/src/hooks/__tests__/useSubscription.test.d.ts.map +1 -0
  59. package/dist/src/hooks/__tests__/useSubscription.test.js +554 -0
  60. package/dist/src/hooks/__tests__/useSubscription.test.js.map +1 -0
  61. package/dist/src/hooks/__tests__/useSubscriptionStatus.test.d.ts +2 -0
  62. package/dist/src/hooks/__tests__/useSubscriptionStatus.test.d.ts.map +1 -0
  63. package/dist/src/hooks/__tests__/useSubscriptionStatus.test.js +719 -0
  64. package/dist/src/hooks/__tests__/useSubscriptionStatus.test.js.map +1 -0
  65. package/dist/src/hooks/useCheckout.d.ts +59 -0
  66. package/dist/src/hooks/useCheckout.d.ts.map +1 -0
  67. package/dist/src/hooks/useCheckout.js +138 -0
  68. package/dist/src/hooks/useCheckout.js.map +1 -0
  69. package/dist/src/hooks/useCustomer.d.ts +43 -0
  70. package/dist/src/hooks/useCustomer.d.ts.map +1 -0
  71. package/dist/src/hooks/useCustomer.js +31 -0
  72. package/dist/src/hooks/useCustomer.js.map +1 -0
  73. package/dist/src/hooks/usePlans.d.ts +28 -0
  74. package/dist/src/hooks/usePlans.d.ts.map +1 -0
  75. package/dist/src/hooks/usePlans.js +181 -0
  76. package/dist/src/hooks/usePlans.js.map +1 -0
  77. package/dist/src/hooks/useSolvaPay.d.ts +44 -0
  78. package/dist/src/hooks/useSolvaPay.d.ts.map +1 -0
  79. package/dist/src/hooks/useSolvaPay.js +52 -0
  80. package/dist/src/hooks/useSolvaPay.js.map +1 -0
  81. package/dist/src/hooks/useSubscription.d.ts +46 -0
  82. package/dist/src/hooks/useSubscription.d.ts.map +1 -0
  83. package/dist/src/hooks/useSubscription.js +50 -0
  84. package/dist/src/hooks/useSubscription.js.map +1 -0
  85. package/dist/src/hooks/useSubscriptionStatus.d.ts +19 -0
  86. package/dist/src/hooks/useSubscriptionStatus.d.ts.map +1 -0
  87. package/dist/src/hooks/useSubscriptionStatus.js +68 -0
  88. package/dist/src/hooks/useSubscriptionStatus.js.map +1 -0
  89. package/dist/src/index.d.ts +24 -0
  90. package/dist/src/index.d.ts.map +1 -0
  91. package/dist/src/index.js +26 -0
  92. package/dist/src/index.js.map +1 -0
  93. package/dist/src/types/index.d.ts +339 -0
  94. package/dist/src/types/index.d.ts.map +1 -0
  95. package/dist/src/types/index.js +5 -0
  96. package/dist/src/types/index.js.map +1 -0
  97. package/dist/src/utils/__tests__/subscriptions.test.d.ts +2 -0
  98. package/dist/src/utils/__tests__/subscriptions.test.d.ts.map +1 -0
  99. package/dist/src/utils/__tests__/subscriptions.test.js +121 -0
  100. package/dist/src/utils/__tests__/subscriptions.test.js.map +1 -0
  101. package/dist/src/utils/subscriptions.d.ts +57 -0
  102. package/dist/src/utils/subscriptions.d.ts.map +1 -0
  103. package/dist/src/utils/subscriptions.js +85 -0
  104. package/dist/src/utils/subscriptions.js.map +1 -0
  105. package/dist/tsconfig.tsbuildinfo +1 -0
  106. package/package.json +2 -2
@@ -0,0 +1,554 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { renderHook } from '@testing-library/react';
3
+ import { useSubscription } from '../useSubscription';
4
+ import * as useSolvaPayModule from '../useSolvaPay';
5
+ // Helper function to create a test subscription
6
+ const createSubscription = (overrides = {}) => ({
7
+ reference: 'sub_123',
8
+ planName: 'Test Plan',
9
+ agentName: 'Test Agent',
10
+ status: 'active',
11
+ startDate: '2024-01-01T00:00:00Z',
12
+ amount: 1000,
13
+ ...overrides,
14
+ });
15
+ // Helper function to create mock subscription status
16
+ const createMockSubscriptionStatus = (overrides = {}) => ({
17
+ loading: false,
18
+ subscriptions: [],
19
+ hasPlan: vi.fn(() => false),
20
+ activeSubscription: null,
21
+ hasPaidSubscription: false,
22
+ activePaidSubscription: null,
23
+ ...overrides,
24
+ });
25
+ // Helper function to create mock context value
26
+ const createMockContextValue = (subscription, refetchSubscription = vi.fn(() => Promise.resolve())) => ({
27
+ subscription,
28
+ refetchSubscription,
29
+ createPayment: vi.fn(),
30
+ customerRef: 'test_customer_ref',
31
+ });
32
+ // Mock useSolvaPay
33
+ vi.mock('../useSolvaPay', () => ({
34
+ useSolvaPay: vi.fn(),
35
+ }));
36
+ describe('useSubscription', () => {
37
+ beforeEach(() => {
38
+ vi.clearAllMocks();
39
+ });
40
+ describe('Basic functionality', () => {
41
+ it('should return subscription status from context', () => {
42
+ const mockSubscription = createMockSubscriptionStatus({
43
+ loading: false,
44
+ subscriptions: [createSubscription()],
45
+ });
46
+ const mockRefetch = vi.fn(() => Promise.resolve());
47
+ const mockContextValue = createMockContextValue(mockSubscription, mockRefetch);
48
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
49
+ const { result } = renderHook(() => useSubscription());
50
+ expect(result.current.loading).toBe(false);
51
+ expect(result.current.subscriptions).toHaveLength(1);
52
+ expect(result.current.subscriptions[0].planName).toBe('Test Plan');
53
+ });
54
+ it('should return refetch function', () => {
55
+ const mockSubscription = createMockSubscriptionStatus();
56
+ const mockRefetch = vi.fn(() => Promise.resolve());
57
+ const mockContextValue = createMockContextValue(mockSubscription, mockRefetch);
58
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
59
+ const { result } = renderHook(() => useSubscription());
60
+ expect(result.current.refetch).toBeDefined();
61
+ expect(typeof result.current.refetch).toBe('function');
62
+ });
63
+ it('should spread all subscription status properties', () => {
64
+ const mockSubscription = createMockSubscriptionStatus({
65
+ loading: true,
66
+ customerRef: 'customer_123',
67
+ email: 'test@example.com',
68
+ name: 'Test User',
69
+ subscriptions: [createSubscription()],
70
+ });
71
+ const mockContextValue = createMockContextValue(mockSubscription);
72
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
73
+ const { result } = renderHook(() => useSubscription());
74
+ expect(result.current.loading).toBe(true);
75
+ expect(result.current.customerRef).toBe('customer_123');
76
+ expect(result.current.email).toBe('test@example.com');
77
+ expect(result.current.name).toBe('Test User');
78
+ expect(result.current.subscriptions).toHaveLength(1);
79
+ });
80
+ });
81
+ describe('Loading state', () => {
82
+ it('should return loading: true when context indicates loading', () => {
83
+ const mockSubscription = createMockSubscriptionStatus({ loading: true });
84
+ const mockContextValue = createMockContextValue(mockSubscription);
85
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
86
+ const { result } = renderHook(() => useSubscription());
87
+ expect(result.current.loading).toBe(true);
88
+ });
89
+ it('should return loading: false when context indicates not loading', () => {
90
+ const mockSubscription = createMockSubscriptionStatus({ loading: false });
91
+ const mockContextValue = createMockContextValue(mockSubscription);
92
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
93
+ const { result } = renderHook(() => useSubscription());
94
+ expect(result.current.loading).toBe(false);
95
+ });
96
+ });
97
+ describe('Subscriptions array', () => {
98
+ it('should return empty subscriptions array when no subscriptions exist', () => {
99
+ const mockSubscription = createMockSubscriptionStatus({ subscriptions: [] });
100
+ const mockContextValue = createMockContextValue(mockSubscription);
101
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
102
+ const { result } = renderHook(() => useSubscription());
103
+ expect(result.current.subscriptions).toEqual([]);
104
+ expect(result.current.subscriptions).toHaveLength(0);
105
+ });
106
+ it('should return single subscription when one subscription exists', () => {
107
+ const subscription = createSubscription({ planName: 'Pro Plan' });
108
+ const mockSubscription = createMockSubscriptionStatus({
109
+ subscriptions: [subscription],
110
+ });
111
+ const mockContextValue = createMockContextValue(mockSubscription);
112
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
113
+ const { result } = renderHook(() => useSubscription());
114
+ expect(result.current.subscriptions).toHaveLength(1);
115
+ expect(result.current.subscriptions[0].planName).toBe('Pro Plan');
116
+ });
117
+ it('should return multiple subscriptions when multiple exist', () => {
118
+ const subscriptions = [
119
+ createSubscription({ planName: 'Plan 1', reference: 'sub_1' }),
120
+ createSubscription({ planName: 'Plan 2', reference: 'sub_2' }),
121
+ createSubscription({ planName: 'Plan 3', reference: 'sub_3' }),
122
+ ];
123
+ const mockSubscription = createMockSubscriptionStatus({ subscriptions });
124
+ const mockContextValue = createMockContextValue(mockSubscription);
125
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
126
+ const { result } = renderHook(() => useSubscription());
127
+ expect(result.current.subscriptions).toHaveLength(3);
128
+ expect(result.current.subscriptions[0].planName).toBe('Plan 1');
129
+ expect(result.current.subscriptions[1].planName).toBe('Plan 2');
130
+ expect(result.current.subscriptions[2].planName).toBe('Plan 3');
131
+ });
132
+ });
133
+ describe('activeSubscription', () => {
134
+ it('should return null when no active subscription exists', () => {
135
+ const mockSubscription = createMockSubscriptionStatus({
136
+ activeSubscription: null,
137
+ });
138
+ const mockContextValue = createMockContextValue(mockSubscription);
139
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
140
+ const { result } = renderHook(() => useSubscription());
141
+ expect(result.current.activeSubscription).toBeNull();
142
+ });
143
+ it('should return active subscription when one exists', () => {
144
+ const activeSub = createSubscription({ planName: 'Active Plan' });
145
+ const mockSubscription = createMockSubscriptionStatus({
146
+ activeSubscription: activeSub,
147
+ });
148
+ const mockContextValue = createMockContextValue(mockSubscription);
149
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
150
+ const { result } = renderHook(() => useSubscription());
151
+ expect(result.current.activeSubscription).not.toBeNull();
152
+ expect(result.current.activeSubscription?.planName).toBe('Active Plan');
153
+ });
154
+ it('should return free plan as activeSubscription when free plan is active', () => {
155
+ const freeSub = createSubscription({
156
+ planName: 'Free Plan',
157
+ amount: 0,
158
+ });
159
+ const mockSubscription = createMockSubscriptionStatus({
160
+ activeSubscription: freeSub,
161
+ });
162
+ const mockContextValue = createMockContextValue(mockSubscription);
163
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
164
+ const { result } = renderHook(() => useSubscription());
165
+ expect(result.current.activeSubscription).not.toBeNull();
166
+ expect(result.current.activeSubscription?.planName).toBe('Free Plan');
167
+ expect(result.current.activeSubscription?.amount).toBe(0);
168
+ });
169
+ it('should return paid plan as activeSubscription when paid plan is active', () => {
170
+ const paidSub = createSubscription({
171
+ planName: 'Paid Plan',
172
+ amount: 2000,
173
+ });
174
+ const mockSubscription = createMockSubscriptionStatus({
175
+ activeSubscription: paidSub,
176
+ });
177
+ const mockContextValue = createMockContextValue(mockSubscription);
178
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
179
+ const { result } = renderHook(() => useSubscription());
180
+ expect(result.current.activeSubscription).not.toBeNull();
181
+ expect(result.current.activeSubscription?.planName).toBe('Paid Plan');
182
+ expect(result.current.activeSubscription?.amount).toBe(2000);
183
+ });
184
+ });
185
+ describe('hasPaidSubscription', () => {
186
+ it('should return false when no paid subscriptions exist', () => {
187
+ const mockSubscription = createMockSubscriptionStatus({
188
+ hasPaidSubscription: false,
189
+ });
190
+ const mockContextValue = createMockContextValue(mockSubscription);
191
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
192
+ const { result } = renderHook(() => useSubscription());
193
+ expect(result.current.hasPaidSubscription).toBe(false);
194
+ });
195
+ it('should return true when paid subscription exists', () => {
196
+ const mockSubscription = createMockSubscriptionStatus({
197
+ hasPaidSubscription: true,
198
+ });
199
+ const mockContextValue = createMockContextValue(mockSubscription);
200
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
201
+ const { result } = renderHook(() => useSubscription());
202
+ expect(result.current.hasPaidSubscription).toBe(true);
203
+ });
204
+ it('should return false when only free subscriptions exist', () => {
205
+ const freeSub = createSubscription({ amount: 0 });
206
+ const mockSubscription = createMockSubscriptionStatus({
207
+ subscriptions: [freeSub],
208
+ hasPaidSubscription: false,
209
+ activeSubscription: freeSub,
210
+ });
211
+ const mockContextValue = createMockContextValue(mockSubscription);
212
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
213
+ const { result } = renderHook(() => useSubscription());
214
+ expect(result.current.hasPaidSubscription).toBe(false);
215
+ });
216
+ });
217
+ describe('activePaidSubscription', () => {
218
+ it('should return null when no paid subscription exists', () => {
219
+ const mockSubscription = createMockSubscriptionStatus({
220
+ activePaidSubscription: null,
221
+ });
222
+ const mockContextValue = createMockContextValue(mockSubscription);
223
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
224
+ const { result } = renderHook(() => useSubscription());
225
+ expect(result.current.activePaidSubscription).toBeNull();
226
+ });
227
+ it('should return paid subscription when one exists', () => {
228
+ const paidSub = createSubscription({
229
+ planName: 'Premium Plan',
230
+ amount: 5000,
231
+ });
232
+ const mockSubscription = createMockSubscriptionStatus({
233
+ activePaidSubscription: paidSub,
234
+ });
235
+ const mockContextValue = createMockContextValue(mockSubscription);
236
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
237
+ const { result } = renderHook(() => useSubscription());
238
+ expect(result.current.activePaidSubscription).not.toBeNull();
239
+ expect(result.current.activePaidSubscription?.planName).toBe('Premium Plan');
240
+ expect(result.current.activePaidSubscription?.amount).toBe(5000);
241
+ });
242
+ it('should return null when only free subscriptions exist', () => {
243
+ const freeSub = createSubscription({ amount: 0 });
244
+ const mockSubscription = createMockSubscriptionStatus({
245
+ activePaidSubscription: null,
246
+ activeSubscription: freeSub,
247
+ });
248
+ const mockContextValue = createMockContextValue(mockSubscription);
249
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
250
+ const { result } = renderHook(() => useSubscription());
251
+ expect(result.current.activePaidSubscription).toBeNull();
252
+ });
253
+ });
254
+ describe('hasPlan function', () => {
255
+ it('should return hasPlan function from context', () => {
256
+ const mockHasPlan = vi.fn(() => true);
257
+ const mockSubscription = createMockSubscriptionStatus({
258
+ hasPlan: mockHasPlan,
259
+ });
260
+ const mockContextValue = createMockContextValue(mockSubscription);
261
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
262
+ const { result } = renderHook(() => useSubscription());
263
+ expect(result.current.hasPlan).toBeDefined();
264
+ expect(typeof result.current.hasPlan).toBe('function');
265
+ expect(result.current.hasPlan('Test Plan')).toBe(true);
266
+ expect(mockHasPlan).toHaveBeenCalledWith('Test Plan');
267
+ });
268
+ it('should return false when hasPlan returns false', () => {
269
+ const mockHasPlan = vi.fn(() => false);
270
+ const mockSubscription = createMockSubscriptionStatus({
271
+ hasPlan: mockHasPlan,
272
+ });
273
+ const mockContextValue = createMockContextValue(mockSubscription);
274
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
275
+ const { result } = renderHook(() => useSubscription());
276
+ expect(result.current.hasPlan('Non-existent Plan')).toBe(false);
277
+ expect(mockHasPlan).toHaveBeenCalledWith('Non-existent Plan');
278
+ });
279
+ });
280
+ describe('Customer information', () => {
281
+ it('should return customerRef when provided', () => {
282
+ const mockSubscription = createMockSubscriptionStatus({
283
+ customerRef: 'customer_abc123',
284
+ });
285
+ const mockContextValue = createMockContextValue(mockSubscription);
286
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
287
+ const { result } = renderHook(() => useSubscription());
288
+ expect(result.current.customerRef).toBe('customer_abc123');
289
+ });
290
+ it('should return undefined when customerRef is not provided', () => {
291
+ const mockSubscription = createMockSubscriptionStatus({
292
+ customerRef: undefined,
293
+ });
294
+ const mockContextValue = createMockContextValue(mockSubscription);
295
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
296
+ const { result } = renderHook(() => useSubscription());
297
+ expect(result.current.customerRef).toBeUndefined();
298
+ });
299
+ it('should return email when provided', () => {
300
+ const mockSubscription = createMockSubscriptionStatus({
301
+ email: 'user@example.com',
302
+ });
303
+ const mockContextValue = createMockContextValue(mockSubscription);
304
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
305
+ const { result } = renderHook(() => useSubscription());
306
+ expect(result.current.email).toBe('user@example.com');
307
+ });
308
+ it('should return name when provided', () => {
309
+ const mockSubscription = createMockSubscriptionStatus({
310
+ name: 'John Doe',
311
+ });
312
+ const mockContextValue = createMockContextValue(mockSubscription);
313
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
314
+ const { result } = renderHook(() => useSubscription());
315
+ expect(result.current.name).toBe('John Doe');
316
+ });
317
+ });
318
+ describe('Refetch function', () => {
319
+ it('should call refetchSubscription from context when refetch is called', async () => {
320
+ const mockRefetch = vi.fn(() => Promise.resolve());
321
+ const mockSubscription = createMockSubscriptionStatus();
322
+ const mockContextValue = createMockContextValue(mockSubscription, mockRefetch);
323
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
324
+ const { result } = renderHook(() => useSubscription());
325
+ await result.current.refetch();
326
+ expect(mockRefetch).toHaveBeenCalledTimes(1);
327
+ });
328
+ it('should return a promise from refetch', async () => {
329
+ const mockRefetch = vi.fn(() => Promise.resolve());
330
+ const mockSubscription = createMockSubscriptionStatus();
331
+ const mockContextValue = createMockContextValue(mockSubscription, mockRefetch);
332
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
333
+ const { result } = renderHook(() => useSubscription());
334
+ const refetchPromise = result.current.refetch();
335
+ expect(refetchPromise).toBeInstanceOf(Promise);
336
+ await refetchPromise;
337
+ expect(mockRefetch).toHaveBeenCalled();
338
+ });
339
+ it('should handle refetch errors gracefully', async () => {
340
+ const mockRefetch = vi.fn(() => Promise.reject(new Error('Refetch failed')));
341
+ const mockSubscription = createMockSubscriptionStatus();
342
+ const mockContextValue = createMockContextValue(mockSubscription, mockRefetch);
343
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
344
+ const { result } = renderHook(() => useSubscription());
345
+ await expect(result.current.refetch()).rejects.toThrow('Refetch failed');
346
+ expect(mockRefetch).toHaveBeenCalledTimes(1);
347
+ });
348
+ });
349
+ describe('Complex scenarios', () => {
350
+ it('should handle multiple paid subscriptions correctly', () => {
351
+ const paidSub1 = createSubscription({
352
+ planName: 'Premium',
353
+ amount: 5000,
354
+ reference: 'sub_premium',
355
+ startDate: '2024-01-01T00:00:00Z',
356
+ });
357
+ const paidSub2 = createSubscription({
358
+ planName: 'Pro',
359
+ amount: 3000,
360
+ reference: 'sub_pro',
361
+ startDate: '2024-02-01T00:00:00Z',
362
+ });
363
+ const mockSubscription = createMockSubscriptionStatus({
364
+ subscriptions: [paidSub1, paidSub2],
365
+ hasPaidSubscription: true,
366
+ activePaidSubscription: paidSub2, // Most recent
367
+ activeSubscription: paidSub2,
368
+ });
369
+ const mockContextValue = createMockContextValue(mockSubscription);
370
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
371
+ const { result } = renderHook(() => useSubscription());
372
+ expect(result.current.hasPaidSubscription).toBe(true);
373
+ expect(result.current.activePaidSubscription?.planName).toBe('Pro');
374
+ expect(result.current.activeSubscription?.planName).toBe('Pro');
375
+ expect(result.current.subscriptions).toHaveLength(2);
376
+ });
377
+ it('should handle mixed paid and free subscriptions', () => {
378
+ const freeSub = createSubscription({
379
+ planName: 'Free',
380
+ amount: 0,
381
+ reference: 'sub_free',
382
+ });
383
+ const paidSub = createSubscription({
384
+ planName: 'Paid',
385
+ amount: 1000,
386
+ reference: 'sub_paid',
387
+ });
388
+ const mockSubscription = createMockSubscriptionStatus({
389
+ subscriptions: [freeSub, paidSub],
390
+ hasPaidSubscription: true,
391
+ activePaidSubscription: paidSub,
392
+ activeSubscription: paidSub, // Paid is primary
393
+ });
394
+ const mockContextValue = createMockContextValue(mockSubscription);
395
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
396
+ const { result } = renderHook(() => useSubscription());
397
+ expect(result.current.hasPaidSubscription).toBe(true);
398
+ expect(result.current.activePaidSubscription?.planName).toBe('Paid');
399
+ expect(result.current.activeSubscription?.planName).toBe('Paid');
400
+ });
401
+ it('should handle cancelled subscription with endDate - should still grant access until expiration', () => {
402
+ const cancelledSub = createSubscription({
403
+ planName: 'Cancelled Plan',
404
+ status: 'active', // Backend keeps status as 'active' until expiration
405
+ amount: 2000,
406
+ endDate: '2025-12-31T23:59:59Z',
407
+ cancelledAt: '2024-06-01T00:00:00Z',
408
+ });
409
+ const mockSubscription = createMockSubscriptionStatus({
410
+ subscriptions: [cancelledSub],
411
+ activeSubscription: cancelledSub, // Still active until endDate
412
+ hasPaidSubscription: true, // Status is active, so still grants access
413
+ activePaidSubscription: cancelledSub, // Status is active, so still grants access
414
+ });
415
+ const mockContextValue = createMockContextValue(mockSubscription);
416
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
417
+ const { result } = renderHook(() => useSubscription());
418
+ expect(result.current.activeSubscription?.planName).toBe('Cancelled Plan');
419
+ expect(result.current.activeSubscription?.status).toBe('active');
420
+ expect(result.current.hasPaidSubscription).toBe(true); // Should still grant access
421
+ expect(result.current.activePaidSubscription?.planName).toBe('Cancelled Plan');
422
+ });
423
+ it('should handle empty state with no subscriptions', () => {
424
+ const mockSubscription = createMockSubscriptionStatus({
425
+ subscriptions: [],
426
+ activeSubscription: null,
427
+ hasPaidSubscription: false,
428
+ activePaidSubscription: null,
429
+ customerRef: undefined,
430
+ email: undefined,
431
+ name: undefined,
432
+ });
433
+ const mockContextValue = createMockContextValue(mockSubscription);
434
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
435
+ const { result } = renderHook(() => useSubscription());
436
+ expect(result.current.subscriptions).toEqual([]);
437
+ expect(result.current.activeSubscription).toBeNull();
438
+ expect(result.current.hasPaidSubscription).toBe(false);
439
+ expect(result.current.activePaidSubscription).toBeNull();
440
+ });
441
+ });
442
+ describe('Subscription properties', () => {
443
+ it('should return all subscription properties correctly', () => {
444
+ const subscription = createSubscription({
445
+ reference: 'sub_full',
446
+ planName: 'Full Plan',
447
+ agentName: 'Full Agent',
448
+ status: 'active',
449
+ startDate: '2024-01-01T00:00:00Z',
450
+ endDate: '2024-12-31T23:59:59Z',
451
+ cancelledAt: undefined,
452
+ cancellationReason: undefined,
453
+ amount: 1500,
454
+ });
455
+ const mockSubscription = createMockSubscriptionStatus({
456
+ subscriptions: [subscription],
457
+ activeSubscription: subscription,
458
+ });
459
+ const mockContextValue = createMockContextValue(mockSubscription);
460
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
461
+ const { result } = renderHook(() => useSubscription());
462
+ const returnedSub = result.current.subscriptions[0];
463
+ expect(returnedSub.reference).toBe('sub_full');
464
+ expect(returnedSub.planName).toBe('Full Plan');
465
+ expect(returnedSub.agentName).toBe('Full Agent');
466
+ expect(returnedSub.status).toBe('active');
467
+ expect(returnedSub.startDate).toBe('2024-01-01T00:00:00Z');
468
+ expect(returnedSub.endDate).toBe('2024-12-31T23:59:59Z');
469
+ expect(returnedSub.amount).toBe(1500);
470
+ });
471
+ it('should handle subscription with cancellation reason', () => {
472
+ const subscription = createSubscription({
473
+ status: 'active', // Backend keeps status as 'active' until expiration
474
+ cancelledAt: '2024-06-01T00:00:00Z',
475
+ cancellationReason: 'Customer request',
476
+ });
477
+ const mockSubscription = createMockSubscriptionStatus({
478
+ subscriptions: [subscription],
479
+ activeSubscription: subscription,
480
+ });
481
+ const mockContextValue = createMockContextValue(mockSubscription);
482
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
483
+ const { result } = renderHook(() => useSubscription());
484
+ const returnedSub = result.current.subscriptions[0];
485
+ expect(returnedSub.status).toBe('active');
486
+ expect(returnedSub.cancelledAt).toBe('2024-06-01T00:00:00Z');
487
+ expect(returnedSub.cancellationReason).toBe('Customer request');
488
+ });
489
+ });
490
+ describe('Edge cases', () => {
491
+ it('should handle undefined amount (treated as free)', () => {
492
+ const subscription = createSubscription({
493
+ amount: undefined,
494
+ });
495
+ const mockSubscription = createMockSubscriptionStatus({
496
+ subscriptions: [subscription],
497
+ activeSubscription: subscription,
498
+ hasPaidSubscription: false,
499
+ });
500
+ const mockContextValue = createMockContextValue(mockSubscription);
501
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
502
+ const { result } = renderHook(() => useSubscription());
503
+ expect(result.current.subscriptions[0].amount).toBeUndefined();
504
+ expect(result.current.hasPaidSubscription).toBe(false);
505
+ });
506
+ it('should handle zero amount (treated as free)', () => {
507
+ const subscription = createSubscription({
508
+ amount: 0,
509
+ });
510
+ const mockSubscription = createMockSubscriptionStatus({
511
+ subscriptions: [subscription],
512
+ activeSubscription: subscription,
513
+ hasPaidSubscription: false,
514
+ });
515
+ const mockContextValue = createMockContextValue(mockSubscription);
516
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
517
+ const { result } = renderHook(() => useSubscription());
518
+ expect(result.current.subscriptions[0].amount).toBe(0);
519
+ expect(result.current.hasPaidSubscription).toBe(false);
520
+ });
521
+ it('should handle very large subscription amounts', () => {
522
+ const subscription = createSubscription({
523
+ amount: 999999999,
524
+ });
525
+ const mockSubscription = createMockSubscriptionStatus({
526
+ subscriptions: [subscription],
527
+ activeSubscription: subscription,
528
+ hasPaidSubscription: true,
529
+ activePaidSubscription: subscription,
530
+ });
531
+ const mockContextValue = createMockContextValue(mockSubscription);
532
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
533
+ const { result } = renderHook(() => useSubscription());
534
+ expect(result.current.subscriptions[0].amount).toBe(999999999);
535
+ expect(result.current.hasPaidSubscription).toBe(true);
536
+ });
537
+ it('should handle negative amount (edge case)', () => {
538
+ const subscription = createSubscription({
539
+ amount: -100,
540
+ });
541
+ const mockSubscription = createMockSubscriptionStatus({
542
+ subscriptions: [subscription],
543
+ activeSubscription: subscription,
544
+ hasPaidSubscription: false, // Negative is not considered paid
545
+ });
546
+ const mockContextValue = createMockContextValue(mockSubscription);
547
+ vi.mocked(useSolvaPayModule.useSolvaPay).mockReturnValue(mockContextValue);
548
+ const { result } = renderHook(() => useSubscription());
549
+ expect(result.current.subscriptions[0].amount).toBe(-100);
550
+ expect(result.current.hasPaidSubscription).toBe(false);
551
+ });
552
+ });
553
+ });
554
+ //# sourceMappingURL=useSubscription.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSubscription.test.js","sourceRoot":"","sources":["../../../../src/hooks/__tests__/useSubscription.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,iBAAiB,MAAM,gBAAgB,CAAA;AAGnD,gDAAgD;AAChD,MAAM,kBAAkB,GAAG,CAAC,YAAuC,EAAE,EAAoB,EAAE,CAAC,CAAC;IAC3F,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,YAAY;IACvB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,sBAAsB;IACjC,MAAM,EAAE,IAAI;IACZ,GAAG,SAAS;CACb,CAAC,CAAA;AAEF,qDAAqD;AACrD,MAAM,4BAA4B,GAAG,CACnC,YAAyC,EAAE,EACvB,EAAE,CAAC,CAAC;IACxB,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,EAAE;IACjB,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;IAC3B,kBAAkB,EAAE,IAAI;IACxB,mBAAmB,EAAE,KAAK;IAC1B,sBAAsB,EAAE,IAAI;IAC5B,GAAG,SAAS;CACb,CAAC,CAAA;AAEF,+CAA+C;AAC/C,MAAM,sBAAsB,GAAG,CAC7B,YAAgC,EAChC,sBAA2C,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EACnD,EAAE,CAAC,CAAC;IAC1B,YAAY;IACZ,mBAAmB;IACnB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;IACtB,WAAW,EAAE,mBAAmB;CACjC,CAAC,CAAA;AAEF,mBAAmB;AACnB,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;CACrB,CAAC,CAAC,CAAA;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,OAAO,EAAE,KAAK;gBACd,aAAa,EAAE,CAAC,kBAAkB,EAAE,CAAC;aACtC,CAAC,CAAA;YACF,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;YAClD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;YAE9E,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,gBAAgB,GAAG,4BAA4B,EAAE,CAAA;YACvD,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;YAClD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;YAE9E,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;YAC5C,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,cAAc;gBAC3B,KAAK,EAAE,kBAAkB;gBACzB,IAAI,EAAE,WAAW;gBACjB,aAAa,EAAE,CAAC,kBAAkB,EAAE,CAAC;aACtC,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YACvD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;YACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YACxE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YACzE,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;YACzE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC7E,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAA;YAC5E,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,MAAM,YAAY,GAAG,kBAAkB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAA;YACjE,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,aAAa,EAAE,CAAC,YAAY,CAAC;aAC9B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACnE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,aAAa,GAAG;gBACpB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;gBAC9D,kBAAkB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;gBAC9D,kBAAkB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;aAC/D,CAAA;YACD,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,EAAE,aAAa,EAAE,CAAC,CAAA;YACxE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC/D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC/D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,kBAAkB,EAAE,IAAI;aACzB,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAA;QACtD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAA;YACjE,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,kBAAkB,EAAE,SAAS;aAC9B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YACxD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;YAChF,MAAM,OAAO,GAAG,kBAAkB,CAAC;gBACjC,QAAQ,EAAE,WAAW;gBACrB,MAAM,EAAE,CAAC;aACV,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,kBAAkB,EAAE,OAAO;aAC5B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YACxD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACrE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;YAChF,MAAM,OAAO,GAAG,kBAAkB,CAAC;gBACjC,QAAQ,EAAE,WAAW;gBACrB,MAAM,EAAE,IAAI;aACb,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,kBAAkB,EAAE,OAAO;aAC5B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YACxD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACrE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,mBAAmB,EAAE,KAAK;aAC3B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,mBAAmB,EAAE,IAAI;aAC1B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;YACjD,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,aAAa,EAAE,CAAC,OAAO,CAAC;gBACxB,mBAAmB,EAAE,KAAK;gBAC1B,kBAAkB,EAAE,OAAO;aAC5B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,sBAAsB,EAAE,IAAI;aAC7B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC1D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,OAAO,GAAG,kBAAkB,CAAC;gBACjC,QAAQ,EAAE,cAAc;gBACxB,MAAM,EAAE,IAAI;aACb,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,sBAAsB,EAAE,OAAO;aAChC,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAC5D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YAC5E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;YACjD,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,sBAAsB,EAAE,IAAI;gBAC5B,kBAAkB,EAAE,OAAO;aAC5B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC1D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;YACrC,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,OAAO,EAAE,WAAW;aACrB,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;YAC5C,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtD,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;YACtC,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,OAAO,EAAE,WAAW;aACrB,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC/D,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,WAAW,EAAE,iBAAiB;aAC/B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,WAAW,EAAE,SAAS;aACvB,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAA;QACpD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,KAAK,EAAE,kBAAkB;aAC1B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,IAAI,EAAE,UAAU;aACjB,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;YAClD,MAAM,gBAAgB,GAAG,4BAA4B,EAAE,CAAA;YACvD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;YAE9E,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;YAE9B,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;YAClD,MAAM,gBAAgB,GAAG,4BAA4B,EAAE,CAAA;YACvD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;YAE9E,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;YAC/C,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YAE9C,MAAM,cAAc,CAAA;YACpB,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;YAC5E,MAAM,gBAAgB,GAAG,4BAA4B,EAAE,CAAA;YACvD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;YAE9E,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;YACxE,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,QAAQ,GAAG,kBAAkB,CAAC;gBAClC,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,aAAa;gBACxB,SAAS,EAAE,sBAAsB;aAClC,CAAC,CAAA;YACF,MAAM,QAAQ,GAAG,kBAAkB,CAAC;gBAClC,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,sBAAsB;aAClC,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBACnC,mBAAmB,EAAE,IAAI;gBACzB,sBAAsB,EAAE,QAAQ,EAAE,cAAc;gBAChD,kBAAkB,EAAE,QAAQ;aAC7B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACnE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC/D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,OAAO,GAAG,kBAAkB,CAAC;gBACjC,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,UAAU;aACtB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,kBAAkB,CAAC;gBACjC,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,UAAU;aACtB,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBACjC,mBAAmB,EAAE,IAAI;gBACzB,sBAAsB,EAAE,OAAO;gBAC/B,kBAAkB,EAAE,OAAO,EAAE,kBAAkB;aAChD,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACpE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gGAAgG,EAAE,GAAG,EAAE;YACxG,MAAM,YAAY,GAAG,kBAAkB,CAAC;gBACtC,QAAQ,EAAE,gBAAgB;gBAC1B,MAAM,EAAE,QAAQ,EAAE,oDAAoD;gBACtE,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,sBAAsB;gBAC/B,WAAW,EAAE,sBAAsB;aACpC,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,aAAa,EAAE,CAAC,YAAY,CAAC;gBAC7B,kBAAkB,EAAE,YAAY,EAAE,6BAA6B;gBAC/D,mBAAmB,EAAE,IAAI,EAAE,2CAA2C;gBACtE,sBAAsB,EAAE,YAAY,EAAE,2CAA2C;aAClF,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC1E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAChE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,4BAA4B;YAClF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAChF,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,aAAa,EAAE,EAAE;gBACjB,kBAAkB,EAAE,IAAI;gBACxB,mBAAmB,EAAE,KAAK;gBAC1B,sBAAsB,EAAE,IAAI;gBAC5B,WAAW,EAAE,SAAS;gBACtB,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,SAAS;aAChB,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAA;YACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC1D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,YAAY,GAAG,kBAAkB,CAAC;gBACtC,SAAS,EAAE,UAAU;gBACrB,QAAQ,EAAE,WAAW;gBACrB,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,sBAAsB;gBACjC,OAAO,EAAE,sBAAsB;gBAC/B,WAAW,EAAE,SAAS;gBACtB,kBAAkB,EAAE,SAAS;gBAC7B,MAAM,EAAE,IAAI;aACb,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,aAAa,EAAE,CAAC,YAAY,CAAC;gBAC7B,kBAAkB,EAAE,YAAY;aACjC,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;YACnD,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC9C,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC9C,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAChD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACzC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;YAC1D,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;YACxD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,YAAY,GAAG,kBAAkB,CAAC;gBACtC,MAAM,EAAE,QAAQ,EAAE,oDAAoD;gBACtE,WAAW,EAAE,sBAAsB;gBACnC,kBAAkB,EAAE,kBAAkB;aACvC,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,aAAa,EAAE,CAAC,YAAY,CAAC;gBAC7B,kBAAkB,EAAE,YAAY;aACjC,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;YACnD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACzC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;YAC5D,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,YAAY,GAAG,kBAAkB,CAAC;gBACtC,MAAM,EAAE,SAAS;aAClB,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,aAAa,EAAE,CAAC,YAAY,CAAC;gBAC7B,kBAAkB,EAAE,YAAY;gBAChC,mBAAmB,EAAE,KAAK;aAC3B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAA;YAC9D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,YAAY,GAAG,kBAAkB,CAAC;gBACtC,MAAM,EAAE,CAAC;aACV,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,aAAa,EAAE,CAAC,YAAY,CAAC;gBAC7B,kBAAkB,EAAE,YAAY;gBAChC,mBAAmB,EAAE,KAAK;aAC3B,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,YAAY,GAAG,kBAAkB,CAAC;gBACtC,MAAM,EAAE,SAAS;aAClB,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,aAAa,EAAE,CAAC,YAAY,CAAC;gBAC7B,kBAAkB,EAAE,YAAY;gBAChC,mBAAmB,EAAE,IAAI;gBACzB,sBAAsB,EAAE,YAAY;aACrC,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC9D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,YAAY,GAAG,kBAAkB,CAAC;gBACtC,MAAM,EAAE,CAAC,GAAG;aACb,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;gBACpD,aAAa,EAAE,CAAC,YAAY,CAAC;gBAC7B,kBAAkB,EAAE,YAAY;gBAChC,mBAAmB,EAAE,KAAK,EAAE,kCAAkC;aAC/D,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;YAEjE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;YACzD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useSubscriptionStatus.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSubscriptionStatus.test.d.ts","sourceRoot":"","sources":["../../../../src/hooks/__tests__/useSubscriptionStatus.test.tsx"],"names":[],"mappings":""}