@sodax/wallet-sdk-core 2.0.0-rc.2 → 2.0.0-rc.21

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.
Files changed (53) hide show
  1. package/README.md +1 -2
  2. package/dist/index.cjs +530 -30
  3. package/dist/index.d.cts +63 -10
  4. package/dist/index.d.ts +63 -10
  5. package/dist/index.mjs +524 -24
  6. package/package.json +21 -15
  7. package/ai-exported/AGENTS.md +0 -139
  8. package/ai-exported/integration/README.md +0 -108
  9. package/ai-exported/integration/ai-rules.md +0 -141
  10. package/ai-exported/integration/architecture.md +0 -212
  11. package/ai-exported/integration/features/README.md +0 -22
  12. package/ai-exported/integration/features/bitcoin.md +0 -103
  13. package/ai-exported/integration/features/evm.md +0 -102
  14. package/ai-exported/integration/features/icon.md +0 -88
  15. package/ai-exported/integration/features/injective.md +0 -92
  16. package/ai-exported/integration/features/near.md +0 -92
  17. package/ai-exported/integration/features/solana.md +0 -104
  18. package/ai-exported/integration/features/stacks.md +0 -91
  19. package/ai-exported/integration/features/stellar.md +0 -95
  20. package/ai-exported/integration/features/sui.md +0 -96
  21. package/ai-exported/integration/quickstart.md +0 -259
  22. package/ai-exported/integration/recipes/README.md +0 -15
  23. package/ai-exported/integration/recipes/bridge-to-sdk.md +0 -145
  24. package/ai-exported/integration/recipes/defaults-and-overrides.md +0 -159
  25. package/ai-exported/integration/recipes/library-exports.md +0 -129
  26. package/ai-exported/integration/recipes/setup-browser-extension.md +0 -137
  27. package/ai-exported/integration/recipes/setup-private-key.md +0 -115
  28. package/ai-exported/integration/recipes/sign-and-broadcast.md +0 -201
  29. package/ai-exported/integration/recipes/testing.md +0 -163
  30. package/ai-exported/integration/reference/README.md +0 -13
  31. package/ai-exported/integration/reference/chain-support.md +0 -65
  32. package/ai-exported/integration/reference/glossary.md +0 -28
  33. package/ai-exported/integration/reference/interfaces.md +0 -131
  34. package/ai-exported/integration/reference/provider-classes.md +0 -54
  35. package/ai-exported/integration/reference/public-api.md +0 -128
  36. package/ai-exported/migration/README.md +0 -84
  37. package/ai-exported/migration/ai-rules.md +0 -139
  38. package/ai-exported/migration/breaking-changes/README.md +0 -14
  39. package/ai-exported/migration/breaking-changes/base-wallet-provider.md +0 -52
  40. package/ai-exported/migration/breaking-changes/defaults-config.md +0 -57
  41. package/ai-exported/migration/breaking-changes/folder-layout.md +0 -99
  42. package/ai-exported/migration/breaking-changes/library-exports.md +0 -58
  43. package/ai-exported/migration/checklist.md +0 -62
  44. package/ai-exported/migration/recipes/README.md +0 -12
  45. package/ai-exported/migration/recipes/adopt-defaults.md +0 -84
  46. package/ai-exported/migration/recipes/adopt-library-exports.md +0 -99
  47. package/ai-exported/migration/reference/README.md +0 -12
  48. package/ai-exported/migration/reference/added-fields.md +0 -71
  49. package/ai-exported/migration/reference/deleted-exports.md +0 -35
  50. package/ai-exported/migration/reference/renamed-symbols.md +0 -31
  51. package/ai-exported/migration/reference/return-shapes.md +0 -23
  52. package/dist/index.cjs.map +0 -1
  53. package/dist/index.mjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -5,16 +5,18 @@ var viem = require('viem');
5
5
  var chains = require('viem/chains');
6
6
  var client = require('@mysten/sui/client');
7
7
  var ed25519$1 = require('@mysten/sui/keypairs/ed25519');
8
- var transactions$1 = require('@mysten/sui/transactions');
8
+ var transactions = require('@mysten/sui/transactions');
9
9
  var walletStandard = require('@mysten/wallet-standard');
10
10
  var IconSdkRaw = require('icon-sdk-js');
11
11
  var sdkTs = require('@injectivelabs/sdk-ts');
12
+ var tx_js = require('cosmjs-types/cosmos/tx/v1beta1/tx.js');
13
+ var tx_js$1 = require('cosmjs-types/cosmwasm/wasm/v1/tx.js');
14
+ var networks = require('@injectivelabs/networks');
12
15
  var splToken = require('@solana/spl-token');
13
16
  var web3_js = require('@solana/web3.js');
14
17
  var stellarSdk = require('@stellar/stellar-sdk');
15
- var network = require('@stacks/network');
16
- var transactions = require('@stacks/transactions');
17
- var connect = require('@stacks/connect');
18
+ var core = require('@sodax/libs/stacks/core');
19
+ var connect = require('@sodax/libs/stacks/connect');
18
20
  var bitcoin = require('bitcoinjs-lib');
19
21
  var ecc = require('@bitcoinerlab/secp256k1');
20
22
  var ecpair = require('ecpair');
@@ -137,7 +139,8 @@ var ChainKeys = {
137
139
  BITCOIN_MAINNET: "bitcoin",
138
140
  REDBELLY_MAINNET: "redbelly",
139
141
  KAIA_MAINNET: "0x2019.kaia",
140
- STACKS_MAINNET: "stacks"
142
+ STACKS_MAINNET: "stacks",
143
+ HEDERA_MAINNET: "hedera"
141
144
  };
142
145
  var CHAIN_KEYS = Object.values(ChainKeys);
143
146
  new Set(CHAIN_KEYS);
@@ -180,6 +183,15 @@ var SodaTokens = {
180
183
  hubAsset: "0x7A1A5555842Ad2D0eD274d09b5c4406a95799D5d",
181
184
  vault: "0x7A1A5555842Ad2D0eD274d09b5c4406a95799D5d"
182
185
  },
