@unifold/core 0.1.82 → 0.1.84

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/dist/index.d.mts CHANGED
@@ -532,7 +532,8 @@ interface BankTransferProvider {
532
532
  /**
533
533
  * Whether this rail serves the caller's country. Unusable rails are still
534
534
  * returned so a selector can grey them out rather than making "EUR only" look
535
- * like "no bank transfer".
535
+ * like "no bank transfer". Project admission is not included — see
536
+ * `bank_transfer.is_hidden` / `bank_transfer.enabled` on `/projects/config`.
536
537
  */
537
538
  enabled: boolean;
538
539
  /**
@@ -557,9 +558,15 @@ interface GetBankTransferProvidersOptions {
557
558
  countryCode?: string;
558
559
  }
559
560
  /**
560
- * Get supported bank-transfer onramp providers (SEPA via Swapped today).
561
- * Each provider's `enabled` flag reflects project config + native integration
562
- * availability + the caller-supplied country.
561
+ * Get supported bank-transfer onramp providers (Unifold rails today).
562
+ * Each provider's `enabled` flag is rail eligibility: native integration
563
+ * availability + the caller-supplied country. Project admission
564
+ * (`bank_transfer.is_hidden` / dashboard / `enableBankTransfer`) is not
565
+ * folded in.
566
+ *
567
+ * Sends `x-unifold-version` — this is the endpoint that branches on it
568
+ * (Unifold rails are hidden from older clients that POST `service_provider`
569
+ * to `/onramps/sessions`).
563
570
  */
564
571
  declare function getBankTransferProviders(publishableKey?: string, options?: GetBankTransferProvidersOptions): Promise<BankTransferProvidersResponse>;
565
572
  /**
@@ -729,6 +736,16 @@ interface ProjectConfigResponse {
729
736
  cash_app?: {
730
737
  enabled: boolean;
731
738
  };
739
+ /**
740
+ * Interac e-Transfer onramp (CAD, Canada). Opt-in like Stripe Link:
741
+ * `enabled` is the dashboard toggle (default false). `is_hidden` is the
742
+ * platform hard hide (project whitelist + Canada-only) and always wins.
743
+ */
744
+ interac?: {
745
+ enabled?: boolean;
746
+ /** Platform-controlled hard hide, independent of `enabled`. */
747
+ is_hidden?: boolean;
748
+ };
732
749
  apple_pay?: {
733
750
  enabled: boolean;
734
751
  };
@@ -780,13 +797,21 @@ interface PublicIncidentResponse {
780
797
  status_page_url?: string;
781
798
  }
782
799
  /**
783
- * Bank-transfer project-level toggle returned by `/projects/config`.
784
- *
785
- * Only reflects the dashboard preference the actual rails available for
786
- * a given country live under `getBankTransferProviders()`.
800
+ * Bank-transfer onramp (SEPA, ACH, etc.).
801
+ * `enabled` is the dashboard-stored preference (default false) AND not
802
+ * `is_hidden` the hide is folded in so SDKs that predate `is_hidden`
803
+ * (they read `enabled ?? true`) never show an unadmitted rail.
804
+ * `is_hidden` is the platform hard hide (PostHog `bank-transfer-enabled`
805
+ * per project) and always wins, including over `enableBankTransfer`.
806
+ * Rails for a given country live under `getBankTransferProviders()`.
787
807
  */
788
808
  interface BankTransferConfig {
789
809
  enabled: boolean;
810
+ /**
811
+ * Platform-controlled hard hide. Already folded into `enabled`; exposed so
812
+ * the SDK `enableBankTransfer` prop cannot override it.
813
+ */
814
+ is_hidden?: boolean;
790
815
  }
791
816
  /**
792
817
  * Get project configuration
@@ -1650,6 +1675,16 @@ interface DepositQuoteRequest {
1650
1675
  * without calling the swap provider. Ignored if source is not a stablecoin.
1651
1676
  */
1652
1677
  stablecoin_parity?: boolean;
1678
+ /**
1679
+ * Deposit wallet that will send the swap. Optional — when omitted the
1680
+ * API prices the route with a placeholder address for the source chain.
1681
+ */
1682
+ sender_address?: string;
1683
+ /**
1684
+ * Final destination that should receive the swap. Optional — when omitted
1685
+ * the API prices the route with a placeholder address for the destination chain.
1686
+ */
1687
+ recipient_address?: string;
1653
1688
  }
