# @funkit/connect-core

## 8.2.0

### Minor Changes

- 38e9946: Add `resolveFiatRegionSupport` for deciding whether fiat deposits are served in a buyer's region.
- 00e8eae: Fiat quotes can be pinned to a chosen set of providers when testing against a non-production backend.
- cd5ac82: Correlate a flow's logs under one trace id, and expose `getFunkitTraceInfo` / `flushFunkitLogs` for host debug tooling.
- f147595: Deposit maximums are now remembered for the session, so an amount already known to be over the maximum is answered immediately.
- c4ea859: Complete a Stripe purchase that needs a card confirmation step.
- bc00257: Add an optional Stripe Embedded Components session-auth capability to the managed fiat flow.

### Patch Changes

- 142dfed: more useful error states for failed quoting
- 1bccb47: Refuse an unsupported region before the deposit amount screen, instead of after a quote or a KYC form.
- d532b7d: A malformed fiat provider override no longer blanks the deposit amount screen; the backend refuses it instead.
- 154a1bb: Include the destination address when completing provider-rendered fiat authentication.

## 8.1.1

### Patch Changes

- cb6342b: Stop reading a fiat round's resend as the call that opens the provider session, so the screen's own button no longer offers to replace the challenge the user is already looking at.

## 8.1.0

### Minor Changes

- 812fa52: Wire the identity options card to deposit max, re-do verification and support.
- 9b10caf: Report a resolved identity check on the deposit screen instead of a full-screen outcome.
- 84f1fcf: Withdrawals can now be signed by a connected Solana wallet via `useSolanaWithdrawalConfig`, which takes a `SolanaWalletSigner` with only the wallet's address, connection and signing method.

### Patch Changes

- 3c85052: Allow the Bluvo exchange option to be switched off remotely.
- db448a0: No consumer-facing behavior changes.
- 5babe4e: Tell buyers their ID check needs correcting when a provider asks for the form again, instead of showing the first-time verification prompt.
- Updated dependencies [3c85052]
- Updated dependencies [cbfe8c1]
- Updated dependencies [c2c7331]
  - @funkit/api-base@8.4.0

## 8.0.0

### Major Changes

- 76f165c: Token and recipient comparisons no longer treat two base58 addresses differing only in case as the same address.
  
  `isEVMAddressEquivalent` is removed from `@funkit/utils` and `@funkit/connect-core`. Replace it with `isAddressEquivalent`, which takes the same arguments and picks the comparison from the address format: EVM hex folds case, base58 (Solana, Tron) must match exactly.
  
  ```diff
  -import { isEVMAddressEquivalent } from '@funkit/utils'
  +import { isAddressEquivalent } from '@funkit/utils'
  
  -isEVMAddressEquivalent({ firstAddress, secondAddress })
  +isAddressEquivalent({ firstAddress, secondAddress })
  ```
- b29078c: Fiat deposits whose destination asset is what the rail already buys are now paid straight to the recipient instead of through a generated deposit address.
  
  `amountEntry.fiat.cryptoCurrencyAddress` is required: set it to the address (or SPL mint) of the token named by `cryptoCurrencyCode`, on `chainId`. Matching `checkoutConfig.targetAsset` is what selects the direct route.
  
  ```diff
   fiat: {
     paymentMethod: 'apple_pay',
     cryptoCurrencyCode: 'USDC',
  +  cryptoCurrencyAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
     chainId: '1151111081099710',
   },
  ```

### Minor Changes

- b29078c: Deposits now honour a `customRecipient` on the checkout config, matching the web SDK.
- c621550: A fiat order paid straight to the recipient now shows as complete when its delivery transaction lands, instead of waiting for the backend to settle it.

### Patch Changes

- a5e893c: Optionally close the checkout modal shortly after a successful Polymarket perps transfer.
- 86ba6ef: Preselect the chain and token a user last deposited from on the Transfer Crypto screen.
- Updated dependencies [76f165c]
- Updated dependencies [6fd317f]
- Updated dependencies [406609f]
  - @funkit/utils@5.0.0
  - @funkit/fun-relay@3.0.1
  - @funkit/api-base@8.3.1

## 7.0.0

### Major Changes

