@sodax/sdk 1.2.1-beta → 1.2.3-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -17712,37 +17712,18 @@ var StakingService = class {
17712
17712
  if (params.action === "stake" || params.action === "unstake" || params.action === "instantUnstake") {
17713
17713
  invariant6__default.default(params.amount > 0n, "Amount must be greater than 0");
17714
17714
  const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
17715
- const targetToken = params.action === "stake" || spokeProvider.chainConfig.chain.id !== this.hubProvider.chainConfig.chain.id ? spokeProvider.chainConfig.supportedTokens.SODA?.address : this.hubProvider.chainConfig.addresses.xSoda;
17715
+ const targetToken = params.action === "stake" || !isHubSpokeProvider(spokeProvider, this.hubProvider) ? spokeProvider.chainConfig.supportedTokens.SODA?.address : this.hubProvider.chainConfig.addresses.xSoda;
17716
17716
  invariant6__default.default(targetToken, "Target token not found");
17717
- if (isEvmSpokeProviderType(spokeProvider)) {
17718
- const allowanceResult = await Erc20Service.isAllowanceValid(
17719
- targetToken,
17720
- params.amount,
17717
+ if (isEvmSpokeProviderType(spokeProvider) || isSonicSpokeProviderType(spokeProvider)) {
17718
+ const spender = isHubSpokeProvider(spokeProvider, this.hubProvider) ? await HubService.getUserRouter(
17721
17719
  walletAddress,
17722
- spokeProvider.chainConfig.addresses.assetManager,
17723
- spokeProvider
17724
- );
17725
- if (!allowanceResult.ok) {
17726
- return {
17727
- ok: false,
17728
- error: {
17729
- code: "ALLOWANCE_CHECK_FAILED",
17730
- error: allowanceResult.error
17731
- }
17732
- };
17733
- }
17734
- return {
17735
- ok: true,
17736
- value: allowanceResult.value
17737
- };
17738
- }
17739
- if (isSonicSpokeProviderType(spokeProvider)) {
17740
- const userRouter = await SonicSpokeService.getUserRouter(walletAddress, spokeProvider);
17720
+ this.hubProvider
17721
+ ) : spokeProvider.chainConfig.addresses.assetManager;
17741
17722
  const allowanceResult = await Erc20Service.isAllowanceValid(
17742
17723
  targetToken,
17743
17724
  params.amount,
17744
17725
  walletAddress,
17745
- userRouter,
17726
+ spender,
17746
17727
  spokeProvider
17747
17728
  );
17748
17729
  if (!allowanceResult.ok) {
@@ -17803,13 +17784,17 @@ var StakingService = class {
17803
17784
  if (params.action === "stake" || params.action === "unstake" || params.action === "instantUnstake") {
17804
17785
  invariant6__default.default(params.amount > 0n, "Amount must be greater than 0");
17805
17786
  const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
17806
- const targetToken = params.action === "stake" || spokeProvider.chainConfig.chain.id !== this.hubProvider.chainConfig.chain.id ? spokeProvider.chainConfig.supportedTokens.SODA?.address : this.hubProvider.chainConfig.addresses.xSoda;
17787
+ const targetToken = params.action === "stake" || !isHubSpokeProvider(spokeProvider, this.hubProvider) ? spokeProvider.chainConfig.supportedTokens.SODA?.address : this.hubProvider.chainConfig.addresses.xSoda;
17807
17788
  invariant6__default.default(targetToken, "Target token not found");
17808
- if (isEvmSpokeProviderType(spokeProvider)) {
17789
+ if (isEvmSpokeProviderType(spokeProvider) || isSonicSpokeProviderType(spokeProvider)) {
17790
+ const spender = isHubSpokeProvider(spokeProvider, this.hubProvider) ? await HubService.getUserRouter(
17791
+ walletAddress,
17792
+ this.hubProvider
17793
+ ) : spokeProvider.chainConfig.addresses.assetManager;
17809
17794
  const result = await Erc20Service.approve(
17810
17795
  targetToken,
17811
17796
  params.amount,
17812
- spokeProvider.chainConfig.addresses.assetManager,
17797
+ spender,
17813
17798
  spokeProvider,
17814
17799
  raw
17815
17800
  );
@@ -17818,17 +17803,6 @@ var StakingService = class {
17818
17803
  value: result
17819
17804
  };
17820
17805
  }
17821
- if (isSonicSpokeProviderType(spokeProvider)) {
17822
- const userRouter = await SonicSpokeService.getUserRouter(
17823
- walletAddress,
17824
- spokeProvider
17825
- );
17826
- const result = await Erc20Service.approve(targetToken, params.amount, userRouter, spokeProvider, raw);
17827
- return {
17828
- ok: true,
17829
- value: result
17830
- };
17831
- }
17832
17806
  if (isStellarSpokeProviderType(spokeProvider)) {
17833
17807
  const result = await StellarSpokeService.requestTrustline(targetToken, params.amount, spokeProvider, raw);
17834
17808
  return {
@@ -17888,7 +17862,7 @@ var StakingService = class {
17888
17862
  };
17889
17863
  }
17890
17864
  let hubTxHash = null;
17891
- if (spokeProvider.chainConfig.chain.id !== this.hubProvider.chainConfig.chain.id) {
17865
+ if (!isHubSpokeProvider(spokeProvider, this.hubProvider)) {
17892
17866
  const packetResult = await relayTxAndWaitPacket(
17893
17867
  txResult.value,
17894
17868
  spokeProvider instanceof SolanaSpokeProvider ? txResult.data : void 0,
@@ -17945,16 +17919,12 @@ var StakingService = class {
17945
17919
  invariant6__default.default(sodaToken, "SODA token not found");
17946
17920
  const sodaAsset = this.configService.getHubAssetInfo(spokeProvider.chainConfig.chain.id, sodaToken.address);
17947
17921
  invariant6__default.default(sodaAsset, "SODA asset not found");
17948
- const hubWallet = await WalletAbstractionService.getUserAbstractedWalletAddress(
17922
+ const hubWallet = await HubService.getUserHubWalletAddress(
17949
17923
  walletAddress,
17950
- spokeProvider,
17924
+ spokeProvider.chainConfig.chain.id,
17951
17925
  this.hubProvider
17952
17926
  );
17953
- let to = hubWallet;
17954
- if (spokeProvider.chainConfig.chain.id === this.hubProvider.chainConfig.chain.id) {
17955
- to = walletAddress;
17956
- }
17957
- const data = this.buildStakeData(sodaAsset, to, params);
17927
+ const data = this.buildStakeData(sodaAsset, hubWallet, params);
17958
17928
  const txResult = await SpokeService.deposit(
17959
17929
  {
17960
17930
  from: walletAddress,
@@ -18025,7 +17995,7 @@ var StakingService = class {
18025
17995
  };
18026
17996
  }
18027
17997
  let hubTxHash = null;
18028
- if (spokeProvider.chainConfig.chain.id !== this.hubProvider.chainConfig.chain.id) {
17998
+ if (!isHubSpokeProvider(spokeProvider, this.hubProvider)) {
18029
17999
  const packetResult = await relayTxAndWaitPacket(
18030
18000
  txResult.value,
18031
18001
  spokeProvider instanceof SolanaSpokeProvider ? txResult.data : void 0,
@@ -18077,11 +18047,10 @@ var StakingService = class {
18077
18047
  raw
18078
18048
  }) {
18079
18049
  try {
18080
- const isHub = this.hubProvider.chainConfig.chain.id === spokeProvider.chainConfig.chain.id;
18081
18050
  const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
18082
- const hubWallet = await WalletAbstractionService.getUserAbstractedWalletAddress(
18051
+ const hubWallet = await HubService.getUserHubWalletAddress(
18083
18052
  walletAddress,
18084
- spokeProvider,
18053
+ spokeProvider.chainConfig.chain.id,
18085
18054
  this.hubProvider
18086
18055
  );
18087
18056
  const xSoda = this.hubProvider.chainConfig.addresses.xSoda;
@@ -18091,23 +18060,7 @@ var StakingService = class {
18091
18060
  this.hubProvider.publicClient
18092
18061
  );
18093
18062
  const data = this.buildUnstakeData(hubWallet, params, xSoda, underlyingSodaAmount);
18094
- let txResult;
18095
- if (isHub) {
18096
- txResult = await SpokeService.deposit(
18097
- {
18098
- from: walletAddress,
18099
- to: hubWallet,
18100
- token: this.hubProvider.chainConfig.addresses.xSoda,
18101
- amount: params.amount,
18102
- data
18103
- },
18104
- spokeProvider,
18105
- this.hubProvider,
18106
- raw
18107
- );
18108
- } else {
18109
- txResult = await SpokeService.callWallet(hubWallet, data, spokeProvider, this.hubProvider, raw);
18110
- }
18063
+ const txResult = await SpokeService.callWallet(hubWallet, data, spokeProvider, this.hubProvider, raw);
18111
18064
  return {
18112
18065
  ok: true,
18113
18066
  value: txResult,
@@ -18161,7 +18114,7 @@ var StakingService = class {
18161
18114
  };
18162
18115
  }
18163
18116
  let hubTxHash = null;
18164
- if (spokeProvider.chainConfig.chain.id !== this.hubProvider.chainConfig.chain.id) {
18117
+ if (!isHubSpokeProvider(spokeProvider, this.hubProvider)) {
18165
18118
  const packetResult = await relayTxAndWaitPacket(
18166
18119
  txResult.value,
18167
18120
  spokeProvider instanceof SolanaSpokeProvider ? txResult.data : void 0,
@@ -18211,11 +18164,10 @@ var StakingService = class {
18211
18164
  raw
18212
18165
  }) {
18213
18166
  try {
18214
- const isHub = this.hubProvider.chainConfig.chain.id === spokeProvider.chainConfig.chain.id;
18215
18167
  const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
18216
- const hubWallet = await WalletAbstractionService.getUserAbstractedWalletAddress(
18168
+ const hubWallet = await HubService.getUserHubWalletAddress(
18217
18169
  walletAddress,
18218
- spokeProvider,
18170
+ spokeProvider.chainConfig.chain.id,
18219
18171
  this.hubProvider
18220
18172
  );
18221
18173
  const sodaToken = spokeProvider.chainConfig.supportedTokens.SODA;
@@ -18228,23 +18180,7 @@ var StakingService = class {
18228
18180
  encodeAddress(spokeProvider.chainConfig.chain.id, walletAddress),
18229
18181
  params
18230
18182
  );
18231
- let txResult;
18232
- if (isHub) {
18233
- txResult = await SpokeService.deposit(
18234
- {
18235
- from: walletAddress,
18236
- to: hubWallet,
18237
- token: this.hubProvider.chainConfig.addresses.xSoda,
18238
- amount: params.amount,
18239
- data
18240
- },
18241
- spokeProvider,
18242
- this.hubProvider,
18243
- raw
18244
- );
18245
- } else {
18246
- txResult = await SpokeService.callWallet(hubWallet, data, spokeProvider, this.hubProvider, raw);
18247
- }
18183
+ const txResult = await SpokeService.callWallet(hubWallet, data, spokeProvider, this.hubProvider, raw);
18248
18184
  return {
18249
18185
  ok: true,
18250
18186
  value: txResult,
@@ -18310,7 +18246,7 @@ var StakingService = class {
18310
18246
  };
18311
18247
  }
18312
18248
  let hubTxHash = null;
18313
- if (spokeProvider.chainConfig.chain.id !== this.hubProvider.chainConfig.chain.id) {
18249
+ if (!isHubSpokeProvider(spokeProvider, this.hubProvider)) {
18314
18250
  const packetResult = await relayTxAndWaitPacket(
18315
18251
  txResult.value,
18316
18252
  spokeProvider instanceof SolanaSpokeProvider ? txResult.data : void 0,
@@ -18361,9 +18297,9 @@ var StakingService = class {
18361
18297
  }) {
18362
18298
  try {
18363
18299
  const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
18364
- const hubWallet = await WalletAbstractionService.getUserAbstractedWalletAddress(
18300
+ const hubWallet = await HubService.getUserHubWalletAddress(
18365
18301
  walletAddress,
18366
- spokeProvider,
18302
+ spokeProvider.chainConfig.chain.id,
18367
18303
  this.hubProvider
18368
18304
  );
18369
18305
  const sodaToken = spokeProvider.chainConfig.supportedTokens.SODA;
@@ -18446,7 +18382,7 @@ var StakingService = class {
18446
18382
  };
18447
18383
  }
18448
18384
  let hubTxHash = null;
18449
- if (spokeProvider.chainConfig.chain.id !== this.hubProvider.chainConfig.chain.id) {
18385
+ if (!isHubSpokeProvider(spokeProvider, this.hubProvider)) {
18450
18386
  const packetResult = await relayTxAndWaitPacket(
18451
18387
  txResult.value,
18452
18388
  spokeProvider instanceof SolanaSpokeProvider ? txResult.data : void 0,
@@ -18497,16 +18433,11 @@ var StakingService = class {
18497
18433
  }) {
18498
18434
  try {
18499
18435
  const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
18500
- let hubWallet;
18501
- if (spokeProvider instanceof SonicSpokeProvider) {
18502
- hubWallet = walletAddress;
18503
- } else {
18504
- hubWallet = await WalletAbstractionService.getUserAbstractedWalletAddress(
18505
- walletAddress,
18506
- spokeProvider,
18507
- this.hubProvider
18508
- );
18509
- }
18436
+ const hubWallet = await HubService.getUserHubWalletAddress(
18437
+ walletAddress,
18438
+ spokeProvider.chainConfig.chain.id,
18439
+ this.hubProvider
18440
+ );
18510
18441
  const data = await this.buildCancelUnstakeData(params, hubWallet);
18511
18442
  const txResult = await SpokeService.callWallet(hubWallet, data, spokeProvider, this.hubProvider, raw);
18512
18443
  return {
@@ -18562,12 +18493,9 @@ var StakingService = class {
18562
18493
  async getStakingInfoFromSpoke(spokeProvider) {
18563
18494
  try {
18564
18495
  const walletAddress = await spokeProvider.walletProvider.getWalletAddress();
18565
- if (spokeProvider instanceof SonicSpokeProvider) {
18566
- return this.getStakingInfo(walletAddress);
18567
- }
18568
- const hubWallet = await WalletAbstractionService.getUserAbstractedWalletAddress(
18496
+ const hubWallet = await HubService.getUserHubWalletAddress(
18569
18497
  walletAddress,
18570
- spokeProvider,
18498
+ spokeProvider.chainConfig.chain.id,
18571
18499
  this.hubProvider
18572
18500
  );
18573
18501
  return this.getStakingInfo(hubWallet);
@@ -18591,8 +18519,12 @@ var StakingService = class {
18591
18519
  invariant6__default.default(userAddress, "User address is required");
18592
18520
  const hubConfig = getHubChainConfig();
18593
18521
  const xSoda = hubConfig.addresses.xSoda;
18594
- const totalUnderlying = await StakingLogic.getXSodaTotalAssets(xSoda, this.hubProvider.publicClient);
18595
- const userXSodaShares = await this.getXSodaBalance(xSoda, userAddress);
18522
+ const [totalUnderlying, userXSodaShares] = await Promise.all([
18523
+ StakingLogic.getXSodaTotalAssets(xSoda, this.hubProvider.publicClient),
18524
+ // Get total assets in xSoda vault (total underlying SODA)
18525
+ this.getXSodaBalance(xSoda, userAddress)
18526
+ // Get user's raw xSODA shares
18527
+ ]);
18596
18528
  const userXSodaValue = await StakingLogic.convertXSodaSharesToSoda(
18597
18529
  xSoda,
18598
18530
  userXSodaShares,
@@ -18635,9 +18567,9 @@ var StakingService = class {
18635
18567
  userAddress = param;
18636
18568
  } else {
18637
18569
  const walletAddress = await param.walletProvider.getWalletAddress();
18638
- userAddress = await WalletAbstractionService.getUserAbstractedWalletAddress(
18570
+ userAddress = await HubService.getUserHubWalletAddress(
18639
18571
  walletAddress,
18640
- param,
18572
+ param.chainConfig.chain.id,
18641
18573
  this.hubProvider
18642
18574
  );
18643
18575
  }
@@ -18740,9 +18672,9 @@ var StakingService = class {
18740
18672
  userAddress = param;
18741
18673
  } else {
18742
18674
  const walletAddress = await param.walletProvider.getWalletAddress();
18743
- userAddress = await WalletAbstractionService.getUserAbstractedWalletAddress(
18675
+ userAddress = await HubService.getUserHubWalletAddress(
18744
18676
  walletAddress,
18745
- param,
18677
+ param.chainConfig.chain.id,
18746
18678
  this.hubProvider
18747
18679
  );
18748
18680
  }