Skip to content

Releases: icon-project/sodax-sdks

@sdks@2.2.0-rc.2

@sdks@2.2.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@R0bi7 R0bi7 released this 01 Sep 17:14
51674cc

What's Changed

  • fix: enable money market support for Robinhood Chain by @gcranju in #403
  • refactor(release): replace changesets with a single pnpm release command by @R0bi7 in #407
  • test: typecheck .test files in every package by @0x0603 in #395
  • ci: make live-mainnet e2e an advisory PR check by @R0bi7 in #409
  • ci: merge after #391 - enforce docs updates alongside package source changes by @gosiast in #383
  • docs: move the Mintlify docs site into this repo by @gosiast in #391
  • docs: add an API keys page for the partner portal hand-off by @gosiast in #410
  • feat(sdk,dapp-kit,demo): chain agnostic get asset balance by @0x0603 in #311
  • feat(sdk): add oracle markets, candles reads, dapp-kit hooks, and demo showcase by @R0bi7 in #412
  • ci: re-baseline the SDK tarball size gate and unblock main by @R0bi7 in #414

Full Changelog: https://github.com/icon-project/sodax-sdks/compare/@sdks@2.2.0-rc.1...@sdks@2.2.0-rc.2

@sdks@2.2.0-rc.1

@sdks@2.2.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@R0bi7 R0bi7 released this 24 Aug 19:54
8f321b6

What's Changed

  • fix(types,wallet-sdk-react): replace broken default NEAR RPC URL by @0x0603 in #397
  • chore(deps): bump valibot from 1.4.0 to 1.4.2 by @dependabot[bot] in #312
  • chore(deps): bump react-router from 7.15.1 to 7.18.2 by @dependabot[bot] in #313
  • feat(sdk): add getSwapSpeedTier method to estimate swap settlement speed by @0xmilktea in #280
  • feat(sdk,swaps-api,dapp-kit,types): x-api-key for backend APIs by @R0bi7 in #394
  • feat(ci): detect drift between AI files and the code they describe by @0x0603 in #365

Full Changelog: https://github.com/icon-project/sodax-sdks/compare/@sdks@2.1.0...@sdks@2.2.0-rc.1

@sdks@2.1.0

Choose a tag to compare

@R0bi7 R0bi7 released this 21 Aug 20:08
ef8bc27

Changes 2.1.0

29 PRs. Packages: @sodax/types, @sodax/sdk, @sodax/swaps-api, @sodax/dapp-kit, @sodax/wallet-sdk-core, @sodax/wallet-sdk-react, @sodax/libs, @sodax/skills.

Version note: the accumulated changesets include a major bump (Sui gRPC), so the next stable release off this line is 3.0.0, not 2.1.0. The 2.1.0-rc.* tags are manual RC bumps, not changeset-generated versions.

⚠️ Breaking changes