- 933ecce: Show Coinbase Apple Pay checkout without an extra deposit tap and expose the fresh quote’s selected provider.
  
  Migration: `UseFiatQuoteResult` now includes an optional `provider`; existing callers require no changes.
- ef57ef7: Render provider-owned session authorization separately from OTP and add MoonPay account-connection and Apple Pay surfaces using MoonPay's React Native SDK.
  
  Migration: exhaustive `FiatScreen` mappings must handle the new `AUTH_CAPTURE` screen.

### Minor Changes

- 384cce3: Mint a checkoutId UUID per deposit/withdrawal.
- 933ecce: Share the fiat payment-session endpoint constant and preserve provider-specific checkout preparation behind the common fiat flow.
- 206ae21: Update the KYC faceplate copy to match the Figma designs and name the ID-verification vendor in the document round.

### Patch Changes

- 770da6d: Accept quote-less fiat KYC discovery forms and the dedicated US SSN last-four field.
- 72b7cc3: Preserve structured API refusals, show provider minimum deposits on fiat amount entry, use Pump branding for success states, and hide retry actions for terminal purchase failures.
- dffb517: Keep fiat quotes fresh across reopened flows and visible through payment capture.
- f32fd43: Ask for the phone number when a fiat quote answers with the session round itself
- b3c8a12: Keep quote-less fiat rounds stable while their required inputs are collected
- Updated dependencies [7e4ed3f]
- Updated dependencies [8f5a732]
- Updated dependencies [bd149d1]
- Updated dependencies [72b7cc3]
  - @funkit/api-base@8.3.0
  - @funkit/chains@2.4.0

## 6.1.0

### Minor Changes

- 46d5375: Fix a fiat deposit stalling on the amount screen after a verification code is accepted
- 78f075b: Accept the terms a fiat provider requires, so a deposit that needs them can be placed

### Patch Changes

- 3a6256a: Fiat transitions trace what they fired and where they landed, and warn when a step leaves nowhere to go.
- 50e2acc: Collect every contact a fiat session asks for, and verify each on its own code round
- Updated dependencies [b948af2]
- Updated dependencies [b948af2]
  - @funkit/api-base@8.2.0
  - @funkit/fun-relay@3.0.0

## 6.0.0

### Major Changes

- e3fc541: Fiat quotes send the buyer's geo object the API now requires, instead of a bare country.
  
  Migration: `useFiatQuote`'s `country: string` prop and `QuoteRequest.country` are replaced by
  `geo: { alpha2: string; region?: string }`. Pass the geo lookup's own answer —
  `{ alpha2: userIpInfo.alpha2, region: userIpInfo.state }`. A US buyer needs `region`;
  the server refuses a US quote without it.

### Minor Changes

- 053d65f: Re-send a fiat deposit under a fresh price when the server no longer holds the quoted one
- 91fa0ce: Validate and submit the answers a declared fiat identity form asks for.
- 91fa0ce: Follow the identity round the quote endpoint answers with, and renew an expired capture surface.
- f2d1fb9: Open the Swapped fiat on-ramp with a prefilled default amount.

### Patch Changes

- d759c2e: The geo lookup keeps looking when a provider names no state, so a US buyer can be quoted.
- d6878c0: The geo lookup only asks a second provider for a missing state when the caller needs one; web takes the first country as before.
- Updated dependencies [0dd9bb6]
- Updated dependencies [19abab6]
- Updated dependencies [f2d1fb9]
  - @funkit/api-base@8.1.0

## 5.0.0

### Major Changes

- 91fd04a: Bump the fiat contract to 0.11.0, which adds the terms document a transition asks the buyer to accept.
  
  Migration — two re-exported types change shape:
  
  - `FiatStepResponse.provider` is now optional, and only on a `BLOCKED` response: routing can end before a provider is chosen. Narrow on `state.kind` before reading it; every other state is still provider-bound.
  - `Surface` is a union discriminated by `kind`. A `KYC_SDK` surface names a `KYCProvider` and may carry `preferredDocuments`; every other kind names a `FiatProvider` and may carry a `delivery`. Read either only after narrowing on `kind`.
- 3e35fc3: Send the buyer's country on fiat quotes, which no provider will price without.
  
  **Migration.** `QuoteRequest` gains a required `country` — ISO 3166-1 alpha-2 of
  the buyer. Code that builds one must supply it; a request without it is answered
  `404 "No provider can price that purchase right now."` `useFiatQuote` takes it
  optionally and sends no quote until it resolves.

