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

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.mjs CHANGED
@@ -1,20 +1,22 @@
1
1
  import { privateKeyToAccount } from 'viem/accounts';
2
2
  import { defineChain, http, createWalletClient, createPublicClient, keccak256 } from 'viem';
3
- import { kaia, redbellyMainnet, mainnet, lightlinkPhoenix, polygon, bsc, optimism, base, arbitrum, avalanche, sonic } from 'viem/chains';
3
+ import { hedera, kaia, redbellyMainnet, mainnet, lightlinkPhoenix, polygon, bsc, optimism, base, arbitrum, avalanche, sonic } from 'viem/chains';
4
4
  import { SuiClient } from '@mysten/sui/client';
5
5
  import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';
6
6
  import { Transaction as Transaction$1 } from '@mysten/sui/transactions';
7
7
  import { signTransaction } from '@mysten/wallet-standard';
8
8
  import * as IconSdkRaw from 'icon-sdk-js';
9
- import { PrivateKey, MsgBroadcasterWithPk, MsgExecuteContract, createTransaction, getInjectiveSignerAddress, MsgExecuteContractCompat } from '@injectivelabs/sdk-ts';
9
+ import { PrivateKey, MsgBroadcasterWithPk, MsgExecuteContract, createTransaction, getInjectiveSignerAddress, MsgExecuteContractCompat, TxGrpcApi } from '@injectivelabs/sdk-ts';
10
+ import { TxRaw, SignDoc, TxBody } from 'cosmjs-types/cosmos/tx/v1beta1/tx.js';
11
+ import { MsgExecuteContract as MsgExecuteContract$1 } from 'cosmjs-types/cosmwasm/wasm/v1/tx.js';
12
+ import { getNetworkEndpoints } from '@injectivelabs/networks';
10
13
  import { getAssociatedTokenAddress } from '@solana/spl-token';
11
- import { Keypair, Connection, TransactionMessage, VersionedTransaction, PublicKey, TransactionInstruction } from '@solana/web3.js';
12
- import { Networks, Keypair as Keypair$1, Horizon, Transaction } from '@stellar/stellar-sdk';
14
+ import { Keypair, Connection, VersionedTransaction, TransactionMessage, PublicKey, TransactionInstruction } from '@solana/web3.js';
15
+ import { Networks, Keypair as Keypair$1, Horizon, rpc, Transaction, TransactionBuilder } from '@stellar/stellar-sdk';
13
16
  export { Networks } from '@stellar/stellar-sdk';
14
- import { networkFrom } from '@stacks/network';
15
- import { makeContractCall, broadcastTransaction, fetchCallReadOnlyFunction, getAddressFromPrivateKey, publicKeyToHex, privateKeyToPublic, PostConditionMode } from '@stacks/transactions';
16
- export { PostConditionMode } from '@stacks/transactions';
17
- import { request } from '@stacks/connect';
17
+ import { deserializePayload, PayloadType, PostConditionMode, addressToString, makeContractCall, broadcastTransaction, fetchCallReadOnlyFunction, getAddressFromPrivateKey, publicKeyToHex, privateKeyToPublic, networkFrom } from '@sodax/libs/stacks/core';
18
+ export { PostConditionMode } from '@sodax/libs/stacks/core';
19
+ import { request } from '@sodax/libs/stacks/connect';
18
20
  import * as bitcoin from 'bitcoinjs-lib';
19
21
  import * as ecc from '@bitcoinerlab/secp256k1';
20
22
  import { ECPairFactory } from 'ecpair';
@@ -111,7 +113,8 @@ var ChainKeys = {
111
113
  BITCOIN_MAINNET: "bitcoin",
112
114
  REDBELLY_MAINNET: "redbelly",
113
115
  KAIA_MAINNET: "0x2019.kaia",
114
- STACKS_MAINNET: "stacks"
116
+ STACKS_MAINNET: "stacks",
117
+ HEDERA_MAINNET: "hedera"
115
118
  };
116
119
  var CHAIN_KEYS = Object.values(ChainKeys);
117
120
  new Set(CHAIN_KEYS);
@@ -154,6 +157,15 @@ var SodaTokens = {
154
157
  hubAsset: "0x7A1A5555842Ad2D0eD274d09b5c4406a95799D5d",
155
158
  vault: "0x7A1A5555842Ad2D0eD274d09b5c4406a95799D5d"
156
159
  },
