@swype-org/react-sdk 0.2.1-betatest.d455d11 → 0.2.24
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.
- package/README.md +19 -1
- package/dist/index.cjs +6062 -3519
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +590 -235
- package/dist/index.d.ts +590 -235
- package/dist/index.js +6018 -3489
- package/dist/index.js.map +1 -1
- package/package.json +16 -13
package/dist/index.d.cts
CHANGED
|
@@ -94,7 +94,7 @@ interface Amount {
|
|
|
94
94
|
/** Transfer destination in a response */
|
|
95
95
|
interface TransferDestination {
|
|
96
96
|
id: string;
|
|
97
|
-
chainId:
|
|
97
|
+
chainId: number;
|
|
98
98
|
address: string;
|
|
99
99
|
token: {
|
|
100
100
|
address: string;
|
|
@@ -118,6 +118,8 @@ interface TransferSignPayload {
|
|
|
118
118
|
/** Transfer object returned by the API */
|
|
119
119
|
interface Transfer {
|
|
120
120
|
id: string;
|
|
121
|
+
/** `guest` for guest checkout; `standard` for Privy + smart account flows. */
|
|
122
|
+
type?: 'standard' | 'guest';
|
|
121
123
|
status: string;
|
|
122
124
|
sources: Array<{
|
|
123
125
|
id: string;
|
|
@@ -167,7 +169,7 @@ interface SourceSelection {
|
|
|
167
169
|
}
|
|
168
170
|
/** Destination input provided by the host app */
|
|
169
171
|
interface Destination {
|
|
170
|
-
chainId:
|
|
172
|
+
chainId: number;
|
|
171
173
|
address: string;
|
|
172
174
|
token: {
|
|
173
175
|
address: string;
|
|
@@ -207,34 +209,6 @@ interface UserConfig {
|
|
|
207
209
|
}
|
|
208
210
|
/** Theme mode */
|
|
209
211
|
type ThemeMode = 'light' | 'dark';
|
|
210
|
-
/** A token available on a source chain for guest transfers */
|
|
211
|
-
interface GuestSourceToken {
|
|
212
|
-
symbol: string;
|
|
213
|
-
address: string;
|
|
214
|
-
decimals: number;
|
|
215
|
-
}
|
|
216
|
-
/** A source chain + its available tokens for guest transfers */
|
|
217
|
-
interface GuestSourceChain {
|
|
218
|
-
chainName: string;
|
|
219
|
-
chainId: number;
|
|
220
|
-
tokens: GuestSourceToken[];
|
|
221
|
-
}
|
|
222
|
-
/** Relay deposit step returned by the guest quote endpoint */
|
|
223
|
-
interface RelayDepositStep {
|
|
224
|
-
to: string;
|
|
225
|
-
data: string;
|
|
226
|
-
value: string;
|
|
227
|
-
chainId: number;
|
|
228
|
-
}
|
|
229
|
-
/** Guest quote response from the API */
|
|
230
|
-
interface GuestQuote {
|
|
231
|
-
requestId: string;
|
|
232
|
-
estimatedFeeUsd: string;
|
|
233
|
-
estimatedOutput: string;
|
|
234
|
-
steps: RelayDepositStep[];
|
|
235
|
-
}
|
|
236
|
-
/** Steps in the payment flow */
|
|
237
|
-
type PaymentStep = 'guest-deposit' | 'guest-select-source' | 'guest-connecting' | 'guest-fetching-quote' | 'guest-approving' | 'guest-signing' | 'login' | 'otp-verify' | 'create-passkey' | 'verify-passkey' | 'wallet-picker' | 'open-wallet' | 'setup-status' | 'setup' | 'confirm-sign' | 'deposit' | 'low-balance' | 'processing' | 'select-source' | 'token-picker' | 'success' | 'offer-setup' | 'setup-complete';
|
|
238
212
|
/** User-selected advanced settings for chain/asset override */
|
|
239
213
|
interface AdvancedSettings {
|
|
240
214
|
/** Override asset (e.g. 'USDC', 'USDT'). Null = let backend decide. */
|
|
@@ -242,6 +216,37 @@ interface AdvancedSettings {
|
|
|
242
216
|
/** Override chain name (e.g. 'Base', 'Ethereum'). Null = let backend decide. */
|
|
243
217
|
chain: string | null;
|
|
244
218
|
}
|
|
219
|
+
/** Decimal-string money amount (avoids JSON floating-point for fees). */
|
|
220
|
+
interface PreciseMoney {
|
|
221
|
+
value: string;
|
|
222
|
+
currency: string;
|
|
223
|
+
}
|
|
224
|
+
/** Guest fee projection from PUT /sender probe or POST /v1/transfers/{id}/quotes. */
|
|
225
|
+
interface GuestTransferFee {
|
|
226
|
+
quote: PreciseMoney | null;
|
|
227
|
+
actual: PreciseMoney | null;
|
|
228
|
+
}
|
|
229
|
+
/** Server-ranked default source from PUT /sender probe (guest checkout). */
|
|
230
|
+
interface RecommendedGuestSource {
|
|
231
|
+
sourceChainId: number;
|
|
232
|
+
tokenAddress: string;
|
|
233
|
+
chainName: string;
|
|
234
|
+
tokenSymbol: string;
|
|
235
|
+
}
|
|
236
|
+
/** Balance row inside PUT /sender probe `source.balances`. */
|
|
237
|
+
interface GuestTransferBalanceItem extends SourceOption {
|
|
238
|
+
sourceChainId: number;
|
|
239
|
+
}
|
|
240
|
+
/** Envelope returned by PUT /v1/transfers/{id}/sender (probe or commit). */
|
|
241
|
+
interface SetTransferSenderResponse {
|
|
242
|
+
transfer: Transfer;
|
|
243
|
+
source?: {
|
|
244
|
+
balances: GuestTransferBalanceItem[];
|
|
245
|
+
recommended: RecommendedGuestSource;
|
|
246
|
+
};
|
|
247
|
+
/** Present on probe only. */
|
|
248
|
+
fee?: GuestTransferFee;
|
|
249
|
+
}
|
|
245
250
|
|
|
246
251
|
interface ThemeTokens {
|
|
247
252
|
bg: string;
|
|
@@ -274,61 +279,67 @@ declare const darkTheme: ThemeTokens;
|
|
|
274
279
|
declare const lightTheme: ThemeTokens;
|
|
275
280
|
declare function getTheme(mode: ThemeMode): ThemeTokens;
|
|
276
281
|
|
|
277
|
-
interface
|
|
282
|
+
interface BlinkConfig {
|
|
278
283
|
apiBaseUrl: string;
|
|
279
284
|
theme: ThemeMode;
|
|
280
285
|
tokens: ThemeTokens;
|
|
281
|
-
/** Pre-set deposit amount (controlled by host app via
|
|
286
|
+
/** Pre-set deposit amount (controlled by host app via useBlinkDepositAmount) */
|
|
282
287
|
depositAmount: number | null;
|
|
283
288
|
/** Update the deposit amount from a host-app component */
|
|
284
289
|
setDepositAmount: (amount: number | null) => void;
|
|
285
290
|
}
|
|
286
|
-
interface
|
|
287
|
-
/** Base URL for the
|
|
291
|
+
interface BlinkProviderProps {
|
|
292
|
+
/** Base URL for the Blink API (e.g. "http://localhost:3000") */
|
|
288
293
|
apiBaseUrl: string;
|
|
289
294
|
/** Light or dark mode */
|
|
290
295
|
theme?: ThemeMode;
|
|
296
|
+
/**
|
|
297
|
+
* Override the Privy App ID used for authentication.
|
|
298
|
+
* @internal Blink-internal only — used for dev/test environments (e.g. smokebox).
|
|
299
|
+
* Not intended for merchant integrations.
|
|
300
|
+
*/
|
|
301
|
+
privyAppId?: string;
|
|
291
302
|
children: React.ReactNode;
|
|
292
303
|
}
|
|
293
304
|
/**
|
|
294
|
-
* Provides
|
|
305
|
+
* Provides Blink SDK configuration and all required infrastructure
|
|
295
306
|
* (Privy auth, wagmi, React Query) to child components.
|
|
296
307
|
*
|
|
297
|
-
* Must wrap any `<
|
|
308
|
+
* Must wrap any `<BlinkPayment>` usage. The integrator does **not** need
|
|
298
309
|
* to set up Privy, wagmi, or React Query — this provider handles it all.
|
|
299
310
|
*
|
|
300
311
|
* @example
|
|
301
312
|
* ```tsx
|
|
302
|
-
* <
|
|
303
|
-
* <
|
|
304
|
-
* </
|
|
313
|
+
* <BlinkProvider apiBaseUrl="https://api.blink.com">
|
|
314
|
+
* <BlinkPayment destination={dest} onComplete={handler} />
|
|
315
|
+
* </BlinkProvider>
|
|
305
316
|
* ```
|
|
306
317
|
*/
|
|
307
|
-
declare function
|
|
308
|
-
/** Access the
|
|
309
|
-
declare function
|
|
318
|
+
declare function BlinkProvider({ apiBaseUrl, theme, privyAppId, children, }: BlinkProviderProps): react_jsx_runtime.JSX.Element;
|
|
319
|
+
/** Access the Blink SDK configuration. Throws if used outside BlinkProvider. */
|
|
320
|
+
declare function useBlinkConfig(): BlinkConfig;
|
|
310
321
|
/**
|
|
311
322
|
* Hook for host apps to pre-set the deposit amount before showing the
|
|
312
|
-
* payment widget. When set, the amount field in
|
|
323
|
+
* payment widget. When set, the amount field in BlinkPayment is
|
|
313
324
|
* auto-populated.
|
|
314
325
|
*
|
|
315
326
|
* @example
|
|
316
327
|
* ```tsx
|
|
317
328
|
* function ProductPage() {
|
|
318
|
-
* const { setAmount } =
|
|
329
|
+
* const { setAmount } = useBlinkDepositAmount();
|
|
319
330
|
* useEffect(() => { setAmount(25.00); }, []);
|
|
320
|
-
* return <
|
|
331
|
+
* return <BlinkPayment destination={dest} />;
|
|
321
332
|
* }
|
|
322
333
|
* ```
|
|
323
334
|
*/
|
|
324
|
-
declare function
|
|
335
|
+
declare function useBlinkDepositAmount(): {
|
|
325
336
|
/** Current deposit amount, or null if not set */
|
|
326
337
|
amount: number | null;
|
|
327
338
|
/** Set the deposit amount (pass null to clear) */
|
|
328
339
|
setAmount: (amount: number | null) => void;
|
|
329
340
|
};
|
|
330
341
|
|
|
331
|
-
declare function fetchProviders(apiBaseUrl: string, token
|
|
342
|
+
declare function fetchProviders(apiBaseUrl: string, token?: string | null): Promise<Provider[]>;
|
|
332
343
|
declare function fetchChains(apiBaseUrl: string, token: string): Promise<Chain[]>;
|
|
333
344
|
declare function fetchAccounts(apiBaseUrl: string, token: string, credentialId: string): Promise<Account[]>;
|
|
334
345
|
declare function fetchAccount(apiBaseUrl: string, token: string, accountId: string, credentialId: string): Promise<Account>;
|
|
@@ -362,8 +373,24 @@ interface CreateTransferParams {
|
|
|
362
373
|
destination: Destination;
|
|
363
374
|
amount: number;
|
|
364
375
|
currency?: string;
|
|
376
|
+
/** Pre-transfer fee quote ID for advisory linkage. */
|
|
377
|
+
quoteId?: string;
|
|
365
378
|
}
|
|
366
379
|
declare function createTransfer(apiBaseUrl: string, token: string, params: CreateTransferParams): Promise<Transfer>;
|
|
380
|
+
interface TransferQuote {
|
|
381
|
+
id: string;
|
|
382
|
+
fee: PreciseMoney;
|
|
383
|
+
expiresAt: string;
|
|
384
|
+
}
|
|
385
|
+
declare function postTransferQuote(apiBaseUrl: string, bearerToken: string, params: {
|
|
386
|
+
walletId: string;
|
|
387
|
+
sourceTokenAddress?: string;
|
|
388
|
+
destination: Destination;
|
|
389
|
+
amount: {
|
|
390
|
+
amount: number;
|
|
391
|
+
currency: string;
|
|
392
|
+
};
|
|
393
|
+
}): Promise<TransferQuote>;
|
|
367
394
|
declare function fetchMerchantPublicKey(apiBaseUrl: string, merchantId: string): Promise<MerchantPublicKey>;
|
|
368
395
|
declare function fetchTransfer(apiBaseUrl: string, token: string, transferId: string, authorizationSessionToken?: string): Promise<Transfer>;
|
|
369
396
|
/**
|
|
@@ -372,6 +399,7 @@ declare function fetchTransfer(apiBaseUrl: string, token: string, transferId: st
|
|
|
372
399
|
*/
|
|
373
400
|
declare function signTransfer(apiBaseUrl: string, token: string, transferId: string, signedUserOp: Record<string, unknown>, authorizationSessionToken?: string): Promise<Transfer>;
|
|
374
401
|
declare function fetchAuthorizationSession(apiBaseUrl: string, sessionId: string): Promise<AuthorizationSessionDetail>;
|
|
402
|
+
declare function fetchAuthorizationSessionByToken(apiBaseUrl: string, token: string): Promise<AuthorizationSessionDetail>;
|
|
375
403
|
/**
|
|
376
404
|
* Registers a WebAuthn passkey for the authenticated user.
|
|
377
405
|
* POST /v1/users/config/passkey
|
|
@@ -396,82 +424,145 @@ declare function updateUserConfig(apiBaseUrl: string, token: string, config: {
|
|
|
396
424
|
defaultAllowance: number;
|
|
397
425
|
}): Promise<void>;
|
|
398
426
|
/**
|
|
399
|
-
* Updates
|
|
427
|
+
* Updates default allowance for the authorization session.
|
|
400
428
|
* PATCH /v1/authorization-sessions/{id}/user-config
|
|
401
429
|
*
|
|
402
|
-
*
|
|
403
|
-
*
|
|
430
|
+
* No bearer token — the session ID is the credential. When the session has no
|
|
431
|
+
* linked user yet (e.g. guest account setup), config is stored on the session
|
|
432
|
+
* and used as the account allowance until the user is claimed.
|
|
404
433
|
*/
|
|
405
434
|
declare function updateUserConfigBySession(apiBaseUrl: string, sessionId: string, config: {
|
|
406
435
|
defaultAllowance: number;
|
|
407
436
|
}): Promise<void>;
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
interface GuestQuoteParams {
|
|
437
|
+
interface CreateGuestTransferParams {
|
|
438
|
+
id?: string;
|
|
411
439
|
merchantAuthorization: MerchantAuthorization;
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
440
|
+
destinations: Array<{
|
|
441
|
+
chainId: number;
|
|
442
|
+
token: {
|
|
443
|
+
address: string;
|
|
444
|
+
};
|
|
445
|
+
address: string;
|
|
446
|
+
}>;
|
|
447
|
+
amount: number;
|
|
448
|
+
currency?: string;
|
|
449
|
+
providerId: string;
|
|
419
450
|
}
|
|
420
|
-
|
|
421
|
-
interface CreateGuestTransferParams {
|
|
451
|
+
interface GuestTransferResult {
|
|
422
452
|
id: string;
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
sourceAddress: string;
|
|
428
|
-
destinationChainId: number;
|
|
429
|
-
destinationAddress: string;
|
|
430
|
-
destinationToken: string;
|
|
453
|
+
status: string;
|
|
454
|
+
guestSessionToken: string;
|
|
455
|
+
uri: string | null;
|
|
456
|
+
expiresAt: string | null;
|
|
431
457
|
amount: {
|
|
432
458
|
amount: number;
|
|
433
459
|
currency: string;
|
|
434
460
|
};
|
|
461
|
+
destinations: Transfer['destinations'];
|
|
462
|
+
sources: Transfer['sources'];
|
|
463
|
+
createDate: string;
|
|
464
|
+
updateDate: string;
|
|
435
465
|
}
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
466
|
+
/**
|
|
467
|
+
* Create a guest transfer (no Privy auth required).
|
|
468
|
+
* POST /v1/transfers with type=guest
|
|
469
|
+
*/
|
|
470
|
+
declare function createGuestTransfer(apiBaseUrl: string, params: CreateGuestTransferParams): Promise<GuestTransferResult>;
|
|
471
|
+
/**
|
|
472
|
+
* Look up a guest transfer by session token.
|
|
473
|
+
* GET /v1/transfers?guestToken=...
|
|
474
|
+
*/
|
|
475
|
+
declare function getTransferByGuestToken(apiBaseUrl: string, guestToken: string): Promise<Transfer>;
|
|
476
|
+
/**
|
|
477
|
+
* Set the sender's wallet address and selected source token on a guest transfer.
|
|
478
|
+
* PUT /v1/transfers/:id/sender
|
|
479
|
+
*/
|
|
480
|
+
/**
|
|
481
|
+
* Guest fee preview before PUT /sender (non-recommended token or refresh).
|
|
482
|
+
* POST /v1/transfers/:id/quotes
|
|
483
|
+
*/
|
|
484
|
+
declare function postGuestTransferFeeQuote(apiBaseUrl: string, transferId: string, guestSessionToken: string, senderAddress: string, sourceChainId: number, sourceToken: string): Promise<GuestTransferFee>;
|
|
485
|
+
/**
|
|
486
|
+
* PUT /v1/transfers/:id/sender — guest probe (`senderAddress` only) or commit (full body).
|
|
487
|
+
*/
|
|
488
|
+
declare function putGuestTransferSender(apiBaseUrl: string, transferId: string, guestSessionToken: string, body: {
|
|
489
|
+
senderAddress: string;
|
|
490
|
+
sourceChainId?: number;
|
|
491
|
+
sourceToken?: string;
|
|
492
|
+
}): Promise<SetTransferSenderResponse>;
|
|
493
|
+
declare function setTransferSender(apiBaseUrl: string, transferId: string, guestSessionToken: string, senderAddress: string, sourceChainId: number, sourceToken: string): Promise<SetTransferSenderResponse>;
|
|
494
|
+
/**
|
|
495
|
+
* Submit the origin chain tx hash for a guest transfer.
|
|
496
|
+
* PATCH /v1/transfers/:id with { originTxHash }
|
|
497
|
+
*/
|
|
498
|
+
declare function signGuestTransfer(apiBaseUrl: string, transferId: string, guestSessionToken: string, originTxHash: string): Promise<Transfer>;
|
|
499
|
+
/**
|
|
500
|
+
* Poll a guest transfer by ID using the guest session token.
|
|
501
|
+
* GET /v1/transfers/:id with x-guest-session-token header
|
|
502
|
+
*/
|
|
503
|
+
declare function getGuestTransfer(apiBaseUrl: string, transferId: string, guestSessionToken: string): Promise<Transfer>;
|
|
504
|
+
/** @alias GuestTransferBalanceItem */
|
|
505
|
+
type GuestBalanceOption = GuestTransferBalanceItem;
|
|
506
|
+
declare function fetchGuestAccount(apiBaseUrl: string, guestToken: string): Promise<{
|
|
507
|
+
accountId: string;
|
|
508
|
+
hasPasskey: boolean;
|
|
509
|
+
walletAddress: string | null;
|
|
510
|
+
} | null>;
|
|
511
|
+
declare function createGuestAccount(apiBaseUrl: string, guestSessionToken: string, providerId: string, name: string): Promise<{
|
|
512
|
+
accountId: string;
|
|
513
|
+
sessionToken: string;
|
|
514
|
+
sessionUri: string;
|
|
439
515
|
}>;
|
|
440
|
-
declare function
|
|
441
|
-
|
|
442
|
-
|
|
516
|
+
declare function setAccountOwner(apiBaseUrl: string, accessToken: string, accountId: string, guestSessionToken: string, body: {
|
|
517
|
+
credentialId: string;
|
|
518
|
+
publicKey: string;
|
|
519
|
+
}): Promise<{
|
|
520
|
+
accountId: string;
|
|
521
|
+
smartAccountAddress: string;
|
|
522
|
+
userOpHash: string;
|
|
443
523
|
}>;
|
|
524
|
+
declare function reportActionCompletion(apiBaseUrl: string, actionId: string, result: Record<string, unknown>): Promise<AuthorizationSessionDetail>;
|
|
444
525
|
|
|
445
526
|
type api_CreateAccountParams = CreateAccountParams;
|
|
446
527
|
type api_CreateGuestTransferParams = CreateGuestTransferParams;
|
|
447
528
|
type api_CreateTransferParams = CreateTransferParams;
|
|
448
|
-
type
|
|
529
|
+
type api_GuestBalanceOption = GuestBalanceOption;
|
|
530
|
+
type api_GuestTransferResult = GuestTransferResult;
|
|
531
|
+
type api_TransferQuote = TransferQuote;
|
|
449
532
|
declare const api_createAccount: typeof createAccount;
|
|
450
533
|
declare const api_createAccountAuthorizationSession: typeof createAccountAuthorizationSession;
|
|
534
|
+
declare const api_createGuestAccount: typeof createGuestAccount;
|
|
451
535
|
declare const api_createGuestTransfer: typeof createGuestTransfer;
|
|
452
536
|
declare const api_createTransfer: typeof createTransfer;
|
|
453
537
|
declare const api_fetchAccount: typeof fetchAccount;
|
|
454
538
|
declare const api_fetchAccounts: typeof fetchAccounts;
|
|
455
539
|
declare const api_fetchAuthorizationSession: typeof fetchAuthorizationSession;
|
|
540
|
+
declare const api_fetchAuthorizationSessionByToken: typeof fetchAuthorizationSessionByToken;
|
|
456
541
|
declare const api_fetchChains: typeof fetchChains;
|
|
457
|
-
declare const
|
|
458
|
-
declare const api_fetchGuestSourceOptions: typeof fetchGuestSourceOptions;
|
|
459
|
-
declare const api_fetchGuestTransfer: typeof fetchGuestTransfer;
|
|
542
|
+
declare const api_fetchGuestAccount: typeof fetchGuestAccount;
|
|
460
543
|
declare const api_fetchMerchantPublicKey: typeof fetchMerchantPublicKey;
|
|
461
544
|
declare const api_fetchProviders: typeof fetchProviders;
|
|
462
545
|
declare const api_fetchTransfer: typeof fetchTransfer;
|
|
463
546
|
declare const api_fetchUserConfig: typeof fetchUserConfig;
|
|
547
|
+
declare const api_getGuestTransfer: typeof getGuestTransfer;
|
|
548
|
+
declare const api_getTransferByGuestToken: typeof getTransferByGuestToken;
|
|
549
|
+
declare const api_postGuestTransferFeeQuote: typeof postGuestTransferFeeQuote;
|
|
550
|
+
declare const api_postTransferQuote: typeof postTransferQuote;
|
|
551
|
+
declare const api_putGuestTransferSender: typeof putGuestTransferSender;
|
|
464
552
|
declare const api_registerPasskey: typeof registerPasskey;
|
|
465
553
|
declare const api_reportActionCompletion: typeof reportActionCompletion;
|
|
466
554
|
declare const api_reportPasskeyActivity: typeof reportPasskeyActivity;
|
|
555
|
+
declare const api_setAccountOwner: typeof setAccountOwner;
|
|
556
|
+
declare const api_setTransferSender: typeof setTransferSender;
|
|
557
|
+
declare const api_signGuestTransfer: typeof signGuestTransfer;
|
|
467
558
|
declare const api_signTransfer: typeof signTransfer;
|
|
468
559
|
declare const api_updateUserConfig: typeof updateUserConfig;
|
|
469
560
|
declare const api_updateUserConfigBySession: typeof updateUserConfigBySession;
|
|
470
561
|
declare namespace api {
|
|
471
|
-
export { type api_CreateAccountParams as CreateAccountParams, type api_CreateGuestTransferParams as CreateGuestTransferParams, type api_CreateTransferParams as CreateTransferParams, type
|
|
562
|
+
export { type api_CreateAccountParams as CreateAccountParams, type api_CreateGuestTransferParams as CreateGuestTransferParams, type api_CreateTransferParams as CreateTransferParams, type api_GuestBalanceOption as GuestBalanceOption, type api_GuestTransferResult as GuestTransferResult, type api_TransferQuote as TransferQuote, api_createAccount as createAccount, api_createAccountAuthorizationSession as createAccountAuthorizationSession, api_createGuestAccount as createGuestAccount, api_createGuestTransfer as createGuestTransfer, api_createTransfer as createTransfer, api_fetchAccount as fetchAccount, api_fetchAccounts as fetchAccounts, api_fetchAuthorizationSession as fetchAuthorizationSession, api_fetchAuthorizationSessionByToken as fetchAuthorizationSessionByToken, api_fetchChains as fetchChains, api_fetchGuestAccount as fetchGuestAccount, api_fetchMerchantPublicKey as fetchMerchantPublicKey, api_fetchProviders as fetchProviders, api_fetchTransfer as fetchTransfer, api_fetchUserConfig as fetchUserConfig, api_getGuestTransfer as getGuestTransfer, api_getTransferByGuestToken as getTransferByGuestToken, api_postGuestTransferFeeQuote as postGuestTransferFeeQuote, api_postTransferQuote as postTransferQuote, api_putGuestTransferSender as putGuestTransferSender, api_registerPasskey as registerPasskey, api_reportActionCompletion as reportActionCompletion, api_reportPasskeyActivity as reportPasskeyActivity, api_setAccountOwner as setAccountOwner, api_setTransferSender as setTransferSender, api_signGuestTransfer as signGuestTransfer, api_signTransfer as signTransfer, api_updateUserConfig as updateUserConfig, api_updateUserConfigBySession as updateUserConfigBySession };
|
|
472
563
|
}
|
|
473
564
|
|
|
474
|
-
interface
|
|
565
|
+
interface BlinkPaymentProps {
|
|
475
566
|
destination: Destination;
|
|
476
567
|
onComplete?: (transfer: Transfer) => void;
|
|
477
568
|
onError?: (error: string) => void;
|
|
@@ -481,76 +572,25 @@ interface SwypePaymentProps {
|
|
|
481
572
|
merchantName?: string;
|
|
482
573
|
onBack?: () => void;
|
|
483
574
|
onDismiss?: () => void;
|
|
484
|
-
autoCloseSeconds?: number;
|
|
485
|
-
/** EVM numeric chain ID for the source chain (guest flow). */
|
|
486
|
-
sourceChainId?: number;
|
|
487
|
-
/** Source token contract address (guest flow). */
|
|
488
|
-
sourceToken?: string;
|
|
489
|
-
/** Destination EVM numeric chain ID (guest flow). */
|
|
490
|
-
destinationChainId?: number;
|
|
491
575
|
}
|
|
492
|
-
declare function
|
|
576
|
+
declare function BlinkPayment(props: BlinkPaymentProps): react_jsx_runtime.JSX.Element;
|
|
493
577
|
|
|
494
578
|
/**
|
|
495
579
|
* Cross-origin iframe passkey helpers.
|
|
496
580
|
*
|
|
497
581
|
* When the webview-app runs inside a cross-origin iframe, WebAuthn
|
|
498
582
|
* ceremonies cannot execute from within the iframe on Safari. For passkey
|
|
499
|
-
* creation, we
|
|
500
|
-
*
|
|
501
|
-
* that fails (Safari), we open a same-origin pop-up window on the Swype
|
|
502
|
-
* domain to perform the ceremony. The popup writes the result to the
|
|
503
|
-
* server with a verification token, and the opener reads from the server
|
|
504
|
-
* after the popup closes.
|
|
583
|
+
* verification (signing) and signup (credential creation), we open a
|
|
584
|
+
* same-origin pop-up window on the Blink domain to perform the ceremony.
|
|
505
585
|
*/
|
|
506
586
|
/**
|
|
507
587
|
* Thrown when `navigator.credentials.create()` fails inside a
|
|
508
588
|
* cross-origin iframe (Safari). The UI layer should catch this and
|
|
509
|
-
* offer the user a button that opens the
|
|
589
|
+
* offer the user a button that opens the Blink passkey pop-up.
|
|
510
590
|
*/
|
|
511
591
|
declare class PasskeyIframeBlockedError extends Error {
|
|
512
592
|
constructor(message?: string);
|
|
513
593
|
}
|
|
514
|
-
interface PasskeyPopupOptions {
|
|
515
|
-
challenge: string;
|
|
516
|
-
rpId: string;
|
|
517
|
-
rpName: string;
|
|
518
|
-
userId: string;
|
|
519
|
-
userName: string;
|
|
520
|
-
userDisplayName: string;
|
|
521
|
-
pubKeyCredParams: Array<{
|
|
522
|
-
alg: number;
|
|
523
|
-
type: string;
|
|
524
|
-
}>;
|
|
525
|
-
authenticatorSelection?: {
|
|
526
|
-
authenticatorAttachment?: string;
|
|
527
|
-
residentKey?: string;
|
|
528
|
-
userVerification?: string;
|
|
529
|
-
};
|
|
530
|
-
timeout?: number;
|
|
531
|
-
/** Populated by `createPasskeyViaPopup`; not set by callers. */
|
|
532
|
-
verificationToken?: string;
|
|
533
|
-
/** Privy JWT so the popup can register the passkey server-side. */
|
|
534
|
-
authToken?: string;
|
|
535
|
-
/** Core API base URL for server-side passkey registration. */
|
|
536
|
-
apiBaseUrl?: string;
|
|
537
|
-
}
|
|
538
|
-
/**
|
|
539
|
-
* Opens a same-origin pop-up window on the Swype domain to perform
|
|
540
|
-
* passkey creation. Used as a fallback when Safari blocks
|
|
541
|
-
* `navigator.credentials.create()` inside a cross-origin iframe.
|
|
542
|
-
*
|
|
543
|
-
* The popup registers the passkey with the server using a verification
|
|
544
|
-
* token. After the popup closes, this function checks the server for
|
|
545
|
-
* the passkey matching the token.
|
|
546
|
-
*
|
|
547
|
-
* Must be called from a user-gesture handler (e.g. button click) to
|
|
548
|
-
* avoid the browser's pop-up blocker.
|
|
549
|
-
*/
|
|
550
|
-
declare function createPasskeyViaPopup(options: PasskeyPopupOptions): Promise<{
|
|
551
|
-
credentialId: string;
|
|
552
|
-
publicKey: string;
|
|
553
|
-
}>;
|
|
554
594
|
interface PasskeyVerifyPopupOptions {
|
|
555
595
|
credentialIds: string[];
|
|
556
596
|
rpId: string;
|
|
@@ -562,17 +602,13 @@ interface PasskeyVerifyPopupOptions {
|
|
|
562
602
|
apiBaseUrl?: string;
|
|
563
603
|
}
|
|
564
604
|
/**
|
|
565
|
-
* Opens a same-origin pop-up window on the
|
|
605
|
+
* Opens a same-origin pop-up window on the Blink domain to check whether
|
|
566
606
|
* any of the given passkey credential IDs exist on this device.
|
|
567
607
|
*
|
|
568
608
|
* Used as a fallback when Safari blocks `navigator.credentials.get()`
|
|
569
|
-
* inside a cross-origin iframe. The popup runs on the
|
|
609
|
+
* inside a cross-origin iframe. The popup runs on the Blink domain where
|
|
570
610
|
* the rpId matches, so WebAuthn works.
|
|
571
611
|
*
|
|
572
|
-
* The popup writes a verification token to the server. After the popup
|
|
573
|
-
* closes, the opener checks the server for the matching token to determine
|
|
574
|
-
* which credential was verified.
|
|
575
|
-
*
|
|
576
612
|
* Must be called from a user-gesture handler (e.g. button click) to
|
|
577
613
|
* avoid the browser's pop-up blocker.
|
|
578
614
|
*
|
|
@@ -581,41 +617,13 @@ interface PasskeyVerifyPopupOptions {
|
|
|
581
617
|
*/
|
|
582
618
|
declare function findDevicePasskeyViaPopup(options: PasskeyVerifyPopupOptions): Promise<string | null>;
|
|
583
619
|
|
|
584
|
-
type AccessTokenGetter = () => Promise<string | null | undefined>;
|
|
585
|
-
declare function resolvePasskeyRpId(): string;
|
|
586
|
-
/**
|
|
587
|
-
* Creates a WebAuthn passkey credential.
|
|
588
|
-
* Used for upfront passkey registration before the authorization flow.
|
|
589
|
-
*
|
|
590
|
-
* @param params.userId - Globally unique user identifier (e.g. Privy DID).
|
|
591
|
-
* Used as the WebAuthn `user.id` handle so each user gets a distinct
|
|
592
|
-
* credential slot on the authenticator.
|
|
593
|
-
* @param params.displayName - Human-readable label shown in the OS passkey
|
|
594
|
-
* prompt (e.g. the user's email address or name).
|
|
595
|
-
* @returns The base64-encoded credentialId and publicKey.
|
|
596
|
-
*/
|
|
597
|
-
declare function createPasskeyCredential(params: {
|
|
598
|
-
userId: string;
|
|
599
|
-
displayName: string;
|
|
600
|
-
}): Promise<{
|
|
601
|
-
credentialId: string;
|
|
602
|
-
publicKey: string;
|
|
603
|
-
}>;
|
|
604
620
|
/**
|
|
605
|
-
*
|
|
606
|
-
*
|
|
607
|
-
* `createPasskeyCredential` throws {@link PasskeyIframeBlockedError}.
|
|
608
|
-
*
|
|
609
|
-
* @param params.authToken - Privy JWT so the popup can register the
|
|
610
|
-
* passkey server-side (Safari fallback when BroadcastChannel is blocked).
|
|
611
|
-
* @param params.apiBaseUrl - Core API base URL for server-side registration.
|
|
621
|
+
* Decodes a WebAuthn credential id from the same base64 (or base64url) encoding
|
|
622
|
+
* used when registering passkeys and returned by the API as `passkeyCredentialId`.
|
|
612
623
|
*/
|
|
613
|
-
declare function
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
authToken?: string;
|
|
617
|
-
apiBaseUrl?: string;
|
|
618
|
-
}): PasskeyPopupOptions;
|
|
624
|
+
declare function credentialIdBase64ToBytes(value: string): Uint8Array<ArrayBuffer>;
|
|
625
|
+
|
|
626
|
+
declare function resolvePasskeyRpId(): string;
|
|
619
627
|
/**
|
|
620
628
|
* @deprecated Use {@link findDevicePasskey} instead, which checks all
|
|
621
629
|
* credentials in a single WebAuthn call.
|
|
@@ -631,6 +639,7 @@ declare function deviceHasPasskey(credentialId: string): Promise<boolean>;
|
|
|
631
639
|
* @returns The matching credential ID, or `null` if none are on this device.
|
|
632
640
|
*/
|
|
633
641
|
declare function findDevicePasskey(credentialIds: string[]): Promise<string | null>;
|
|
642
|
+
|
|
634
643
|
interface UseTransferPollingResult {
|
|
635
644
|
transfer: Transfer | null;
|
|
636
645
|
error: string | null;
|
|
@@ -642,7 +651,22 @@ interface UseTransferPollingResult {
|
|
|
642
651
|
* Polls GET /v1/transfers/{id} every `intervalMs` until status is
|
|
643
652
|
* COMPLETED or FAILED.
|
|
644
653
|
*/
|
|
645
|
-
declare function useTransferPolling(intervalMs?: number): UseTransferPollingResult;
|
|
654
|
+
declare function useTransferPolling(intervalMs?: number, overrideGetAccessToken?: () => Promise<string | null>): UseTransferPollingResult;
|
|
655
|
+
|
|
656
|
+
/** Thrown when `cancelPendingExecution()` rejects an in-flight session (user left funding UI). */
|
|
657
|
+
declare class AuthorizationSessionCancelledError extends Error {
|
|
658
|
+
constructor();
|
|
659
|
+
}
|
|
660
|
+
/** True for client cancel or duplicate bundle copies where `instanceof` may fail. */
|
|
661
|
+
declare function isAuthorizationSessionCancelled(err: unknown): boolean;
|
|
662
|
+
/**
|
|
663
|
+
* Backend / wallet may surface user-dismissal with this wording; treat like cancel so deposit
|
|
664
|
+
* does not keep a red banner after backing out of setup.
|
|
665
|
+
*/
|
|
666
|
+
declare function isUserDismissedAuthorizationError(err: unknown): boolean;
|
|
667
|
+
/** True when the error represents any expected user-initiated cancellation of an authorization flow. */
|
|
668
|
+
declare function isExpectedAuthorizationCancellation(err: unknown): boolean;
|
|
669
|
+
|
|
646
670
|
interface UseAuthorizationExecutorResult {
|
|
647
671
|
executing: boolean;
|
|
648
672
|
results: ActionExecutionResult[];
|
|
@@ -657,11 +681,19 @@ interface UseAuthorizationExecutorResult {
|
|
|
657
681
|
pendingOneTapSetup: AuthorizationAction | null;
|
|
658
682
|
/** Call this from the UI after the user has set their One-Tap limit. */
|
|
659
683
|
resolveOneTapSetup: () => void;
|
|
660
|
-
/** Execute authorization by session id. */
|
|
661
|
-
executeSessionById: (sessionId: string) => Promise<
|
|
684
|
+
/** Execute authorization by session id. Returns `false` if the user cancelled. */
|
|
685
|
+
executeSessionById: (sessionId: string) => Promise<boolean>;
|
|
686
|
+
/**
|
|
687
|
+
* Number of nested `executeSessionById` runs on the stack (1 = single session).
|
|
688
|
+
* Used to show OpenWallet during token reauthorization while the parent session is paused
|
|
689
|
+
* on the One-Tap limit step (`pendingOneTapSetup`).
|
|
690
|
+
*/
|
|
691
|
+
authorizationSessionStackDepth: number;
|
|
692
|
+
/** Reject paused SELECT_SOURCE / One-Tap waits and reset executor flags (e.g. user backed to deposit). */
|
|
693
|
+
cancelPendingExecution: () => void;
|
|
662
694
|
}
|
|
663
695
|
interface UseAuthorizationExecutorOptions {
|
|
664
|
-
/** Optional API base URL override when used outside
|
|
696
|
+
/** Optional API base URL override when used outside BlinkProvider. */
|
|
665
697
|
apiBaseUrl?: string;
|
|
666
698
|
}
|
|
667
699
|
/**
|
|
@@ -682,6 +714,8 @@ interface UseAuthorizationExecutorOptions {
|
|
|
682
714
|
* `useTransferSigning()` after the authorization flow completes.
|
|
683
715
|
*/
|
|
684
716
|
declare function useAuthorizationExecutor(options?: UseAuthorizationExecutorOptions): UseAuthorizationExecutorResult;
|
|
717
|
+
|
|
718
|
+
type AccessTokenGetter = () => Promise<string | null | undefined>;
|
|
685
719
|
interface UseTransferSigningResult {
|
|
686
720
|
signing: boolean;
|
|
687
721
|
signPayload: TransferSignPayload | null;
|
|
@@ -695,7 +729,7 @@ interface UseTransferSigningResult {
|
|
|
695
729
|
signTransfer: (transferId: string) => Promise<Transfer>;
|
|
696
730
|
}
|
|
697
731
|
interface UseTransferSigningOptions {
|
|
698
|
-
/** Optional API base URL override when used outside
|
|
732
|
+
/** Optional API base URL override when used outside BlinkProvider. */
|
|
699
733
|
apiBaseUrl?: string;
|
|
700
734
|
/** Optional access-token getter override (e.g. deeplink query token). */
|
|
701
735
|
getAccessToken?: AccessTokenGetter;
|
|
@@ -712,6 +746,47 @@ interface UseTransferSigningOptions {
|
|
|
712
746
|
*/
|
|
713
747
|
declare function useTransferSigning(pollIntervalMs?: number, options?: UseTransferSigningOptions): UseTransferSigningResult;
|
|
714
748
|
|
|
749
|
+
interface GuestTokenEntry {
|
|
750
|
+
chainId: string;
|
|
751
|
+
/** Standard EVM numeric chain ID — used in PUT /sender sourceChainId. */
|
|
752
|
+
sourceChainId: number;
|
|
753
|
+
chainName: string;
|
|
754
|
+
tokenSymbol: string;
|
|
755
|
+
tokenAddress: string;
|
|
756
|
+
balance: number;
|
|
757
|
+
decimals: number;
|
|
758
|
+
rawBalance: string;
|
|
759
|
+
}
|
|
760
|
+
interface GuestBalanceOptionInput {
|
|
761
|
+
chainId: string;
|
|
762
|
+
sourceChainId: number;
|
|
763
|
+
chainName: string;
|
|
764
|
+
tokenSymbol: string;
|
|
765
|
+
tokenAddress: string;
|
|
766
|
+
decimals: number;
|
|
767
|
+
rawBalance: string;
|
|
768
|
+
}
|
|
769
|
+
/**
|
|
770
|
+
* Picker list: positive balances first (by amount); if none, show zero-balance
|
|
771
|
+
* rows so the user can still choose a catalog token.
|
|
772
|
+
*/
|
|
773
|
+
declare function mapGuestPickerEntries(options: GuestBalanceOptionInput[]): GuestTokenEntry[];
|
|
774
|
+
declare function guestEntryMatchingRecommended(balances: GuestBalanceOptionInput[], recommended: {
|
|
775
|
+
sourceChainId: number;
|
|
776
|
+
tokenAddress: string;
|
|
777
|
+
}): GuestTokenEntry | null;
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
* Best-effort UI label for device biometrics (Face ID, Touch ID, Windows Hello, etc.).
|
|
781
|
+
* The web platform does not expose the exact modality; this uses coarse `userAgent`
|
|
782
|
+
* detection only — synchronous so it can run during render with no effects.
|
|
783
|
+
*/
|
|
784
|
+
/**
|
|
785
|
+
* Returns short copy for passkey / biometric prompts based on the current environment.
|
|
786
|
+
* Does not call WebAuthn (no async); suitable for direct use in render.
|
|
787
|
+
*/
|
|
788
|
+
declare function getDeviceBiometricUnlockText(): string;
|
|
789
|
+
|
|
715
790
|
interface ScreenLayoutProps {
|
|
716
791
|
children: ReactNode;
|
|
717
792
|
/** Content pinned to the bottom of the screen (buttons, footer) */
|
|
@@ -740,10 +815,18 @@ interface PrimaryButtonProps {
|
|
|
740
815
|
onClick?: () => void;
|
|
741
816
|
disabled?: boolean;
|
|
742
817
|
loading?: boolean;
|
|
818
|
+
/** Override the default "Please wait..." text shown while loading. */
|
|
819
|
+
loadingText?: string;
|
|
743
820
|
/** Optional icon element rendered left of the label */
|
|
744
821
|
icon?: ReactNode;
|
|
745
|
-
|
|
746
|
-
|
|
822
|
+
/** 0-1 fractional progress. When set, the button renders in progress mode with a fill bar. */
|
|
823
|
+
progress?: number;
|
|
824
|
+
/** Text shown during progress mode (overrides children and loadingText). */
|
|
825
|
+
progressText?: string;
|
|
826
|
+
/** When true, the fill bar pulses to signal the user needs to take action (e.g. confirm in wallet). */
|
|
827
|
+
progressPaused?: boolean;
|
|
828
|
+
}
|
|
829
|
+
declare function PrimaryButton({ children, onClick, disabled, loading, loadingText, icon, progress, progressText, progressPaused, }: PrimaryButtonProps): react_jsx_runtime.JSX.Element;
|
|
747
830
|
|
|
748
831
|
interface OutlineButtonProps {
|
|
749
832
|
children: ReactNode;
|
|
@@ -789,7 +872,36 @@ interface SpinnerProps {
|
|
|
789
872
|
}
|
|
790
873
|
declare function Spinner({ size, label }: SpinnerProps): react_jsx_runtime.JSX.Element;
|
|
791
874
|
|
|
792
|
-
declare function
|
|
875
|
+
declare function BlinkLoadingScreen(): react_jsx_runtime.JSX.Element;
|
|
876
|
+
|
|
877
|
+
interface LoginScreenProps {
|
|
878
|
+
onLoginWithPasskey: () => void;
|
|
879
|
+
onSignupWithPasskey: () => void;
|
|
880
|
+
loading: boolean;
|
|
881
|
+
error: string | null;
|
|
882
|
+
onBack?: () => void;
|
|
883
|
+
merchantInitials?: string;
|
|
884
|
+
/** Overrides default hero heading (e.g. guest preauth flow). */
|
|
885
|
+
heroTitle?: string;
|
|
886
|
+
/** Optional line below the hero heading. */
|
|
887
|
+
heroSubtitle?: string;
|
|
888
|
+
/** When true, signup is the primary action (guest preauth flow). */
|
|
889
|
+
preferSignup?: boolean;
|
|
890
|
+
}
|
|
891
|
+
declare function LoginScreen({ onLoginWithPasskey, onSignupWithPasskey, loading, error, onBack, merchantInitials, heroTitle, heroSubtitle, preferSignup, }: LoginScreenProps): react_jsx_runtime.JSX.Element;
|
|
892
|
+
|
|
893
|
+
interface OtpVerifyScreenProps {
|
|
894
|
+
/** Masked identifier displayed to the user (e.g. "user@email.com") */
|
|
895
|
+
maskedIdentifier: string;
|
|
896
|
+
otpCode: string;
|
|
897
|
+
onOtpChange: (code: string) => void;
|
|
898
|
+
onVerify: () => void;
|
|
899
|
+
onResend: () => void;
|
|
900
|
+
onBack: () => void;
|
|
901
|
+
verifying: boolean;
|
|
902
|
+
error: string | null;
|
|
903
|
+
}
|
|
904
|
+
declare function OtpVerifyScreen({ maskedIdentifier, otpCode, onOtpChange, onVerify, onResend, onBack, verifying, error, }: OtpVerifyScreenProps): react_jsx_runtime.JSX.Element;
|
|
793
905
|
|
|
794
906
|
interface PasskeyScreenProps {
|
|
795
907
|
onCreatePasskey: () => void;
|
|
@@ -799,11 +911,113 @@ interface PasskeyScreenProps {
|
|
|
799
911
|
error: string | null;
|
|
800
912
|
/** When true, direct passkey creation failed (Safari iframe restriction). */
|
|
801
913
|
popupFallback?: boolean;
|
|
802
|
-
/** Opens a pop-up window on the
|
|
914
|
+
/** Opens a pop-up window on the Blink domain for passkey registration. */
|
|
803
915
|
onCreatePasskeyViaPopup?: () => void;
|
|
916
|
+
/** Creates a brand-new passkey on this device (for users who already have one on another device). */
|
|
917
|
+
onCreateNewPasskey?: () => void;
|
|
918
|
+
/** Popup fallback variant of onCreateNewPasskey. */
|
|
919
|
+
onCreateNewPasskeyViaPopup?: () => void;
|
|
920
|
+
/** When set, overrides `popupFallback` for the create-new link only. */
|
|
921
|
+
createNewPopupFallback?: boolean;
|
|
922
|
+
/** Loading state while a new passkey is being created. */
|
|
923
|
+
creatingNewPasskey?: boolean;
|
|
924
|
+
}
|
|
925
|
+
declare function PasskeyScreen({ onCreatePasskey, onBack, onLogout, creating, error, popupFallback, onCreatePasskeyViaPopup, onCreateNewPasskey, onCreateNewPasskeyViaPopup, createNewPopupFallback, creatingNewPasskey, }: PasskeyScreenProps): react_jsx_runtime.JSX.Element;
|
|
926
|
+
|
|
927
|
+
interface VerifyPasskeyScreenProps {
|
|
928
|
+
onVerify: () => void;
|
|
929
|
+
onBack?: () => void;
|
|
930
|
+
verifying: boolean;
|
|
931
|
+
error: string | null;
|
|
932
|
+
/** Override the default subtitle text (useful when rendering inside a popup). */
|
|
933
|
+
subtitle?: string;
|
|
934
|
+
}
|
|
935
|
+
declare function VerifyPasskeyScreen({ onVerify, onBack, verifying, error, subtitle, }: VerifyPasskeyScreenProps): react_jsx_runtime.JSX.Element;
|
|
936
|
+
|
|
937
|
+
type ScreenName = 'loading' | 'login' | 'success' | 'processing' | 'confirm-sign' | 'select-source' | 'setup' | 'open-wallet' | 'setup-status' | 'guest-token-picker' | 'wallet-picker' | 'token-picker' | 'deposit' | 'guest-setup-complete' | 'guest-preauth-linking';
|
|
938
|
+
interface MobileFlowState {
|
|
939
|
+
deeplinkUri: string;
|
|
940
|
+
providerId: string | null;
|
|
941
|
+
}
|
|
942
|
+
type PaymentPhase = {
|
|
943
|
+
step: 'initializing';
|
|
944
|
+
} | {
|
|
945
|
+
step: 'login';
|
|
946
|
+
} | {
|
|
947
|
+
step: 'data-loading';
|
|
948
|
+
} | {
|
|
949
|
+
step: 'wallet-picker';
|
|
950
|
+
reason: 'link' | 'switch' | 'entry' | 'guest-entry';
|
|
951
|
+
} | {
|
|
952
|
+
step: 'wallet-setup';
|
|
953
|
+
mobile: MobileFlowState | null;
|
|
954
|
+
accountId: string | null;
|
|
955
|
+
/** Desktop: use OpenWalletScreen (extension popups) instead of SetupStatusScreen. */
|
|
956
|
+
guestDesktopExtension?: boolean;
|
|
957
|
+
} | {
|
|
958
|
+
step: 'select-source';
|
|
959
|
+
action: AuthorizationAction;
|
|
960
|
+
isDesktop: boolean;
|
|
961
|
+
} | {
|
|
962
|
+
step: 'one-tap-setup';
|
|
963
|
+
action: AuthorizationAction | null;
|
|
964
|
+
} | {
|
|
965
|
+
step: 'guest-token-picker';
|
|
966
|
+
} | {
|
|
967
|
+
step: 'token-picker';
|
|
968
|
+
} | {
|
|
969
|
+
step: 'deposit';
|
|
970
|
+
} | {
|
|
971
|
+
step: 'processing';
|
|
972
|
+
transfer: Transfer | null;
|
|
973
|
+
} | {
|
|
974
|
+
step: 'confirm-sign';
|
|
975
|
+
transfer: Transfer;
|
|
976
|
+
} | {
|
|
977
|
+
step: 'completed';
|
|
978
|
+
transfer: Transfer;
|
|
979
|
+
} | {
|
|
980
|
+
step: 'failed';
|
|
981
|
+
transfer: Transfer;
|
|
982
|
+
error: string;
|
|
983
|
+
} | {
|
|
984
|
+
step: 'guest-setup-complete';
|
|
985
|
+
} | {
|
|
986
|
+
step: 'guest-preauth-linking';
|
|
987
|
+
};
|
|
988
|
+
declare function screenForPhase(phase: PaymentPhase): ScreenName;
|
|
989
|
+
|
|
990
|
+
interface PreparedSession {
|
|
991
|
+
accountId: string;
|
|
992
|
+
sessionId: string;
|
|
993
|
+
uri: string;
|
|
804
994
|
}
|
|
805
|
-
declare function PasskeyScreen({ onCreatePasskey, onBack, onLogout, creating, error, popupFallback, onCreatePasskeyViaPopup, }: PasskeyScreenProps): react_jsx_runtime.JSX.Element;
|
|
806
995
|
|
|
996
|
+
interface WalletPickerScreenProps {
|
|
997
|
+
providers: Provider[];
|
|
998
|
+
pendingConnections?: Account[];
|
|
999
|
+
loading?: boolean;
|
|
1000
|
+
useDeeplink?: boolean;
|
|
1001
|
+
onPrepareProvider: (providerId: string) => Promise<PreparedSession | null>;
|
|
1002
|
+
onSelectProvider: (providerId: string, preparedSession?: PreparedSession) => Promise<void>;
|
|
1003
|
+
onContinueConnection?: (accountId: string) => void;
|
|
1004
|
+
onBack?: () => void;
|
|
1005
|
+
onLogout?: () => void;
|
|
1006
|
+
onLogin?: () => void;
|
|
1007
|
+
showLoginOption?: boolean;
|
|
1008
|
+
isDesktop?: boolean;
|
|
1009
|
+
}
|
|
1010
|
+
declare function WalletPickerScreen({ providers, pendingConnections, loading, useDeeplink, onPrepareProvider, onSelectProvider, onContinueConnection, onBack, onLogout, onLogin, showLoginOption, isDesktop, }: WalletPickerScreenProps): react_jsx_runtime.JSX.Element;
|
|
1011
|
+
|
|
1012
|
+
interface SetupTokenOption {
|
|
1013
|
+
symbol: string;
|
|
1014
|
+
chainName: string;
|
|
1015
|
+
balance?: number;
|
|
1016
|
+
walletId?: string;
|
|
1017
|
+
status?: string;
|
|
1018
|
+
tokenAddress?: string;
|
|
1019
|
+
chainId?: number;
|
|
1020
|
+
}
|
|
807
1021
|
interface SetupScreenProps {
|
|
808
1022
|
availableBalance: number;
|
|
809
1023
|
/** Number of tokens/chains available */
|
|
@@ -813,7 +1027,7 @@ interface SetupScreenProps {
|
|
|
813
1027
|
onSetupOneTap: (limit: number) => void;
|
|
814
1028
|
onBack: () => void;
|
|
815
1029
|
onLogout: () => void;
|
|
816
|
-
/** Navigate to the advanced source picker. */
|
|
1030
|
+
/** Navigate to the advanced source picker (fallback when no tokenOptions). */
|
|
817
1031
|
onAdvanced?: () => void;
|
|
818
1032
|
/** Human-readable label for the currently selected source (e.g. "USDC on Base"). */
|
|
819
1033
|
selectedSourceLabel?: string;
|
|
@@ -821,8 +1035,103 @@ interface SetupScreenProps {
|
|
|
821
1035
|
error: string | null;
|
|
822
1036
|
/** Token symbol for the selected source, e.g. "USDC" or "USDT" */
|
|
823
1037
|
selectedTokenSymbol?: string;
|
|
1038
|
+
/** Chain name for the selected source, used alongside selectedTokenSymbol to disambiguate same-symbol tokens on different chains. */
|
|
1039
|
+
selectedChainName?: string;
|
|
1040
|
+
/** Available tokens for the inline dropdown. When provided, the token row opens a dropdown instead of navigating. */
|
|
1041
|
+
tokenOptions?: SetupTokenOption[];
|
|
1042
|
+
/** Called when the user picks a token from the inline dropdown. */
|
|
1043
|
+
onSelectToken?: (symbol: string, chainName: string, walletId?: string) => void;
|
|
1044
|
+
}
|
|
1045
|
+
declare function SetupScreen({ availableBalance, onSetupOneTap, onBack, onLogout, onAdvanced, loading, error, selectedTokenSymbol, selectedChainName, tokenOptions, onSelectToken, }: SetupScreenProps): react_jsx_runtime.JSX.Element;
|
|
1046
|
+
|
|
1047
|
+
interface SetupStatusScreenProps {
|
|
1048
|
+
/** Whether setup has completed */
|
|
1049
|
+
complete: boolean;
|
|
1050
|
+
/** The approved One-Tap limit */
|
|
1051
|
+
limit: number;
|
|
1052
|
+
/** Number of tokens approved */
|
|
1053
|
+
tokensApproved: number;
|
|
1054
|
+
/** Merchant name for the "Return to ..." button */
|
|
1055
|
+
merchantName?: string;
|
|
1056
|
+
/** Called when user taps the primary action on the complete screen */
|
|
1057
|
+
onContinue: () => void;
|
|
1058
|
+
onLogout: () => void;
|
|
1059
|
+
error: string | null;
|
|
824
1060
|
}
|
|
825
|
-
declare function
|
|
1061
|
+
declare function SetupStatusScreen({ complete, onContinue, onLogout, error, }: SetupStatusScreenProps): react_jsx_runtime.JSX.Element;
|
|
1062
|
+
|
|
1063
|
+
interface DepositScreenProps {
|
|
1064
|
+
merchantName?: string;
|
|
1065
|
+
/** Total available balance from source */
|
|
1066
|
+
availableBalance: number;
|
|
1067
|
+
/** Remaining One-Tap allowance from the API, or null when not configured */
|
|
1068
|
+
remainingLimit: number | null;
|
|
1069
|
+
/** Number of tokens/chains available */
|
|
1070
|
+
tokenCount: number;
|
|
1071
|
+
/** Pre-populated amount */
|
|
1072
|
+
initialAmount: number;
|
|
1073
|
+
/** Pre-transfer fee estimate from POST /v1/transfers/quotes */
|
|
1074
|
+
quoteFee?: PreciseMoney | null;
|
|
1075
|
+
/** Whether a fee quote is being fetched */
|
|
1076
|
+
quoteLoading?: boolean;
|
|
1077
|
+
/** User-facing error when the fee quote fails (e.g. amount too low) */
|
|
1078
|
+
quoteError?: string | null;
|
|
1079
|
+
/** Whether the deposit is currently processing */
|
|
1080
|
+
processing?: boolean;
|
|
1081
|
+
error: string | null;
|
|
1082
|
+
onDeposit: (amount: number) => void;
|
|
1083
|
+
onSwitchWallet: () => void;
|
|
1084
|
+
onBack: () => void;
|
|
1085
|
+
onLogout: () => void;
|
|
1086
|
+
/** Called when the user taps "Increase Limit" to re-authorize via wallet deeplink */
|
|
1087
|
+
onIncreaseLimit?: () => void;
|
|
1088
|
+
/** Whether a limit-increase flow is currently in progress */
|
|
1089
|
+
increasingLimit?: boolean;
|
|
1090
|
+
/** All user accounts for the source dropdown */
|
|
1091
|
+
accounts?: Account[];
|
|
1092
|
+
/** Currently selected account ID */
|
|
1093
|
+
selectedAccountId?: string | null;
|
|
1094
|
+
/** Called when an active account is selected from the dropdown */
|
|
1095
|
+
onSelectAccount?: (accountId: string) => void;
|
|
1096
|
+
/** Called when an inactive account is clicked (to authorize it) */
|
|
1097
|
+
onAuthorizeAccount?: (accountId: string) => void;
|
|
1098
|
+
/** Called when "+ Add Provider" is clicked in the dropdown */
|
|
1099
|
+
onAddProvider?: () => void;
|
|
1100
|
+
/** Fallback: navigate to the full-page token picker when no inline options. */
|
|
1101
|
+
onSelectToken?: () => void;
|
|
1102
|
+
/** Available tokens for the inline dropdown. When provided, the token badge opens a dropdown instead of navigating. */
|
|
1103
|
+
tokenOptions?: SetupTokenOption[];
|
|
1104
|
+
/** Called when the user picks a token from the inline dropdown. */
|
|
1105
|
+
onPickToken?: (symbol: string, chainName: string, walletId?: string) => void;
|
|
1106
|
+
/** Label for the selected chain/token, e.g. "USDC on Base" */
|
|
1107
|
+
selectedSourceLabel?: string;
|
|
1108
|
+
/** Token symbol for the selected source, e.g. "USDC" or "USDT" */
|
|
1109
|
+
selectedTokenSymbol?: string;
|
|
1110
|
+
/** Chain name for the selected source, used to disambiguate same-symbol tokens on different chains. */
|
|
1111
|
+
selectedChainName?: string;
|
|
1112
|
+
/**
|
|
1113
|
+
* Minimum USD amount required for One-Tap on this screen. When the host sets
|
|
1114
|
+
* `depositAmount`, this should match it; otherwise the default floor ($0.25)
|
|
1115
|
+
* applies (see StepRenderer).
|
|
1116
|
+
*/
|
|
1117
|
+
minDepositFloor: number;
|
|
1118
|
+
}
|
|
1119
|
+
declare function DepositScreen({ merchantName, availableBalance, remainingLimit, tokenCount, initialAmount, minDepositFloor, quoteFee, quoteLoading, quoteError, processing, error, onDeposit, onSwitchWallet, onBack, onLogout, onIncreaseLimit, increasingLimit, accounts, selectedAccountId, onSelectAccount, onAuthorizeAccount, onAddProvider, onSelectToken, tokenOptions, onPickToken, selectedSourceLabel, selectedTokenSymbol, selectedChainName, }: DepositScreenProps): react_jsx_runtime.JSX.Element;
|
|
1120
|
+
|
|
1121
|
+
interface SuccessScreenProps {
|
|
1122
|
+
amount: number;
|
|
1123
|
+
currency: string;
|
|
1124
|
+
succeeded: boolean;
|
|
1125
|
+
error?: string | null;
|
|
1126
|
+
merchantName?: string;
|
|
1127
|
+
sourceName?: string;
|
|
1128
|
+
remainingLimit?: number | null;
|
|
1129
|
+
onDone?: () => void;
|
|
1130
|
+
onLogout?: () => void;
|
|
1131
|
+
onIncreaseLimits?: () => void;
|
|
1132
|
+
onManageAccount?: () => void;
|
|
1133
|
+
}
|
|
1134
|
+
declare function SuccessScreen({ amount, currency: _currency, succeeded, error, merchantName, sourceName, remainingLimit, onDone, onLogout, onIncreaseLimits, onManageAccount, }: SuccessScreenProps): react_jsx_runtime.JSX.Element;
|
|
826
1135
|
|
|
827
1136
|
interface ChainChoice$1 {
|
|
828
1137
|
chainName: string;
|
|
@@ -843,10 +1152,12 @@ interface SelectSourceScreenProps {
|
|
|
843
1152
|
onChainChange: (chainName: string) => void;
|
|
844
1153
|
onTokenChange: (tokenSymbol: string) => void;
|
|
845
1154
|
onConfirm: () => void;
|
|
1155
|
+
/** Primary footer button label (default: "Confirm source"). */
|
|
1156
|
+
confirmLabel?: string;
|
|
846
1157
|
onBack?: () => void;
|
|
847
1158
|
onLogout: () => void;
|
|
848
1159
|
}
|
|
849
|
-
declare function SelectSourceScreen({ choices, selectedChainName, selectedTokenSymbol, recommended, onChainChange, onTokenChange, onConfirm, onBack, onLogout, }: SelectSourceScreenProps): react_jsx_runtime.JSX.Element;
|
|
1160
|
+
declare function SelectSourceScreen({ choices, selectedChainName, selectedTokenSymbol, recommended, onChainChange, onTokenChange, onConfirm, confirmLabel, onBack, onLogout, }: SelectSourceScreenProps): react_jsx_runtime.JSX.Element;
|
|
850
1161
|
|
|
851
1162
|
interface ChainChoice {
|
|
852
1163
|
chainName: string;
|
|
@@ -865,6 +1176,46 @@ interface AdvancedSourceScreenProps {
|
|
|
865
1176
|
}
|
|
866
1177
|
declare function AdvancedSourceScreen({ choices, selectedChainName, selectedTokenSymbol, onSelectSource, onBack, }: AdvancedSourceScreenProps): react_jsx_runtime.JSX.Element;
|
|
867
1178
|
|
|
1179
|
+
type TransferPhase = 'creating' | 'verifying' | 'sent';
|
|
1180
|
+
interface TransferStatusScreenProps {
|
|
1181
|
+
phase: TransferPhase;
|
|
1182
|
+
error: string | null;
|
|
1183
|
+
onLogout: () => void;
|
|
1184
|
+
}
|
|
1185
|
+
declare function TransferStatusScreen({ phase, error, onLogout, }: TransferStatusScreenProps): react_jsx_runtime.JSX.Element;
|
|
1186
|
+
|
|
1187
|
+
interface OpenWalletScreenProps {
|
|
1188
|
+
walletName: string | null;
|
|
1189
|
+
deeplinkUri: string;
|
|
1190
|
+
loading: boolean;
|
|
1191
|
+
/** When true (mobile), auto-opens deeplinks and shows the "Open wallet" button.
|
|
1192
|
+
* When false (desktop), shows inline authorization progress instead. */
|
|
1193
|
+
useDeeplink?: boolean;
|
|
1194
|
+
error?: string | null;
|
|
1195
|
+
onRetryStatus?: () => void;
|
|
1196
|
+
onBack?: () => void;
|
|
1197
|
+
onLogout: () => void;
|
|
1198
|
+
}
|
|
1199
|
+
/**
|
|
1200
|
+
* Wallet authorization screen. On mobile, provides a user-tappable button
|
|
1201
|
+
* that triggers the deeplink via window.open. On desktop, shows inline
|
|
1202
|
+
* authorization progress while wallet extension popups handle the flow.
|
|
1203
|
+
*/
|
|
1204
|
+
declare function OpenWalletScreen({ walletName, deeplinkUri, loading, useDeeplink, error, onRetryStatus, onBack, onLogout, }: OpenWalletScreenProps): react_jsx_runtime.JSX.Element;
|
|
1205
|
+
|
|
1206
|
+
interface ConfirmSignScreenProps {
|
|
1207
|
+
walletName: string | null;
|
|
1208
|
+
signing: boolean;
|
|
1209
|
+
error: string | null;
|
|
1210
|
+
onSign: () => void;
|
|
1211
|
+
onLogout: () => void;
|
|
1212
|
+
}
|
|
1213
|
+
/**
|
|
1214
|
+
* Shown after the user returns from wallet authorization. Requires an explicit
|
|
1215
|
+
* button tap to initiate passkey signing (FaceID) rather than auto-triggering.
|
|
1216
|
+
*/
|
|
1217
|
+
declare function ConfirmSignScreen({ walletName, signing, error, onSign, onLogout, }: ConfirmSignScreenProps): react_jsx_runtime.JSX.Element;
|
|
1218
|
+
|
|
868
1219
|
interface TokenPickerScreenProps {
|
|
869
1220
|
account: Account;
|
|
870
1221
|
chains: Array<{
|
|
@@ -885,54 +1236,58 @@ interface TokenPickerScreenProps {
|
|
|
885
1236
|
}
|
|
886
1237
|
declare function TokenPickerScreen({ account, chains, onSelectAuthorized, onAuthorizeToken, onBack, onLogout, depositAmount, selectedTokenSymbol, selectedWalletId, }: TokenPickerScreenProps): react_jsx_runtime.JSX.Element;
|
|
887
1238
|
|
|
888
|
-
|
|
889
|
-
amount: number;
|
|
890
|
-
currency: string;
|
|
891
|
-
merchantName?: string;
|
|
892
|
-
onConnect: () => void;
|
|
893
|
-
onSignIn: () => void;
|
|
894
|
-
onBack?: () => void;
|
|
895
|
-
loading?: boolean;
|
|
896
|
-
error?: string | null;
|
|
897
|
-
}
|
|
898
|
-
declare function GuestDepositScreen({ amount, currency, merchantName, onConnect, onSignIn, onBack, loading, error, }: GuestDepositScreenProps): react_jsx_runtime.JSX.Element;
|
|
1239
|
+
type GuestBridgePhase = 'preparing' | 'building' | 'wallet' | 'sending' | 'completing' | 'done';
|
|
899
1240
|
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
currency: string;
|
|
905
|
-
onBack?: () => void;
|
|
1241
|
+
interface GuestTokenPickerScreenProps {
|
|
1242
|
+
entries: GuestTokenEntry[];
|
|
1243
|
+
loading: boolean;
|
|
1244
|
+
depositAmount?: number;
|
|
906
1245
|
error?: string | null;
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
1246
|
+
pendingEntry: GuestTokenEntry | null;
|
|
1247
|
+
quoteFee: PreciseMoney | null;
|
|
1248
|
+
quoteLoading: boolean;
|
|
1249
|
+
onSelect: (entry: GuestTokenEntry) => void;
|
|
1250
|
+
onConfirm: () => void | Promise<void>;
|
|
1251
|
+
onBack: () => void;
|
|
1252
|
+
/** For gallery capture: start with the token list expanded (A06). */
|
|
1253
|
+
defaultTokenListExpanded?: boolean;
|
|
1254
|
+
/** Wallet provider name for the CTA (e.g. "MetaMask"). */
|
|
1255
|
+
providerName?: string;
|
|
1256
|
+
/** Whether the user has opted in to one-tap deposits. */
|
|
1257
|
+
oneTapEnabled: boolean;
|
|
1258
|
+
/** Toggle one-tap opt-in. */
|
|
1259
|
+
onToggleOneTap: (enabled: boolean) => void;
|
|
1260
|
+
/** Per-deposit limit (USD) for one-tap. */
|
|
1261
|
+
oneTapLimit: number;
|
|
1262
|
+
/** Update the per-deposit limit. */
|
|
1263
|
+
onSetOneTapLimit: (limit: number) => void;
|
|
1264
|
+
/** Shared screen mode for guest deposit or auth setup. */
|
|
1265
|
+
variant?: 'guest-deposit' | 'auth-setup';
|
|
1266
|
+
/** Override the primary CTA label. */
|
|
1267
|
+
confirmLabel?: string;
|
|
1268
|
+
/** Override the token card label. */
|
|
1269
|
+
selectionLabel?: string;
|
|
1270
|
+
/** Require a fee quote before enabling the primary CTA. */
|
|
1271
|
+
requireQuoteForConfirm?: boolean;
|
|
1272
|
+
/** Close the token list immediately after selection. */
|
|
1273
|
+
closeListOnSelect?: boolean;
|
|
1274
|
+
/** Override the empty-state copy below the picker. */
|
|
1275
|
+
emptyMessage?: string;
|
|
1276
|
+
/** Current bridge execution phase. When set, the CTA renders as a progress bar. */
|
|
1277
|
+
bridgePhase?: GuestBridgePhase | null;
|
|
1278
|
+
}
|
|
1279
|
+
declare function GuestTokenPickerScreen({ entries, loading, depositAmount, error, pendingEntry, quoteFee, quoteLoading, onSelect, onConfirm, onBack, defaultTokenListExpanded, providerName, oneTapEnabled, onToggleOneTap, oneTapLimit, onSetOneTapLimit, variant, confirmLabel, selectionLabel, requireQuoteForConfirm, closeListOnSelect, emptyMessage, bridgePhase, }: GuestTokenPickerScreenProps): react_jsx_runtime.JSX.Element;
|
|
918
1280
|
|
|
919
|
-
interface
|
|
920
|
-
|
|
1281
|
+
interface GuestPreauthSetupCompleteScreenProps {
|
|
1282
|
+
onClose: () => void;
|
|
1283
|
+
onLogout: () => void;
|
|
921
1284
|
}
|
|
922
|
-
declare function
|
|
1285
|
+
declare function GuestPreauthSetupCompleteScreen({ onClose, onLogout, }: GuestPreauthSetupCompleteScreenProps): react_jsx_runtime.JSX.Element;
|
|
923
1286
|
|
|
924
|
-
interface
|
|
925
|
-
|
|
926
|
-
selectedChainName: string | null;
|
|
927
|
-
selectedTokenSymbol: string | null;
|
|
928
|
-
/** Keyed by `${chainId}:${tokenAddress}` → formatted balance string. */
|
|
929
|
-
balances: Record<string, string>;
|
|
930
|
-
onChainChange: (chainName: string, chainId: number) => void;
|
|
931
|
-
onTokenChange: (tokenSymbol: string, tokenAddress: string, decimals: number) => void;
|
|
932
|
-
onConfirm: () => void;
|
|
933
|
-
onBack: () => void;
|
|
1287
|
+
interface GuestPreauthLinkingScreenProps {
|
|
1288
|
+
onLogout: () => void;
|
|
934
1289
|
}
|
|
935
|
-
declare function
|
|
1290
|
+
declare function GuestPreauthLinkingScreen({ onLogout }: GuestPreauthLinkingScreenProps): react_jsx_runtime.JSX.Element;
|
|
936
1291
|
|
|
937
1292
|
type FlowPhase = 'link' | 'deposit';
|
|
938
1293
|
|
|
@@ -941,8 +1296,8 @@ declare function FlowPhaseProvider({ phase, children, }: {
|
|
|
941
1296
|
children: ReactNode;
|
|
942
1297
|
}): react_jsx_runtime.JSX.Element;
|
|
943
1298
|
|
|
944
|
-
declare const
|
|
945
|
-
/** @deprecated Use
|
|
946
|
-
declare const
|
|
1299
|
+
declare const BLINK_LOGO: string;
|
|
1300
|
+
/** @deprecated Use BLINK_LOGO instead. Kept for backward compatibility. */
|
|
1301
|
+
declare const BLINK_MASCOT: string;
|
|
947
1302
|
|
|
948
|
-
export { type Account, type ActionExecutionResult, type AdvancedSettings, AdvancedSourceScreen, type Amount, type AuthorizationAction, type AuthorizationSession, type AuthorizationSessionDetail, type Chain, type Destination, type ErrorResponse, type FlowPhase, FlowPhaseProvider,
|
|
1303
|
+
export { type Account, type ActionExecutionResult, type AdvancedSettings, AdvancedSourceScreen, type Amount, type AuthorizationAction, type AuthorizationSession, AuthorizationSessionCancelledError, type AuthorizationSessionDetail, BLINK_LOGO, BLINK_MASCOT, BlinkLoadingScreen, BlinkPayment, type BlinkPaymentProps, BlinkProvider, type BlinkProviderProps, type Chain, ConfirmSignScreen, DepositScreen, type Destination, type ErrorResponse, type FlowPhase, FlowPhaseProvider, type GuestBalanceOptionInput, type GuestBridgePhase, GuestPreauthLinkingScreen, GuestPreauthSetupCompleteScreen, type GuestTokenEntry, GuestTokenPickerScreen, type GuestTransferFee, IconCircle, InfoBanner, type ListResponse, LoginScreen, type MerchantAuthorization, type MerchantPublicKey, type MobileFlowState, OpenWalletScreen, OtpVerifyScreen, OutlineButton, PasskeyIframeBlockedError, PasskeyScreen, type PaymentPhase, PoweredByFooter, type PreciseMoney, PrimaryButton, type Provider, ScreenHeader, ScreenLayout, type ScreenName, SelectSourceScreen, SettingsMenu, SetupScreen, SetupStatusScreen, type SetupTokenOption, type SourceOption, type SourceSelection, type SourceType, Spinner, type StepItem, StepList, SuccessScreen, type ThemeMode, type ThemeTokens, type TokenBalance, TokenPickerScreen, type Transfer, type TransferDestination, type TransferPhase, TransferStatusScreen, type UserConfig, VerifyPasskeyScreen, type Wallet, WalletPickerScreen, type WalletSource, type WalletToken, api as blinkApi, credentialIdBase64ToBytes, darkTheme, deviceHasPasskey, findDevicePasskey, findDevicePasskeyViaPopup, getDeviceBiometricUnlockText, getTheme, guestEntryMatchingRecommended, isAuthorizationSessionCancelled, isExpectedAuthorizationCancellation, isUserDismissedAuthorizationError, lightTheme, mapGuestPickerEntries, resolvePasskeyRpId, screenForPhase, useAuthorizationExecutor, useBlinkConfig, useBlinkDepositAmount, useTransferPolling, useTransferSigning };
|