### Minor Changes

- 005d0ca: `screenAddressesForRisk` accepts an optional `solanaSenderAddress`, screened alongside the existing sender and recipient.
- e4b413a: Quote fiat deposits in the buyer's regional currency.
- df228c4: Replace the unreleased fiat auth-token API with identity-assertion naming.

### Patch Changes

- ad4f69c: Send `depositAddress` on `POST /fiat/payment-session`, which session-first providers reject without it.
- a8cf4cd: Track the fiat contract's published surface kinds, quote limits and poll endpoint.
- Updated dependencies [005d0ca]
- Updated dependencies [005d0ca]
- Updated dependencies [1c2e492]
- Updated dependencies [df228c4]
- Updated dependencies [05a0fed]
- Updated dependencies [641d2a1]
- Updated dependencies [76848d7]
- Updated dependencies [2dd0720]
  - @funkit/api-base@8.0.0
  - @funkit/chains@2.3.0
  - @funkit/fun-relay@2.15.0

## 4.4.0

### Minor Changes

- 9fc3393: A payment taken on the amount screen now creates the order instead of being dropped.

### Patch Changes

- 4a4ea7d: Store Lighter L2 withdrawal precision per asset instead of deriving it from L1 decimals.

## 4.3.0

### Minor Changes

- b5d384e: Authenticate fiat transitions with a cached, single-flight user auth token, retrying once when one expires mid-request.
- 67bcc99: Support Fiat Contract 0.7 responses and provider-agnostic payment surfaces.
- 60ffb40: Expose the headless fiat quote and flow APIs from `@funkit/connect-core`.

### Patch Changes

- 60ffb40: Keep fiat quotes visible while refreshing, replace them before they expire, and reject expired quotes before submission.
- 838b4a7: feat: add a hook that drives a complete fiat flow
- c60f3b1: fix(chains): treat Lighter as a non-EVM chain id
- 3b5f688: Remember each account's last successful withdrawal destination chain, behind the `remember-withdrawal-chain` gate.
- Updated dependencies [b5d384e]
- Updated dependencies [c60f3b1]
- Updated dependencies [b5d384e]
- Updated dependencies [d6629ee]
  - @funkit/api-base@7.3.0
  - @funkit/chains@2.2.1
  - @funkit/utils@4.0.3

## 4.2.0

### Minor Changes

- 2364013: feat: add `normalizeRecipientAddress` for canonicalizing an EVM, Solana or Tron recipient

### Patch Changes

- b2c2340: feat: submit fiat flow transitions safely across retries
- Updated dependencies [08eb810]
  - @funkit/utils@4.0.2
  - @funkit/api-base@7.2.1

## 4.1.1

### Patch Changes

- 5f06dd8: feat: resolve a fiat flow state to the screen that renders it
- 54031e2: chore: adopt the fiat contract 0.5.0, which renames the step-response type
- c8b7cfb: tooling: make fiat transition data available without requiring private-registry access, and resolvable by consumer typechecks
- d1b33c1: feat: scrub fiat session secrets and payment instructions out of logged envelopes
- 32c647e: feat: support scheduled fiat order status polling
- 7259085: Add fallback entries for the latest Statsig feature gates
- Updated dependencies [9abc673]
- Updated dependencies [2be999d]
- Updated dependencies [0c17b85]
  - @funkit/api-base@7.2.0
  - @funkit/fun-relay@2.14.1

## 4.1.0

### Minor Changes

- db6edb4: feat(connect-core): track the arrival of funds sent to a deposit address
- c8a547b: feat(connect-core): export `resolveOnChainCompletionTxHash` for resolving a withdrawal's delivering transaction
- b2148be: feat(connect-core): share Nado's fee, maximum-amount and subaccount helpers, plus `isEVMAddressEquivalent`
- 87d5708: Add XAUT (Tether Gold) as a Lighter spot asset for deposits and Secure withdrawals.

### Patch Changes

- e671988: Automatically fill the withdrawal recipient with the connected wallet address when eligible.
- Updated dependencies [87d5708]
- Updated dependencies [d0fb831]
  - @funkit/fun-relay@2.14.0
  - @funkit/api-base@7.1.2