160
+ sodaWBTC: {
161
+ symbol: "sodaWBTC",
162
+ name: "Soda Wrapped BTC",
163
+ decimals: 18,
164
+ address: "0x811C3fCc13f9c2a23AE2Ae2DCadacFAC6eb5f0eB",
165
+ chainKey: ChainKeys.SONIC_MAINNET,
166
+ hubAsset: "0x811C3fCc13f9c2a23AE2Ae2DCadacFAC6eb5f0eB",
167
+ vault: "0x811C3fCc13f9c2a23AE2Ae2DCadacFAC6eb5f0eB"
168
+ },
157
169
  sodaSOL: {
158
170
  symbol: "sodaSOL",
159
171
  name: "Soda SOL",
@@ -301,7 +313,7 @@ var SodaTokens = {
301
313
  sodaNEAR: {
302
314
  symbol: "sodaNEAR",
303
315
  name: "SODA NEAR",
304
- decimals: 24,
316
+ decimals: 18,
305
317
  address: "0xf4ba497c9b805e4bd88a8a9e6a7b8f74984c3e39",
306
318
  chainKey: ChainKeys.SONIC_MAINNET,
307
319
  hubAsset: "0xf4ba497c9b805e4bd88a8a9e6a7b8f74984c3e39",
@@ -333,6 +345,53 @@ var SodaTokens = {
333
345
  chainKey: ChainKeys.SONIC_MAINNET,
334
346
  hubAsset: "0x243b0c26c8b38793908d7C64e8510f21B19B4613",
335
347
  vault: "0x243b0c26c8b38793908d7C64e8510f21B19B4613"
348
+ },
349
+ sodaHBAR: {
350
+ symbol: "sodaHBAR",
351
+ name: "Soda HBAR",
352
+ decimals: 18,
353
+ address: "0x3BB956cc8922E1Ba4148dc10eD1b4Fa19aa599c4",
354
+ chainKey: ChainKeys.SONIC_MAINNET,
355
+ hubAsset: "0x3BB956cc8922E1Ba4148dc10eD1b4Fa19aa599c4",
356
+ vault: "0x3BB956cc8922E1Ba4148dc10eD1b4Fa19aa599c4"
357
+ },
358
+ sodaJITOSOL: {
359
+ symbol: "sodaJITOSOL",
360
+ name: "Soda JITOSOL",
361
+ decimals: 18,
362
+ address: "0xe1bad4400d947Bc4fa66f9c0A143D800002083a0",
363
+ chainKey: ChainKeys.SONIC_MAINNET,
364
+ hubAsset: "0xe1bad4400d947Bc4fa66f9c0A143D800002083a0",
365
+ vault: "0xe1bad4400d947Bc4fa66f9c0A143D800002083a0"
366
+ }
367
+ };
368
+ var LsodaTokens = {
369
+ lsodaWEETH: {
370
+ symbol: "lsodaWEETH",
371
+ name: "Leveraged Soda weETH",
372
+ decimals: 18,
373
+ address: "0xD09de2f5070699A909c0FD32fb5A909d3886701D",
374
+ chainKey: ChainKeys.SONIC_MAINNET,
375
+ hubAsset: "0xD09de2f5070699A909c0FD32fb5A909d3886701D",
376
+ vault: "0xD09de2f5070699A909c0FD32fb5A909d3886701D"
377
+ },
378
+ lsodaWSTETH: {
379
+ symbol: "lsodaWSTETH",
380
+ name: "Leveraged Soda wstETH",
381
+ decimals: 18,
382
+ address: "0x136E5D1CEC5db1829E24941Eddd9C8640E02Ce7a",
383
+ chainKey: ChainKeys.SONIC_MAINNET,
384
+ hubAsset: "0x136E5D1CEC5db1829E24941Eddd9C8640E02Ce7a",
385
+ vault: "0x136E5D1CEC5db1829E24941Eddd9C8640E02Ce7a"
386
+ },
387
+ lsodaJITOSOL: {
388
+ symbol: "lsodaJITOSOL",
389
+ name: "Leveraged Soda JITOSOL",
390
+ decimals: 18,
391
+ address: "0xD7Ae4853E0f93682F5DaA14734F5D18cBa09Bd78",
392
+ chainKey: ChainKeys.SONIC_MAINNET,
393
+ hubAsset: "0xD7Ae4853E0f93682F5DaA14734F5D18cBa09Bd78",
394
+ vault: "0xD7Ae4853E0f93682F5DaA14734F5D18cBa09Bd78"
336
395
  }
337
396
  };
338
397
  var sonicSupportedTokens = {
@@ -399,7 +458,8 @@ var sonicSupportedTokens = {
399
458
  hubAsset: "0x7c7d53EEcda37a87ce0D5bf8E0b24512A48dC963",
400
459
  vault: SodaTokens.sodaSODA.address
401
460
  },
402
- ...SodaTokens
461
+ ...SodaTokens,
462
+ ...LsodaTokens
403
463
  };
404
464
  var redbellySupportedTokens = {
405
465
  RBNT: {
@@ -609,7 +669,7 @@ var solanaSupportedTokens = {
609
669
  address: "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",
610
670
  chainKey: ChainKeys.SOLANA_MAINNET,
611
671
  hubAsset: "0x942f89a324d2652e447b9fcf08effc9f9776a680",
612
- vault: "0x942f89a324d2652e447b9fcf08effc9f9776a680"
672
+ vault: SodaTokens.sodaJITOSOL.address
613
673
  },
614
674
  mSOL: {
615
675
  symbol: "mSOL",
@@ -655,6 +715,78 @@ var solanaSupportedTokens = {
655
715
  chainKey: ChainKeys.SOLANA_MAINNET,
656
716
  hubAsset: "0x0076b67235bfc69b649d29dd7cb66e5b92b618aa",
657
717
  vault: "0x0076b67235bfc69b649d29dd7cb66e5b92b618aa"
718
+ },
719
+ CRCLx: {
720
+ symbol: "CRCLx",
721
+ name: "Circle xStock",
722
+ decimals: 8,
723
+ address: "XsueG8BtpquVJX9LVLLEGuViXUungE6WmK5YZ3p3bd1",
724
+ chainKey: ChainKeys.SOLANA_MAINNET,
725
+ hubAsset: "0x64659130a3373b3527146b38fc1fccf017bc0c61",
726
+ vault: "0x64659130a3373b3527146b38fc1fccf017bc0c61"
727
+ },
728
+ TSLAx: {
729
+ symbol: "TSLAx",
730
+ name: "Tesla xStock",
731
+ decimals: 8,
732
+ address: "XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB",
733
+ chainKey: ChainKeys.SOLANA_MAINNET,
734
+ hubAsset: "0x3cc867f6f4d1817b6230b781125301363fce370c",
735
+ vault: "0x3cc867f6f4d1817b6230b781125301363fce370c"
736
+ },
737
+ SPYx: {
738
+ symbol: "SPYx",
739
+ name: "SP500 xStock",
740
+ decimals: 8,
741
+ address: "XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W",
742
+ chainKey: ChainKeys.SOLANA_MAINNET,
743
+ hubAsset: "0xea66dbe82ebcb6c3a55b2db3d722b676be63a26e",
744
+ vault: "0xea66dbe82ebcb6c3a55b2db3d722b676be63a26e"
745
+ },
746
+ NVDAx: {
747
+ symbol: "NVDAx",
748
+ name: "NVIDIA xStock",
749
+ decimals: 8,
750
+ address: "Xsc9qvGR1efVDFGLrVsmkzv3qi45LTBjeUKSPmx9qEh",
751
+ chainKey: ChainKeys.SOLANA_MAINNET,
752
+ hubAsset: "0x48303c90f4136bc3101b308c8b50c55745aaf317",
753
+ vault: "0x48303c90f4136bc3101b308c8b50c55745aaf317"
754
+ },
755
+ QQQx: {
756
+ symbol: "QQQx",
757
+ name: "Nasdaq xStock",
758
+ decimals: 8,
759
+ address: "Xs8S1uUs1zvS2p7iwtsG3b6fkhpvmwz4GYU3gWAmWHZ",
760
+ chainKey: ChainKeys.SOLANA_MAINNET,
761
+ hubAsset: "0x4448b894740198ab76c83c8850d73f7dc8e4b9b3",
762
+ vault: "0x4448b894740198ab76c83c8850d73f7dc8e4b9b3"
763
+ },
764
+ MSTRx: {
765
+ symbol: "MSTRx",
766
+ name: "MicroStrategy xStock",
767
+ decimals: 8,
768
+ address: "XsP7xzNPvEHS1m6qfanPUGjNmdnmsLKEoNAnHjdxxyZ",
769
+ chainKey: ChainKeys.SOLANA_MAINNET,
770
+ hubAsset: "0xc46c34961802355c5223a115568fdf18a51ad6f6",
771
+ vault: "0xc46c34961802355c5223a115568fdf18a51ad6f6"
772
+ },
773
+ COINx: {
774
+ symbol: "COINx",
775
+ name: "Coinbase xStock",
776
+ decimals: 8,
777
+ address: "Xs7ZdzSHLU9ftNJsii5fCeJhoRWSC32SQGzGQtePxNu",
778
+ chainKey: ChainKeys.SOLANA_MAINNET,
779
+ hubAsset: "0xf444586e95166da0754052f03f344cf1152abe7d",
780
+ vault: "0xf444586e95166da0754052f03f344cf1152abe7d"
781
+ },
782
+ GOOGLx: {
783
+ symbol: "GOOGLx",
784
+ name: "Alphabet xStock",
785
+ decimals: 8,
786
+ address: "XsCPL9dNWBMvFtTmwcCA5v3xWPSMEBCszbQdiLLq6aN",
787
+ chainKey: ChainKeys.SOLANA_MAINNET,
788
+ hubAsset: "0x024230dd63b27df90d988d6f37a69d4de627ce89",
789
+ vault: "0x024230dd63b27df90d988d6f37a69d4de627ce89"
658
790
  }
659
791
  };
660
792
  var avalancheSupportedTokens = {
@@ -757,7 +889,8 @@ var arbitrumSupportedTokens = {
757
889
  address: "0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40",
758
890
  chainKey: ChainKeys.ARBITRUM_MAINNET,
759
891
  hubAsset: "0x96Fc8540736f1598b7E235e6dE8814062b3b5d3B",
760
- vault: SodaTokens.sodaBTC.address
892
+ vault: SodaTokens.sodaBTC.address,
893
+ access: "withdrawOnly"
761
894
  },
762
895
  WBTC: {
763
896
  symbol: "WBTC",
@@ -766,7 +899,17 @@ var arbitrumSupportedTokens = {
766
899
  address: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",
767
900
  chainKey: ChainKeys.ARBITRUM_MAINNET,
768
901
  hubAsset: "0xfB0ACB1b2720B620935F50a6dd3F7FEA52b2FCBe",
769
- vault: SodaTokens.sodaBTC.address
902
+ vault: SodaTokens.sodaWBTC.address
903
+ },
904
+ WBTC_LEGACY: {
905
+ symbol: "WBTC.legacy",
906
+ name: "Wrapped BTC (Legacy)",
907
+ decimals: 8,
908
+ address: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",
909
+ chainKey: ChainKeys.ARBITRUM_MAINNET,
910
+ hubAsset: "0xfB0ACB1b2720B620935F50a6dd3F7FEA52b2FCBe",
911
+ vault: SodaTokens.sodaBTC.address,
912
+ access: "withdrawOnly"
770
913
  },
771
914
  USDC: {
772
915
  symbol: "USDC",
@@ -921,7 +1064,8 @@ var baseSupportedTokens = {
921
1064
  address: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
922
1065
  chainKey: ChainKeys.BASE_MAINNET,
923
1066
  hubAsset: "0x2803a23a3BA6b09e57D1c71deC0D9eFdBB00A27F",
924
- vault: SodaTokens.sodaBTC.address
1067
+ vault: SodaTokens.sodaBTC.address,
1068
+ access: "withdrawOnly"
925
1069
  },
926
1070
  SODA: {
927
1071
  symbol: "SODA",
@@ -958,6 +1102,15 @@ var baseSupportedTokens = {
958
1102
  chainKey: ChainKeys.BASE_MAINNET,
959
1103
  hubAsset: "0xaa81bb5ba3c972ab53605d3ba7e443a3de6d1cb9",
960
1104
  vault: "0xaa81bb5ba3c972ab53605d3ba7e443a3de6d1cb9"
1105
+ },
1106
+ AERO: {
1107
+ symbol: "AERO",
1108
+ name: "Aerodrome Finance",
1109
+ decimals: 18,
1110
+ address: "0x940181a94A35A4569e4529A3CDfB74e38FD98631",
1111
+ chainKey: ChainKeys.BASE_MAINNET,
1112
+ hubAsset: "0x348e086ab6f424dfc575a325c28624ed23973173",
1113
+ vault: "0x348e086ab6f424dfc575a325c28624ed23973173"
961
1114
  }
962
1115
  };
963
1116
  var optimismSupportedTokens = {
@@ -1640,6 +1793,33 @@ var stellarSupportedTokens = {
1640
1793
  chainKey: ChainKeys.STELLAR_MAINNET,
1641
1794
  hubAsset: "0xD749B5FfFED7cEDaa3239abDd16D677179C29AEc",
1642
1795
  vault: SodaTokens.sodaSODA.address
1796
+ },
1797
+ sodaETH: {
1798
+ symbol: "sodaETH",
1799
+ name: "Soda ETH",
1800
+ decimals: 7,
1801
+ address: "CDK5EWVTZLGSLI6D5OSES7XUKWZUKBXDRNOWUVDNPP5RJRP5EYWCW7SL",
1802
+ chainKey: ChainKeys.STELLAR_MAINNET,
1803
+ hubAsset: "0x4985a4b72ac723723e9ae82382d12d77e9a715de",
1804
+ vault: SodaTokens.sodaETH.address
1805
+ },
1806
+ sodaBTC: {
1807
+ symbol: "sodaBTC",
1808
+ name: "Soda BTC",
1809
+ decimals: 7,
1810
+ address: "CD6XWBW74YVFDQQYUM2GALCULMA5MAWGP6NTCWF3ZYXP4Z7MEVY4JKBX",
1811
+ chainKey: ChainKeys.STELLAR_MAINNET,
1812
+ hubAsset: "0xddee01f63c18843e2bac30cb702864d7632c83a2",
1813
+ vault: SodaTokens.sodaBTC.address
1814
+ },
1815
+ sodaBNB: {
1816
+ symbol: "sodaBNB",
1817
+ name: "Soda BNB",
1818
+ decimals: 7,
1819
+ address: "CCXTXZAFLVNTMORVWYB6BGL7YEW3U3ONDAL2FGBRGDUQH7AGANVQPRS6",
1820
+ chainKey: ChainKeys.STELLAR_MAINNET,
1821
+ hubAsset: "0xa10be5f5c2dea7d272555dc73ea2a7317c3c5b63",
1822
+ vault: SodaTokens.sodaBNB.address
1643
1823
  }
1644
1824
  };
1645
1825
  var suiSupportedTokens = {
@@ -1964,7 +2144,17 @@ var ethereumSupportedTokens = {
1964
2144
  address: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
1965
2145
  chainKey: ChainKeys.ETHEREUM_MAINNET,
1966
2146
  hubAsset: "0x4ccbe4c2cf2aeed19314790622efd71dc0b67acb",
1967
- vault: SodaTokens.sodaBTC.address
2147
+ vault: SodaTokens.sodaWBTC.address
2148
+ },
2149
+ WBTC_LEGACY: {
2150
+ symbol: "WBTC.legacy",
2151
+ name: "Wrapped Bitcoin (Legacy)",
2152
+ decimals: 8,
2153
+ address: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
2154
+ chainKey: ChainKeys.ETHEREUM_MAINNET,
2155
+ hubAsset: "0x4ccbe4c2cf2aeed19314790622efd71dc0b67acb",
2156
+ vault: SodaTokens.sodaBTC.address,
2157
+ access: "withdrawOnly"
1968
2158
  },
1969
2159
  sUSDat: {
1970
2160
  symbol: "sUSDat",
@@ -2149,6 +2339,44 @@ var kaiaSupportedTokens = {
2149
2339
  vault: SodaTokens.sodaSODA.address
2150
2340
  }
2151
2341
  };
2342
+ var hederaSupportedTokens = {
2343
+ HBAR: {
2344
+ symbol: "HBAR",
2345
+ name: "HBAR",
2346
+ decimals: 8,
2347
+ address: "0x0000000000000000000000000000000000000000",
2348
+ chainKey: ChainKeys.HEDERA_MAINNET,
2349
+ hubAsset: "0x5c18c543b6B6EA97dE739F48C49CfC291B3AD465",
2350
+ vault: SodaTokens.sodaHBAR.address
2351
+ },
2352
+ bnUSD: {
2353
+ symbol: "bnUSD",
2354
+ name: "bnUSD",
2355
+ decimals: 8,
2356
+ address: "0x0000000000000000000000000000000000a0286a",
2357
+ chainKey: ChainKeys.HEDERA_MAINNET,
2358
+ hubAsset: "0x44be1984cd279334a630469fa357305c7dba2837",
2359
+ vault: SodaTokens.bnUSD.address
2360
+ },
2361
+ SODA: {
2362
+ symbol: "SODA",
2363
+ name: "SODAX",
2364
+ decimals: 8,
2365
+ address: "0x0000000000000000000000000000000000a02869",
2366
+ chainKey: ChainKeys.HEDERA_MAINNET,
2367
+ hubAsset: "0x1217721376839dbffe78093ddd5d8e50d0239b3f",
2368
+ vault: SodaTokens.sodaSODA.address
2369
+ },
2370
+ USDC: {
2371
+ symbol: "USDC",
2372
+ name: "USD Coin",
2373
+ decimals: 6,
2374
+ address: "0x000000000000000000000000000000000006f89a",
2375
+ chainKey: ChainKeys.HEDERA_MAINNET,
2376
+ hubAsset: "0xafafae0c1476424c4b81f09095bd7dcb858047c8",
2377
+ vault: SodaTokens.sodaUSDC.address
2378
+ }
2379
+ };
2152
2380
  var stacksSupportedTokens = {
2153
2381
  STX: {
2154
2382
  symbol: "STX",
@@ -2218,9 +2446,12 @@ var RelayChainIdMap = {
2218
2446
  [ChainKeys.BITCOIN_MAINNET]: 627463n,
2219
2447
  [ChainKeys.REDBELLY_MAINNET]: 726564n,
2220
2448
  [ChainKeys.KAIA_MAINNET]: 27489n,
2221
- [ChainKeys.STACKS_MAINNET]: 60n
2449
+ [ChainKeys.STACKS_MAINNET]: 60n,
2450
+ [ChainKeys.HEDERA_MAINNET]: 18501n
2222
2451
  };
2223
- Object.fromEntries(Object.entries(RelayChainIdMap).map(([chainKey, chainId]) => [chainId, chainKey]));
2452
+ new Map(Object.entries(RelayChainIdMap).map(([chainKey, chainId]) => [chainId, chainKey]));
2453
+ var CHAIN_LOGO_BASE_URL = "https://raw.githubusercontent.com/icon-project/sodax-sdks/main/packages/assets/chain";
2454
+ var chainLogo = (key) => `${CHAIN_LOGO_BASE_URL}/${key}.png`;
2224
2455
  var baseChainInfo = {
2225
2456
  [ChainKeys.SONIC_MAINNET]: {
2226
2457
  name: "Sonic",
@@ -2228,6 +2459,7 @@ var baseChainInfo = {
2228
2459
  type: "EVM",
2229
2460
  chainId: 146,
2230
2461
  mainnet: true,
2462
+ logo: chainLogo(ChainKeys.SONIC_MAINNET),
2231
2463
  explorer: {
2232
2464
  baseUrl: "https://sonicscan.org/",
2233
2465
  txUrl: "https://sonicscan.org/tx/",
@@ -2241,6 +2473,7 @@ var baseChainInfo = {
2241
2473
  type: "SOLANA",
2242
2474
  chainId: "solana",
2243
2475
  mainnet: true,
2476
+ logo: chainLogo(ChainKeys.SOLANA_MAINNET),
2244
2477
  explorer: {
2245
2478
  baseUrl: "https://solscan.io/",
2246
2479
  txUrl: "https://solscan.io/tx/",
@@ -2254,6 +2487,7 @@ var baseChainInfo = {
2254
2487
  type: "EVM",
2255
2488
  chainId: 43114,
2256
2489
  mainnet: true,
2490
+ logo: chainLogo(ChainKeys.AVALANCHE_MAINNET),
2257
2491
  explorer: {
2258
2492
  baseUrl: "https://snowtrace.io/",
2259
2493
  txUrl: "https://snowtrace.io/tx/",
@@ -2267,6 +2501,7 @@ var baseChainInfo = {
2267
2501
  type: "EVM",
2268
2502
  chainId: 42161,
2269
2503
  mainnet: true,
2504
+ logo: chainLogo(ChainKeys.ARBITRUM_MAINNET),
2270
2505
  explorer: {
2271
2506
  baseUrl: "https://arbiscan.io/",
2272
2507
  txUrl: "https://arbiscan.io/tx/",
@@ -2280,6 +2515,7 @@ var baseChainInfo = {
2280
2515
  type: "EVM",
2281
2516
  chainId: 8453,
2282
2517
  mainnet: true,
2518
+ logo: chainLogo(ChainKeys.BASE_MAINNET),
2283
2519
  explorer: {
2284
2520
  baseUrl: "https://basescan.org/",
2285
2521
  txUrl: "https://basescan.org/tx/",
@@ -2293,6 +2529,7 @@ var baseChainInfo = {
2293
2529
  type: "EVM",
2294
2530
  chainId: 10,
2295
2531
  mainnet: true,
2532
+ logo: chainLogo(ChainKeys.OPTIMISM_MAINNET),
2296
2533
  explorer: {
2297
2534
  baseUrl: "https://optimistic.etherscan.io/",
2298
2535
  txUrl: "https://optimistic.etherscan.io/tx/",
@@ -2306,6 +2543,7 @@ var baseChainInfo = {
2306
2543
  type: "EVM",
2307
2544
  chainId: 56,
2308
2545
  mainnet: true,
2546
+ logo: chainLogo(ChainKeys.BSC_MAINNET),
2309
2547
  explorer: {
2310
2548
  baseUrl: "https://bscscan.com/",
2311
2549
  txUrl: "https://bscscan.com/tx/",
@@ -2319,6 +2557,7 @@ var baseChainInfo = {
2319
2557
  type: "EVM",
2320
2558
  chainId: 137,
2321
2559
  mainnet: true,
2560
+ logo: chainLogo(ChainKeys.POLYGON_MAINNET),
2322
2561
  explorer: {
2323
2562
  baseUrl: "https://polygonscan.com/",
2324
2563
  txUrl: "https://polygonscan.com/tx/",
@@ -2332,6 +2571,7 @@ var baseChainInfo = {
2332
2571
  type: "EVM",
2333
2572
  chainId: 999,
2334
2573
  mainnet: true,
2574
+ logo: chainLogo(ChainKeys.HYPEREVM_MAINNET),
2335
2575
  explorer: {
2336
2576
  baseUrl: "https://hyperevmscan.io/",
2337
2577
  txUrl: "https://hyperevmscan.io/tx/",
@@ -2345,6 +2585,7 @@ var baseChainInfo = {
2345
2585
  type: "EVM",
2346
2586
  chainId: 1890,
2347
2587
  mainnet: true,
2588
+ logo: chainLogo(ChainKeys.LIGHTLINK_MAINNET),
2348
2589
  explorer: {
2349
2590
  baseUrl: "https://phoenix.lightlink.io/",
2350
2591
  txUrl: "https://phoenix.lightlink.io/tx/",
@@ -2358,6 +2599,7 @@ var baseChainInfo = {
2358
2599
  type: "INJECTIVE",
2359
2600
  chainId: "injective-1",
2360
2601
  mainnet: true,
2602
+ logo: chainLogo(ChainKeys.INJECTIVE_MAINNET),
2361
2603
  explorer: {
2362
2604
  baseUrl: "https://www.mintscan.io/injective/",
2363
2605
  txUrl: "https://www.mintscan.io/injective/tx/",
@@ -2371,6 +2613,7 @@ var baseChainInfo = {
2371
2613
  type: "STELLAR",
2372
2614
  chainId: "stellar",
2373
2615
  mainnet: true,
2616
+ logo: chainLogo(ChainKeys.STELLAR_MAINNET),
2374
2617
  explorer: {
2375
2618
  baseUrl: "https://stellar.expert/explorer/public/",
2376
2619
  txUrl: "https://stellar.expert/explorer/public/tx/",
@@ -2384,6 +2627,7 @@ var baseChainInfo = {
2384
2627
  type: "SUI",
2385
2628
  chainId: "sui",
2386
2629
  mainnet: true,
2630
+ logo: chainLogo(ChainKeys.SUI_MAINNET),
2387
2631
  explorer: {
2388
2632
  baseUrl: "https://suivision.xyz/",
2389
2633
  txUrl: "https://suivision.xyz/txblock/",
@@ -2397,6 +2641,7 @@ var baseChainInfo = {
2397
2641
  type: "ICON",
2398
2642
  chainId: "0x1.icon",
2399
2643
  mainnet: true,
2644
+ logo: chainLogo(ChainKeys.ICON_MAINNET),
2400
2645
  explorer: {
2401
2646
  baseUrl: "https://tracker.icon.community/",
2402
2647
  txUrl: "https://tracker.icon.community/transaction/",
@@ -2410,6 +2655,7 @@ var baseChainInfo = {
2410
2655
  type: "NEAR",
2411
2656
  chainId: "near",
2412
2657
  mainnet: true,
2658
+ logo: chainLogo(ChainKeys.NEAR_MAINNET),
2413
2659
  explorer: {
2414
2660
  baseUrl: "https://nearblocks.io/",
2415
2661
  txUrl: "https://nearblocks.io/txns/",
@@ -2423,6 +2669,7 @@ var baseChainInfo = {
2423
2669
  type: "EVM",
2424
2670
  chainId: 1,
2425
2671
  mainnet: true,
2672
+ logo: chainLogo(ChainKeys.ETHEREUM_MAINNET),
2426
2673
  explorer: {
2427
2674
  baseUrl: "https://etherscan.io/",
2428
2675
  txUrl: "https://etherscan.io/tx/",
@@ -2436,6 +2683,7 @@ var baseChainInfo = {
2436
2683
  type: "BITCOIN",
2437
2684
  chainId: "bitcoin",
2438
2685
  mainnet: true,
2686
+ logo: chainLogo(ChainKeys.BITCOIN_MAINNET),
2439
2687
  explorer: {
2440
2688
  baseUrl: "https://mempool.space/",
2441
2689
  txUrl: "https://mempool.space/tx/",
@@ -2449,6 +2697,7 @@ var baseChainInfo = {
2449
2697
  type: "EVM",
2450
2698
  chainId: 151,
2451
2699
  mainnet: true,
2700
+ logo: chainLogo(ChainKeys.REDBELLY_MAINNET),
2452
2701
  explorer: {
2453
2702
  baseUrl: "https://redbelly.routescan.io/",
2454
2703
  txUrl: "https://redbelly.routescan.io/tx/",
@@ -2462,6 +2711,7 @@ var baseChainInfo = {
2462
2711
  type: "EVM",
2463
2712
  chainId: 8217,
2464
2713
  mainnet: true,
2714
+ logo: chainLogo(ChainKeys.KAIA_MAINNET),
2465
2715
  explorer: {
2466
2716
  baseUrl: "https://klaytnfinder.io/",
2467
2717
  txUrl: "https://klaytnfinder.io/tx/",
@@ -2475,12 +2725,27 @@ var baseChainInfo = {
2475
2725
  type: "STACKS",
2476
2726
  chainId: "stacks",
2477
2727
  mainnet: true,
2728
+ logo: chainLogo(ChainKeys.STACKS_MAINNET),
2478
2729
  explorer: {
2479
2730
  baseUrl: "https://explorer.hiro.so/",
2480
2731
  txUrl: "https://explorer.hiro.so/txid/",
2481
2732
  addressUrl: "https://explorer.hiro.so/address/",
2482
2733
  contractUrl: "https://explorer.hiro.so/txid/"
2483
2734
  }
2735
+ },
2736
+ [ChainKeys.HEDERA_MAINNET]: {
2737
+ name: "Hedera",
2738
+ key: ChainKeys.HEDERA_MAINNET,
2739
+ type: "EVM",
2740
+ chainId: 295,
2741
+ mainnet: true,
2742
+ logo: chainLogo(ChainKeys.HEDERA_MAINNET),
2743
+ explorer: {
2744
+ baseUrl: "https://hashscan.io/mainnet/",
2745
+ txUrl: "https://hashscan.io/mainnet/transaction/",
2746
+ addressUrl: "https://hashscan.io/mainnet/account/",
2747
+ contractUrl: "https://hashscan.io/mainnet/contract/"
2748
+ }
2484
2749
  }
2485
2750
  };
2486
2751
  var filterChainKeysByType = (type) => CHAIN_KEYS.filter((key) => baseChainInfo[key].type === type);
@@ -2711,9 +2976,9 @@ var spokeChainConfig = {
2711
2976
  supportedTokens: bitcoinSupportedTokens,
2712
2977
  radfi: {
2713
2978
  walletMode: "TRADING",
2714
- apiUrl: "https://api.radfi.co/api",
2979
+ apiUrl: "https://api.bound.exchange/api",
2715
2980
  apiKey: "",
2716
- umsUrl: "https://ums.radfi.co/api",
2981
+ umsUrl: "https://api.ums.bound.exchange/api",
2717
2982
  accessToken: "",
2718
2983
  refreshToken: ""
2719
2984
  },
@@ -2746,6 +3011,21 @@ var spokeChainConfig = {
2746
3011
  assetCode: "SODA",
2747
3012
  contractId: "CAH5LKJC2ZB4RVUVEVL2QWJWNJLHQE2UF767ILLQ5EQ4O3OURR2XIUGM",
2748
3013
  assetIssuer: "GDYUTHY75A7WUZJQDPOP66FB32BOYGZRXHWTWO4Q6LQTANT5X3V5HNFA"
3014
+ },
3015
+ {
3016
+ assetCode: "sodaETH",
3017
+ contractId: "CDK5EWVTZLGSLI6D5OSES7XUKWZUKBXDRNOWUVDNPP5RJRP5EYWCW7SL",
3018
+ assetIssuer: "GDYUTHY75A7WUZJQDPOP66FB32BOYGZRXHWTWO4Q6LQTANT5X3V5HNFA"
3019
+ },
3020
+ {
3021
+ assetCode: "sodaBTC",
3022
+ contractId: "CD6XWBW74YVFDQQYUM2GALCULMA5MAWGP6NTCWF3ZYXP4Z7MEVY4JKBX",
3023
+ assetIssuer: "GDYUTHY75A7WUZJQDPOP66FB32BOYGZRXHWTWO4Q6LQTANT5X3V5HNFA"
3024
+ },
3025
+ {
3026
+ assetCode: "sodaBNB",
3027
+ contractId: "CCXTXZAFLVNTMORVWYB6BGL7YEW3U3ONDAL2FGBRGDUQH7AGANVQPRS6",
3028
+ assetIssuer: "GDYUTHY75A7WUZJQDPOP66FB32BOYGZRXHWTWO4Q6LQTANT5X3V5HNFA"
2749
3029
  }
2750
3030
  ],
2751
3031
  supportedTokens: stellarSupportedTokens,
@@ -2861,6 +3141,21 @@ var spokeChainConfig = {
2861
3141
  pollingIntervalMs: 1e4,
2862
3142
  maxTimeoutMs: 12e4
2863
3143
  }
3144
+ },
3145
+ [ChainKeys.HEDERA_MAINNET]: {
3146
+ chain: baseChainInfo[ChainKeys.HEDERA_MAINNET],
3147
+ rpcUrl: "https://mainnet.hashio.io/api",
3148
+ addresses: {
3149
+ assetManager: "0x0df73542cC68bDC01b361d231c60F726B0e0bC05",
3150
+ connection: "0x4555aC13D7338D9E671584C1D118c06B2a3C88eD"
3151
+ },
3152
+ nativeToken: "0x0000000000000000000000000000000000000000",
3153
+ bnUSD: "0x0000000000000000000000000000000000a0286a",
3154
+ supportedTokens: hederaSupportedTokens,
3155
+ pollingConfig: {
3156
+ pollingIntervalMs: 2e3,
3157
+ maxTimeoutMs: 6e4
3158
+ }
2864
3159
  }
2865
3160
  };
2866
3161
  CHAIN_KEYS.filter((chainId) => chainId !== ChainKeys.ICON_MAINNET);
@@ -2892,10 +3187,57 @@ var hubConfig = {
2892
3187
  spokeChainConfig[ChainKeys.SONIC_MAINNET].supportedTokens.USDT,
2893
3188
  spokeChainConfig[ChainKeys.SONIC_MAINNET].supportedTokens.wS,
2894
3189
  spokeChainConfig[ChainKeys.SONIC_MAINNET].supportedTokens.SODA,
2895
- spokeChainConfig[ChainKeys.SONIC_MAINNET].supportedTokens.bnUSD,
2896
- ...Object.values(SodaTokens)
3190
+ // sodaUSDS is staging-only — see stagingSwapSupportedTokens
3191
+ ...Object.values(SodaTokens).filter((t) => t !== SodaTokens.sodaUSDS),
3192
+ ...Object.values(LsodaTokens)
2897
3193
  ]});
2898
3194
 
3195
+ // ../types/dist/leverageYield/leverageYield.js
3196
+ [
3197
+ {
3198
+ name: LsodaTokens.lsodaWEETH.symbol,
3199
+ vault: LsodaTokens.lsodaWEETH.vault,
3200
+ asset: SodaTokens.sodaWEETH.address,
3201
+ // sodaWEETH on Sonic
3202
+ borrowToken: SodaTokens.sodaETH.address,
3203
+ // sodaETH on Sonic
3204
+ lsdSource: {
3205
+ // DefiLlama pool for EtherFi's weETH on Ethereum (project: 'ether.fi-stake').
3206
+ poolId: "46bd2bdf-6d92-4066-b482-e885ee172264",
3207
+ fallbackAprPct: 3,
3208
+ label: "EtherFi (weETH)"
3209
+ }
3210
+ },
3211
+ {
3212
+ name: LsodaTokens.lsodaWSTETH.symbol,
3213
+ vault: LsodaTokens.lsodaWSTETH.vault,
3214
+ asset: SodaTokens.sodaWSTETH.address,
3215
+ // sodaWSTETH on Sonic
3216
+ borrowToken: SodaTokens.sodaETH.address,
3217
+ // sodaETH on Sonic
3218
+ lsdSource: {
3219
+ // DefiLlama pool for Lido's stETH on Ethereum (wstETH inherits this rate via redeem).
3220
+ poolId: "747c1d2a-c668-4682-b9f9-296708a3dd90",
3221
+ fallbackAprPct: 2.4,
3222
+ label: "Lido (stETH)"
3223
+ }
3224
+ },
3225
+ {
3226
+ name: LsodaTokens.lsodaJITOSOL.symbol,
3227
+ vault: LsodaTokens.lsodaJITOSOL.vault,
3228
+ asset: SodaTokens.sodaJITOSOL.address,
3229
+ // sodaJITOSOL on Sonic
3230
+ borrowToken: SodaTokens.sodaSOL.address,
3231
+ // sodaSOL on Sonic
3232
+ lsdSource: {
3233
+ // DefiLlama pool for Jito's JitoSOL native staking on Solana (project: 'jito-liquid-staking').
3234
+ poolId: "0e7d0722-9054-4907-8593-567b353c0900",
3235
+ fallbackAprPct: 5.5,
3236
+ label: "Jito (JitoSOL)"
3237
+ }
3238
+ }
3239
+ ];
3240
+
2899
3241
  // ../types/dist/bitcoin/bitcoin.js
2900
3242
  function detectBitcoinAddressType(address) {
2901
3243
  if (address.startsWith("bc1p") || address.startsWith("tb1p"))
@@ -2951,6 +3293,8 @@ function getEvmViemChain(key) {
2951
3293
  return redbellyMainnet;
2952
3294
  case ChainKeys.KAIA_MAINNET:
2953
3295
  return kaia;
3296
+ case ChainKeys.HEDERA_MAINNET:
3297
+ return hedera;
2954
3298
  default: {
2955
3299
  const exhaustiveCheck = key;
2956
3300
  console.log(exhaustiveCheck);
@@ -3324,13 +3668,32 @@ function txResponseToExecuteResponse(txResult) {
3324
3668
  transactionHash: txResult.txHash
3325
3669
  };
3326
3670
  }
3671
+ var COSMWASM_MSG_EXECUTE_CONTRACT_TYPE_URL = "/cosmwasm.wasm.v1.MsgExecuteContract";
3672
+ function decodeInjectiveExecuteMsgs(bodyBytes) {
3673
+ const { messages } = TxBody.decode(bodyBytes);
3674
+ return messages.map((message) => {
3675
+ if (message.typeUrl !== COSMWASM_MSG_EXECUTE_CONTRACT_TYPE_URL) {
3676
+ throw new Error(`Injective: cannot rebuild message type ${message.typeUrl} for browser signing.`);
3677
+ }
3678
+ const { sender, contract, msg, funds } = MsgExecuteContract$1.decode(message.value);
3679
+ return MsgExecuteContractCompat.fromJSON({
3680
+ contractAddress: contract,
3681
+ sender,
3682
+ msg: JSON.parse(Buffer.from(msg).toString("utf8")),
3683
+ funds: funds.map((coin) => ({ denom: coin.denom, amount: coin.amount }))
3684
+ });
3685
+ });
3686
+ }
3327
3687
  var InjectiveWalletProvider = class extends BaseWalletProvider {
3328
3688
  chainType = "INJECTIVE";
3329
3689
  wallet;
3690
+ /** Network endpoints used to broadcast a signed `TxRaw` via {@link sendTransaction}. */
3691
+ endpoints;
3330
3692
  constructor(config) {
3331
3693
  super(config.defaults);
3332
3694
  if (isBrowserExtensionInjectiveWalletConfig(config)) {
3333
3695
  this.wallet = { msgBroadcaster: config.msgBroadcaster };
3696
+ this.endpoints = config.msgBroadcaster.endpoints;
3334
3697
  return;
3335
3698
  }
3336
3699
  if (isSecretInjectiveWalletConfig(config)) {
@@ -3343,6 +3706,7 @@ var InjectiveWalletProvider = class extends BaseWalletProvider {
3343
3706
  throw new Error("Invalid Secret Injective wallet config");
3344
3707
  }
3345
3708
  this.wallet = { msgBroadcaster: new MsgBroadcasterWithPk({ privateKey, network: config.network }) };
3709
+ this.endpoints = getNetworkEndpoints(config.network);
3346
3710
  return;
3347
3711
  }
3348
3712
  throw new Error("Invalid Injective wallet config");
@@ -3435,6 +3799,53 @@ var InjectiveWalletProvider = class extends BaseWalletProvider {
3435
3799
  }
3436
3800
  return txResponseToExecuteResponse(txResult);
3437
3801
  }
3802
+ /**
3803
+ * Broadcasts an already-signed, proto-encoded Cosmos `TxRaw` via the configured gRPC endpoint.
3804
+ * @param signedTxRaw - The signed transaction, encoded with `TxRaw.encode(...).finish()`.
3805
+ * @returns The transaction hash.
3806
+ * @throws {Error} if the node rejects the transaction (non-zero result code).
3807
+ */
3808
+ async sendTransaction(signedTxRaw) {
3809
+ const txRaw = TxRaw.decode(signedTxRaw);
3810
+ const res = await new TxGrpcApi(this.endpoints.grpc).broadcast(txRaw);
3811
+ if (res.code !== 0) {
3812
+ throw new Error(`Injective broadcast failed (code ${res.code}): ${res.rawLog}`);
3813
+ }
3814
+ return res.txHash;
3815
+ }
3816
+ /**
3817
+ * Signs and broadcasts an unsigned `InjectiveRawTransaction` (e.g. from the Swaps API).
3818
+ *
3819
+ * - **PK (secret) mode**: signs the exact unsigned `SignDoc` (`bodyBytes`/`authInfoBytes`) and
3820
+ * broadcasts it as-is, preserving the precise fee/account the Swaps API built.
3821
+ * - **Browser mode (Keplr/Leap/Metamask)**: an EVM wallet can't sign a raw Cosmos `SignDoc`, so we
3822
+ * recover the messages from `bodyBytes` and broadcast them through the fee-delegation path (same as
3823
+ * {@link execute}). The broadcaster builds the wallet-appropriate sign payload (DIRECT for Cosmos
3824
+ * wallets, EIP-712 for Metamask). Trade-off: the broadcaster recomputes gas/fee rather than using
3825
+ * the exact fee in the raw tx; the on-chain effect (the execute message) is unchanged.
3826
+ *
3827
+ * @returns The transaction hash.
3828
+ */
3829
+ async signAndSendTransaction(tx) {
3830
+ const { bodyBytes, authInfoBytes, chainId, accountNumber } = tx.signedDoc;
3831
+ const signerAddress = await this.getWalletAddress();
3832
+ if (tx.from !== signerAddress) {
3833
+ throw new Error(`Injective: cannot sign transaction for ${tx.from} with wallet ${signerAddress}.`);
3834
+ }
3835
+ if (this.wallet.msgBroadcaster instanceof MsgBroadcasterWithPk) {
3836
+ const signDoc = SignDoc.fromPartial({ bodyBytes, authInfoBytes, chainId, accountNumber });
3837
+ const signBytes = SignDoc.encode(signDoc).finish();
3838
+ const signature = this.wallet.msgBroadcaster.privateKey.sign(Buffer.from(signBytes));
3839
+ const signedTxRaw = TxRaw.fromPartial({ bodyBytes, authInfoBytes, signatures: [signature] });
3840
+ return this.sendTransaction(TxRaw.encode(signedTxRaw).finish());
3841
+ }
3842
+ const msgs = decodeInjectiveExecuteMsgs(bodyBytes);
3843
+ const txResult = await this.wallet.msgBroadcaster.broadcastWithFeeDelegation({
3844
+ msgs,
3845
+ injectiveAddress: signerAddress
3846
+ });
3847
+ return txResult.txHash;
3848
+ }
3438
3849
  };
3439
3850
  var DEFAULT_CONNECTION_COMMITMENT = "confirmed";
3440
3851
  var DEFAULT_CONFIRM_COMMITMENT = "finalized";
@@ -3483,6 +3894,12 @@ var SolanaWalletProvider = class extends BaseWalletProvider {
3483
3894
  const sendOptions = shallowMerge(this.defaults.sendOptions, options);
3484
3895
  return this.connection.sendRawTransaction(rawTransaction, sendOptions);
3485
3896
  }
3897
+ async signAndSendTransaction(params) {
3898
+ const serializedTxBytes = Buffer.from(params.data, "base64");
3899
+ const versionedTx = VersionedTransaction.deserialize(serializedTxBytes);
3900
+ const signedTx = await this.signAndSerializeTransaction(versionedTx);
3901
+ return this.sendTransaction(signedTx);
3902
+ }
3486
3903
  async sendTransactionWithConfirmation(rawTransaction, optionsOrCommitment) {
3487
3904
  const isCommitmentArg = typeof optionsOrCommitment === "string";
3488
3905
  const sendOpts = isCommitmentArg ? void 0 : optionsOrCommitment?.send;
@@ -3516,6 +3933,31 @@ var SolanaWalletProvider = class extends BaseWalletProvider {
3516
3933
  const tx = await adapterWallet.signTransaction(new VersionedTransaction(messageV0));
3517
3934
  return tx.serialize();
3518
3935
  }
3936
+ async signTransaction(transaction) {
3937
+ if (this.isAdapterMode) {
3938
+ return this.signTransactionWithAdapter(transaction);
3939
+ }
3940
+ return this.signTransactionWithKeypair(transaction);
3941
+ }
3942
+ async signAndSerializeTransaction(transaction) {
3943
+ const tx = await this.signTransaction(transaction);
3944
+ return tx.serialize();
3945
+ }
3946
+ async signTransactionWithAdapter(transaction) {
3947
+ const adapterWallet = this.wallet;
3948
+ if (!adapterWallet.signTransaction) {
3949
+ throw new Error("Wallet signTransaction is not initialized");
3950
+ }
3951
+ return adapterWallet.signTransaction(transaction);
3952
+ }
3953
+ async signTransactionWithKeypair(transaction) {
3954
+ if (this.isAdapterMode) {
3955
+ throw new Error("Cannot sign transaction with keypair in adapter mode");
3956
+ }
3957
+ const keypairWallet = this.wallet;
3958
+ transaction.sign([keypairWallet]);
3959
+ return transaction;
3960
+ }
3519
3961
  async buildV0TxnWithKeypair(rawInstructions) {
3520
3962
  const keypairWallet = this.wallet;
3521
3963
  const instructions = this.buildTransactionInstruction(rawInstructions);
@@ -3567,6 +4009,10 @@ var STELLAR_HORIZON_URLS = {
3567
4009
  TESTNET: "https://horizon-testnet.stellar.org",
3568
4010
  PUBLIC: "https://horizon.stellar.org"
3569
4011
  };
4012
+ var STELLAR_SOROBAN_URLS = {
4013
+ TESTNET: "https://soroban-testnet.stellar.org",
4014
+ PUBLIC: "https://rpc.ankr.com/stellar_soroban"
4015
+ };
3570
4016
  var STELLAR_NETWORK_PASSPHRASES = {
3571
4017
  TESTNET: Networks.TESTNET,
3572
4018
  PUBLIC: Networks.PUBLIC
@@ -3608,6 +4054,7 @@ var StellarWalletProvider = class extends BaseWalletProvider {
3608
4054
  chainType = "STELLAR";
3609
4055
  wallet;
3610
4056
  server;
4057
+ sorobanServer;
3611
4058
  networkPassphrase;
3612
4059
  constructor(config) {
3613
4060
  super(config.defaults);
@@ -3616,6 +4063,9 @@ var StellarWalletProvider = class extends BaseWalletProvider {
3616
4063
  }
3617
4064
  this.networkPassphrase = this.defaults.networkPassphrase ?? STELLAR_NETWORK_PASSPHRASES[config.network];
3618
4065
  this.server = new Horizon.Server(config.rpcUrl ?? STELLAR_HORIZON_URLS[config.network]);
4066
+ this.sorobanServer = new rpc.Server(config.sorobanRpcUrl ?? STELLAR_SOROBAN_URLS[config.network], {
4067
+ allowHttp: true
4068
+ });
3619
4069
  if (isPrivateKeyStellarWalletConfig(config)) {
3620
4070
  if (!isValidStellarPrivateKey(config.privateKey)) {
3621
4071
  throw new StellarWalletError("Invalid private key format", "INVALID_PRIVATE_KEY");
@@ -3666,6 +4116,38 @@ var StellarWalletProvider = class extends BaseWalletProvider {
3666
4116
  );
3667
4117
  }
3668
4118
  }
4119
+ /**
4120
+ * Broadcasts an already-signed XDR transaction via the Soroban RPC server.
4121
+ * @returns The transaction hash.
4122
+ * @throws {StellarWalletError} with code `SEND_TX_ERROR` if submission fails or the RPC returns an error status.
4123
+ */
4124
+ async sendTransaction(signedTx) {
4125
+ try {
4126
+ const tx = TransactionBuilder.fromXDR(signedTx, this.networkPassphrase);
4127
+ const response = await this.sorobanServer.sendTransaction(tx);
4128
+ if (response.status === "ERROR") {
4129
+ throw new StellarWalletError(`Failed to submit transaction: ${JSON.stringify(response)}`, "SEND_TX_ERROR");
4130
+ }
4131
+ return response.hash;
4132
+ } catch (error) {
4133
+ if (error instanceof StellarWalletError) {
4134
+ throw error;
4135
+ }
4136
+ throw new StellarWalletError(
4137
+ error instanceof Error ? error.message : "Failed to send transaction",
4138
+ "SEND_TX_ERROR"
4139
+ );
4140
+ }
4141
+ }
4142
+ /**
4143
+ * Signs and broadcasts an unsigned `StellarRawTransaction` (e.g. from the Swaps API).
4144
+ * @returns The transaction hash.
4145
+ * @throws {StellarWalletError} with code `SIGN_TX_ERROR` if signing fails, or `SEND_TX_ERROR` if broadcasting fails.
4146
+ */
4147
+ async signAndSendTransaction(params) {
4148
+ const signedXdr = await this.signTransaction(params.data);
4149
+ return this.sendTransaction(signedXdr);
4150
+ }
3669
4151
  /**
3670
4152
  * Polls the Horizon server until the transaction is confirmed or the timeout is reached.
3671
4153
  * @throws {StellarWalletError} with code `TX_RECEIPT_TIMEOUT` if the transaction is not found within `pollTimeout` ms.
@@ -3734,6 +4216,26 @@ var StacksWalletProvider = class extends BaseWalletProvider {
3734
4216
  }
3735
4217
  return this.sendTransactionWithAdapter(finalParams, this.wallet);
3736
4218
  }
4219
+ /**
4220
+ * Signs and broadcasts an unsigned `StacksRawTransaction` (e.g. from the Swaps API). The raw tx's
4221
+ * `payload` is the hex-serialized contract-call payload; this deserializes it back into the
4222
+ * contract-call params and routes through `sendTransaction` (which signs + broadcasts in both
4223
+ * private-key and browser-extension modes). Returns the transaction id.
4224
+ */
4225
+ async signAndSendTransaction(params) {
4226
+ const payload = deserializePayload(params.payload);
4227
+ if (payload.payloadType !== PayloadType.ContractCall) {
4228
+ throw new Error("signAndSendTransaction: expected a contract-call payload.");
4229
+ }
4230
+ return this.sendTransaction({
4231
+ contractAddress: addressToString(payload.contractAddress),
4232
+ contractName: payload.contractName.content,
4233
+ functionName: payload.functionName.content,
4234
+ functionArgs: payload.functionArgs,
4235
+ postConditionMode: PostConditionMode.Allow
4236
+ // matches how the spoke service builds the tx
4237
+ });
4238
+ }
3737
4239
  async sendTransactionWithPrivateKey(txParams, wallet) {
3738
4240
  const transaction = await makeContractCall({
3739
4241
  contractAddress: txParams.contractAddress,
@@ -11606,5 +12108,3 @@ var BitcoinWalletProvider = class extends BaseWalletProvider {
11606
12108
  */
11607
12109
 
11608
12110
  export { BaseWalletProvider, BigNumberToBigInt, BitcoinWalletError, BitcoinWalletProvider, EvmWalletProvider, IconWalletProvider, InjectiveWalletProvider, NearWalletProvider, SolanaWalletProvider, StacksWalletProvider, StellarWalletError, StellarWalletProvider, SuiWalletProvider, getEvmViemChain, hyper, isBrowserExtensionEvmWalletConfig, isBrowserExtensionIconWalletConfig, isBrowserExtensionInjectiveWalletConfig, isBrowserExtensionNearWalletConfig, isBrowserExtensionStacksWalletConfig, isBrowserExtensionStellarWalletConfig, isBrowserExtensionSuiWallet, isIconAddress, isIconBrowserExtensionWallet, isIconEoaAddress, isIconPkWallet, isJsonRpcPayloadResponse, isPkSuiWallet, isPrivateKeyEvmWalletConfig, isPrivateKeyIconWalletConfig, isPrivateKeyNearWalletConfig, isPrivateKeyStacksWalletConfig, isPrivateKeyStellarWalletConfig, isResponseAddressType, isResponseSigningType, isSecretInjectiveWalletConfig, isStellarBrowserExtensionWallet, isStellarPkWallet, isValidStellarNetwork, isValidStellarPrivateKey, requestAddress, requestJsonRpc, requestSigning };
11609
- //# sourceMappingURL=index.mjs.map
11610
- //# sourceMappingURL=index.mjs.map