186
+ sodaWBTC: {
187
+ symbol: "sodaWBTC",
188
+ name: "Soda Wrapped BTC",
189
+ decimals: 18,
190
+ address: "0x811C3fCc13f9c2a23AE2Ae2DCadacFAC6eb5f0eB",
191
+ chainKey: ChainKeys.SONIC_MAINNET,
192
+ hubAsset: "0x811C3fCc13f9c2a23AE2Ae2DCadacFAC6eb5f0eB",
193
+ vault: "0x811C3fCc13f9c2a23AE2Ae2DCadacFAC6eb5f0eB"
194
+ },
183
195
  sodaSOL: {
184
196
  symbol: "sodaSOL",
185
197
  name: "Soda SOL",
@@ -327,7 +339,7 @@ var SodaTokens = {
327
339
  sodaNEAR: {
328
340
  symbol: "sodaNEAR",
329
341
  name: "SODA NEAR",
330
- decimals: 24,
342
+ decimals: 18,
331
343
  address: "0xf4ba497c9b805e4bd88a8a9e6a7b8f74984c3e39",
332
344
  chainKey: ChainKeys.SONIC_MAINNET,
333
345
  hubAsset: "0xf4ba497c9b805e4bd88a8a9e6a7b8f74984c3e39",
@@ -359,6 +371,53 @@ var SodaTokens = {
359
371
  chainKey: ChainKeys.SONIC_MAINNET,
360
372
  hubAsset: "0x243b0c26c8b38793908d7C64e8510f21B19B4613",
361
373
  vault: "0x243b0c26c8b38793908d7C64e8510f21B19B4613"
374
+ },
375
+ sodaHBAR: {
376
+ symbol: "sodaHBAR",
377
+ name: "Soda HBAR",
378
+ decimals: 18,
379
+ address: "0x3BB956cc8922E1Ba4148dc10eD1b4Fa19aa599c4",
380
+ chainKey: ChainKeys.SONIC_MAINNET,
381
+ hubAsset: "0x3BB956cc8922E1Ba4148dc10eD1b4Fa19aa599c4",
382
+ vault: "0x3BB956cc8922E1Ba4148dc10eD1b4Fa19aa599c4"
383
+ },
384
+ sodaJITOSOL: {
385
+ symbol: "sodaJITOSOL",
386
+ name: "Soda JITOSOL",
387
+ decimals: 18,
388
+ address: "0xe1bad4400d947Bc4fa66f9c0A143D800002083a0",
389
+ chainKey: ChainKeys.SONIC_MAINNET,
390
+ hubAsset: "0xe1bad4400d947Bc4fa66f9c0A143D800002083a0",
391
+ vault: "0xe1bad4400d947Bc4fa66f9c0A143D800002083a0"
392
+ }
393
+ };
394
+ var LsodaTokens = {
395
+ lsodaWEETH: {
396
+ symbol: "lsodaWEETH",
397
+ name: "Leveraged Soda weETH",
398
+ decimals: 18,
399
+ address: "0xD09de2f5070699A909c0FD32fb5A909d3886701D",
400
+ chainKey: ChainKeys.SONIC_MAINNET,
401
+ hubAsset: "0xD09de2f5070699A909c0FD32fb5A909d3886701D",
402
+ vault: "0xD09de2f5070699A909c0FD32fb5A909d3886701D"
403
+ },
404
+ lsodaWSTETH: {
405
+ symbol: "lsodaWSTETH",
406
+ name: "Leveraged Soda wstETH",
407
+ decimals: 18,
408
+ address: "0x136E5D1CEC5db1829E24941Eddd9C8640E02Ce7a",
409
+ chainKey: ChainKeys.SONIC_MAINNET,
410
+ hubAsset: "0x136E5D1CEC5db1829E24941Eddd9C8640E02Ce7a",
411
+ vault: "0x136E5D1CEC5db1829E24941Eddd9C8640E02Ce7a"
412
+ },
413
+ lsodaJITOSOL: {
414
+ symbol: "lsodaJITOSOL",
415
+ name: "Leveraged Soda JITOSOL",
416
+ decimals: 18,
417
+ address: "0xD7Ae4853E0f93682F5DaA14734F5D18cBa09Bd78",
418
+ chainKey: ChainKeys.SONIC_MAINNET,
419
+ hubAsset: "0xD7Ae4853E0f93682F5DaA14734F5D18cBa09Bd78",
420
+ vault: "0xD7Ae4853E0f93682F5DaA14734F5D18cBa09Bd78"
362
421
  }
363
422
  };
364
423
  var sonicSupportedTokens = {
@@ -425,7 +484,8 @@ var sonicSupportedTokens = {
425
484
  hubAsset: "0x7c7d53EEcda37a87ce0D5bf8E0b24512A48dC963",
426
485
  vault: SodaTokens.sodaSODA.address
427
486
  },
428
- ...SodaTokens
487
+ ...SodaTokens,
488
+ ...LsodaTokens
429
489
  };
430
490
  var redbellySupportedTokens = {
431
491
  RBNT: {
@@ -635,7 +695,7 @@ var solanaSupportedTokens = {
635
695
  address: "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",
636
696
  chainKey: ChainKeys.SOLANA_MAINNET,
637
697
  hubAsset: "0x942f89a324d2652e447b9fcf08effc9f9776a680",
638
- vault: "0x942f89a324d2652e447b9fcf08effc9f9776a680"
698
+ vault: SodaTokens.sodaJITOSOL.address
639
699
  },
640
700
  mSOL: {
641
701
  symbol: "mSOL",
@@ -681,6 +741,78 @@ var solanaSupportedTokens = {
681
741
  chainKey: ChainKeys.SOLANA_MAINNET,
682
742
  hubAsset: "0x0076b67235bfc69b649d29dd7cb66e5b92b618aa",
683
743
  vault: "0x0076b67235bfc69b649d29dd7cb66e5b92b618aa"
744
+ },
745
+ CRCLx: {
746
+ symbol: "CRCLx",
747
+ name: "Circle xStock",
748
+ decimals: 8,
749
+ address: "XsueG8BtpquVJX9LVLLEGuViXUungE6WmK5YZ3p3bd1",
750
+ chainKey: ChainKeys.SOLANA_MAINNET,
751
+ hubAsset: "0x64659130a3373b3527146b38fc1fccf017bc0c61",
752
+ vault: "0x64659130a3373b3527146b38fc1fccf017bc0c61"
753
+ },
754
+ TSLAx: {
755
+ symbol: "TSLAx",
756
+ name: "Tesla xStock",
757
+ decimals: 8,
758
+ address: "XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB",
759
+ chainKey: ChainKeys.SOLANA_MAINNET,
760
+ hubAsset: "0x3cc867f6f4d1817b6230b781125301363fce370c",
761
+ vault: "0x3cc867f6f4d1817b6230b781125301363fce370c"
762
+ },
763
+ SPYx: {
764
+ symbol: "SPYx",
765
+ name: "SP500 xStock",
766
+ decimals: 8,
767
+ address: "XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W",
768
+ chainKey: ChainKeys.SOLANA_MAINNET,
769
+ hubAsset: "0xea66dbe82ebcb6c3a55b2db3d722b676be63a26e",
770
+ vault: "0xea66dbe82ebcb6c3a55b2db3d722b676be63a26e"
771
+ },
772
+ NVDAx: {
773
+ symbol: "NVDAx",
774
+ name: "NVIDIA xStock",
775
+ decimals: 8,
776
+ address: "Xsc9qvGR1efVDFGLrVsmkzv3qi45LTBjeUKSPmx9qEh",
777
+ chainKey: ChainKeys.SOLANA_MAINNET,
778
+ hubAsset: "0x48303c90f4136bc3101b308c8b50c55745aaf317",
779
+ vault: "0x48303c90f4136bc3101b308c8b50c55745aaf317"
780
+ },
781
+ QQQx: {
782
+ symbol: "QQQx",
783
+ name: "Nasdaq xStock",
784
+ decimals: 8,
785
+ address: "Xs8S1uUs1zvS2p7iwtsG3b6fkhpvmwz4GYU3gWAmWHZ",
786
+ chainKey: ChainKeys.SOLANA_MAINNET,
787
+ hubAsset: "0x4448b894740198ab76c83c8850d73f7dc8e4b9b3",
788
+ vault: "0x4448b894740198ab76c83c8850d73f7dc8e4b9b3"
789
+ },
790
+ MSTRx: {
791
+ symbol: "MSTRx",
792
+ name: "MicroStrategy xStock",
793
+ decimals: 8,
794
+ address: "XsP7xzNPvEHS1m6qfanPUGjNmdnmsLKEoNAnHjdxxyZ",
795
+ chainKey: ChainKeys.SOLANA_MAINNET,
796
+ hubAsset: "0xc46c34961802355c5223a115568fdf18a51ad6f6",
797
+ vault: "0xc46c34961802355c5223a115568fdf18a51ad6f6"
798
+ },
799
+ COINx: {
800
+ symbol: "COINx",
801
+ name: "Coinbase xStock",
802
+ decimals: 8,
803
+ address: "Xs7ZdzSHLU9ftNJsii5fCeJhoRWSC32SQGzGQtePxNu",
804
+ chainKey: ChainKeys.SOLANA_MAINNET,
805
+ hubAsset: "0xf444586e95166da0754052f03f344cf1152abe7d",
806
+ vault: "0xf444586e95166da0754052f03f344cf1152abe7d"
807
+ },
808
+ GOOGLx: {
809
+ symbol: "GOOGLx",
810
+ name: "Alphabet xStock",
811
+ decimals: 8,
812
+ address: "XsCPL9dNWBMvFtTmwcCA5v3xWPSMEBCszbQdiLLq6aN",
813
+ chainKey: ChainKeys.SOLANA_MAINNET,
814
+ hubAsset: "0x024230dd63b27df90d988d6f37a69d4de627ce89",
815
+ vault: "0x024230dd63b27df90d988d6f37a69d4de627ce89"
684
816
  }
685
817
  };
686
818
  var avalancheSupportedTokens = {
@@ -783,7 +915,8 @@ var arbitrumSupportedTokens = {
783
915
  address: "0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40",
784
916
  chainKey: ChainKeys.ARBITRUM_MAINNET,
785
917
  hubAsset: "0x96Fc8540736f1598b7E235e6dE8814062b3b5d3B",
786
- vault: SodaTokens.sodaBTC.address
918
+ vault: SodaTokens.sodaBTC.address,
919
+ access: "withdrawOnly"
787
920
  },
788
921
  WBTC: {
789
922
  symbol: "WBTC",
@@ -792,7 +925,17 @@ var arbitrumSupportedTokens = {
792
925
  address: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",
793
926
  chainKey: ChainKeys.ARBITRUM_MAINNET,
794
927
  hubAsset: "0xfB0ACB1b2720B620935F50a6dd3F7FEA52b2FCBe",
795
- vault: SodaTokens.sodaBTC.address
928
+ vault: SodaTokens.sodaWBTC.address
929
+ },
930
+ WBTC_LEGACY: {
931
+ symbol: "WBTC.legacy",
932
+ name: "Wrapped BTC (Legacy)",
933
+ decimals: 8,
934
+ address: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",
935
+ chainKey: ChainKeys.ARBITRUM_MAINNET,
936
+ hubAsset: "0xfB0ACB1b2720B620935F50a6dd3F7FEA52b2FCBe",
937
+ vault: SodaTokens.sodaBTC.address,
938
+ access: "withdrawOnly"
796
939
  },
797
940
  USDC: {
798
941
  symbol: "USDC",
@@ -947,7 +1090,8 @@ var baseSupportedTokens = {
947
1090
  address: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
948
1091
  chainKey: ChainKeys.BASE_MAINNET,
949
1092
  hubAsset: "0x2803a23a3BA6b09e57D1c71deC0D9eFdBB00A27F",
950
- vault: SodaTokens.sodaBTC.address
1093
+ vault: SodaTokens.sodaBTC.address,
1094
+ access: "withdrawOnly"
951
1095
  },
952
1096
  SODA: {
953
1097
  symbol: "SODA",
@@ -984,6 +1128,15 @@ var baseSupportedTokens = {
984
1128
  chainKey: ChainKeys.BASE_MAINNET,
985
1129
  hubAsset: "0xaa81bb5ba3c972ab53605d3ba7e443a3de6d1cb9",
986
1130
  vault: "0xaa81bb5ba3c972ab53605d3ba7e443a3de6d1cb9"
1131
+ },
1132
+ AERO: {
1133
+ symbol: "AERO",
1134
+ name: "Aerodrome Finance",
1135
+ decimals: 18,
1136
+ address: "0x940181a94A35A4569e4529A3CDfB74e38FD98631",
1137
+ chainKey: ChainKeys.BASE_MAINNET,
1138
+ hubAsset: "0x348e086ab6f424dfc575a325c28624ed23973173",
1139
+ vault: "0x348e086ab6f424dfc575a325c28624ed23973173"
987
1140
  }
988
1141
  };
989
1142
  var optimismSupportedTokens = {
@@ -1666,6 +1819,33 @@ var stellarSupportedTokens = {
1666
1819
  chainKey: ChainKeys.STELLAR_MAINNET,
1667
1820
  hubAsset: "0xD749B5FfFED7cEDaa3239abDd16D677179C29AEc",
1668
1821
  vault: SodaTokens.sodaSODA.address
1822
+ },
1823
+ sodaETH: {
1824
+ symbol: "sodaETH",
1825
+ name: "Soda ETH",
1826
+ decimals: 7,
1827
+ address: "CDK5EWVTZLGSLI6D5OSES7XUKWZUKBXDRNOWUVDNPP5RJRP5EYWCW7SL",
1828
+ chainKey: ChainKeys.STELLAR_MAINNET,
1829
+ hubAsset: "0x4985a4b72ac723723e9ae82382d12d77e9a715de",
1830
+ vault: SodaTokens.sodaETH.address
1831
+ },
1832
+ sodaBTC: {
1833
+ symbol: "sodaBTC",
1834
+ name: "Soda BTC",
1835
+ decimals: 7,
1836
+ address: "CD6XWBW74YVFDQQYUM2GALCULMA5MAWGP6NTCWF3ZYXP4Z7MEVY4JKBX",
1837
+ chainKey: ChainKeys.STELLAR_MAINNET,
1838
+ hubAsset: "0xddee01f63c18843e2bac30cb702864d7632c83a2",
1839
+ vault: SodaTokens.sodaBTC.address
1840
+ },
1841
+ sodaBNB: {
1842
+ symbol: "sodaBNB",
1843
+ name: "Soda BNB",
1844
+ decimals: 7,
1845
+ address: "CCXTXZAFLVNTMORVWYB6BGL7YEW3U3ONDAL2FGBRGDUQH7AGANVQPRS6",
1846
+ chainKey: ChainKeys.STELLAR_MAINNET,
1847
+ hubAsset: "0xa10be5f5c2dea7d272555dc73ea2a7317c3c5b63",
1848
+ vault: SodaTokens.sodaBNB.address
1669
1849
  }
1670
1850
  };
1671
1851
  var suiSupportedTokens = {
@@ -1990,7 +2170,17 @@ var ethereumSupportedTokens = {
1990
2170
  address: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
1991
2171
  chainKey: ChainKeys.ETHEREUM_MAINNET,
1992
2172
  hubAsset: "0x4ccbe4c2cf2aeed19314790622efd71dc0b67acb",
1993
- vault: SodaTokens.sodaBTC.address
2173
+ vault: SodaTokens.sodaWBTC.address
2174
+ },
2175
+ WBTC_LEGACY: {
2176
+ symbol: "WBTC.legacy",
2177
+ name: "Wrapped Bitcoin (Legacy)",
2178
+ decimals: 8,
2179
+ address: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
2180
+ chainKey: ChainKeys.ETHEREUM_MAINNET,
2181
+ hubAsset: "0x4ccbe4c2cf2aeed19314790622efd71dc0b67acb",
2182
+ vault: SodaTokens.sodaBTC.address,
2183
+ access: "withdrawOnly"
1994
2184
  },
1995
2185
  sUSDat: {
1996
2186
  symbol: "sUSDat",
@@ -2175,6 +2365,44 @@ var kaiaSupportedTokens = {
2175
2365
  vault: SodaTokens.sodaSODA.address
2176
2366
  }
2177
2367
  };
2368
+ var hederaSupportedTokens = {
2369
+ HBAR: {
2370
+ symbol: "HBAR",
2371
+ name: "HBAR",
2372
+ decimals: 8,
2373
+ address: "0x0000000000000000000000000000000000000000",
2374
+ chainKey: ChainKeys.HEDERA_MAINNET,
2375
+ hubAsset: "0x5c18c543b6B6EA97dE739F48C49CfC291B3AD465",
2376
+ vault: SodaTokens.sodaHBAR.address
2377
+ },
2378
+ bnUSD: {
2379
+ symbol: "bnUSD",
2380
+ name: "bnUSD",
2381
+ decimals: 8,
2382
+ address: "0x0000000000000000000000000000000000a0286a",
2383
+ chainKey: ChainKeys.HEDERA_MAINNET,
2384
+ hubAsset: "0x44be1984cd279334a630469fa357305c7dba2837",
2385
+ vault: SodaTokens.bnUSD.address
2386
+ },
2387
+ SODA: {
2388
+ symbol: "SODA",
2389
+ name: "SODAX",
2390
+ decimals: 8,
2391
+ address: "0x0000000000000000000000000000000000a02869",
2392
+ chainKey: ChainKeys.HEDERA_MAINNET,
2393
+ hubAsset: "0x1217721376839dbffe78093ddd5d8e50d0239b3f",
2394
+ vault: SodaTokens.sodaSODA.address
2395
+ },
2396
+ USDC: {
2397
+ symbol: "USDC",
2398
+ name: "USD Coin",
2399
+ decimals: 6,
2400
+ address: "0x000000000000000000000000000000000006f89a",
2401
+ chainKey: ChainKeys.HEDERA_MAINNET,
2402
+ hubAsset: "0xafafae0c1476424c4b81f09095bd7dcb858047c8",
2403
+ vault: SodaTokens.sodaUSDC.address
2404
+ }
2405
+ };
2178
2406
  var stacksSupportedTokens = {
2179
2407
  STX: {
2180
2408
  symbol: "STX",
@@ -2244,9 +2472,12 @@ var RelayChainIdMap = {
2244
2472
  [ChainKeys.BITCOIN_MAINNET]: 627463n,
2245
2473
  [ChainKeys.REDBELLY_MAINNET]: 726564n,
2246
2474
  [ChainKeys.KAIA_MAINNET]: 27489n,
2247
- [ChainKeys.STACKS_MAINNET]: 60n
2475
+ [ChainKeys.STACKS_MAINNET]: 60n,
2476
+ [ChainKeys.HEDERA_MAINNET]: 18501n
2248
2477
  };
2249
- Object.fromEntries(Object.entries(RelayChainIdMap).map(([chainKey, chainId]) => [chainId, chainKey]));
2478
+ new Map(Object.entries(RelayChainIdMap).map(([chainKey, chainId]) => [chainId, chainKey]));
2479
+ var CHAIN_LOGO_BASE_URL = "https://raw.githubusercontent.com/icon-project/sodax-sdks/main/packages/assets/chain";
2480
+ var chainLogo = (key) => `${CHAIN_LOGO_BASE_URL}/${key}.png`;
2250
2481
  var baseChainInfo = {
2251
2482
  [ChainKeys.SONIC_MAINNET]: {
2252
2483
  name: "Sonic",
@@ -2254,6 +2485,7 @@ var baseChainInfo = {
2254
2485
  type: "EVM",
2255
2486
  chainId: 146,
2256
2487
  mainnet: true,
2488
+ logo: chainLogo(ChainKeys.SONIC_MAINNET),
2257
2489
  explorer: {
2258
2490
  baseUrl: "https://sonicscan.org/",
2259
2491
  txUrl: "https://sonicscan.org/tx/",
@@ -2267,6 +2499,7 @@ var baseChainInfo = {
2267
2499
  type: "SOLANA",
2268
2500
  chainId: "solana",
2269
2501
  mainnet: true,
2502
+ logo: chainLogo(ChainKeys.SOLANA_MAINNET),
2270
2503
  explorer: {
2271
2504
  baseUrl: "https://solscan.io/",
2272
2505
  txUrl: "https://solscan.io/tx/",
@@ -2280,6 +2513,7 @@ var baseChainInfo = {
2280
2513
  type: "EVM",
2281
2514
  chainId: 43114,
2282
2515
  mainnet: true,
2516
+ logo: chainLogo(ChainKeys.AVALANCHE_MAINNET),
2283
2517
  explorer: {
2284
2518
  baseUrl: "https://snowtrace.io/",
2285
2519
  txUrl: "https://snowtrace.io/tx/",
@@ -2293,6 +2527,7 @@ var baseChainInfo = {
2293
2527
  type: "EVM",
2294
2528
  chainId: 42161,
2295
2529
  mainnet: true,
2530
+ logo: chainLogo(ChainKeys.ARBITRUM_MAINNET),
2296
2531
  explorer: {
2297
2532
  baseUrl: "https://arbiscan.io/",
2298
2533
  txUrl: "https://arbiscan.io/tx/",
@@ -2306,6 +2541,7 @@ var baseChainInfo = {
2306
2541
  type: "EVM",
2307
2542
  chainId: 8453,
2308
2543
  mainnet: true,
2544
+ logo: chainLogo(ChainKeys.BASE_MAINNET),
2309
2545
  explorer: {
2310
2546
  baseUrl: "https://basescan.org/",
2311
2547
  txUrl: "https://basescan.org/tx/",
@@ -2319,6 +2555,7 @@ var baseChainInfo = {
2319
2555
  type: "EVM",
2320
2556
  chainId: 10,
2321
2557
  mainnet: true,
2558
+ logo: chainLogo(ChainKeys.OPTIMISM_MAINNET),
2322
2559
  explorer: {
2323
2560
  baseUrl: "https://optimistic.etherscan.io/",
2324
2561
  txUrl: "https://optimistic.etherscan.io/tx/",
@@ -2332,6 +2569,7 @@ var baseChainInfo = {
2332
2569
  type: "EVM",
2333
2570
  chainId: 56,
2334
2571
  mainnet: true,
2572
+ logo: chainLogo(ChainKeys.BSC_MAINNET),
2335
2573
  explorer: {
2336
2574
  baseUrl: "https://bscscan.com/",
2337
2575
  txUrl: "https://bscscan.com/tx/",
@@ -2345,6 +2583,7 @@ var baseChainInfo = {
2345
2583
  type: "EVM",
2346
2584
  chainId: 137,
2347
2585
  mainnet: true,
2586
+ logo: chainLogo(ChainKeys.POLYGON_MAINNET),
2348
2587
  explorer: {
2349
2588
  baseUrl: "https://polygonscan.com/",
2350
2589
  txUrl: "https://polygonscan.com/tx/",
@@ -2358,6 +2597,7 @@ var baseChainInfo = {
2358
2597
  type: "EVM",
2359
2598
  chainId: 999,
2360
2599
  mainnet: true,
2600
+ logo: chainLogo(ChainKeys.HYPEREVM_MAINNET),
2361
2601
  explorer: {
2362
2602
  baseUrl: "https://hyperevmscan.io/",
2363
2603
  txUrl: "https://hyperevmscan.io/tx/",
@@ -2371,6 +2611,7 @@ var baseChainInfo = {
2371
2611
  type: "EVM",
2372
2612
  chainId: 1890,
2373
2613
  mainnet: true,
2614
+ logo: chainLogo(ChainKeys.LIGHTLINK_MAINNET),
2374
2615
  explorer: {
2375
2616
  baseUrl: "https://phoenix.lightlink.io/",
2376
2617
  txUrl: "https://phoenix.lightlink.io/tx/",
@@ -2384,6 +2625,7 @@ var baseChainInfo = {
2384
2625
  type: "INJECTIVE",
2385
2626
  chainId: "injective-1",
2386
2627
  mainnet: true,
2628
+ logo: chainLogo(ChainKeys.INJECTIVE_MAINNET),
2387
2629
  explorer: {
2388
2630
  baseUrl: "https://www.mintscan.io/injective/",
2389
2631
  txUrl: "https://www.mintscan.io/injective/tx/",
@@ -2397,6 +2639,7 @@ var baseChainInfo = {
2397
2639
  type: "STELLAR",
2398
2640
  chainId: "stellar",
2399
2641
  mainnet: true,
2642
+ logo: chainLogo(ChainKeys.STELLAR_MAINNET),
2400
2643
  explorer: {
2401
2644
  baseUrl: "https://stellar.expert/explorer/public/",
2402
2645
  txUrl: "https://stellar.expert/explorer/public/tx/",
@@ -2410,6 +2653,7 @@ var baseChainInfo = {
2410
2653
  type: "SUI",
2411
2654
  chainId: "sui",
2412
2655
  mainnet: true,
2656
+ logo: chainLogo(ChainKeys.SUI_MAINNET),
2413
2657
  explorer: {
2414
2658
  baseUrl: "https://suivision.xyz/",
2415
2659
  txUrl: "https://suivision.xyz/txblock/",
@@ -2423,6 +2667,7 @@ var baseChainInfo = {
2423
2667
  type: "ICON",
2424
2668
  chainId: "0x1.icon",
2425
2669
  mainnet: true,
2670
+ logo: chainLogo(ChainKeys.ICON_MAINNET),
2426
2671
  explorer: {
2427
2672
  baseUrl: "https://tracker.icon.community/",
2428
2673
  txUrl: "https://tracker.icon.community/transaction/",
@@ -2436,6 +2681,7 @@ var baseChainInfo = {
2436
2681
  type: "NEAR",
2437
2682
  chainId: "near",
2438
2683
  mainnet: true,
2684
+ logo: chainLogo(ChainKeys.NEAR_MAINNET),
2439
2685
  explorer: {
2440
2686
  baseUrl: "https://nearblocks.io/",
2441
2687
  txUrl: "https://nearblocks.io/txns/",
@@ -2449,6 +2695,7 @@ var baseChainInfo = {
2449
2695
  type: "EVM",
2450
2696
  chainId: 1,
2451
2697
  mainnet: true,
2698
+ logo: chainLogo(ChainKeys.ETHEREUM_MAINNET),
2452
2699
  explorer: {
2453
2700
  baseUrl: "https://etherscan.io/",
2454
2701
  txUrl: "https://etherscan.io/tx/",
@@ -2462,6 +2709,7 @@ var baseChainInfo = {
2462
2709
  type: "BITCOIN",
2463
2710
  chainId: "bitcoin",
2464
2711
  mainnet: true,
2712
+ logo: chainLogo(ChainKeys.BITCOIN_MAINNET),
2465
2713
  explorer: {
2466
2714
  baseUrl: "https://mempool.space/",
2467
2715
  txUrl: "https://mempool.space/tx/",
@@ -2475,6 +2723,7 @@ var baseChainInfo = {
2475
2723
  type: "EVM",
2476
2724
  chainId: 151,
2477
2725
  mainnet: true,
2726
+ logo: chainLogo(ChainKeys.REDBELLY_MAINNET),
2478
2727
  explorer: {
2479
2728
  baseUrl: "https://redbelly.routescan.io/",
2480
2729
  txUrl: "https://redbelly.routescan.io/tx/",
@@ -2488,6 +2737,7 @@ var baseChainInfo = {
2488
2737
  type: "EVM",
2489
2738
  chainId: 8217,
2490
2739
  mainnet: true,
2740
+ logo: chainLogo(ChainKeys.KAIA_MAINNET),
2491
2741
  explorer: {
2492
2742
  baseUrl: "https://klaytnfinder.io/",
2493
2743
  txUrl: "https://klaytnfinder.io/tx/",
@@ -2501,12 +2751,27 @@ var baseChainInfo = {
2501
2751
  type: "STACKS",
2502
2752
  chainId: "stacks",
2503
2753
  mainnet: true,
2754
+ logo: chainLogo(ChainKeys.STACKS_MAINNET),
2504
2755
  explorer: {
2505
2756
  baseUrl: "https://explorer.hiro.so/",
2506
2757
  txUrl: "https://explorer.hiro.so/txid/",
2507
2758
  addressUrl: "https://explorer.hiro.so/address/",
2508
2759
  contractUrl: "https://explorer.hiro.so/txid/"
2509
2760
  }
2761
+ },
2762
+ [ChainKeys.HEDERA_MAINNET]: {
2763
+ name: "Hedera",
2764
+ key: ChainKeys.HEDERA_MAINNET,
2765
+ type: "EVM",
2766
+ chainId: 295,
2767
+ mainnet: true,
2768
+ logo: chainLogo(ChainKeys.HEDERA_MAINNET),
2769
+ explorer: {
2770
+ baseUrl: "https://hashscan.io/mainnet/",
2771
+ txUrl: "https://hashscan.io/mainnet/transaction/",
2772
+ addressUrl: "https://hashscan.io/mainnet/account/",
2773
+ contractUrl: "https://hashscan.io/mainnet/contract/"
2774
+ }
2510
2775
  }
2511
2776
  };
2512
2777
  var filterChainKeysByType = (type) => CHAIN_KEYS.filter((key) => baseChainInfo[key].type === type);
@@ -2737,9 +3002,9 @@ var spokeChainConfig = {
2737
3002
  supportedTokens: bitcoinSupportedTokens,
2738
3003
  radfi: {
2739
3004
  walletMode: "TRADING",
2740
- apiUrl: "https://api.radfi.co/api",
3005
+ apiUrl: "https://api.bound.exchange/api",
2741
3006
  apiKey: "",
2742
- umsUrl: "https://ums.radfi.co/api",
3007
+ umsUrl: "https://api.ums.bound.exchange/api",
2743
3008
  accessToken: "",
2744
3009
  refreshToken: ""
2745
3010
  },
@@ -2772,6 +3037,21 @@ var spokeChainConfig = {
2772
3037
  assetCode: "SODA",
2773
3038
  contractId: "CAH5LKJC2ZB4RVUVEVL2QWJWNJLHQE2UF767ILLQ5EQ4O3OURR2XIUGM",
2774
3039
  assetIssuer: "GDYUTHY75A7WUZJQDPOP66FB32BOYGZRXHWTWO4Q6LQTANT5X3V5HNFA"
3040
+ },
3041
+ {
3042
+ assetCode: "sodaETH",
3043
+ contractId: "CDK5EWVTZLGSLI6D5OSES7XUKWZUKBXDRNOWUVDNPP5RJRP5EYWCW7SL",
3044
+ assetIssuer: "GDYUTHY75A7WUZJQDPOP66FB32BOYGZRXHWTWO4Q6LQTANT5X3V5HNFA"
3045
+ },
3046
+ {
3047
+ assetCode: "sodaBTC",
3048
+ contractId: "CD6XWBW74YVFDQQYUM2GALCULMA5MAWGP6NTCWF3ZYXP4Z7MEVY4JKBX",
3049
+ assetIssuer: "GDYUTHY75A7WUZJQDPOP66FB32BOYGZRXHWTWO4Q6LQTANT5X3V5HNFA"
3050
+ },
3051
+ {
3052
+ assetCode: "sodaBNB",
3053
+ contractId: "CCXTXZAFLVNTMORVWYB6BGL7YEW3U3ONDAL2FGBRGDUQH7AGANVQPRS6",
3054
+ assetIssuer: "GDYUTHY75A7WUZJQDPOP66FB32BOYGZRXHWTWO4Q6LQTANT5X3V5HNFA"
2775
3055
  }
2776
3056
  ],
2777
3057
  supportedTokens: stellarSupportedTokens,
@@ -2887,6 +3167,21 @@ var spokeChainConfig = {
2887
3167
  pollingIntervalMs: 1e4,
2888
3168
  maxTimeoutMs: 12e4
2889
3169
  }
3170
+ },
3171
+ [ChainKeys.HEDERA_MAINNET]: {
3172
+ chain: baseChainInfo[ChainKeys.HEDERA_MAINNET],
3173
+ rpcUrl: "https://mainnet.hashio.io/api",
3174
+ addresses: {
3175
+ assetManager: "0x0df73542cC68bDC01b361d231c60F726B0e0bC05",
3176
+ connection: "0x4555aC13D7338D9E671584C1D118c06B2a3C88eD"
3177
+ },
3178
+ nativeToken: "0x0000000000000000000000000000000000000000",
3179
+ bnUSD: "0x0000000000000000000000000000000000a0286a",
3180
+ supportedTokens: hederaSupportedTokens,
3181
+ pollingConfig: {
3182
+ pollingIntervalMs: 2e3,
3183
+ maxTimeoutMs: 6e4
3184
+ }
2890
3185
  }
2891
3186
  };
2892
3187
  CHAIN_KEYS.filter((chainId) => chainId !== ChainKeys.ICON_MAINNET);
@@ -2918,10 +3213,57 @@ var hubConfig = {
2918
3213
  spokeChainConfig[ChainKeys.SONIC_MAINNET].supportedTokens.USDT,
2919
3214
  spokeChainConfig[ChainKeys.SONIC_MAINNET].supportedTokens.wS,
2920
3215
  spokeChainConfig[ChainKeys.SONIC_MAINNET].supportedTokens.SODA,
2921
- spokeChainConfig[ChainKeys.SONIC_MAINNET].supportedTokens.bnUSD,
2922
- ...Object.values(SodaTokens)
3216
+ // sodaUSDS is staging-only — see stagingSwapSupportedTokens
3217
+ ...Object.values(SodaTokens).filter((t) => t !== SodaTokens.sodaUSDS),
3218
+ ...Object.values(LsodaTokens)
2923
3219
  ]});
2924
3220
 
3221
+ // ../types/dist/leverageYield/leverageYield.js
3222
+ [
3223
+ {
3224
+ name: LsodaTokens.lsodaWEETH.symbol,
3225
+ vault: LsodaTokens.lsodaWEETH.vault,
3226
+ asset: SodaTokens.sodaWEETH.address,
3227
+ // sodaWEETH on Sonic
3228
+ borrowToken: SodaTokens.sodaETH.address,
3229
+ // sodaETH on Sonic
3230
+ lsdSource: {
3231
+ // DefiLlama pool for EtherFi's weETH on Ethereum (project: 'ether.fi-stake').
3232
+ poolId: "46bd2bdf-6d92-4066-b482-e885ee172264",
3233
+ fallbackAprPct: 3,
3234
+ label: "EtherFi (weETH)"
3235
+ }
3236
+ },
3237
+ {
3238
+ name: LsodaTokens.lsodaWSTETH.symbol,
3239
+ vault: LsodaTokens.lsodaWSTETH.vault,
3240
+ asset: SodaTokens.sodaWSTETH.address,
3241
+ // sodaWSTETH on Sonic
3242
+ borrowToken: SodaTokens.sodaETH.address,
3243
+ // sodaETH on Sonic
3244
+ lsdSource: {
3245
+ // DefiLlama pool for Lido's stETH on Ethereum (wstETH inherits this rate via redeem).
3246
+ poolId: "747c1d2a-c668-4682-b9f9-296708a3dd90",
3247
+ fallbackAprPct: 2.4,
3248
+ label: "Lido (stETH)"
3249
+ }
3250
+ },
3251
+ {
3252
+ name: LsodaTokens.lsodaJITOSOL.symbol,
3253
+ vault: LsodaTokens.lsodaJITOSOL.vault,
3254
+ asset: SodaTokens.sodaJITOSOL.address,
3255
+ // sodaJITOSOL on Sonic
3256
+ borrowToken: SodaTokens.sodaSOL.address,
3257
+ // sodaSOL on Sonic
3258
+ lsdSource: {
3259
+ // DefiLlama pool for Jito's JitoSOL native staking on Solana (project: 'jito-liquid-staking').
3260
+ poolId: "0e7d0722-9054-4907-8593-567b353c0900",
3261
+ fallbackAprPct: 5.5,
3262
+ label: "Jito (JitoSOL)"
3263
+ }
3264
+ }
3265
+ ];
3266
+
2925
3267
  // ../types/dist/bitcoin/bitcoin.js
2926
3268
  function detectBitcoinAddressType(address) {
2927
3269
  if (address.startsWith("bc1p") || address.startsWith("tb1p"))
@@ -2977,6 +3319,8 @@ function getEvmViemChain(key) {
2977
3319
  return chains.redbellyMainnet;
2978
3320
  case ChainKeys.KAIA_MAINNET:
2979
3321
  return chains.kaia;
3322
+ case ChainKeys.HEDERA_MAINNET:
3323
+ return chains.hedera;
2980
3324
  default: {
2981
3325
  const exhaustiveCheck = key;
2982
3326
  console.log(exhaustiveCheck);
@@ -3076,8 +3420,8 @@ function isBrowserExtensionSuiWallet(wallet) {
3076
3420
  return "wallet" in wallet && "account" in wallet;
3077
3421
  }
3078
3422
  async function toMystenTransaction(txn) {
3079
- if (txn instanceof transactions$1.Transaction) return txn;
3080
- return transactions$1.Transaction.from(await txn.toJSON());
3423
+ if (txn instanceof transactions.Transaction) return txn;
3424
+ return transactions.Transaction.from(await txn.toJSON());
3081
3425
  }
3082
3426
  var SuiWalletProvider = class extends BaseWalletProvider {
3083
3427
  chainType = "SUI";
@@ -3350,13 +3694,32 @@ function txResponseToExecuteResponse(txResult) {
3350
3694
  transactionHash: txResult.txHash
3351
3695
  };
3352
3696
  }
3697
+ var COSMWASM_MSG_EXECUTE_CONTRACT_TYPE_URL = "/cosmwasm.wasm.v1.MsgExecuteContract";
3698
+ function decodeInjectiveExecuteMsgs(bodyBytes) {
3699
+ const { messages } = tx_js.TxBody.decode(bodyBytes);
3700
+ return messages.map((message) => {
3701
+ if (message.typeUrl !== COSMWASM_MSG_EXECUTE_CONTRACT_TYPE_URL) {
3702
+ throw new Error(`Injective: cannot rebuild message type ${message.typeUrl} for browser signing.`);
3703
+ }
3704
+ const { sender, contract, msg, funds } = tx_js$1.MsgExecuteContract.decode(message.value);
3705
+ return sdkTs.MsgExecuteContractCompat.fromJSON({
3706
+ contractAddress: contract,
3707
+ sender,
3708
+ msg: JSON.parse(Buffer.from(msg).toString("utf8")),
3709
+ funds: funds.map((coin) => ({ denom: coin.denom, amount: coin.amount }))
3710
+ });
3711
+ });
3712
+ }
3353
3713
  var InjectiveWalletProvider = class extends BaseWalletProvider {
3354
3714
  chainType = "INJECTIVE";
3355
3715
  wallet;
3716
+ /** Network endpoints used to broadcast a signed `TxRaw` via {@link sendTransaction}. */
3717
+ endpoints;
3356
3718
  constructor(config) {
3357
3719
  super(config.defaults);
3358
3720
  if (isBrowserExtensionInjectiveWalletConfig(config)) {
3359
3721
  this.wallet = { msgBroadcaster: config.msgBroadcaster };
3722
+ this.endpoints = config.msgBroadcaster.endpoints;
3360
3723
  return;
3361
3724
  }
3362
3725
  if (isSecretInjectiveWalletConfig(config)) {
@@ -3369,6 +3732,7 @@ var InjectiveWalletProvider = class extends BaseWalletProvider {
3369
3732
  throw new Error("Invalid Secret Injective wallet config");
3370
3733
  }
3371
3734
  this.wallet = { msgBroadcaster: new sdkTs.MsgBroadcasterWithPk({ privateKey, network: config.network }) };
3735
+ this.endpoints = networks.getNetworkEndpoints(config.network);
3372
3736
  return;
3373
3737
  }
3374
3738
  throw new Error("Invalid Injective wallet config");
@@ -3461,6 +3825,53 @@ var InjectiveWalletProvider = class extends BaseWalletProvider {
3461
3825
  }
3462
3826
  return txResponseToExecuteResponse(txResult);
3463
3827
  }
3828
+ /**
3829
+ * Broadcasts an already-signed, proto-encoded Cosmos `TxRaw` via the configured gRPC endpoint.
3830
+ * @param signedTxRaw - The signed transaction, encoded with `TxRaw.encode(...).finish()`.
3831
+ * @returns The transaction hash.
3832
+ * @throws {Error} if the node rejects the transaction (non-zero result code).
3833
+ */
3834
+ async sendTransaction(signedTxRaw) {
3835
+ const txRaw = tx_js.TxRaw.decode(signedTxRaw);
3836
+ const res = await new sdkTs.TxGrpcApi(this.endpoints.grpc).broadcast(txRaw);
3837
+ if (res.code !== 0) {
3838
+ throw new Error(`Injective broadcast failed (code ${res.code}): ${res.rawLog}`);
3839
+ }
3840
+ return res.txHash;
3841
+ }
3842
+ /**
3843
+ * Signs and broadcasts an unsigned `InjectiveRawTransaction` (e.g. from the Swaps API).
3844
+ *
3845
+ * - **PK (secret) mode**: signs the exact unsigned `SignDoc` (`bodyBytes`/`authInfoBytes`) and
3846
+ * broadcasts it as-is, preserving the precise fee/account the Swaps API built.
3847
+ * - **Browser mode (Keplr/Leap/Metamask)**: an EVM wallet can't sign a raw Cosmos `SignDoc`, so we
3848
+ * recover the messages from `bodyBytes` and broadcast them through the fee-delegation path (same as
3849
+ * {@link execute}). The broadcaster builds the wallet-appropriate sign payload (DIRECT for Cosmos
3850
+ * wallets, EIP-712 for Metamask). Trade-off: the broadcaster recomputes gas/fee rather than using
3851
+ * the exact fee in the raw tx; the on-chain effect (the execute message) is unchanged.
3852
+ *
3853
+ * @returns The transaction hash.
3854
+ */
3855
+ async signAndSendTransaction(tx) {
3856
+ const { bodyBytes, authInfoBytes, chainId, accountNumber } = tx.signedDoc;
3857
+ const signerAddress = await this.getWalletAddress();
3858
+ if (tx.from !== signerAddress) {
3859
+ throw new Error(`Injective: cannot sign transaction for ${tx.from} with wallet ${signerAddress}.`);
3860
+ }
3861
+ if (this.wallet.msgBroadcaster instanceof sdkTs.MsgBroadcasterWithPk) {
3862
+ const signDoc = tx_js.SignDoc.fromPartial({ bodyBytes, authInfoBytes, chainId, accountNumber });
3863
+ const signBytes = tx_js.SignDoc.encode(signDoc).finish();
3864
+ const signature = this.wallet.msgBroadcaster.privateKey.sign(Buffer.from(signBytes));
3865
+ const signedTxRaw = tx_js.TxRaw.fromPartial({ bodyBytes, authInfoBytes, signatures: [signature] });
3866
+ return this.sendTransaction(tx_js.TxRaw.encode(signedTxRaw).finish());
3867
+ }
3868
+ const msgs = decodeInjectiveExecuteMsgs(bodyBytes);
3869
+ const txResult = await this.wallet.msgBroadcaster.broadcastWithFeeDelegation({
3870
+ msgs,
3871
+ injectiveAddress: signerAddress
3872
+ });
3873
+ return txResult.txHash;
3874
+ }
3464
3875
  };
3465
3876
  var DEFAULT_CONNECTION_COMMITMENT = "confirmed";
3466
3877
  var DEFAULT_CONFIRM_COMMITMENT = "finalized";
@@ -3509,6 +3920,12 @@ var SolanaWalletProvider = class extends BaseWalletProvider {
3509
3920
  const sendOptions = shallowMerge(this.defaults.sendOptions, options);
3510
3921
  return this.connection.sendRawTransaction(rawTransaction, sendOptions);
3511
3922
  }
3923
+ async signAndSendTransaction(params) {
3924
+ const serializedTxBytes = Buffer.from(params.data, "base64");
3925
+ const versionedTx = web3_js.VersionedTransaction.deserialize(serializedTxBytes);
3926
+ const signedTx = await this.signAndSerializeTransaction(versionedTx);
3927
+ return this.sendTransaction(signedTx);
3928
+ }
3512
3929
  async sendTransactionWithConfirmation(rawTransaction, optionsOrCommitment) {
3513
3930
  const isCommitmentArg = typeof optionsOrCommitment === "string";
3514
3931
  const sendOpts = isCommitmentArg ? void 0 : optionsOrCommitment?.send;
@@ -3542,6 +3959,31 @@ var SolanaWalletProvider = class extends BaseWalletProvider {
3542
3959
  const tx = await adapterWallet.signTransaction(new web3_js.VersionedTransaction(messageV0));
3543
3960
  return tx.serialize();
3544
3961
  }
3962
+ async signTransaction(transaction) {
3963
+ if (this.isAdapterMode) {
3964
+ return this.signTransactionWithAdapter(transaction);
3965
+ }
3966
+ return this.signTransactionWithKeypair(transaction);
3967
+ }
3968
+ async signAndSerializeTransaction(transaction) {
3969
+ const tx = await this.signTransaction(transaction);
3970
+ return tx.serialize();
3971
+ }
3972
+ async signTransactionWithAdapter(transaction) {
3973
+ const adapterWallet = this.wallet;
3974
+ if (!adapterWallet.signTransaction) {
3975
+ throw new Error("Wallet signTransaction is not initialized");
3976
+ }
3977
+ return adapterWallet.signTransaction(transaction);
3978
+ }
3979
+ async signTransactionWithKeypair(transaction) {
3980
+ if (this.isAdapterMode) {
3981
+ throw new Error("Cannot sign transaction with keypair in adapter mode");
3982
+ }
3983
+ const keypairWallet = this.wallet;
3984
+ transaction.sign([keypairWallet]);
3985
+ return transaction;
3986
+ }
3545
3987
  async buildV0TxnWithKeypair(rawInstructions) {
3546
3988
  const keypairWallet = this.wallet;
3547
3989
  const instructions = this.buildTransactionInstruction(rawInstructions);
@@ -3593,6 +4035,10 @@ var STELLAR_HORIZON_URLS = {
3593
4035
  TESTNET: "https://horizon-testnet.stellar.org",
3594
4036
  PUBLIC: "https://horizon.stellar.org"
3595
4037
  };
4038
+ var STELLAR_SOROBAN_URLS = {
4039
+ TESTNET: "https://soroban-testnet.stellar.org",
4040
+ PUBLIC: "https://rpc.ankr.com/stellar_soroban"
4041
+ };
3596
4042
  var STELLAR_NETWORK_PASSPHRASES = {
3597
4043
  TESTNET: stellarSdk.Networks.TESTNET,
3598
4044
  PUBLIC: stellarSdk.Networks.PUBLIC
@@ -3634,6 +4080,7 @@ var StellarWalletProvider = class extends BaseWalletProvider {
3634
4080
  chainType = "STELLAR";
3635
4081
  wallet;
3636
4082
  server;
4083
+ sorobanServer;
3637
4084
  networkPassphrase;
3638
4085
  constructor(config) {
3639
4086
  super(config.defaults);
@@ -3642,6 +4089,9 @@ var StellarWalletProvider = class extends BaseWalletProvider {
3642
4089
  }
3643
4090
  this.networkPassphrase = this.defaults.networkPassphrase ?? STELLAR_NETWORK_PASSPHRASES[config.network];
3644
4091
  this.server = new stellarSdk.Horizon.Server(config.rpcUrl ?? STELLAR_HORIZON_URLS[config.network]);
4092
+ this.sorobanServer = new stellarSdk.rpc.Server(config.sorobanRpcUrl ?? STELLAR_SOROBAN_URLS[config.network], {
4093
+ allowHttp: true
4094
+ });
3645
4095
  if (isPrivateKeyStellarWalletConfig(config)) {
3646
4096
  if (!isValidStellarPrivateKey(config.privateKey)) {
3647
4097
  throw new StellarWalletError("Invalid private key format", "INVALID_PRIVATE_KEY");
@@ -3692,6 +4142,38 @@ var StellarWalletProvider = class extends BaseWalletProvider {
3692
4142
  );
3693
4143
  }
3694
4144
  }
4145
+ /**
4146
+ * Broadcasts an already-signed XDR transaction via the Soroban RPC server.
4147
+ * @returns The transaction hash.
4148
+ * @throws {StellarWalletError} with code `SEND_TX_ERROR` if submission fails or the RPC returns an error status.
4149
+ */
4150
+ async sendTransaction(signedTx) {
4151
+ try {
4152
+ const tx = stellarSdk.TransactionBuilder.fromXDR(signedTx, this.networkPassphrase);
4153
+ const response = await this.sorobanServer.sendTransaction(tx);
4154
+ if (response.status === "ERROR") {
4155
+ throw new StellarWalletError(`Failed to submit transaction: ${JSON.stringify(response)}`, "SEND_TX_ERROR");
4156
+ }
4157
+ return response.hash;
4158
+ } catch (error) {
4159
+ if (error instanceof StellarWalletError) {
4160
+ throw error;
4161
+ }
4162
+ throw new StellarWalletError(
4163
+ error instanceof Error ? error.message : "Failed to send transaction",
4164
+ "SEND_TX_ERROR"
4165
+ );
4166
+ }
4167
+ }
4168
+ /**
4169
+ * Signs and broadcasts an unsigned `StellarRawTransaction` (e.g. from the Swaps API).
4170
+ * @returns The transaction hash.
4171
+ * @throws {StellarWalletError} with code `SIGN_TX_ERROR` if signing fails, or `SEND_TX_ERROR` if broadcasting fails.
4172
+ */
4173
+ async signAndSendTransaction(params) {
4174
+ const signedXdr = await this.signTransaction(params.data);
4175
+ return this.sendTransaction(signedXdr);
4176
+ }
3695
4177
  /**
3696
4178
  * Polls the Horizon server until the transaction is confirmed or the timeout is reached.
3697
4179
  * @throws {StellarWalletError} with code `TX_RECEIPT_TIMEOUT` if the transaction is not found within `pollTimeout` ms.
@@ -3729,10 +4211,10 @@ function isStacksPkWallet(wallet) {
3729
4211
  }
3730
4212
  function toPostConditionModeName(mode) {
3731
4213
  if (mode === void 0) return void 0;
3732
- return mode === transactions.PostConditionMode.Allow ? "allow" : "deny";
4214
+ return mode === core.PostConditionMode.Allow ? "allow" : "deny";
3733
4215
  }
3734
4216
  function resolveNetwork(selector, endpoint) {
3735
- const base2 = network.networkFrom(selector ?? "mainnet");
4217
+ const base2 = core.networkFrom(selector ?? "mainnet");
3736
4218
  return endpoint ? { ...base2, client: { ...base2.client, baseUrl: endpoint } } : base2;
3737
4219
  }
3738
4220
  var StacksWalletProvider = class extends BaseWalletProvider {
@@ -3760,8 +4242,28 @@ var StacksWalletProvider = class extends BaseWalletProvider {
3760
4242
  }
3761
4243
  return this.sendTransactionWithAdapter(finalParams, this.wallet);
3762
4244
  }
4245
+ /**
4246
+ * Signs and broadcasts an unsigned `StacksRawTransaction` (e.g. from the Swaps API). The raw tx's
4247
+ * `payload` is the hex-serialized contract-call payload; this deserializes it back into the
4248
+ * contract-call params and routes through `sendTransaction` (which signs + broadcasts in both
4249
+ * private-key and browser-extension modes). Returns the transaction id.
4250
+ */
4251
+ async signAndSendTransaction(params) {
4252
+ const payload = core.deserializePayload(params.payload);
4253
+ if (payload.payloadType !== core.PayloadType.ContractCall) {
4254
+ throw new Error("signAndSendTransaction: expected a contract-call payload.");
4255
+ }
4256
+ return this.sendTransaction({
4257
+ contractAddress: core.addressToString(payload.contractAddress),
4258
+ contractName: payload.contractName.content,
4259
+ functionName: payload.functionName.content,
4260
+ functionArgs: payload.functionArgs,
4261
+ postConditionMode: core.PostConditionMode.Allow
4262
+ // matches how the spoke service builds the tx
4263
+ });
4264
+ }
3763
4265
  async sendTransactionWithPrivateKey(txParams, wallet) {
3764
- const transaction = await transactions.makeContractCall({
4266
+ const transaction = await core.makeContractCall({
3765
4267
  contractAddress: txParams.contractAddress,
3766
4268
  contractName: txParams.contractName,
3767
4269
  functionName: txParams.functionName,
@@ -3771,7 +4273,7 @@ var StacksWalletProvider = class extends BaseWalletProvider {
3771
4273
  postConditionMode: txParams.postConditionMode,
3772
4274
  postConditions: txParams.postConditions
3773
4275
  });
3774
- const result = await transactions.broadcastTransaction({ network: this.network, transaction });
4276
+ const result = await core.broadcastTransaction({ network: this.network, transaction });
3775
4277
  return result.txid;
3776
4278
  }
3777
4279
  async sendTransactionWithAdapter(txParams, wallet) {
@@ -3791,7 +4293,7 @@ var StacksWalletProvider = class extends BaseWalletProvider {
3791
4293
  return result.txid;
3792
4294
  }
3793
4295
  async readContract(txParams) {
3794
- return transactions.fetchCallReadOnlyFunction({
4296
+ return core.fetchCallReadOnlyFunction({
3795
4297
  contractAddress: txParams.contractAddress,
3796
4298
  contractName: txParams.contractName,
3797
4299
  functionName: txParams.functionName,
@@ -3802,13 +4304,13 @@ var StacksWalletProvider = class extends BaseWalletProvider {
3802
4304
  }
3803
4305
  async getWalletAddress() {
3804
4306
  if (isStacksPkWallet(this.wallet)) {
3805
- return transactions.getAddressFromPrivateKey(this.wallet.privateKey, this.network);
4307
+ return core.getAddressFromPrivateKey(this.wallet.privateKey, this.network);
3806
4308
  }
3807
4309
  return this.wallet.address;
3808
4310
  }
3809
4311
  async getPublicKey() {
3810
4312
  if (isStacksPkWallet(this.wallet)) {
3811
- return transactions.publicKeyToHex(transactions.privateKeyToPublic(this.wallet.privateKey));
4313
+ return core.publicKeyToHex(core.privateKeyToPublic(this.wallet.privateKey));
3812
4314
  }
3813
4315
  throw new Error("getPublicKey is only supported for private key wallet configuration");
3814
4316
  }
@@ -11637,7 +12139,7 @@ Object.defineProperty(exports, "Networks", {
11637
12139
  });
11638
12140
  Object.defineProperty(exports, "PostConditionMode", {
11639
12141
  enumerable: true,
11640
- get: function () { return transactions.PostConditionMode; }
12142
+ get: function () { return core.PostConditionMode; }
11641
12143
  });
11642
12144
  exports.BaseWalletProvider = BaseWalletProvider;
11643
12145
  exports.BigNumberToBigInt = BigNumberToBigInt;
@@ -11682,5 +12184,3 @@ exports.isValidStellarPrivateKey = isValidStellarPrivateKey;
11682
12184
  exports.requestAddress = requestAddress;
11683
12185
  exports.requestJsonRpc = requestJsonRpc;
11684
12186
  exports.requestSigning = requestSigning;
11685
- //# sourceMappingURL=index.cjs.map
11686
- //# sourceMappingURL=index.cjs.map