## 4.0.0

### Major Changes

- 1e6df43: Removed `resolveLighterSharePrice` and `resolveLighterUnstakedFeeTokens` from `@funkit/connect-core/clients/lighter`. Both were superseded by the `transferFeeInfo`-backed fee lookup and had no remaining callers.

  **Migration:** if you imported either function, compute the unstaked fee via `useLighterFastUnstakedFeeTokens` from `@funkit/connect-core/clients/lighter` instead — it reads the fee directly from Lighter's `transferFeeInfo` endpoint rather than deriving it from share price locally.

### Minor Changes

- 84683ff: feat(connect-core): add Nado query hooks and withdrawal failure classification
- df95715: feat(connect-core): add the Nado gateway and indexer clients at `clients/nado`
- d46284d: feat(connect-core): add Nado withdrawal wire utilities at `clients/nado`, plus `safeBigInt`
- 1e6df43: Added `useLogOnce`, a hook for logging a value once when it settles rather than on every re-render.
- 1e6df43: Lighter Fast's unstaked withdrawal fee is now always accurate to the account's current stake.

### Patch Changes

- b28ba34: Brace every `if`/`else`/loop body — formatting only, no behaviour change.
- dae8c51: Append EIP-681 `@<chainId>` suffix to EVM deposit QR code URIs so MetaMask mobile's scanner can resolve the network
- 2522e00: chore(connect-core): remove the unused Nado settlement-status hook and indexer client from `clients/nado`
- 2ad0cd5: fix: keep dropdowns open when selecting their own items in shadow DOM
- Updated dependencies [4b25619]
- Updated dependencies [b28ba34]
- Updated dependencies [e75b048]
  - @funkit/utils@4.0.1
  - @funkit/api-base@7.1.1
  - @funkit/fun-relay@2.13.0

## 3.1.0

### Minor Changes

- 759b3f4: feat(connect-core): export `percentOfAmount`, which takes a share of a token balance
- c667b94: Adds `usdToTokenAmount` and `tokenAmountToUsd` for converting an amount between dollars and token units at a spot price. Both round down, so a converted amount never exceeds the balance it is spent from.
- c667b94: `validateWithdrawalAmount` takes an optional `sourceTokenDecimals`, so a USD minimum converted at a non-parity price can actually be reached by a typed amount.
- 76dafe1: Withdrawal flat-fee deduction now comes from `@funkit/connect-core`, so web and React Native price the same amount.
- bbb0301: Lighter Native Bridge withdrawals record the same attribution row on every platform.

  Move `trackLighterSecureWithdrawal` export from `connect` to `connect-core`

- 3d95b7f: Risk assessment now screens on the transaction's chain: `getRiskAssessmentForAddress` accepts an optional `chainId`, and checkout and withdrawal screens send it.
- 993ac35: React Native token pricing now falls back to Relay when the funkit price API can't price a token, so configured USD withdrawal limits stay enforced.
- db08b0d: fix(connect): reject non-decimal withdrawal source balance values
- e1354ad: Update fiat default pill amounts

### Patch Changes

- 53d7f38: fix(connect-core): a submitted withdrawal now settles instead of showing as in progress forever
- Updated dependencies [fade45e]
- Updated dependencies [07a4ae6]
- Updated dependencies [3d95b7f]
  - @funkit/api-base@7.1.0
  - @funkit/fun-relay@2.12.0

## 3.0.0

### Major Changes

- a6cc332: Renamed `toWithdrawalExecutionErrorCode` to `toWalletExecutionErrorCode` and its `WithdrawalExecutionErrorCode` type to `WalletExecutionErrorCode`.

  Migration: rename the import — the codes (`insufficient-gas`, `switch-chain`, `generic`) and behavior are unchanged.

### Minor Changes

- b361db0: Export the Lighter account-by-index query and unstaked-fee helpers from `@funkit/connect-core`.
- 332d186: Support Lighter withdrawals from the new `@funkit/connect-core/clients/lighter` entry on both web and React Native.
- aafdbba: Lighter constants and helpers move to the `@funkit/connect-core/clients/lighter` entry.
- c68c3d6: Share Lighter withdrawal support from `@funkit/connect-core`.
- d2336bb: Lighter's bridge delay is now a shared `useLighterWithdrawalDelaySeconds` hook, and a main-account index that isn't numeric resolves as unset.
- a5c5bed: feat(connect-core): share one Chainalysis address screen across web and React Native — withdrawals now proceed when screening returns no risk level
- 3a6351a: Support withdrawals from non-EVM sources.

