@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.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
|
|
4641
|
-
|
|
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
|
-
|
|
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
|
|
4776
|
-
|
|
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
|
-
|
|
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,
|