@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 +26 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +26 -12
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
|
4639
|
-
|
|
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
|
-
|
|
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
|
|
4774
|
-
|
|
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
|
-
|
|
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,
|