### Patch Changes

- 35b64db: Lighter account lookups no longer resolve the zero address, which Lighter maps to its own system accounts.
- 86b10f0: Polymarket perps ⇄ predictions transfers are now recorded, so transfer volume appears alongside deposits and withdrawals.
- Updated dependencies [856057c]
  - @funkit/fun-relay@2.11.0

## 2.5.0

### Minor Changes

- 18c2f00: Add the headless crypto send-to-address withdrawal pipeline and an EXACT_IN quote helper.
- 2ed588e: Add withdrawal recipient safety checks: operator blacklist and Chainalysis risk screening.
- a7258d9: feat: shadow-compare geo lookups against Fun's first-party endpoint, promotable via the `enable-fun-geo-primary` gate
- fba0b56: Add Lighter deposit support to `@funkit/connect-rn`: external user IDs are sent verbatim and the deposit recipient resolves to the user's Lighter L2 main-account index, never the L1 wallet address.
- c4b476d: Crypto withdrawals can now be submitted on React Native, with on-chain status polling.
- 12d5574: Support gasless withdrawal routes by letting a withdrawal client sign typed data and messages.
- 7110ca9: Expose the relay fee breakdown helper and the debounced-value hook used to price a withdrawal.
- 5d71640: Withdrawal source tokens can now declare an `assetClass`, and the `AssetClass` type is exported.

### Patch Changes

- 0872c5f: refactor(connect): share relay fee extraction with `@funkit/connect-core` — no consumer-facing changes
- c4b476d: Fix withdrawals crashing on React Native with "crypto.getRandomValues() not supported".
- Updated dependencies [8eb9f08]
- Updated dependencies [195843e]
- Updated dependencies [2b9f1af]
  - @funkit/api-base@7.0.0
  - @funkit/fun-relay@2.10.1

## 2.4.1

### Patch Changes

- Updated dependencies [f3f4e42]
  - @funkit/fun-relay@2.10.0

## 2.4.0

### Minor Changes

- 4235f2f: refactor(connect-core): share the Swapped `thirdPartyPaymentConfigs` builder across platforms

### Patch Changes

- df4e7d8: fix: treat Bitcoin, Lightning and HyperCore consistently as non-EVM chains across web and RN
- Updated dependencies [df4e7d8]
  - @funkit/chains@2.2.0

## 2.3.0

### Minor Changes

- 37829e2: Centralize deposit-side min/max amount math in `@funkit/connect-core`.
- 8fce60a: Centralize withdrawal-side amount validation and Swapped sell limits in `@funkit/connect-core`.

### Patch Changes

- 1584cf7: Prevent the checkout widget from crashing while minimum-transfer settings are loading.
- ee44046: Add `disable-krw-default-currency` feature gate: when enabled, KRW is never auto-selected as the default fiat currency (USD is used instead)
- 9b285ea: fix(connect-core): require https when validating Swapped embed origins.

## 2.2.0

### Minor Changes

- 3a2e779: Share the form-of-payment display-name logic and harden the saved-card guard.
- 8ac239a: refactor(connect-core): promote checkout-history purify layer into core

## 2.1.0

### Minor Changes

- 0755d6b: Automatically fall back to CDN-derived chain icons when local chain metadata is missing
- dad6cb2: Move the duplicated Moonpay→ipapi IP-country lookup into a shared `useUserIpInfo` hook in `@funkit/connect-core`; web and RN keep thin wrappers injecting their `logger`, `enabled` gate, and `staleTime`. Public API and web behavior unchanged.

### Patch Changes

- 96f35d1: Gate the Free USDC banner per direction — the banner self-gates on `depositEnabled`/`withdrawalEnabled` so deposits show it while withdrawals stay off after subsidy shutoff.

## 2.0.0

### Major Changes

- b2abbb5: Add an `exports` map (root entry only) and replace the `export *` barrel with an explicit, curated export list.

  Breaking: deep `dist/**` imports no longer resolve, and 12 internal-only symbols — reachable before only via the blanket `export *`, and imported by neither `@funkit/connect` nor `@funkit/connect-rn` — are removed. Import from the package root; re-exporting a removed symbol later is a non-breaking addition.

