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