@t2000/sdk 0.17.9 → 0.17.11

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
@@ -4637,15 +4637,21 @@ To sell investment: t2000 invest sell ${params.amount} ${fromAsset}`,
4637
4637
  const usdcOutputs = [];
4638
4638
  for (const pos of stratPositions) {
4639
4639
  const assetInfo = SUPPORTED_ASSETS[pos.asset];
4640
- const coins = await this._fetchCoins(assetInfo.type);
4641
- if (coins.length === 0) {
4642
- throw new T2000Error("INSUFFICIENT_BALANCE", `No ${pos.asset} coins in wallet`);
4643
- }
4644
- const merged = this._mergeCoinsInTx(tx, coins);
4640
+ const bal = await this.client.getBalance({ owner: this._address, coinType: assetInfo.type });
4641
+ const walletAmount = Number(bal.totalBalance) / 10 ** assetInfo.decimals;
4645
4642
  const gasReserve = pos.asset === "SUI" ? GAS_RESERVE_MIN : 0;
4646
- const sellAmount = Math.max(0, pos.totalAmount - gasReserve);
4643
+ const sellAmount = Math.max(0, Math.min(pos.totalAmount, walletAmount) - gasReserve);
4644
+ if (sellAmount <= 0) continue;
4647
4645
  const rawAmount = BigInt(Math.floor(sellAmount * 10 ** assetInfo.decimals));
4648
- const [splitCoin] = tx.splitCoins(merged, [rawAmount]);
4646
+ let splitCoin;
4647
+ if (pos.asset === "SUI") {
4648
+ [splitCoin] = tx.splitCoins(tx.gas, [rawAmount]);
4649
+ } else {
4650
+ const coins = await this._fetchCoins(assetInfo.type);
4651
+ if (coins.length === 0) continue;
4652
+ const merged = this._mergeCoinsInTx(tx, coins);
4653
+ [splitCoin] = tx.splitCoins(merged, [rawAmount]);
4654
+ }
4649
4655
  const slippageBps = LOW_LIQUIDITY_ASSETS.has(pos.asset) ? 500 : 300;
4650
4656
  const { outputCoin, estimatedOut, toDecimals } = await swapAdapter.addSwapToTx(
4651
4657
  tx,
@@ -4772,13 +4778,21 @@ To sell investment: t2000 invest sell ${params.amount} ${fromAsset}`,
4772
4778
  const usdcCoins = [];
4773
4779
  for (const sell of sellOps) {
4774
4780
  const assetInfo = SUPPORTED_ASSETS[sell.asset];
4775
- const coins = await this._fetchCoins(assetInfo.type);
4776
- if (coins.length === 0) continue;
4777
- const merged = this._mergeCoinsInTx(tx, coins);
4781
+ const bal = await this.client.getBalance({ owner: this._address, coinType: assetInfo.type });
4782
+ const walletAmount = Number(bal.totalBalance) / 10 ** assetInfo.decimals;
4778
4783
  const gasReserve = sell.asset === "SUI" ? GAS_RESERVE_MIN : 0;
4779
- const sellAmount = Math.max(0, sell.assetAmount - gasReserve);
4784
+ const sellAmount = Math.max(0, Math.min(sell.assetAmount, walletAmount) - gasReserve);
4785
+ if (sellAmount <= 0) continue;
4780
4786
  const rawAmount = BigInt(Math.floor(sellAmount * 10 ** assetInfo.decimals));
4781
- const [splitCoin] = tx.splitCoins(merged, [rawAmount]);
4787
+ let splitCoin;
4788
+ if (sell.asset === "SUI") {
4789
+ [splitCoin] = tx.splitCoins(tx.gas, [rawAmount]);
4790
+ } else {
4791
+ const coins = await this._fetchCoins(assetInfo.type);
4792
+ if (coins.length === 0) continue;
4793
+ const merged = this._mergeCoinsInTx(tx, coins);
4794
+ [splitCoin] = tx.splitCoins(merged, [rawAmount]);
4795
+ }
4782
4796
  const slippageBps = LOW_LIQUIDITY_ASSETS.has(sell.asset) ? 500 : 300;
4783
4797
  const { outputCoin, estimatedOut, toDecimals } = await swapAdapter.addSwapToTx(
4784
4798
  tx,