### Minor Changes

- 4f0f4a0: Add the headless fiat-withdrawal (offramp) pipeline: the `WithdrawalClient` contract, source→accepted-token routing, and `processFiatWithdrawalOrder` (EXACT_OUT quote → relay execution → DirectExecution record). Adds a `@funkit/fun-relay` dependency.

### Patch Changes

- b8a3f1e: Ship the full `dist` tree and `CHANGELOG.md` in the published tarball. `@funkit/connect-core` previously listed only `dist/index.js` in `files`, so any future code-split chunk (`dist/chunk-*.js`, emitted once a dynamic `import()` is added under `splitting: true`) would have been silently excluded from the package. Both packages now publish their changelog too.

## 1.7.1

### Patch Changes

- 8ae9a55: Move the Statsig fallback generator into connect-core's own prebuild

## 1.7.0

### Minor Changes

- 6ae84b0: Hide fiat withdrawal limits when the user's balance is below the payment method limit

### Patch Changes

- a074ecf: feat(connect-core): add connectwalletchainiconorder dynamic config

## 1.6.2

### Patch Changes

- 7636095: Gate Cash App Lightning via dynamic config instead of a hardcoded US check

## 1.6.1

### Patch Changes

- cac2d42: feat(connect-core): add cash app payment method
- 4b8c04b: refactor(connect-core): consolidate Cash App into synthetic FOP
- Updated dependencies [79c92ec]
- Updated dependencies [16cc96f]
- Updated dependencies [4c446f9]
- Updated dependencies [d27111c]
  - @funkit/chains@2.1.3
  - @funkit/api-base@6.0.0

## 1.6.0

### Minor Changes

- 2d5650d: Show the exact withdrawable balance on withdrawal cash methods instead of a rounded-down limit

### Patch Changes

- Updated dependencies [ec71a28]
  - @funkit/chains@2.1.2

## 1.5.0

### Minor Changes

- a395c4c: chore: retire the `faster-notifications` flag now that it is fully rolled out

  The gate is treated as permanently on and every branch collapses to its enabled path:

  - `@funkit/api-base`: `getDirectExecutionsByUserId` always calls `/direct-execution/userId/{userId}/deposit-events`; the `isFasterNotificationsEnabled` field is removed from `GetDirectExecutionsByUserIdRequest`.
  - `@funkit/connect-core`: `RecentDepositsApiQueryParams` drops the `isFasterNotificationsEnabled` field.
  - `@funkit/connect`: deposit notifications always use the faster copy; removes the gate read and the dead Lighter/legacy notification branches.

- c3d2458: Remove the vault deposit feature: dropped `finalizedToken` from `FunkitCheckoutConfig`, `finalizedTokenRate` from `DynamicTargetAssetCandidate`, and all associated UI/quote branches (`isVaultDepositCheckout`, `computeDisplayDestinationToken`). The only consumer (HyperBeat) was removed in March 2026 and no active integrators reference these fields, so this is shipped as `minor` rather than `major`.
- 99812aa: feat(withdrawal): resolve token addresses from config, drop the per-symbol API lookup

  The withdrawal screen no longer resolves token addresses with a `getAssetErc20ByChainAndSymbol` round-trip; the addresses already live in config.

  - `@funkit/connect-core`: `resolveTokenTransferConfig` adds `addressBySymbolByChainId` (`chainId → symbol/alias → original-case address`), preserving casing (checksummed EVM, base58 Solana/Tron).
  - `@funkit/connect`: `WithdrawalContent` reads the destination address from that map and the Lighter Secure source address from a hardcoded map in `LighterWithdrawal.tsx`, pricing both via `useAssetAddressPrice`. Removes all `useAssetSymbolPrice` usage from the withdrawal flow (hooks left for a follow-up cleanup).
  - `@funkit/connect-rn`: test-only fixture update.

### Patch Changes

- ce05191: rename `isTokenAddressEquivalent` → `isEVMAddressEquivalent`

  The helper does a case-insensitive equality check on two EVM addresses; the new name reflects that it compares wallet/contract addresses generally, not just token addresses. **Migration:** replace `isTokenAddressEquivalent(...)` with `isEVMAddressEquivalent(...)` — the signature is unchanged. `@funkit/connect` and `@funkit/connect-core` are call-site updates only (no API change).

