From 7ecd47490e4dd43d5d5616a140915bb0738d5578 Mon Sep 17 00:00:00 2001 From: Daniel Schiavini Date: Wed, 21 May 2025 16:21:24 +0200 Subject: [PATCH 1/3] fix: balanced proportions with empty wallet --- src/pools/mixins/depositBalancedAmountsMixins.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pools/mixins/depositBalancedAmountsMixins.ts b/src/pools/mixins/depositBalancedAmountsMixins.ts index 4805c380..89d31671 100644 --- a/src/pools/mixins/depositBalancedAmountsMixins.ts +++ b/src/pools/mixins/depositBalancedAmountsMixins.ts @@ -18,7 +18,7 @@ function _depositBalancedAmounts(poolBalances: string[], walletBalances: string[ const firstCoinBalanceForEachScenarioBN = balancedAmountsForEachScenarioBN.map(([a]) => a); // get the scenario with the lowest balances, ignoring scenarios where the wallet balance is zero - const min = BigNumber.min(...firstCoinBalanceForEachScenarioBN.filter((b) => !b.isZero())); + const min = BigNumber.min(0, ...firstCoinBalanceForEachScenarioBN.filter((b) => !b.isZero())); const scenarioWithLowestBalancesBN = firstCoinBalanceForEachScenarioBN.map(String).indexOf(min.toString()); const bestScenario = balancedAmountsForEachScenarioBN[scenarioWithLowestBalancesBN]; return bestScenario.map((a, i) => walletBalancesBN[i].isZero() ? "0" : a.toFixed(decimals[i])) From 8e9103efc41bfcf14734e600849420bcec0eac36 Mon Sep 17 00:00:00 2001 From: Daniel Schiavini Date: Wed, 21 May 2025 16:21:49 +0200 Subject: [PATCH 2/3] chore: build v2.66.28 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd56b076..c872ef67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@curvefi/api", - "version": "2.66.27", + "version": "2.66.28", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@curvefi/api", - "version": "2.66.27", + "version": "2.66.28", "license": "MIT", "dependencies": { "@curvefi/ethcall": "^6.0.13", diff --git a/package.json b/package.json index 0fd921f1..7f95f4b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@curvefi/api", - "version": "2.66.27", + "version": "2.66.28", "description": "JavaScript library for curve.finance", "main": "lib/index.js", "author": "Macket", From 9ff3b9273891e762bd54b2cfa95cffdbd49a4230 Mon Sep 17 00:00:00 2001 From: Daniel Schiavini Date: Thu, 22 May 2025 16:09:56 +0200 Subject: [PATCH 3/3] fix: handle zero balances --- src/pools/mixins/depositBalancedAmountsMixins.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pools/mixins/depositBalancedAmountsMixins.ts b/src/pools/mixins/depositBalancedAmountsMixins.ts index 89d31671..121e7376 100644 --- a/src/pools/mixins/depositBalancedAmountsMixins.ts +++ b/src/pools/mixins/depositBalancedAmountsMixins.ts @@ -18,8 +18,13 @@ function _depositBalancedAmounts(poolBalances: string[], walletBalances: string[ const firstCoinBalanceForEachScenarioBN = balancedAmountsForEachScenarioBN.map(([a]) => a); // get the scenario with the lowest balances, ignoring scenarios where the wallet balance is zero - const min = BigNumber.min(0, ...firstCoinBalanceForEachScenarioBN.filter((b) => !b.isZero())); + const nonZeroBalances = firstCoinBalanceForEachScenarioBN.filter((b) => !b.isZero()); + if (nonZeroBalances.length === 0) { + return poolBalances.map(() => "0") // no balances at all, return zeroes + } + const min = BigNumber.min(...nonZeroBalances); const scenarioWithLowestBalancesBN = firstCoinBalanceForEachScenarioBN.map(String).indexOf(min.toString()); + const bestScenario = balancedAmountsForEachScenarioBN[scenarioWithLowestBalancesBN]; return bestScenario.map((a, i) => walletBalancesBN[i].isZero() ? "0" : a.toFixed(decimals[i])) }