@doujins/payments-ui 0.0.0

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.
@@ -0,0 +1,686 @@
1
+ import React from 'react';
2
+ import { StoreApi } from 'zustand';
3
+ import { PublicKey } from '@solana/web3.js';
4
+ import * as zustand_vanilla from 'zustand/vanilla';
5
+ import * as _tanstack_react_query from '@tanstack/react-query';
6
+
7
+ type AuthTokenProvider = (() => string | null | undefined) | (() => Promise<string | null | undefined>) | null | undefined;
8
+ interface PaymentUserDetails {
9
+ userId?: string;
10
+ email?: string;
11
+ firstName?: string;
12
+ lastName?: string;
13
+ address1?: string;
14
+ address2?: string;
15
+ city?: string;
16
+ state?: string;
17
+ postalCode?: string;
18
+ country?: string;
19
+ }
20
+ interface PaymentEndpoints {
21
+ billingBaseUrl: string;
22
+ accountBaseUrl?: string;
23
+ }
24
+ interface PaymentFeatureFlags {
25
+ enableCardPayments?: boolean;
26
+ enableStoredMethods?: boolean;
27
+ enableSolanaPay?: boolean;
28
+ enableDirectWallet?: boolean;
29
+ }
30
+ interface PaymentCallbacks {
31
+ onStatusChange?: (payload: PaymentStatusPayload) => void;
32
+ onSuccess?: (payload: PaymentSuccessPayload) => void;
33
+ onError?: (error: Error | string) => void;
34
+ }
35
+ interface PaymentStatusPayload {
36
+ status: 'idle' | 'collecting' | 'processing' | 'pending' | 'success' | 'error';
37
+ context?: Record<string, unknown>;
38
+ }
39
+ interface PaymentSuccessPayload {
40
+ intentId?: string;
41
+ transactionId?: string;
42
+ processor?: string;
43
+ metadata?: Record<string, unknown>;
44
+ }
45
+ type PaymentFetcher = (input: RequestInfo, init?: RequestInit) => Promise<Response>;
46
+ interface PaymentConfig {
47
+ endpoints: PaymentEndpoints;
48
+ getAuthToken?: AuthTokenProvider;
49
+ fetcher?: PaymentFetcher;
50
+ defaultHeaders?: Record<string, string>;
51
+ features?: PaymentFeatureFlags;
52
+ defaultUser?: PaymentUserDetails;
53
+ callbacks?: PaymentCallbacks;
54
+ collectJsKey?: string;
55
+ solanaRpcUrl?: string;
56
+ }
57
+
58
+ interface BillingDetails {
59
+ firstName: string;
60
+ lastName: string;
61
+ address1: string;
62
+ address2?: string;
63
+ city: string;
64
+ stateRegion?: string;
65
+ postalCode: string;
66
+ country: string;
67
+ email: string;
68
+ provider?: string;
69
+ }
70
+ interface PaymentMethod {
71
+ id: string;
72
+ card_type?: string;
73
+ last_four?: string;
74
+ is_active?: boolean;
75
+ failure_reason?: string | null;
76
+ created_at?: string;
77
+ }
78
+ interface CreatePaymentMethodPayload {
79
+ payment_token: string;
80
+ first_name: string;
81
+ last_name: string;
82
+ address1: string;
83
+ address2?: string;
84
+ city: string;
85
+ state?: string;
86
+ zip: string;
87
+ country: string;
88
+ email: string;
89
+ provider?: string;
90
+ }
91
+ interface PaginatedPaymentMethods {
92
+ data: PaymentMethod[];
93
+ total?: number;
94
+ next_page?: number | null;
95
+ }
96
+
97
+ interface GeneratePaymentRequest {
98
+ price_id: string;
99
+ token: string;
100
+ user_wallet: string;
101
+ }
102
+ interface GeneratePaymentResponse {
103
+ transaction: string;
104
+ amount: number;
105
+ currency: string;
106
+ token_amount: number;
107
+ token_symbol: string;
108
+ expires_at: number;
109
+ instructions: string;
110
+ intent_id: string;
111
+ }
112
+ interface SubmitPaymentRequest {
113
+ signed_transaction: string;
114
+ price_id: string;
115
+ intent_id: string;
116
+ memo?: string;
117
+ }
118
+ interface SubmitPaymentResponse {
119
+ purchase_id: string;
120
+ transaction_id: string;
121
+ status: 'confirmed' | 'pending' | 'failed';
122
+ amount: number;
123
+ currency: string;
124
+ processed_at: string;
125
+ message: string;
126
+ intent_id: string;
127
+ }
128
+ interface PaymentStatusResponse {
129
+ purchase_id: string;
130
+ transaction_id: string;
131
+ status: 'confirmed' | 'pending' | 'failed';
132
+ amount: number;
133
+ currency: string;
134
+ created_at: string;
135
+ confirmed_at?: string;
136
+ }
137
+ interface SolanaPayQRCodeIntent {
138
+ url: string;
139
+ amount: number;
140
+ token_amount: string;
141
+ token_symbol: string;
142
+ label: string;
143
+ message: string;
144
+ expires_at: number;
145
+ reference: string;
146
+ intent_id: string;
147
+ }
148
+ interface SolanaPayStatusResponse {
149
+ status: 'confirmed' | 'pending' | 'failed';
150
+ payment_id: string;
151
+ transaction?: string | null;
152
+ error_message?: string;
153
+ intent_id?: string;
154
+ }
155
+ interface SupportedTokensResponse {
156
+ tokens: TokenInfo[];
157
+ }
158
+ interface TokenInfo {
159
+ name: string;
160
+ mint: string;
161
+ symbol: string;
162
+ decimals: number;
163
+ price: number;
164
+ is_native?: boolean;
165
+ }
166
+ interface PaymentState {
167
+ step: PaymentStep;
168
+ selectedToken: TokenInfo | null;
169
+ amount: number;
170
+ tokenAmount: string;
171
+ transaction: string | null;
172
+ transactionId: string | null;
173
+ intentId: string | null;
174
+ error: string | null;
175
+ isLoading: boolean;
176
+ expiresAt: number | null;
177
+ instructions?: string;
178
+ }
179
+ type PaymentStep = 'select-token' | 'review-payment' | 'sign-transaction' | 'submitting' | 'confirming' | 'success' | 'error';
180
+ interface TokenBalance {
181
+ token: TokenInfo;
182
+ balance: number;
183
+ uiAmount: number;
184
+ hasBalance: boolean;
185
+ }
186
+ interface PaymentError {
187
+ code: string;
188
+ message: string;
189
+ details?: string;
190
+ retryable: boolean;
191
+ }
192
+ interface SolanaFlowConfig {
193
+ priceId: string;
194
+ usdAmount: number;
195
+ supportedTokens: TokenInfo[];
196
+ userWallet: PublicKey;
197
+ onSuccess: (result: SubmitPaymentResponse) => void;
198
+ onError: (error: PaymentError) => void;
199
+ onCancel: () => void;
200
+ }
201
+ interface TransactionStatus {
202
+ signature: string;
203
+ confirmationStatus: 'processed' | 'confirmed' | 'finalized' | 'failed';
204
+ confirmations: number;
205
+ slot?: number;
206
+ blockTime?: number;
207
+ error?: string;
208
+ }
209
+ interface SolanaPayTransaction {
210
+ transaction: string;
211
+ message: string;
212
+ label?: string;
213
+ memo?: string;
214
+ }
215
+ type SolanaPaymentMethod = 'traditional' | 'solana-pay';
216
+ interface PaymentMethodOption {
217
+ id: SolanaPaymentMethod;
218
+ name: string;
219
+ description: string;
220
+ icon: string;
221
+ enabled: boolean;
222
+ requiresWallet: boolean;
223
+ }
224
+
225
+ type PaymentPlatform = 'nmi' | 'ccbill';
226
+ interface SubscriptionResponse {
227
+ success: boolean;
228
+ message?: string;
229
+ subscription_id?: string;
230
+ status?: 'active' | 'inactive' | 'cancelled';
231
+ url?: string;
232
+ }
233
+ interface FlexFormResponse {
234
+ iframe_url: string;
235
+ width: string;
236
+ height: string;
237
+ success_url: string;
238
+ decline_url: string;
239
+ }
240
+ interface GenerateFlexFormURLBodyParams {
241
+ price_id: string;
242
+ first_name: string;
243
+ last_name: string;
244
+ address1: string;
245
+ city: string;
246
+ state: string;
247
+ zip_code: string;
248
+ country: string;
249
+ }
250
+ interface NmiSubscribePayload {
251
+ priceId: string;
252
+ paymentToken?: string;
253
+ paymentMethodId?: string;
254
+ firstName?: string;
255
+ lastName?: string;
256
+ address1?: string;
257
+ city?: string;
258
+ state?: string;
259
+ zipCode?: string;
260
+ country?: string;
261
+ email?: string;
262
+ provider?: string;
263
+ processor?: string;
264
+ }
265
+ interface CCBillSubscribePayload {
266
+ priceId: string;
267
+ email: string;
268
+ firstName: string;
269
+ lastName: string;
270
+ zipCode: string;
271
+ country: string;
272
+ processor?: string;
273
+ }
274
+ interface SubscriptionCheckoutPayload {
275
+ priceId: string;
276
+ provider?: string;
277
+ processor?: string;
278
+ billing: BillingDetails;
279
+ }
280
+
281
+ type RequestOptions = {
282
+ params?: Record<string, string | number>;
283
+ query?: Record<string, string | number | undefined>;
284
+ body?: Record<string, unknown>;
285
+ headers?: Record<string, string>;
286
+ };
287
+ type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
288
+ interface ApiClient {
289
+ request: <T>(method: HttpMethod, path: string, options?: RequestOptions) => Promise<T>;
290
+ get: <T>(path: string, options?: Omit<RequestOptions, 'body'>) => Promise<T>;
291
+ post: <T>(path: string, options?: RequestOptions) => Promise<T>;
292
+ put: <T>(path: string, options?: RequestOptions) => Promise<T>;
293
+ patch: <T>(path: string, options?: RequestOptions) => Promise<T>;
294
+ delete: <T>(path: string, options?: RequestOptions) => Promise<T>;
295
+ }
296
+
297
+ interface CardTokenizeResult {
298
+ token: string;
299
+ billing: BillingDetails;
300
+ }
301
+ declare class CardPaymentService {
302
+ private config;
303
+ private collectLoaded;
304
+ constructor(config: PaymentConfig);
305
+ ensureCollectLoaded(): Promise<void>;
306
+ buildCreatePayload(result: CardTokenizeResult): CreatePaymentMethodPayload;
307
+ }
308
+
309
+ interface ListParams {
310
+ page?: number;
311
+ pageSize?: number;
312
+ }
313
+ declare class PaymentMethodService {
314
+ private api;
315
+ constructor(api: ApiClient);
316
+ list(params?: ListParams): Promise<PaginatedPaymentMethods>;
317
+ create(payload: CreatePaymentMethodPayload): Promise<PaymentMethod>;
318
+ remove(id: string): Promise<void>;
319
+ activate(id: string): Promise<void>;
320
+ }
321
+
322
+ declare class SolanaPaymentService {
323
+ private api;
324
+ constructor(api: ApiClient);
325
+ generatePayment(priceId: string, token: string, userWallet: string): Promise<GeneratePaymentResponse>;
326
+ submitPayment(signedTransaction: string, priceId: string, intentId: string, memo?: string): Promise<SubmitPaymentResponse>;
327
+ fetchSupportedTokens(): Promise<TokenInfo[]>;
328
+ getSupportedTokens(): Promise<TokenInfo[]>;
329
+ generateQrCode(priceId: string, token: string, userWallet?: string): Promise<SolanaPayQRCodeIntent>;
330
+ generateQRCode(priceId: string, token: string, userWallet?: string): Promise<SolanaPayQRCodeIntent>;
331
+ checkPaymentStatus(reference: string, memo?: string): Promise<SolanaPayStatusResponse>;
332
+ }
333
+
334
+ interface TokenCatalogOptions {
335
+ ttlMs?: number;
336
+ }
337
+ declare class TokenCatalog {
338
+ private solanaService;
339
+ private options;
340
+ private cache;
341
+ private lastFetched;
342
+ constructor(solanaService: SolanaPaymentService, options?: TokenCatalogOptions);
343
+ private get ttl();
344
+ getTokens(force?: boolean): Promise<TokenInfo[]>;
345
+ getCached(): TokenInfo[];
346
+ }
347
+
348
+ interface WalletAccount {
349
+ publicKey: string;
350
+ }
351
+ interface WalletAdapterLike {
352
+ publicKey?: {
353
+ toBase58(): string;
354
+ };
355
+ signTransaction?: (tx: unknown) => Promise<unknown>;
356
+ signVersionedTransaction?: (tx: unknown) => Promise<unknown>;
357
+ }
358
+ declare class WalletGateway {
359
+ private adapter;
360
+ setAdapter(adapter: WalletAdapterLike | null): void;
361
+ getPublicKey(): string | null;
362
+ sign(transaction: unknown): Promise<unknown>;
363
+ }
364
+
365
+ declare class SubscriptionService {
366
+ private readonly api;
367
+ constructor(api: ApiClient);
368
+ subscribe(platform: PaymentPlatform, payload: NmiSubscribePayload | CCBillSubscribePayload): Promise<SubscriptionResponse>;
369
+ generateFlexFormUrl(payload: GenerateFlexFormURLBodyParams): Promise<FlexFormResponse>;
370
+ private serializePayload;
371
+ }
372
+
373
+ interface PaymentServices {
374
+ cardPayments: CardPaymentService;
375
+ paymentMethods: PaymentMethodService;
376
+ solanaPayments: SolanaPaymentService;
377
+ tokenCatalog: TokenCatalog;
378
+ walletGateway: WalletGateway;
379
+ subscriptions: SubscriptionService;
380
+ billingApi: ApiClient;
381
+ accountApi: ApiClient;
382
+ }
383
+ interface PaymentAppOptions {
384
+ config: PaymentConfig;
385
+ fetcher?: PaymentFetcher;
386
+ }
387
+ declare class PaymentApp {
388
+ private readonly config;
389
+ private readonly fetcher;
390
+ private readonly services;
391
+ constructor(options: PaymentAppOptions);
392
+ getConfig(): PaymentConfig;
393
+ getFetcher(): PaymentFetcher;
394
+ getServices(): PaymentServices;
395
+ private createServices;
396
+ resolveAuthToken: () => Promise<string | null>;
397
+ }
398
+
399
+ type AsyncStatus = 'idle' | 'processing' | 'success' | 'error';
400
+ type SolanaFlowState = 'selecting' | 'processing' | 'confirming' | 'success' | 'error';
401
+ interface PaymentStoreState {
402
+ selectedMethodId: string | null;
403
+ solanaModalOpen: boolean;
404
+ savedPaymentStatus: AsyncStatus;
405
+ savedPaymentError: string | null;
406
+ newCardStatus: AsyncStatus;
407
+ newCardError: string | null;
408
+ solanaTab: 'wallet' | 'qr';
409
+ solanaStatus: SolanaFlowState;
410
+ solanaError: string | null;
411
+ solanaTransactionId: string | null;
412
+ solanaSelectedToken: string | null;
413
+ solanaTokenAmount: number;
414
+ setSelectedMethod: (methodId: string | null) => void;
415
+ setSolanaModalOpen: (open: boolean) => void;
416
+ setSolanaTab: (tab: 'wallet' | 'qr') => void;
417
+ setSolanaSelectedToken: (symbol: string) => void;
418
+ setSolanaTokenAmount: (amount: number) => void;
419
+ setSolanaTransactionId: (txId: string | null) => void;
420
+ startSavedPayment: () => void;
421
+ completeSavedPayment: () => void;
422
+ failSavedPayment: (error: string) => void;
423
+ resetSavedPayment: () => void;
424
+ startNewCardPayment: () => void;
425
+ completeNewCardPayment: () => void;
426
+ failNewCardPayment: (error: string) => void;
427
+ resetNewCardPayment: () => void;
428
+ startSolanaPayment: () => void;
429
+ confirmSolanaPayment: () => void;
430
+ completeSolanaPayment: (payload?: PaymentSuccessPayload) => void;
431
+ failSolanaPayment: (error: string) => void;
432
+ resetSolanaPayment: () => void;
433
+ resetAll: () => void;
434
+ }
435
+ interface PaymentStoreOptions {
436
+ callbacks?: PaymentCallbacks;
437
+ }
438
+ declare const createPaymentStore: (options?: PaymentStoreOptions) => zustand_vanilla.StoreApi<PaymentStoreState>;
439
+
440
+ interface PaymentContextValue {
441
+ config: PaymentConfig;
442
+ fetcher: PaymentFetcher;
443
+ resolveAuthToken: () => Promise<string | null>;
444
+ app: PaymentApp;
445
+ services: PaymentServices;
446
+ store: StoreApi<PaymentStoreState>;
447
+ }
448
+ interface PaymentProviderProps {
449
+ config: PaymentConfig;
450
+ children: React.ReactNode;
451
+ }
452
+ declare const PaymentProvider: React.FC<PaymentProviderProps>;
453
+ declare const usePaymentContext: () => PaymentContextValue;
454
+
455
+ interface CardDetailsFormProps {
456
+ visible: boolean;
457
+ onTokenize: (token: string, billing: BillingDetails) => void;
458
+ submitLabel: string;
459
+ submitting?: boolean;
460
+ defaultValues?: Partial<BillingDetails>;
461
+ externalError?: string | null;
462
+ collectPrefix?: string;
463
+ className?: string;
464
+ onBillingChange?: (billing: BillingDetails) => void;
465
+ submitDisabled?: boolean;
466
+ }
467
+ declare const CardDetailsForm: React.FC<CardDetailsFormProps>;
468
+
469
+ interface StoredPaymentMethodsProps {
470
+ selectedMethodId?: string | null;
471
+ onMethodSelect?: (method: PaymentMethod) => void;
472
+ showAddButton?: boolean;
473
+ heading?: string;
474
+ description?: string;
475
+ }
476
+ declare const StoredPaymentMethods: React.FC<StoredPaymentMethodsProps>;
477
+
478
+ interface PaymentExperienceProps {
479
+ priceId: string;
480
+ usdAmount: number;
481
+ onNewCardPayment?: (payload: {
482
+ token: string;
483
+ billing: BillingDetails;
484
+ }) => Promise<void> | void;
485
+ onSavedMethodPayment?: (payload: {
486
+ paymentMethodId: string;
487
+ amount: number;
488
+ }) => Promise<void> | void;
489
+ enableNewCard?: boolean;
490
+ enableStoredMethods?: boolean;
491
+ enableSolanaPay?: boolean;
492
+ checkoutSummary?: React.ReactNode;
493
+ onSolanaSuccess?: (result: SubmitPaymentResponse | string) => void;
494
+ onSolanaError?: (error: string) => void;
495
+ }
496
+ declare const PaymentExperience: React.FC<PaymentExperienceProps>;
497
+
498
+ interface SolanaPaymentSelectorProps {
499
+ isOpen: boolean;
500
+ priceId: string;
501
+ usdAmount: number;
502
+ onClose: () => void;
503
+ onError?: (error: string) => void;
504
+ onSuccess: (result: SubmitPaymentResponse | string) => void;
505
+ }
506
+ declare const SolanaPaymentSelector: React.FC<SolanaPaymentSelectorProps>;
507
+
508
+ declare const usePaymentMethods: () => {
509
+ listQuery: _tanstack_react_query.UseQueryResult<PaginatedPaymentMethods, Error>;
510
+ createMutation: _tanstack_react_query.UseMutationResult<PaymentMethod, Error, {
511
+ token: string;
512
+ billing: BillingDetails;
513
+ }, unknown>;
514
+ deleteMutation: _tanstack_react_query.UseMutationResult<void, Error, {
515
+ id: string;
516
+ }, unknown>;
517
+ };
518
+
519
+ declare const usePaymentMethodService: () => PaymentMethodService;
520
+
521
+ declare const useSupportedTokens: () => {
522
+ tokens: TokenInfo[];
523
+ isLoading: boolean;
524
+ error: string | null;
525
+ lastFetched: number | null;
526
+ fetchSupportedTokens: () => Promise<TokenInfo[]>;
527
+ refreshTokens: () => Promise<TokenInfo[]>;
528
+ getTokenBySymbol: (symbol: string) => TokenInfo | undefined;
529
+ getTokenByMint: (mintAddress: string) => TokenInfo | undefined;
530
+ isTokenSupported: (symbol: string) => boolean;
531
+ getUSDCToken: () => TokenInfo | undefined;
532
+ getPYUSDToken: () => TokenInfo | undefined;
533
+ getSOLToken: () => TokenInfo | undefined;
534
+ getStablecoins: () => TokenInfo[];
535
+ getTokenDisplayInfo: (token: TokenInfo) => {
536
+ displayName: string;
537
+ shortAddress: string;
538
+ decimalPlaces: number;
539
+ name: string;
540
+ mint: string;
541
+ symbol: string;
542
+ decimals: number;
543
+ price: number;
544
+ is_native?: boolean;
545
+ };
546
+ getTokenPrice: (symbol: string) => number;
547
+ calculateTokenAmount: (usdAmount: number, tokenSymbol: string) => string;
548
+ formatTokenAmount: (amount: string, tokenSymbol: string) => string;
549
+ isCacheStale: () => boolean;
550
+ hasTokens: boolean;
551
+ tokenCount: number;
552
+ };
553
+
554
+ declare const useTokenBalance: (tokens: TokenInfo[]) => {
555
+ balances: TokenBalance[];
556
+ positiveBalances: TokenBalance[];
557
+ isLoading: boolean;
558
+ error: string | null;
559
+ refreshBalances: () => Promise<void>;
560
+ getTokenBalance: (tokenSymbol: string) => TokenBalance | undefined;
561
+ hasSufficientBalance: (tokenSymbol: string, requiredAmount: number) => boolean;
562
+ getFormattedBalance: (tokenSymbol: string) => string;
563
+ getTotalValue: (priceData?: Record<string, number>) => number;
564
+ hasAnyBalance: boolean;
565
+ isConnected: boolean;
566
+ };
567
+
568
+ interface DirectPaymentState {
569
+ loading: boolean;
570
+ error: string | null;
571
+ success: boolean;
572
+ transactionId: string | null;
573
+ }
574
+ interface UseDirectWalletPaymentReturn {
575
+ paymentState: DirectPaymentState;
576
+ payWithWallet: (token: TokenInfo, priceId: string) => Promise<void>;
577
+ resetPayment: () => void;
578
+ }
579
+ declare const useDirectWalletPayment: () => UseDirectWalletPaymentReturn;
580
+
581
+ interface PaymentStatusHookOptions {
582
+ transactionId?: string;
583
+ purchaseId?: string;
584
+ onConfirmed?: () => void;
585
+ onFailed?: (error: string) => void;
586
+ maxRetries?: number;
587
+ retryInterval?: number;
588
+ }
589
+ declare const usePaymentStatus: (options?: PaymentStatusHookOptions) => {
590
+ status: TransactionStatus | null;
591
+ paymentStatus: PaymentStatusResponse | null;
592
+ isLoading: boolean;
593
+ error: string | null;
594
+ retryCount: number;
595
+ maxRetries: number;
596
+ isMonitoring: boolean;
597
+ confirmationStatus: string;
598
+ startMonitoring: () => Promise<void>;
599
+ stopMonitoring: () => void;
600
+ checkStatus: () => Promise<void>;
601
+ getSolscanUrl: (signature?: string) => string | null;
602
+ isConfirmed: boolean;
603
+ isFailed: boolean;
604
+ isPending: boolean;
605
+ };
606
+
607
+ declare const usePaymentStore: <T>(selector: (state: PaymentStoreState) => T) => T;
608
+
609
+ declare const useSolanaService: () => SolanaPaymentService;
610
+
611
+ interface UseSolanaDirectPaymentOptions {
612
+ priceId: string;
613
+ tokenAmount: number;
614
+ selectedToken: TokenInfo | null;
615
+ supportedTokens: TokenInfo[];
616
+ onStart: () => void;
617
+ onConfirming: () => void;
618
+ onSuccess: (result: SubmitPaymentResponse, txId: string) => void;
619
+ onError: (error: string) => void;
620
+ }
621
+ interface SolanaDirectPaymentState {
622
+ isBalanceLoading: boolean;
623
+ isProcessing: boolean;
624
+ balanceLabel: string;
625
+ canPay: boolean;
626
+ pay: () => Promise<void>;
627
+ }
628
+ declare const useSolanaDirectPayment: (options: UseSolanaDirectPaymentOptions) => SolanaDirectPaymentState;
629
+
630
+ interface UseSolanaQrPaymentOptions {
631
+ priceId: string;
632
+ selectedToken: TokenInfo | null;
633
+ onSuccess: (result: SubmitPaymentResponse | string, txId: string) => void;
634
+ onError: (error: string) => void;
635
+ }
636
+ interface UseSolanaQrPaymentState {
637
+ intent: SolanaPayQRCodeIntent | null;
638
+ qrDataUri: string | null;
639
+ isLoading: boolean;
640
+ error: string | null;
641
+ timeRemaining: number;
642
+ refresh: () => void;
643
+ }
644
+ declare const useSolanaQrPayment: (options: UseSolanaQrPaymentOptions) => UseSolanaQrPaymentState;
645
+
646
+ interface SubscribeWithCardParams {
647
+ priceId?: string | null;
648
+ processor?: string;
649
+ provider?: string;
650
+ paymentToken: string;
651
+ billing: BillingDetails;
652
+ }
653
+ interface SubscribeWithSavedMethodParams {
654
+ priceId?: string | null;
655
+ processor?: string;
656
+ provider?: string;
657
+ paymentMethodId: string;
658
+ email?: string;
659
+ }
660
+ interface SubscribeWithCCBillParams {
661
+ priceId?: string | null;
662
+ email: string;
663
+ firstName: string;
664
+ lastName: string;
665
+ zipCode: string;
666
+ country: string;
667
+ processor?: string;
668
+ }
669
+ interface GenerateFlexFormParams {
670
+ priceId?: string | null;
671
+ firstName: string;
672
+ lastName: string;
673
+ address1: string;
674
+ city: string;
675
+ state: string;
676
+ zipCode: string;
677
+ country: string;
678
+ }
679
+ declare const useSubscriptionActions: () => {
680
+ subscribeWithCard: ({ priceId, processor, provider, paymentToken, billing, }: SubscribeWithCardParams) => Promise<SubscriptionResponse>;
681
+ subscribeWithSavedMethod: ({ priceId, processor, provider, paymentMethodId, email, }: SubscribeWithSavedMethodParams) => Promise<SubscriptionResponse>;
682
+ subscribeWithCCBill: ({ priceId, email, firstName, lastName, zipCode, country, processor, }: SubscribeWithCCBillParams) => Promise<SubscriptionResponse>;
683
+ generateFlexFormUrl: ({ priceId, firstName, lastName, address1, city, state, zipCode, country, }: GenerateFlexFormParams) => Promise<FlexFormResponse>;
684
+ };
685
+
686
+ export { type AsyncStatus, type AuthTokenProvider, type BillingDetails, type CCBillSubscribePayload, CardDetailsForm, type CardDetailsFormProps, CardPaymentService, type CardTokenizeResult, type CreatePaymentMethodPayload, type FlexFormResponse, type GenerateFlexFormParams, type GenerateFlexFormURLBodyParams, type GeneratePaymentRequest, type GeneratePaymentResponse, type ListParams, type NmiSubscribePayload, type PaginatedPaymentMethods, PaymentApp, type PaymentAppOptions, type PaymentCallbacks, type PaymentConfig, type PaymentContextValue, type PaymentEndpoints, type PaymentError, PaymentExperience, type PaymentExperienceProps, type PaymentFeatureFlags, type PaymentFetcher, type PaymentMethod, type PaymentMethodOption, PaymentMethodService, type PaymentPlatform, PaymentProvider, type PaymentProviderProps, type PaymentServices, type PaymentState, type PaymentStatusPayload, type PaymentStatusResponse, type PaymentStep, type PaymentStoreOptions, type PaymentStoreState, type PaymentSuccessPayload, type PaymentUserDetails, type SolanaFlowConfig, type SolanaFlowState, type SolanaPayQRCodeIntent, type SolanaPayStatusResponse, type SolanaPayTransaction, type SolanaPaymentMethod, SolanaPaymentSelector, SolanaPaymentService, StoredPaymentMethods, type StoredPaymentMethodsProps, type SubmitPaymentRequest, type SubmitPaymentResponse, type SubscribeWithCCBillParams, type SubscribeWithCardParams, type SubscribeWithSavedMethodParams, type SubscriptionCheckoutPayload, type SubscriptionResponse, SubscriptionService, type SupportedTokensResponse, type TokenBalance, TokenCatalog, type TokenCatalogOptions, type TokenInfo, type TransactionStatus, type WalletAccount, type WalletAdapterLike, WalletGateway, createPaymentStore, useDirectWalletPayment, usePaymentContext, usePaymentMethodService, usePaymentMethods, usePaymentStatus, usePaymentStore, useSolanaDirectPayment, useSolanaQrPayment, useSolanaService, useSubscriptionActions, useSupportedTokens, useTokenBalance };