- b8a7aaa: feat(connect-core): add feature gate enable-btc-lightning-banner
- 202c15b: Add `USDG` to the `stablecoinsymbols` dynamic-config fallback. `useIsStablecoin` substring-matches against this list, so USDG now displays 1:1 (price forced to `1`) on the quote input / confirmation screens regardless of its live market price. The Statsig source-of-truth config was updated first; this regenerates only the `stablecoinsymbols` fallback entry.
- Updated dependencies [a395c4c]
- Updated dependencies [ce05191]
  - @funkit/api-base@5.2.0
  - @funkit/utils@4.0.0

## 1.4.1

### Patch Changes

- Updated dependencies [394a46c]
  - @funkit/api-base@5.1.0

## 1.4.0

### Minor Changes

- b8c578e: Type and validate Swapped sell order data on receipt; order execution lands in a follow-up

### Patch Changes

- 86d2a31: Fix direct-execution success-screen duration showing ~1s on native paths (e.g. Aave supply) by preferring `lastKnownDepositTimeMs` as the begin time, matching the records dashboard.

## 1.3.0

### Minor Changes

- cd57fba: Foundational types and config for the xStock direct-transfer flow: add the optional `assetClass` field to `DynamicTargetAssetCandidate`, the `enable-rpc-xstock-assets` feature gate, the `getActiveDynamicTargetAsset` / Nado asset-class helpers, and the wSPYx / wQQQx asset logos. Additive only — no behavior change.

### Patch Changes

- bb08629: docs: rewrite the `@funkit/connect-rn` README as a developer guide (architecture, peer dependencies, Expo Go compatibility, local build/test workflow) and repoint the in-code doc comments (`connect-rn`/`connect-core` `index.ts`, `LogTransport`) from the retired `docs/connect-rn-architecture.md` design doc to it. Client/integration usage of the SDK is maintained in Notion. Comment/doc only — no API or behavior changes.
- 23ec218: feat: feature gate updated
- Updated dependencies [fc74160]
- Updated dependencies [639d776]
- Updated dependencies [09452ce]
  - @funkit/api-base@5.0.0

## 1.2.0

### Minor Changes

- f64e821: Add Swapped sell iframe rendering and event handling for fiat withdrawal flow

## 1.1.1

### Patch Changes

- 5d5d4f5: Use Statsig gate `disable-frontend-chainalysis` to skip risk assessment checks.

## 1.1.0

### Minor Changes

- 827fece: Add NADO and Lighter dynamic-routing entries to the generated default configs so the deposit flow can resolve NADO perps/spot and Lighter USDC spot target assets.
- beb3c84: Add the shared `useSwappedDefaultCurrencyQuery` hook to `@funkit/connect-core` and use it in `@funkit/connect-rn` to resolve the Swapped deposit flow's default fiat currency from the user's region instead of hardcoding USD.
- 79f4b01: Add `isTransferChainEnabled` to `@funkit/connect-core` to share the non-EVM deposit-chain gate; `@funkit/connect` delegates to it. No behavior change.
- 79f4b01: Extract `DynamicTargetAssetCandidate` and `TokenInfo` to connect-core (shared between web and RN).
- 79f4b01: Extract the UDA deposit token-list resolver (`resolveTokenTransferConfig` + types + disabled-list helpers) to `@funkit/connect-core` so RN can reuse it; `@funkit/connect` delegates to it. No behavior change.

### Patch Changes

- 389a29d: feat(connect-core): compact-format "Use Cash" payment-method max limits
- 32d1cc6: feat: dynamic target candidates can override the active config's `generateActionsParams` (presence-keyed: omit to inherit, set to override, set to `undefined` to clear)
- Updated dependencies [c90915d]
  - @funkit/chains@2.1.1

## 1.0.0

### Major Changes

- 98c8e0d: Extract the params-shaped recent-deposits/recent-checkouts query hooks and the customer-agnostic checkout-history helpers into `@funkit/connect-core` so React Native can reuse them; `@funkit/connect`'s hooks are now thin context adapters — no web behavior change.

  **BREAKING (`@funkit/connect-core`):** adds `@tanstack/react-query` (`>=5.0.0`) as a required peer dependency — consumers must install it and provide a `QueryClientProvider`. (`@funkit/connect` already ships it.)