Sui moved entirely from JSON-RPC to gRPC — [#367](#367)
Sui disabled JSON-RPC on public fullnodes (July 2026) and removes it from sui-node in October 2026.

  • SuiSpokeChainConfig.rpc_urlgrpc_url (default https://fullnode.mainnet.sui.io); rpc_url kept as a deprecated alias, but the endpoint must speak gRPC-web.
  • sodax.spoke.sui.publicClient is no longer a @mysten/sui client — it's a SuiTransport (aliased sodax.spoke.sui.transport); publicClient is deprecated.
  • SuiWalletProvider browser-extension mode is a hard break: { client, wallet, account }{ grpcUrl, address, signTransaction }. No alias.
  • SuiXService.createWalletProvider() removed — read the provider from the store via useWalletProvider({ xChainId: ChainKeys.SUI_MAINNET }).
  • SuiSignAndExecutePolicy.response removed; SodaxWalletConfig.SUI.network drops 'devnet'; SuiCoinStruct.previousTransaction optional; per-bucket object-change fields on SuiTransactionEffects are now always undefined (read changedObjects).
  • @mysten/sui → 2.x, @mysten/wallet-standard → 0.21, @mysten/dapp-kit@mysten/dapp-kit-react.
  • Node engine floor raised across the whole workspace: >=20.12.0>=22.12.0.

useBackendSubmitTx unified and defaulted ON — [#362](#362)

  • Moved onto swaps / bridge config (beside partnerFee); swapsOptions / bridgeOptions and SwapsClientOptions / BridgeClientOptions are deprecated but still honoured.
  • new Sodax() now takes the backend submit-tx path for swap and bridge (with fallback to the client-side relay). Opt out with swaps: { useBackendSubmitTx: false }.
  • timeout is now a per-attempt budget, not end-to-end — total wall-clock can exceed one timeout, including on useBackendSubmitTx: false. Re-check any outer watchdog sized off it.
  • Effective values exposed as sodax.config.swapUseBackendSubmitTx / bridgeUseBackendSubmitTx; the service fields are now getters.

api.baseURL is the gateway root, not /be — [#369](#369)
The packaged default (…/v1/be) nested swaps/bridge routes under /be, so with backend submit-tx on by default swaps silently fell back to the relay and sodax.api.* calls 404'd. Each service now appends its own path below the root. Drop /be from any baseURL you pass — the old value still works via a deprecated compat trim (warns once per construction) scheduled for removal next major. New exports: DEFAULT_API_BASE_URL, BACKEND_API_BASE_PATH, BackendApiConfig, getBasePath().

Leverage-yield vault intents now charge the leverage-yield partner fee — [#366](#366)
createVaultIntent / vaultSwap previously fell back to swaps.partnerFee. Action required if you relied on that: set leverageYield.partnerFee (or the global fee), and re-point vault quotes from sodax.swaps.getQuote to the new sodax.leverageYield.getQuote — otherwise quote and intent disagree and the intent may not fill.

✨ Features

  • Bridge API client — [#261](#261). sodax.api.bridge: typed, validated client for the backend /bridge/* routes (IBridgeApiV2 + DTOs in @sodax/types). BridgeService gains a backend submit-tx path and per-request partnerFee; dapp-kit adds the full useBridgeApi* hook set.
  • Sponsored Stellar account activation — [#335](#335). sodax.sponsoring (activate/check/config) + sodax.api.sponsoring wire client + useStellarAccountActive / useSponsorConfig / useActivateStellarAccount. Adds useStellarGate (sequences account → trustline → XLM affordability), getStellarAccountStatus, classifySponsorError, BackendHttpError / isBackendHttpError, live network base-reserve accounting, and per-operation fee-band validation before the wallet is prompted. IStellarWalletProvider.signTransaction takes an optional { address }. SodaxFeature gains 'sponsoring'; useEstablishTrustline supersedes (deprecated) useRequestTrustline.
  • Flint RWA delivery hook — [#347](#347), [#364](#364). HookKind.FLINT_DEPOSIT requests an ERC-7540 deposit of an intent's USDC output into the Flint USD vault on Ethereum, with the recipient as controller. The deployed FlintDepositHook (0xDf376dE34e9f1474A025Dfe411b7EB5541793C5d) is now registered, activating the kind end to end. encodeDeliveryData now rejects a zero-address recipient for every hook.
  • USDT-class stale-allowance approvals unblocked — [#341](#341), [#379](#379). approve detects behaviourally (simulate + read revert) that a token rejects a non-zero→non-zero allowance change and sends approve(0) first — signed callers may now be prompted twice. For unsigned callers: sodax.swaps.buildApproveTxs / sodax.spoke.buildApproveTxs / sodax.bridge.buildApproveTxs return { approveTx, resetTx? }, and ApproveResponseV2 / BridgeApproveResponseV2 carry resetTx. dapp-kit adds useSwapsApiApproveAndBroadcast and useBridgeApiApproveAndBroadcast, both with an optional onProgress listener reporting { step, phase, index, total, hash?, error? }.
  • Swap status readable from any hash — [#371](#371). sodax.swaps.getDetailedStatus({ srcChainKey, srcTxHash }) + useDetailedStatus. Each read is bounded (getTransactionPackets/SolverApiService.getStatus take an optional timeout; RELAY_REQUEST_TIMEOUT_MS exported), and dependency failures stay retryable rather than counting against the not-delivered budget.
  • getStatus reconciles against the durable backend record — [#371](#371). A solver restart no longer reports a filled intent as NOT_FOUND: getStatus cross-checks the backend intent record and returns SOLVED with the recovered fill_tx_hash. An unreadable record (5xx/transport) returns a failed Result rather than an unverified miss. Adds isFillEvent / FillEvent.
  • sodax.leverageYield.getQuote() and dapp-kit's useLeverageYieldQuote — [#366](#366). LeverageYieldSwapWithdrawParams accepts an optional partnerFee.
  • radfi.signRequest hook — [#322](#322). A stateless RadfiSigner the SDK calls per outbound Bound Exchange request, so a server-side caller can attach x-api-signature without the SDK ever holding the credential.
  • hook?: HookRequestV2 on Swaps API v2 extras — [#364](#364). Wire contract only, on CreateIntentParamsV2 and QuoteRequestV2; backend honouring is deployment-dependent, and getQuote support is unverified from this repo.
  • Bitcoin dust-limit guard — [#261](#261). Native-BTC swap/bridge amounts below the dust limit are rejected up front. BITCOIN_DUST_SATS and isNativeBitcoinToken exported from @sodax/types.
  • Per-attempt timeout budgets for submit-tx — [#362](#362). The backend attempt and the relay fallback each get a full timeout; every backend request is clamped to min(budget left, api.timeout). Adds SwapsApiService.getTimeout().

🐛 Fixes

  • api config resolution dropped flat fields when a slice was present — a baseURL beside swapsApiConfig was silently ignored and clients fell back to the packaged endpoint. Layering is now defaults → flat → baseApiConfigswapsApiConfig.
  • useQuote cached quotes priced with the wrong partner fee — the effective fee is now part of the query key. SwapService.partnerFee / MoneyMarketService.partnerFee became live getters (so they no longer appear in Object.keys(...) / spreads). Exports getSwapQuoteQueryOptions.
  • useStatus polled forever — now stops on SOLVED/FAILED and after 40 consecutive NOT_FOUND reads; an in-flight status resets the streak. Restore old behaviour with queryOptions.refetchInterval: 3000.
  • Bridge partner-fee target on the no-deposit path — [#261](https://github.com/icon-project/sodax-sdk...
Read more

@sdks@2.1.0-rc.9

@sdks@2.1.0-rc.9 Pre-release
Pre-release

Choose a tag to compare

@R0bi7 R0bi7 released this 20 Aug 21:15
09c5ad3

What's Changed

  • feat(types,sdk): register the deployed FlintDepositHook on Ethereum by @AntonAndell in #364

Full Changelog: https://github.com/icon-project/sodax-sdks/compare/@sdks@2.1.0-rc.8...@sdks@2.1.0-rc.9

@sdks@2.1.0-rc.8

@sdks@2.1.0-rc.8 Pre-release
Pre-release

Choose a tag to compare

@R0bi7 R0bi7 released this 20 Aug 20:23
e8cff95

What's Changed

  • feat(types): add Stellar and Hedera spoke tokens by @AntonAndell in #384
  • feat: add Robinhood Chain and tokens by @gcranju in #326
  • feat(sdk,types,dapp-kit): unsigned bridge approvals can clear a stale allowance by @0x0603 in #379
  • fix(demo,types): swap crash guard + promote Robinhood Chain to production by @0x0603 in #393

Full Changelog: https://github.com/icon-project/sodax-sdks/compare/@sdks@2.1.0-rc.7...@sdks@2.1.0-rc.8

@sdks@2.1.0-rc.7

@sdks@2.1.0-rc.7 Pre-release
Pre-release

Choose a tag to compare

@R0bi7 R0bi7 released this 18 Aug 10:29
96a4c4e

What's Changed

  • test(sdk): skip stellar soda vault hub-asset drift by @R0bi7 in #385
  • fix(types): correct EIP-55 checksum casing on 3 EVM token addresses by @R0bi7-sodax-worker in #357
  • docs: add Stellar Sponsoring getting-started guide by @R0bi7 in #386
  • feat(sui)!: move every Sui path from JSON-RPC to gRPC by @0x0603 in #367

New Contributors

Full Changelog: https://github.com/icon-project/sodax-sdks/compare/@sdks@2.1.0-rc.6...@sdks@2.1.0-rc.7

@sdks@2.1.0-rc.6

@sdks@2.1.0-rc.6 Pre-release
Pre-release

Choose a tag to compare

@R0bi7 R0bi7 released this 16 Aug 19:49
d93c62f

What's Changed

  • feat(sdk,dapp-kit): make swap status readable from any hash by @R0bi7 in #371

Full Changelog: https://github.com/icon-project/sodax-sdks/compare/@sdks@2.1.0-rc.5...@sdks@2.1.0-rc.6

@sdks@2.1.0-rc.5

@sdks@2.1.0-rc.5 Pre-release
Pre-release

Choose a tag to compare

@R0bi7 R0bi7 released this 11 Aug 21:14
aff5b28

What's Changed

  • feat(demo,node): remove dev from solver by @gosiast in #363
  • fix(sdk,types): api baseURL is the gateway root, not /be by @R0bi7 in #369
  • docs: state that the Swaps API requires an explicit partnerFee by @gosiast in #361

Full Changelog: https://github.com/icon-project/sodax-sdks/compare/@sdks@2.1.0-rc.4...@sdks@2.1.0-rc.5

@sdks@2.1.0-rc.4

@sdks@2.1.0-rc.4 Pre-release
Pre-release

Choose a tag to compare

@R0bi7 R0bi7 released this 10 Aug 11:18
44116bd

What's Changed

  • fix(types,wallet-sdk-react): replace the dead Sui JSON-RPC default endpoint by @0x0603 in #360
  • feat(sdk,types)!: unify useBackendSubmitTx, default it on by @R0bi7 in #362
  • fix(sdk): use leverage-yield partner fees for vault intents by @R0bi7 in #366

Full Changelog: https://github.com/icon-project/sodax-sdks/compare/@sdks@2.1.0-rc.3...@sdks@2.1.0-rc.4

@sdks@2.1.0-rc.3

@sdks@2.1.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@R0bi7 R0bi7 released this 06 Aug 15:39
401b453

What's Changed

  • fix(demo): make the bridge-api showcase work for Stacks and Bitcoin by @0x0603 in #348
  • fix(sdk): reset a stale allowance before approving USDT-class tokens by @0x0603 in #341
  • feat(types,sdk): add Flint RWA deposit hook kind and payload codec by @AntonAndell in #347
  • docs: capitalize SODAX brand name in prose across audits and user-facing docs by @gosiast in #350

Full Changelog: https://github.com/icon-project/sodax-sdks/compare/@sdks@2.1.0-rc.2...@sdks@2.1.0-rc.3