1654
1689
  interface DepositQuote {
1655
1690
  /**
@@ -1769,6 +1804,283 @@ interface CashAppLimits {
1769
1804
  declare function getCashAppLimits(currency?: string, publishableKey?: string): Promise<CashAppLimits>;
1770
1805
  declare function createCashAppSession(request: CashAppSessionRequest, publishableKey?: string): Promise<CashAppSessionResponse>;
1771
1806
  declare function getCashAppSessionStatus(externalId: string, publishableKey?: string): Promise<CashAppSessionStatusResponse>;
1807
+ /**
1808
+ * Pre-login discovery answer: `onboard` (unknown email — collect profile
1809
+ * fields, `createInteracUser`), `authenticate` (account exists — trigger a
1810
+ * code via `requestInteracOtp`, verify via `verifyInteracOtp`), `continue`
1811
+ * (account exists and is integrator-accessible — call `getInteracStatus`
1812
+ * without a user token).
1813
+ */
1814
+ type InteracStartNext = 'onboard' | 'authenticate' | 'continue';
1815
+ interface InteracStartResponse {
1816
+ next: InteracStartNext;
1817
+ }
1818
+ /**
1819
+ * The verification route, resolved from a live provider read — only available
1820
+ * once the backend can read the user (access token, or integrator access).
1821
+ * `profile_required`: outstanding profile fields — complete them via
1822
+ * `updateInteracUser`. `phone_required`: the account's phone is
1823
+ * unset/unverified — collect it via `sendInteracPhoneVerification` +
1824
+ * `verifyInteracPhone`. Both come before KYC.
1825
+ */
1826
+ type InteracRoute = 'ready' | 'profile_required' | 'phone_required' | 'additional_info_required' | 'resume_kyc' | 'blocked';
1827
+ interface InteracStatusResponse {
1828
+ route: InteracRoute;
1829
+ /** Raw provider user status (e.g. `in-review` during document review). */
1830
+ user_status: string | null;
1831
+ /**
1832
+ * For `additional_info_required`: the outstanding questionnaire dot-paths
1833
+ * in snake_case (e.g. `older_user_info.source_of_funds`). Render exactly
1834
+ * these — the set varies per user and changes over time; submit via
1835
+ * `updateInteracUser`'s `older_user_info`.
1836
+ */
1837
+ required_fields?: string[];
1838
+ }
1839
+ /**
1840
+ * `verifyInteracOtp` result: the fresh route plus the access token (valid ~1
1841
+ * hour) to hold client-side and send on subsequent status/session calls.
1842
+ */
1843
+ interface InteracOtpResponse extends InteracStatusResponse {
1844
+ access_token: string;
1845
+ token_type: string;
1846
+ expires_in: number;
1847
+ }
1848
+ interface InteracCreateUserRequest {
1849
+ email: string;
1850
+ first_name: string;
1851
+ last_name: string;
1852
+ /** ISO 8601 date (YYYY-MM-DD). */
1853
+ dob: string;
1854
+ /** Canadian phone number in E.164 format (e.g. `+14165551234`). */
1855
+ phone: string;
1856
+ address_line_1: string;
1857
+ address_line_2?: string;
1858
+ city: string;
1859
+ /** Lowercase two-letter Canadian province/territory code (e.g. `on`). */
1860
+ province: string;
1861
+ postal_code: string;
1862
+ occupation: string;
1863
+ /** Must be false — politically exposed persons cannot onboard via the API. */
1864
+ pep: false;
1865
+ /** Must be false — third-party determinations cannot onboard via the API. */
1866
+ tpd: false;
1867
+ }
1868
+ /**
1869
+ * Partial profile completion for an existing user (route `profile_required`).
1870
+ * `email` resolves the account; every other field is optional and passed
1871
+ * through as a partial update.
1872
+ */
1873
+ interface InteracUpdateUserRequest {
1874
+ /** Optional when an access token is sent — the token identifies the account. */
1875
+ email?: string;
1876
+ first_name?: string;
1877
+ last_name?: string;
1878
+ /** ISO 8601 date (YYYY-MM-DD). */
1879
+ dob?: string;
1880
+ address_line_1?: string;
1881
+ address_line_2?: string;
1882
+ city?: string;
1883
+ /** Lowercase two-letter Canadian province/territory code (e.g. `on`). */
1884
+ province?: string;
1885
+ postal_code?: string;
1886
+ occupation?: string;
1887
+ /** Must be false when sent. */
1888
+ pep?: false;
1889
+ /** Must be false when sent. */
1890
+ tpd?: false;
1891
+ /**
1892
+ * Enhanced-due-diligence questionnaire (route `additional_info_required`).
1893
+ * Keys are snake_case, matching the `required_fields` dot-paths
1894
+ * (`older_user_info.source_of_funds` → key `source_of_funds`). Send exactly
1895
+ * the named fields; unrecognized keys are rejected upstream.
1896
+ */
1897
+ older_user_info?: Record<string, string>;
1898
+ }
1899
+ interface InteracKycUrlResponse {
1900
+ route: 'ready' | 'resume_kyc';
1901
+ /** Hosted verification URL (short-lived, ~30 min); null when already verified. */
1902
+ url: string | null;
1903
+ expires_at: string | null;
1904
+ }
1905
+ /** Normalized to the Stripe quote vocabulary (see `StripeQuotesResponse`). */
1906
+ interface InteracQuoteResponse {
1907
+ /** Echo on `createInteracSession` to price against this exact quote (fresh
1908
+ * ~10 min). Opaque string — treat it as a reference, not a number. */
1909
+ quote_id: string;
1910
+ source_currency: string;
1911
+ source_amount: number;
1912
+ /** Total the user pays. Interac fees come out of the source amount, so this equals it. */
1913
+ source_total_amount: number;
1914
+ /** All fees combined. */
1915
+ total_fee: number;
1916
+ destination_currency: string;
1917
+ destination_network: string;
1918
+ destination_amount: number;
1919
+ service_provider: string;
1920
+ service_provider_display_name: string;
1921
+ }
1922
+ interface InteracLimitsResponse {
1923
+ source_currency: string;
1924
+ minimum: number | null;
1925
+ maximum: number | null;
1926
+ }
1927
+ interface InteracDepositInstructions {
1928
+ type: 'interac_etransfer';
1929
+ /** e-Transfer reference that must travel with the payment. */
1930
+ reference: string | null;
1931
+ /** Interac's hosted request-money fulfillment link for this payment. */
1932
+ payment_url: string | null;
1933
+ /** Where to send the e-Transfer, when applicable. */
1934
+ payee: string | null;
1935
+ amount: string;
1936
+ currency: string;
1937
+ /** The purchase expires one hour after creation. */
1938
+ expires_at: string;
1939
+ description: string;
1940
+ }
1941
+ interface InteracSessionResponse {
1942
+ id: string;
1943
+ /** The tracking id supplied at creation when one was sent, else equals `id`. */
1944
+ external_session_id: string;
1945
+ status: string;
1946
+ source_currency: string;
1947
+ source_amount: string;
1948
+ destination_currency: string;
1949
+ destination_network: string;
1950
+ destination_amount: string | null;
1951
+ wallet_address: string;
1952
+ transaction_hash: string | null;
1953
+ deposit_instructions: InteracDepositInstructions | null;
1954
+ created_at: string;
1955
+ }
1956
+ interface InteracCreateSessionRequest {
1957
+ /** Optional when an access token is sent — the token identifies the account. */
1958
+ email?: string;
1959
+ /** CAD amount, major units. */
1960
+ source_amount: number;
1961
+ destination_network: string;
1962
+ /** Platform deposit wallet address the USDC is delivered to. */
1963
+ wallet_address: string;
1964
+ /** From `getInteracQuote` (fresh ~10 min; a stale id silently reprices). */
1965
+ quote_id?: string;
1966
+ /**
1967
+ * Tracking id, namespaced with the project before reaching the provider. A
1968
+ * duplicate is rejected with `onramp_session_external_id_already_exists`,
1969
+ * making create retries safe against double-creating a PayTrie buy —
1970
+ * recover the session via `getInteracSession(external_session_id)`.
1971
+ */
1972
+ external_session_id?: string;
1973
+ }
1974
+ /**
1975
+ * Backend error_type values for headless Interac onramp failures, so the SDK
1976
+ * can branch on them instead of string-matching messages.
1977
+ */
1978
+ type InteracOnrampErrorType = 'paytrie_onramp_not_enabled' | 'paytrie_onramp_bad_request' | 'paytrie_onramp_not_found' | 'paytrie_onramp_upstream_error' | 'paytrie_onramp_rate_limited' | 'paytrie_onramp_otp_required' | 'paytrie_onramp_invalid_otp' | 'paytrie_onramp_token_expired' | 'paytrie_onramp_kyc_required' | 'paytrie_onramp_unsupported_network' | (string & NonNullable<unknown>);
1979
+ declare class InteracApiResponseError extends Error {
1980
+ readonly statusCode: number;
1981
+ /** Unifold backend error_type (e.g. `paytrie_onramp_kyc_required`) */
1982
+ readonly errorType?: InteracOnrampErrorType | undefined;
1983
+ /**
1984
+ * The raw provider error message (from `details.paytrie_error.message`),
1985
+ * without the operation prefix baked into `message`. PayTrie writes these
1986
+ * for end users (e.g. limit errors), so it is safe to display directly.
1987
+ */
1988
+ readonly providerMessage?: string | undefined;
1989
+ constructor(message: string, statusCode: number,
1990
+ /** Unifold backend error_type (e.g. `paytrie_onramp_kyc_required`) */
1991
+ errorType?: InteracOnrampErrorType | undefined,
1992
+ /**
1993
+ * The raw provider error message (from `details.paytrie_error.message`),
1994
+ * without the operation prefix baked into `message`. PayTrie writes these
1995
+ * for end users (e.g. limit errors), so it is safe to display directly.
1996
+ */
1997
+ providerMessage?: string | undefined);
1998
+ }
1999
+ /**
2000
+ * Pre-login discovery: begin the flow for an email. Existence + access mode
2001
+ * only — side-effect free, and deliberately unable to answer KYC questions
2002
+ * (that is `getInteracStatus`, once access exists).
2003
+ */
2004
+ declare function startInterac(email: string, publishableKey?: string): Promise<InteracStartResponse>;
2005
+ /**
2006
+ * Resolve the verification route for an authenticated user — always a live
2007
+ * provider read. Pass the access token from `verifyInteracOtp` unless
2008
+ * `startInterac` answered `continue` (integrator-accessible account). Throws
2009
+ * `paytrie_onramp_otp_required` without access, `paytrie_onramp_token_expired`
2010
+ * on a dead token, and 404 `paytrie_onramp_not_found` for an unknown email —
2011
+ * all of which restart the flow at `startInterac`.
2012
+ */
2013
+ declare function getInteracStatus(email: string | undefined, publishableKey?: string, accessToken?: string): Promise<InteracStatusResponse>;
2014
+ /**
2015
+ * Onboard the user at PayTrie (profile fields pass-through; PII is forwarded,
2016
+ * never stored). Answers in `start` vocabulary — normally `authenticate`
2017
+ * (run the OTP step), or `continue` when the account is born
2018
+ * integrator-accessible. If the email was already registered, discovery
2019
+ * re-runs instead of erroring.
2020
+ */
2021
+ declare function createInteracUser(request: InteracCreateUserRequest, publishableKey?: string): Promise<InteracStartResponse>;
2022
+ /**
2023
+ * Ask PayTrie to email the user a login code (the OTP screen's resend —
2024
+ * routing to `otp_required` already sends one). Always resolves
2025
+ * (anti-enumeration): the response never says whether the email is registered.
2026
+ */
2027
+ declare function requestInteracOtp(email: string, publishableKey?: string): Promise<void>;
2028
+ /**
2029
+ * Exchange the emailed login code for a ~1-hour access token plus the fresh
2030
+ * route. Hold the token in memory and pass it to subsequent calls — a
2031
+ * verified user routes straight to `ready`, so KYC is skipped entirely.
2032
+ */
2033
+ declare function verifyInteracOtp(email: string, code: string, publishableKey?: string): Promise<InteracOtpResponse>;
2034
+ /**
2035
+ * Complete an existing user's profile (satisfies a `profile_required` route).
2036
+ * Fields are passed through as a partial update; the response is a fresh
2037
+ * status payload — normally `phone_required` or `resume_kyc`.
2038
+ */
2039
+ declare function updateInteracUser(request: InteracUpdateUserRequest, publishableKey?: string, accessToken?: string): Promise<InteracStatusResponse>;
2040
+ /**
2041
+ * Set + text-verify the user's phone number (satisfies a `phone_required`
2042
+ * route). Token-scoped upstream, so the access token from `verifyInteracOtp`
2043
+ * is mandatory.
2044
+ */
2045
+ declare function sendInteracPhoneVerification(phone: string, publishableKey?: string, accessToken?: string): Promise<void>;
2046
+ /**
2047
+ * Verify the texted phone code. Answers with a fresh status payload (the same
2048
+ * live read as `getInteracStatus`) — normally `resume_kyc`.
2049
+ */
2050
+ declare function verifyInteracPhone(email: string | undefined, code: string, publishableKey?: string, accessToken?: string): Promise<InteracStatusResponse>;
2051
+ /**
2052
+ * Mint the hosted identity-verification link. Short-lived (~30 min) — mint on
2053
+ * demand, never cache. When verification is already complete the response
2054
+ * carries `route: 'ready'` and no URL instead of an error.
2055
+ */
2056
+ declare function getInteracKycUrl(email: string | undefined, publishableKey?: string, accessToken?: string): Promise<InteracKycUrlResponse>;
2057
+ /** Real-time CAD → USDC quote. `quote_id` stays fresh for ~10 minutes. */
2058
+ declare function getInteracQuote(sourceAmount: number, destinationNetwork: string, publishableKey?: string): Promise<InteracQuoteResponse>;
2059
+ /**
2060
+ * Per-transaction CAD minimum/maximum. The user's bank can impose lower
2061
+ * Interac sending limits — treat the maximum as a ceiling, not a guarantee.
2062
+ */
2063
+ declare function getInteracLimits(publishableKey?: string): Promise<InteracLimitsResponse>;
2064
+ /**
2065
+ * Create an Interac onramp session — the commitment point. Only call on
2066
+ * explicit user confirmation: an unfunded purchase expires in 1 hour and
2067
+ * counts toward the user's cancellation budget.
2068
+ */
2069
+ declare function createInteracSession(request: InteracCreateSessionRequest, publishableKey?: string, accessToken?: string): Promise<InteracSessionResponse>;
2070
+ /**
2071
+ * Cancel an unpaid session (user-initiated only — cancellations count against
2072
+ * the user's 10-per-24h budget). Only `pending` sessions cancel; an e-Transfer
2073
+ * sent after cancelling cannot be matched automatically.
2074
+ */
2075
+ declare function cancelInteracSession(sessionId: string, publishableKey?: string, accessToken?: string): Promise<InteracSessionResponse>;
2076
+ /**
2077
+ * Re-read a session and its payment instructions. Accepts the session id or
2078
+ * the `external_session_id` supplied at creation (lost-response recovery).
2079
+ * Non-terminal sessions are synced live from the provider on each read, so
2080
+ * polling this doubles as
2081
+ * client-driven reconciliation.
2082
+ */
2083
+ declare function getInteracSession(sessionId: string, publishableKey?: string, accessToken?: string): Promise<InteracSessionResponse>;
1772
2084
  interface StripeConfigResponse {
1773
2085
  publishable_key: string;
1774
2086
  merchant_identifier: string | null;
@@ -2070,21 +2382,25 @@ interface OnrampVerificationSession {
2070
2382
  }
2071
2383
  interface CreateOnrampVerificationSessionRequest {
2072
2384
  email: string;
2073
- /** US phone in E.164 (e.g. +12345678901). */
2385
+ /** US phone in E.164. Always collected; OTP channel is `required_factors`. */
2074
2386
  phone: string;
2075
- terms_accepted: boolean;
2387
+ /** Coinbase Guest Checkout ToS. Required when `required_factors` includes `phone`. */
2388
+ terms_accepted?: boolean;
2389
+ /**
2390
+ * Which factors must OTP. Default `['phone']` (Coinbase JWT path).
2391
+ * `['email']` is the bank-transfer identity path.
2392
+ */
2393
+ required_factors?: Array<'email' | 'phone'>;
2076
2394
  /**
2077
- * When `true`, skip email OTP (merchant attest not a verification clock).
2078
- * When `false`, Wallet Pay sends this today; API still skips email OTP
2079
- * (TODO: honor `false` and send email OTP). Omit to require email OTP.
2395
+ * @deprecated Ignored. Use `required_factors` to pick the OTP channel.
2396
+ * Kept so existing clients that send it do not 400.
2080
2397
  */
2081
2398
  email_already_verified?: boolean;
2082
2399
  /** Optional correlation id for a planned order. */
2083
2400
  external_id?: string;
2084
2401
  /**
2085
- * Your end-user id. When set, a successful OTP persists a global identity.
2086
- * Not a skip credential. Wallet Pay omits this (Coinbase stays Redis-only
2087
- * + JWT) until bank-transfer identity is live.
2402
+ * Your end-user id. When set, a successful identity-grade OTP persists a
2403
+ * global identity (phone OTP on wallet pay, email OTP on bank transfer).
2088
2404
  */
2089
2405
  external_user_id?: string;
2090
2406
  }
@@ -2094,7 +2410,302 @@ interface OnrampVerificationTokenResponse {
2094
2410
  /** Token lifetime in seconds. */
2095
2411
  expires_in: number;
2096
2412
  }
2097
- declare function createOnrampVerificationSession(request: CreateOnrampVerificationSessionRequest, publishableKey?: string): Promise<OnrampVerificationSession>;
2413
+ type IdentityPaymentMethodType = 'sepa' | 'us_bank_account';
2414
+ interface IdentityRoutingContext {
2415
+ external_user_id: string;
2416
+ payment_method_type: IdentityPaymentMethodType;
2417
+ country_code: string;
2418
+ amount: number;
2419
+ }
2420
+ /** Wire shape of PATCH /public/identity/information. Plan also lives on the capability bag. */
2421
+ interface IdentityRequirements {
2422
+ provider: string;
2423
+ tier: string;
2424
+ kyc_status: string;
2425
+ /** Outstanding typed fields, snake_case public names matching {@link IdentityInformationFields}. */
2426
+ fields: string[];
2427
+ documents: string[];
2428
+ pending_documents: string[];
2429
+ expired_documents: string[];
2430
+ complete: boolean;
2431
+ }
2432
+ interface IdentityInformationFields {
2433
+ first_name?: string;
2434
+ last_name?: string;
2435
+ /** ISO 8601 date, `YYYY-MM-DD`. */
2436
+ dob?: string;
2437
+ /** ISO 3166-1 alpha-2 country code, e.g. `US`. */
2438
+ nationality?: string;
2439
+ tin?: string;
2440
+ address_line_1?: string;
2441
+ address_line_2?: string;
2442
+ city?: string;
2443
+ /** ISO 3166-2 subdivision code where one exists (US state), else free text. */
2444
+ subdivision?: string;
2445
+ postal_code?: string;
2446
+ /** ISO 3166-1 alpha-2 country code, e.g. `US`. */
2447
+ country?: string;
2448
+ }
2449
+ /** Bridge SoF-Eu camelCase on the server; snake_case on the wire. */
2450
+ interface IdentityQuestionnaire {
2451
+ acting_as_intermediary: boolean;
2452
+ employment_status: string;
2453
+ expected_monthly_payments_usd: string;
2454
+ most_recent_occupation: string;
2455
+ account_purpose: string;
2456
+ account_purpose_other?: string;
2457
+ source_of_funds: string;
2458
+ }
2459
+ interface SubmitIdentityInformationRequest extends IdentityRoutingContext {
2460
+ information?: IdentityInformationFields;
2461
+ questionnaire?: IdentityQuestionnaire;
2462
+ }
2463
+ interface IdentityVerificationSession {
2464
+ token: string;
2465
+ documents: string[];
2466
+ /** `wf-` prefix = Workflow Builder entry — keep the iframe. */
2467
+ level: string;
2468
+ }
2469
+ declare function patchIdentityInformation(request: SubmitIdentityInformationRequest, publishableKey?: string, onrampToken?: string): Promise<IdentityRequirements>;
2470
+ declare function createIdentityVerificationSession(ctx: IdentityRoutingContext, publishableKey?: string, onrampToken?: string): Promise<IdentityVerificationSession>;
2471
+ interface BankTransferSessionKyc {
2472
+ provider: 'sumsub';
2473
+ applicant_id: string | null;
2474
+ }
2475
+ /** Provider SoF catalogs on the capability. Null when the rail does not collect one. */
2476
+ interface BankTransferQuestionnaireOptions {
2477
+ employment_statuses: string[];
2478
+ expected_monthly_payments_usd: string[];
2479
+ account_purposes: string[];
2480
+ sources_of_funds: string[];
2481
+ }
2482
+ /** What is still owed before the rail opens. Snake_case public field names. */
2483
+ interface BankTransferSessionRequirements {
2484
+ completed: string[];
2485
+ pending: string[];
2486
+ missing: string[] | null;
2487
+ issues: string[];
2488
+ kyc: BankTransferSessionKyc | null;
2489
+ questionnaire: BankTransferQuestionnaireOptions | null;
2490
+ }
2491
+ interface UsBankAccountInstructions {
2492
+ type: 'us_bank_account';
2493
+ account_holder_name: string | null;
2494
+ bank_name: string | null;
2495
+ bank_address: string | null;
2496
+ swift_code: string | null;
2497
+ account_number: string | null;
2498
+ routing_number: string | null;
2499
+ }
2500
+ interface SepaIbanInstructions {
2501
+ type: 'sepa_iban';
2502
+ iban: string | null;
2503
+ bic: string | null;
2504
+ account_holder_name: string | null;
2505
+ bank_name: string | null;
2506
+ bank_address: string | null;
2507
+ }
2508
+ type BankTransferBankAccount = UsBankAccountInstructions | SepaIbanInstructions;
2509
+ interface BankTransferDepositInstructions {
2510
+ bank_account: BankTransferBankAccount;
2511
+ description: string | null;
2512
+ reference: string | null;
2513
+ /**
2514
+ * Exact amount to send on a pay-in. Null on a named account, which takes any
2515
+ * amount any number of times.
2516
+ */
2517
+ amount: string | null;
2518
+ currency: string;
2519
+ }
2520
+ /**
2521
+ * Setup status on POST /bank_transfer/capabilities: can this user send on this
2522
+ * rail yet, and on what kind of account. No bank details and no id — those come
2523
+ * from the account or the pay-in once this is `active`.
2524
+ */
2525
+ declare enum BankTransferCapabilityStatus {
2526
+ /** Collect our KYC (see `requirements.missing`), then poll again. */
2527
+ IDENTITY_REQUIRED = "identity_required",
2528
+ /** Accept the umbrella ToS, then poll again. */
2529
+ TOS_REQUIRED = "tos_required",
2530
+ /** Provider is reviewing. Keep polling; no client action. */
2531
+ UNDER_REVIEW = "under_review",
2532
+ /** Provider wants the source-of-funds questionnaire. */
2533
+ AWAITING_QUESTIONNAIRE = "awaiting_questionnaire",
2534
+ /** Provider wants documents (PoA, etc.). */
2535
+ INCOMPLETE = "incomplete",
2536
+ /** Rail verification / account mint. Not a review. Keep polling. */
2537
+ PREPARING = "preparing",
2538
+ /** Terminal. Open the resource `kyc_level` names. */
2539
+ ACTIVE = "active",
2540
+ /** Terminal. Rail or identity reject — do not retry. */
2541
+ REJECTED = "rejected"
2542
+ }
2543
+ /**
2544
+ * Which resource an `active` capability ends in. `simplified` pays in on a
2545
+ * shared account (`createBankTransferSession`); `standard` / `enhanced` get a
2546
+ * named account (`createBankTransferVirtualAccount`).
2547
+ */
2548
+ type BankTransferKycLevel = 'simplified' | 'standard' | 'enhanced';
2549
+ interface BankTransferCapability {
2550
+ service_provider: string;
2551
+ payment_method_type: OnrampSessionPaymentMethodType;
2552
+ status: BankTransferCapabilityStatus;
2553
+ /** Set on every response, so the end of the flow is known from the first poll. */
2554
+ kyc_level: BankTransferKycLevel;
2555
+ requirements: BankTransferSessionRequirements;
2556
+ }
2557
+ /**
2558
+ * The one body every bank-rail POST takes. `external_id` is only meaningful on
2559
+ * `createBankTransferSession` (idempotency key); the other two ignore it.
2560
+ */
2561
+ interface BankTransferRailRequest {
2562
+ payment_method_type: OnrampSessionPaymentMethodType;
2563
+ country_code: string;
2564
+ source_currency: string;
2565
+ source_amount: string;
2566
+ destination_currency: string;
2567
+ destination_network: string;
2568
+ wallet_address: string;
2569
+ external_id?: string;
2570
+ subdivision_code?: string;
2571
+ }
2572
+ /** @deprecated Renamed to `BankTransferRailRequest` — all three POSTs share it. */
2573
+ type CreateBankTransferSessionRequest = BankTransferRailRequest;
2574
+ type BankTransferVirtualAccountStatus = 'activated' | 'deactivated';
2575
+ type BankTransferPaymentRail = 'sepa' | 'wire' | 'ach_push' | 'ach_pull' | 'rtp' | 'swift' | 'fednow';
2576
+ /** Percentage + flat in the account currency. Not a quote. */
2577
+ interface BankTransferPaymentRailFee {
2578
+ rate_bps: number;
2579
+ /** Everything charged off the deposit that does not scale with its size. */
2580
+ flat: string;
2581
+ currency: string;
2582
+ }
2583
+ /** Settlement window. `0` / `0` is instant. */
2584
+ interface BankTransferPaymentRailEta {
2585
+ min_seconds: number;
2586
+ max_seconds: number;
2587
+ }
2588
+ /** Fee, ETA, and limits for one accepted rail. */
2589
+ interface BankTransferPaymentRailTariff {
2590
+ payment_rail: BankTransferPaymentRail;
2591
+ fee: BankTransferPaymentRailFee | null;
2592
+ eta: BankTransferPaymentRailEta | null;
2593
+ min_amount: string | null;
2594
+ /** Null is unlimited. */
2595
+ max_amount: string | null;
2596
+ }
2597
+ /** Fiat in: the rails this account accepts, not the requested payment method. */
2598
+ interface BankTransferVirtualAccountSource {
2599
+ payment_rails: BankTransferPaymentRailTariff[];
2600
+ currency: string;
2601
+ }
2602
+ /** Crypto out: the provider wallet the account credits. Not the sweep target. */
2603
+ interface BankTransferVirtualAccountDestination {
2604
+ chain_type: string;
2605
+ chain_id: string;
2606
+ token_address: string;
2607
+ wallet_address: string;
2608
+ }
2609
+ /**
2610
+ * A named account in the user's name, settling to one deposit wallet. Reusable:
2611
+ * `deposit_instructions.amount` and `reference` are null because the account
2612
+ * itself identifies the customer.
2613
+ */
2614
+ interface BankTransferVirtualAccount {
2615
+ id: string;
2616
+ status: BankTransferVirtualAccountStatus;
2617
+ source: BankTransferVirtualAccountSource;
2618
+ destination: BankTransferVirtualAccountDestination;
2619
+ deposit_instructions: BankTransferDepositInstructions;
2620
+ }
2621
+ /**
2622
+ * Money-side status of one pay-in. There is no setup state here — a session
2623
+ * exists only once the pay-in is registered.
2624
+ */
2625
+ declare enum BankTransferSessionStatus {
2626
+ /** Registered; the user has not sent funds yet. */
2627
+ AWAITING_FUNDS = "awaiting_funds",
2628
+ /** Fiat landed at the provider; crypto delivery in flight. */
2629
+ PROCESSING = "processing",
2630
+ COMPLETED = "completed",
2631
+ FAILED = "failed",
2632
+ EXPIRED = "expired"
2633
+ }
2634
+ /** One registered pay-in on a shared account. Always has instructions and an id. */
2635
+ interface BankTransferSession {
2636
+ id: string;
2637
+ external_id: string;
2638
+ service_provider: string;
2639
+ status: BankTransferSessionStatus;
2640
+ payment_method_type: OnrampSessionPaymentMethodType;
2641
+ source_amount: string;
2642
+ source_currency: string;
2643
+ destination_currency: string;
2644
+ destination_network: string;
2645
+ /** Send exactly `amount`, including `reference`. */
2646
+ deposit_instructions: BankTransferDepositInstructions;
2647
+ /**
2648
+ * When the registered pay-in stops being honoured. Not served yet — the
2649
+ * quote behind a pay-in is short-lived, so this is where that lands.
2650
+ */
2651
+ expires_at?: string | null;
2652
+ }
2653
+ /**
2654
+ * Resolve what this user can do on a bank rail: runs KYC / ToS / provider setup
2655
+ * and reports the current state. Idempotent and persists nothing — poll it until
2656
+ * `active` or `rejected`, then open the resource `kyc_level` names.
2657
+ */
2658
+ declare function createBankTransferCapability(request: BankTransferRailRequest, publishableKey?: string, onrampToken?: string): Promise<BankTransferCapability>;
2659
+ /**
2660
+ * Get-or-create the named account for this user and deposit wallet. Requires an
2661
+ * `active` capability at `standard` / `enhanced`; the server re-checks and
2662
+ * answers 409 otherwise. Safe to call again — a returning user gets the account
2663
+ * they already have.
2664
+ */
2665
+ declare function createBankTransferVirtualAccount(request: BankTransferRailRequest, publishableKey?: string, onrampToken?: string): Promise<BankTransferVirtualAccount>;
2666
+ /** Re-read a named account: status and its durable bank details. */
2667
+ declare function getBankTransferVirtualAccount(id: string, publishableKey?: string, onrampToken?: string): Promise<BankTransferVirtualAccount>;
2668
+ /**
2669
+ * Register one pay-in on a shared account. Requires an `active` capability at
2670
+ * `simplified`; the server re-checks and answers 409 otherwise. Pass a fresh
2671
+ * `external_id` per pay-in — replaying one is a 409, not a second transfer.
2672
+ */
2673
+ declare function createBankTransferSession(request: BankTransferRailRequest, publishableKey?: string, onrampToken?: string): Promise<BankTransferSession>;
2674
+ /** Re-read a pay-in: money-side status and the instructions it was created with. */
2675
+ declare function getBankTransferSession(id: string, publishableKey?: string, onrampToken?: string): Promise<BankTransferSession>;
2676
+ interface OnrampTosAgreement {
2677
+ key: string;
2678
+ name: string;
2679
+ url: string;
2680
+ }
2681
+ interface OnrampTos {
2682
+ version: string;
2683
+ agreements: OnrampTosAgreement[];
2684
+ disclosure: string;
2685
+ }
2686
+ interface OnrampTosAcceptance {
2687
+ version: string;
2688
+ url: string;
2689
+ accepted_at: string;
2690
+ }
2691
+ declare function getOnrampTos(publishableKey?: string): Promise<OnrampTos>;
2692
+ declare function acceptOnrampTos(request: {
2693
+ external_user_id: string;
2694
+ accepted: true;
2695
+ version?: string;
2696
+ }, publishableKey?: string, onrampToken?: string): Promise<OnrampTosAcceptance>;
2697
+ /**
2698
+ * Create a verification session.
2699
+ *
2700
+ * `priorToken` is the onramp token the device already holds for this
2701
+ * `external_user_id`, sent as `x-onramp-token`. Each rail challenges one
2702
+ * channel; a prior token carrying a fresh clock on the channel this session
2703
+ * will NOT challenge lets the pair reach "both proved", and the token minted
2704
+ * at the end carries both clocks — so the device keeps a single credential.
2705
+ * Purely an optimisation: the server ignores a token it cannot match to this
2706
+ * session (different user, edited contact, stale clock) rather than failing.
2707
+ */
2708
+ declare function createOnrampVerificationSession(request: CreateOnrampVerificationSessionRequest, publishableKey?: string, priorToken?: string): Promise<OnrampVerificationSession>;
2098
2709
  declare function sendOnrampVerificationOtp(id: string, factor: 'email' | 'phone', clientSecret: string, publishableKey?: string): Promise<OnrampVerificationSession>;
2099
2710
  declare function verifyOnrampVerificationOtp(id: string, factor: 'email' | 'phone', clientSecret: string, code: string, publishableKey?: string): Promise<OnrampVerificationSession>;
2100
2711
  declare function exchangeOnrampVerificationToken(id: string, clientSecret: string, publishableKey?: string): Promise<OnrampVerificationTokenResponse>;
@@ -2426,7 +3037,7 @@ declare enum CheckoutEventType {
2426
3037
  FLOW_FAILED = "checkout.flow_failed"
2427
3038
  }
2428
3039
  /** Funding method used by a deposit flow. */
2429
- type DepositMethod = 'transfer' | 'card' | 'cashapp' | 'apple_pay' | 'google_pay' | 'pay_with_exchange' | 'exchange_connect' | 'wallet_connect' | 'bank_transfer' | 'stripe_link';
3040
+ type DepositMethod = 'transfer' | 'card' | 'cashapp' | 'apple_pay' | 'google_pay' | 'pay_with_exchange' | 'exchange_connect' | 'wallet_connect' | 'bank_transfer' | 'stripe_link' | 'interac';
2430
3041
  /** Funding method used by a checkout flow. */
2431
3042
  type CheckoutMethod = 'transfer' | 'wallet_connect';
2432
3043
  /** `data.object` payload for {@link DepositEventType.ONRAMP_SESSION_CREATED}. */
@@ -3999,4 +4610,4 @@ declare const i18n: {
3999
4610
  };
4000
4611
  type I18nStrings = typeof i18n;
4001
4612
 
4002
- export { type AccountConnectionData, ActionType, type AddressBalanceResponse, type AddressBalancesResponse, type AddressValidationFailureCode, type AddressValidationMetadata, type AddressVerification, type ApplePayLimitUpgradeStatus, type ApplePayProvider, type ApplePayProvidersResponse, type AuthenticateOAuthResult, type AutoSwapRequest, type AutoSwapResponse, type BankTransferConfig, type BankTransferProvider, type BankTransferProvidersResponse, type BlockedCountrySubdivision, type BuildHypercoreTransactionRequest, type BuildHypercoreTransactionResponse, type BuildSolanaTransactionRequest, type BuildSolanaTransactionResponse, type CashAppLimits, type CashAppSessionRequest, type CashAppSessionResponse, type CashAppSessionStatusResponse, type ChainType, type CheckoutEvent, CheckoutEventType, type CheckoutFlowFailedData, type CheckoutFlowStartedData, type CheckoutMethod, type CheckoutMethodSelectedData, type CheckoutPaymentIntent, type CheckoutPaymentIntentData, type CheckoutPaymentIntentSucceededEvent, type CoinbaseApplePayLimit, type CoinbaseApplePayLimitUpgradeOption, type CoinbaseApplePayLimitsResponse, type CoinbaseApplePaySessionResponse, type CoinbaseGooglePaySessionResponse, type CoinbaseLegalAgreement, type CoinbaseLegalAgreementsResponse, type CoinbaseWalletPayLimit, type CoinbaseWalletPayLimitUpgradeOption, type CoinbaseWalletPayLimitsResponse, type CoinbaseWalletPaySessionResponse, type ConfirmIntegrationTransferResult, type CreateCoinbaseApplePaySessionRequest, type CreateCoinbaseGooglePaySessionRequest, type CreateCoinbaseWalletPaySessionRequest, type CreateDepositAddressRequest, type CreateExchangeSessionRequest, type CreateExchangeSessionResponse, type CreateIntegrationExchangeSessionRequest, type CreateIntegrationExchangeSessionResponse, type CreateIntegrationTransferParams, type CreateIntegrationTransferResult, type CreateOnrampVerificationSessionRequest, DETECTION_ARM_DELAY_MS, DETECTION_POLL_INTERVAL_MS, type DefaultTokenChain, type DefaultTokenMetadata, type DefaultTokenResponse, type DepositAddress, type DepositAddressParams, type DepositAddressResponse, DepositAddressValidationError, type DepositEvent, DepositEventType, type DepositFlowFailedData, type DepositFlowStartedData, type DepositLimitReachedData, type DepositMethod, type DepositMethodSelectedData, type DepositQuote, type DepositQuoteRequest, DepositSession, type DepositSessionConfig, type DepositSessionDestination, type DepositSessionError, type DepositSessionErrorCode, type DepositSessionEvent, type DepositSessionEventMap, DepositSessionEventType, type DepositSessionParams, type DepositSessionSnapshot, type DepositSessionStatus, DepositSessionWaitError, type DepositSessionWaitErrorCode, type DepositSessionWaitOptions, type DestinationToken, type DestinationTokenChain, type DirectExecution, DirectExecutionEventType, type DirectExecutionFailedEvent, type DirectExecutionResponse, type DirectExecutionSucceededEvent, type EvmContractCall, type ExchangeProviderInfo, type ExchangeProvidersResponse, type ExchangeSessionStartParams, type ExchangeWalletAddress, ExecutionStatus, type ExternalWalletChainType, type ExternalWalletInfo, type ExternalWalletsResponse, type FeaturedToken, type FeaturedWallet, type FiatCurrenciesResponse, type FiatCurrency, type GetBankTransferProvidersOptions, type GetExchangesQuery, type GetIntegrationExchangesQuery, type GooglePayProvider, type GooglePayProvidersResponse, type HypercoreActivationRequest, type HypercoreActivationResponse, type I18nStrings, type IconUrl, IneligibilityReason, type IntegrationAccount, type IntegrationConnectionMethod, type IntegrationExchangeInfo, type IntegrationExchangeSessionStartParams, type IntegrationExchangesResponse, type IntegrationFeeAmount, type IntegrationHoldingsResponse, IntegrationProvider, IntegrationTransferError, type IntegrationTransferErrorType, type IpAddressResponse, LOOKBACK_MS, type ListExecutionsParams, type LockedQuoteLimits, type LockedQuotePreview, type LockedQuotePreviewRequest, type OnrampCheckout, type OnrampDestinationToken, type OnrampProviderQuote, type OnrampQuote, type OnrampQuoteRequest, type OnrampQuotesRequest, type OnrampQuotesResponse, OnrampSession, type OnrampSessionConfig, type OnrampSessionCreatedData, type OnrampSessionCreatedEvent, type OnrampSessionError, type OnrampSessionErrorCode, type OnrampSessionEvent, type OnrampSessionEventMap, OnrampSessionEventType, type OnrampSessionParams, type OnrampSessionPaymentMethod, type OnrampSessionPaymentMethodType, type OnrampSessionRequest, type OnrampSessionResponse, type OnrampSessionSnapshot, type OnrampSessionStatus, type OnrampSessionStatusResponse, type OnrampSessionStatusValue, OnrampSessionWaitError, type OnrampSessionWaitErrorCode, type OnrampSessionWaitOptions, type OnrampVerificationFactor, type OnrampVerificationFactorStatus, type OnrampVerificationSession, type OnrampVerificationStatus, type OnrampVerificationTokenResponse, type PaymentIntent, type PaymentIntentDepositAddress, type PaymentIntentExecutionsResponse, type PaymentIntentStatus, type PaymentIntentType, type PaymentNetwork, type PollExecutionsRequest, type PollExecutionsResponse, type ProductType, type ProjectConfigResponse, type ProviderSelectedData, type PublicIncidentResponse, QUOTE_REFRESH_INTERVAL_MS, type QueryExecutionsRequest, type QueryExecutionsResponse, type RefreshIntegrationTokenResult, type RequestCoinbaseApplePayLimitUpgradeRequest, type RequestCoinbaseApplePayLimitUpgradeResponse, type RequestCoinbaseWalletPayLimitUpgradeRequest, type RequestCoinbaseWalletPayLimitUpgradeResponse, SCAN_NUDGE_INTERVAL_MS, SOLANA_USDC_ADDRESS, type SendHypercoreTransactionRequest, type SendHypercoreTransactionResponse, type SendSolanaTransactionRequest, type SendSolanaTransactionResponse, type SourceToken, type SourceTokenNetwork, type StartIntegrationOAuthResult, type StripeAccessTokenResponse, StripeApiResponseError, type StripeAuthIntentResponse, type StripeConfigResponse, type StripeConfirmRequest, type StripeConsumerWallet, type StripeCreateSessionRequest, type StripeCryptoCustomer, type StripeCustomerVerification, type StripeDefaultTokenResponse, type StripeListResponse, type StripeOnrampErrorType, type StripeOnrampSession, type StripeOnrampTransactionDetails, type StripePaymentToken, type StripeQuoteRequest, type StripeQuotesResponse, type StripeTransactionLimitEntry, type StripeTransactionLimitsResponse, type SupportedChain, type SupportedDepositTokensParams, type SupportedDepositTokensResponse, type SupportedDestinationTokensResponse, type SupportedSourceTokensQuery, type SupportedSourceTokensResponse, type SupportedToken, type TokenBalance, type TokenChain, type TokenChainIconUrl, type TokenChainsResponse, type TokenDisplayMetadata, type TokenIconUrl, type TokenInfo, type TokenMetadata, type TokenPriceResponse, type TokenSelectedData, type TransferDefaultTokenParams, type TransferDefaultTokenResult, UnifoldClient, type UnifoldClientOptions, type UserIpInfo, type VerificationData, type VerifyAddressParams, type VerifyAddressRequest, type VerifyAddressResponse, type Wallet, type WalletConnectionData, type WalletMobileDeepLinkDepositAddress, type WalletMobileDeepLinkResponse, type WalletMobileDeepLinkWallet, type WalletPayLimitUpgradeStatus, type WalletPayMethod, type WalletPayProvider, type WalletPayProvidersResponse, type WalletSelectedData, type WithdrawDirectExecutionFailedEvent, type WithdrawDirectExecutionSucceededEvent, type WithdrawEvent, WithdrawEventType, type WithdrawFlowStartedData, authenticateIntegrationOAuth, buildHypercoreTransaction, buildSolanaTransaction, checkHypercoreActivation, confirmIntegrationTransfer, createCashAppSession, createCoinbaseApplePaySession, createCoinbaseGooglePaySession, createCoinbaseWalletPaySession, createDepositAddress, createExchangeSession, createIntegrationExchangeSession, createIntegrationTransfer, createOnrampSession, createOnrampVerificationSession, createUnifoldClient, exchangeOnrampVerificationToken, formatStablecoinAmount, generateKSUID, generatePrefixedKSUID, getAddressBalance, getAddressBalances, getApiBaseUrl, getApplePayLimitUpgradeStatus, getApplePayProviders, getBankTransferProviders, getCashAppLimits, getCashAppSessionStatus, getChainName, getCoinbaseApplePayLimits, getCoinbaseLegalAgreements, getCoinbaseWalletPayLimits, getDefaultOnrampToken, getDepositAddress, getDepositQuote, getExchangeSessionStartUrl, getExchanges, getExternalWallets, getFiatCurrencies, getFiatExchangeRates, getGooglePayLimitUpgradeStatus, getGooglePayProviders, getIconUrl, getIconUrlWithCdn, getIntegrationExchangeSessionStartUrl, getIntegrationExchanges, getIntegrationHoldings, getIntegrationTransferDefaultToken, getIpAddress, getOnrampQuotes, getOnrampSessionStartUrl, getOnrampSessionStatus, getOnrampVerificationSession, getPreferredIconUrl, getProjectConfig, getPublicIncident, getSupportedDepositTokens, getSupportedDestinationTokens, getTokenChains, getTokenMetadata, getTokenPrice, getWalletByChainType, getWalletMobileDeepLink, getWalletPayLimitUpgradeStatus, getWalletPayProviders, i18n, isApplePayLimitReached, isDepositAddressValidationError, isGooglePayLimitReached, isWalletPayLimitReached, listPaymentIntentExecutions, mapDefaultOnrampToken, mapDirectExecution, mapOnrampQuote, mapWalletToDepositAddress, pollDirectExecutions, queryExecutions, refreshIntegrationToken, requestCoinbaseApplePayLimitUpgrade, requestCoinbaseWalletPayLimitUpgrade, retrievePaymentIntent, revokeIntegrationToken, sendHypercoreTransaction, sendOnrampVerificationOtp, sendSolanaTransaction, setApiConfig, startIntegrationOAuth, stripeConfirmSession, stripeCreateAuthIntent, stripeCreateSession, stripeExchangeTokens, stripeGetConfig, stripeGetCustomer, stripeGetDefaultToken, stripeGetQuotes, stripeGetSession, stripeGetTransactionLimits, stripeListPaymentTokens, stripeListWallets, stripeRefreshQuote, stripeRefreshToken, useUserIp, verifyOnrampVerificationOtp, verifyRecipientAddress };
4613
+ export { type AccountConnectionData, ActionType, type AddressBalanceResponse, type AddressBalancesResponse, type AddressValidationFailureCode, type AddressValidationMetadata, type AddressVerification, type ApplePayLimitUpgradeStatus, type ApplePayProvider, type ApplePayProvidersResponse, type AuthenticateOAuthResult, type AutoSwapRequest, type AutoSwapResponse, type BankTransferBankAccount, type BankTransferCapability, BankTransferCapabilityStatus, type BankTransferConfig, type BankTransferDepositInstructions, type BankTransferKycLevel, type BankTransferPaymentRail, type BankTransferPaymentRailEta, type BankTransferPaymentRailFee, type BankTransferPaymentRailTariff, type BankTransferProvider, type BankTransferProvidersResponse, type BankTransferQuestionnaireOptions, type BankTransferRailRequest, type BankTransferSession, type BankTransferSessionKyc, type BankTransferSessionRequirements, BankTransferSessionStatus, type BankTransferVirtualAccount, type BankTransferVirtualAccountDestination, type BankTransferVirtualAccountSource, type BankTransferVirtualAccountStatus, type BlockedCountrySubdivision, type BuildHypercoreTransactionRequest, type BuildHypercoreTransactionResponse, type BuildSolanaTransactionRequest, type BuildSolanaTransactionResponse, type CashAppLimits, type CashAppSessionRequest, type CashAppSessionResponse, type CashAppSessionStatusResponse, type ChainType, type CheckoutEvent, CheckoutEventType, type CheckoutFlowFailedData, type CheckoutFlowStartedData, type CheckoutMethod, type CheckoutMethodSelectedData, type CheckoutPaymentIntent, type CheckoutPaymentIntentData, type CheckoutPaymentIntentSucceededEvent, type CoinbaseApplePayLimit, type CoinbaseApplePayLimitUpgradeOption, type CoinbaseApplePayLimitsResponse, type CoinbaseApplePaySessionResponse, type CoinbaseGooglePaySessionResponse, type CoinbaseLegalAgreement, type CoinbaseLegalAgreementsResponse, type CoinbaseWalletPayLimit, type CoinbaseWalletPayLimitUpgradeOption, type CoinbaseWalletPayLimitsResponse, type CoinbaseWalletPaySessionResponse, type ConfirmIntegrationTransferResult, type CreateBankTransferSessionRequest, type CreateCoinbaseApplePaySessionRequest, type CreateCoinbaseGooglePaySessionRequest, type CreateCoinbaseWalletPaySessionRequest, type CreateDepositAddressRequest, type CreateExchangeSessionRequest, type CreateExchangeSessionResponse, type CreateIntegrationExchangeSessionRequest, type CreateIntegrationExchangeSessionResponse, type CreateIntegrationTransferParams, type CreateIntegrationTransferResult, type CreateOnrampVerificationSessionRequest, DETECTION_ARM_DELAY_MS, DETECTION_POLL_INTERVAL_MS, type DefaultTokenChain, type DefaultTokenMetadata, type DefaultTokenResponse, type DepositAddress, type DepositAddressParams, type DepositAddressResponse, DepositAddressValidationError, type DepositEvent, DepositEventType, type DepositFlowFailedData, type DepositFlowStartedData, type DepositLimitReachedData, type DepositMethod, type DepositMethodSelectedData, type DepositQuote, type DepositQuoteRequest, DepositSession, type DepositSessionConfig, type DepositSessionDestination, type DepositSessionError, type DepositSessionErrorCode, type DepositSessionEvent, type DepositSessionEventMap, DepositSessionEventType, type DepositSessionParams, type DepositSessionSnapshot, type DepositSessionStatus, DepositSessionWaitError, type DepositSessionWaitErrorCode, type DepositSessionWaitOptions, type DestinationToken, type DestinationTokenChain, type DirectExecution, DirectExecutionEventType, type DirectExecutionFailedEvent, type DirectExecutionResponse, type DirectExecutionSucceededEvent, type EvmContractCall, type ExchangeProviderInfo, type ExchangeProvidersResponse, type ExchangeSessionStartParams, type ExchangeWalletAddress, ExecutionStatus, type ExternalWalletChainType, type ExternalWalletInfo, type ExternalWalletsResponse, type FeaturedToken, type FeaturedWallet, type FiatCurrenciesResponse, type FiatCurrency, type GetBankTransferProvidersOptions, type GetExchangesQuery, type GetIntegrationExchangesQuery, type GooglePayProvider, type GooglePayProvidersResponse, type HypercoreActivationRequest, type HypercoreActivationResponse, type I18nStrings, type IconUrl, type IdentityInformationFields, type IdentityPaymentMethodType, type IdentityQuestionnaire, type IdentityRequirements, type IdentityRoutingContext, type IdentityVerificationSession, IneligibilityReason, type IntegrationAccount, type IntegrationConnectionMethod, type IntegrationExchangeInfo, type IntegrationExchangeSessionStartParams, type IntegrationExchangesResponse, type IntegrationFeeAmount, type IntegrationHoldingsResponse, IntegrationProvider, IntegrationTransferError, type IntegrationTransferErrorType, InteracApiResponseError, type InteracCreateSessionRequest, type InteracCreateUserRequest, type InteracDepositInstructions, type InteracKycUrlResponse, type InteracLimitsResponse, type InteracOnrampErrorType, type InteracOtpResponse, type InteracQuoteResponse, type InteracRoute, type InteracSessionResponse, type InteracStartNext, type InteracStartResponse, type InteracStatusResponse, type InteracUpdateUserRequest, type IpAddressResponse, LOOKBACK_MS, type ListExecutionsParams, type LockedQuoteLimits, type LockedQuotePreview, type LockedQuotePreviewRequest, type OnrampCheckout, type OnrampDestinationToken, type OnrampProviderQuote, type OnrampQuote, type OnrampQuoteRequest, type OnrampQuotesRequest, type OnrampQuotesResponse, OnrampSession, type OnrampSessionConfig, type OnrampSessionCreatedData, type OnrampSessionCreatedEvent, type OnrampSessionError, type OnrampSessionErrorCode, type OnrampSessionEvent, type OnrampSessionEventMap, OnrampSessionEventType, type OnrampSessionParams, type OnrampSessionPaymentMethod, type OnrampSessionPaymentMethodType, type OnrampSessionRequest, type OnrampSessionResponse, type OnrampSessionSnapshot, type OnrampSessionStatus, type OnrampSessionStatusResponse, type OnrampSessionStatusValue, OnrampSessionWaitError, type OnrampSessionWaitErrorCode, type OnrampSessionWaitOptions, type OnrampTos, type OnrampTosAcceptance, type OnrampTosAgreement, type OnrampVerificationFactor, type OnrampVerificationFactorStatus, type OnrampVerificationSession, type OnrampVerificationStatus, type OnrampVerificationTokenResponse, type PaymentIntent, type PaymentIntentDepositAddress, type PaymentIntentExecutionsResponse, type PaymentIntentStatus, type PaymentIntentType, type PaymentNetwork, type PollExecutionsRequest, type PollExecutionsResponse, type ProductType, type ProjectConfigResponse, type ProviderSelectedData, type PublicIncidentResponse, QUOTE_REFRESH_INTERVAL_MS, type QueryExecutionsRequest, type QueryExecutionsResponse, type RefreshIntegrationTokenResult, type RequestCoinbaseApplePayLimitUpgradeRequest, type RequestCoinbaseApplePayLimitUpgradeResponse, type RequestCoinbaseWalletPayLimitUpgradeRequest, type RequestCoinbaseWalletPayLimitUpgradeResponse, SCAN_NUDGE_INTERVAL_MS, SOLANA_USDC_ADDRESS, type SendHypercoreTransactionRequest, type SendHypercoreTransactionResponse, type SendSolanaTransactionRequest, type SendSolanaTransactionResponse, type SepaIbanInstructions, type SourceToken, type SourceTokenNetwork, type StartIntegrationOAuthResult, type StripeAccessTokenResponse, StripeApiResponseError, type StripeAuthIntentResponse, type StripeConfigResponse, type StripeConfirmRequest, type StripeConsumerWallet, type StripeCreateSessionRequest, type StripeCryptoCustomer, type StripeCustomerVerification, type StripeDefaultTokenResponse, type StripeListResponse, type StripeOnrampErrorType, type StripeOnrampSession, type StripeOnrampTransactionDetails, type StripePaymentToken, type StripeQuoteRequest, type StripeQuotesResponse, type StripeTransactionLimitEntry, type StripeTransactionLimitsResponse, type SubmitIdentityInformationRequest, type SupportedChain, type SupportedDepositTokensParams, type SupportedDepositTokensResponse, type SupportedDestinationTokensResponse, type SupportedSourceTokensQuery, type SupportedSourceTokensResponse, type SupportedToken, type TokenBalance, type TokenChain, type TokenChainIconUrl, type TokenChainsResponse, type TokenDisplayMetadata, type TokenIconUrl, type TokenInfo, type TokenMetadata, type TokenPriceResponse, type TokenSelectedData, type TransferDefaultTokenParams, type TransferDefaultTokenResult, UnifoldClient, type UnifoldClientOptions, type UsBankAccountInstructions, type UserIpInfo, type VerificationData, type VerifyAddressParams, type VerifyAddressRequest, type VerifyAddressResponse, type Wallet, type WalletConnectionData, type WalletMobileDeepLinkDepositAddress, type WalletMobileDeepLinkResponse, type WalletMobileDeepLinkWallet, type WalletPayLimitUpgradeStatus, type WalletPayMethod, type WalletPayProvider, type WalletPayProvidersResponse, type WalletSelectedData, type WithdrawDirectExecutionFailedEvent, type WithdrawDirectExecutionSucceededEvent, type WithdrawEvent, WithdrawEventType, type WithdrawFlowStartedData, acceptOnrampTos, authenticateIntegrationOAuth, buildHypercoreTransaction, buildSolanaTransaction, cancelInteracSession, checkHypercoreActivation, confirmIntegrationTransfer, createBankTransferCapability, createBankTransferSession, createBankTransferVirtualAccount, createCashAppSession, createCoinbaseApplePaySession, createCoinbaseGooglePaySession, createCoinbaseWalletPaySession, createDepositAddress, createExchangeSession, createIdentityVerificationSession, createIntegrationExchangeSession, createIntegrationTransfer, createInteracSession, createInteracUser, createOnrampSession, createOnrampVerificationSession, createUnifoldClient, exchangeOnrampVerificationToken, formatStablecoinAmount, generateKSUID, generatePrefixedKSUID, getAddressBalance, getAddressBalances, getApiBaseUrl, getApplePayLimitUpgradeStatus, getApplePayProviders, getBankTransferProviders, getBankTransferSession, getBankTransferVirtualAccount, getCashAppLimits, getCashAppSessionStatus, getChainName, getCoinbaseApplePayLimits, getCoinbaseLegalAgreements, getCoinbaseWalletPayLimits, getDefaultOnrampToken, getDepositAddress, getDepositQuote, getExchangeSessionStartUrl, getExchanges, getExternalWallets, getFiatCurrencies, getFiatExchangeRates, getGooglePayLimitUpgradeStatus, getGooglePayProviders, getIconUrl, getIconUrlWithCdn, getIntegrationExchangeSessionStartUrl, getIntegrationExchanges, getIntegrationHoldings, getIntegrationTransferDefaultToken, getInteracKycUrl, getInteracLimits, getInteracQuote, getInteracSession, getInteracStatus, getIpAddress, getOnrampQuotes, getOnrampSessionStartUrl, getOnrampSessionStatus, getOnrampTos, getOnrampVerificationSession, getPreferredIconUrl, getProjectConfig, getPublicIncident, getSupportedDepositTokens, getSupportedDestinationTokens, getTokenChains, getTokenMetadata, getTokenPrice, getWalletByChainType, getWalletMobileDeepLink, getWalletPayLimitUpgradeStatus, getWalletPayProviders, i18n, isApplePayLimitReached, isDepositAddressValidationError, isGooglePayLimitReached, isWalletPayLimitReached, listPaymentIntentExecutions, mapDefaultOnrampToken, mapDirectExecution, mapOnrampQuote, mapWalletToDepositAddress, patchIdentityInformation, pollDirectExecutions, queryExecutions, refreshIntegrationToken, requestCoinbaseApplePayLimitUpgrade, requestCoinbaseWalletPayLimitUpgrade, requestInteracOtp, retrievePaymentIntent, revokeIntegrationToken, sendHypercoreTransaction, sendInteracPhoneVerification, sendOnrampVerificationOtp, sendSolanaTransaction, setApiConfig, startIntegrationOAuth, startInterac, stripeConfirmSession, stripeCreateAuthIntent, stripeCreateSession, stripeExchangeTokens, stripeGetConfig, stripeGetCustomer, stripeGetDefaultToken, stripeGetQuotes, stripeGetSession, stripeGetTransactionLimits, stripeListPaymentTokens, stripeListWallets, stripeRefreshQuote, stripeRefreshToken, updateInteracUser, useUserIp, verifyInteracOtp, verifyInteracPhone, verifyOnrampVerificationOtp, verifyRecipientAddress };