### Minor Changes

- b9c7946: Extract the `SwappedProvider` state machine into a shared `useSwappedSession` hook in `@funkit/connect-core` so React Native can reuse it over a WebView transport. `@funkit/connect`'s `SwappedProvider` is now a thin wrapper — no web API or behavior change.

## 0.3.2

### Patch Changes

- 8ddeb8d: Add the `hide-stablecoin-amount-switch` feature gate to the generated Statsig fallback snapshot.

## 0.3.1

### Patch Changes

- 9bad44b: chore(connect-core): add freeusdcbanner dynamic config
- ca267e5: chore(connect-core): update statsig default configs and feature gates
- Updated dependencies [9fef879]
- Updated dependencies [ccc9c1e]
- Updated dependencies [651e2e8]
- Updated dependencies [55b095b]
  - @funkit/api-base@4.5.1
  - @funkit/utils@3.1.0

## 0.3.0

### Minor Changes

- 29f38c1: Move the platform-agnostic `FunLogger` class and the `LogTransport` interface (`LogLevel`, `LogContext`, `LogRecord`, `TrackingConsent`) into `@funkit/connect-core`. `@funkit/connect` keeps the `logger` singleton — constructed by injecting the web-only `DatadogBrowserLogsTransport` (which owns `@datadog/browser-logs`) — and re-exports `FunLogger` so existing `~/utils/funLogger` importers are unchanged. React Native will inject its own Datadog transport into the same `FunLogger`. No public API or behavior change.
- 871af19: Move the Statsig wrapper hooks, `__generated__` fallbacks, and the variant-config resolver into `@funkit/connect-core` so web and React Native share them. `@funkit/connect` keeps re-export façades; no public API or behavior change.
- fcc566b: Move the `SwappedTransport` interface + message contract into `@funkit/connect-core` so web and React Native share the typed Swapped bridge. The DOM-bound `SwappedProvider` / iframe transport stay in `@funkit/connect` and import the contract from core; no public API or behavior change.
- 5b94ae0: Extract the platform-agnostic token-transfer param helpers into `@funkit/connect-core` (thin-core): `getCheckoutTokenTransferParams` (with the Polymarket destination-token override lifted out into an injected `targetAssetOverride` so the builder stays customer-agnostic), the `CheckoutTokenTransferConfig` + `UDAConfig` types, and `getMinTransferValueForChain` + `MinTransferConfig`. The hooks that consume them (`useCheckoutTransferInit`, `useTokenTransfer`, `useUDAParams`) stay in `@funkit/connect` — they read web providers and carry customer/i18n branches — and re-export the moved symbols as façades. Web resolves the Polymarket override via `getPolymarketPerpsTargetAssetOverride` and injects it at both call sites. No public API or behavior change.

### Patch Changes

- Updated dependencies [c11cbb9]
  - @funkit/chains@2.1.0

## 0.2.0

### Minor Changes

- 8c17c3a: Move the domain / status-derivation logic — `checkoutNotifications` (multi-step direct-execution merging + variant filters + diff), the pure half of `domains/swapped` (`FOPS_STALE_TIME`, `sortFops`, `roundFopsLimit`, `getFopsLimit`), the `PaymentMethod` enum, `utils/directExecution`, and `utils/getExchangeRate` — into `@funkit/connect-core`. `@funkit/connect` keeps re-export façades; `validateFops` stays in web until the FunLogger move. No public API or behavior change.
- 0bb4c5f: Move the pure utils (`transfer`, `address`, `swapped` pure half) into `@funkit/connect-core`; `@funkit/connect` keeps re-export façades. No public API or behavior change.

### Patch Changes

- 1d0d838: Scaffold the `@funkit/connect-core` package skeleton — the future home of the headless, platform-agnostic logic shared by `@funkit/connect` (web) and `@funkit/connect-rn` (React Native). No exports yet.
- Updated dependencies [b9acb14]
- Updated dependencies [feb855e]
- Updated dependencies [84050ab]
- Updated dependencies [f1e9ee3]
  - @funkit/chains@2.0.0
  - @funkit/api-base@4.5.0
