diff --git a/staking/app/StakeConnection.ts b/staking/app/StakeConnection.ts index 6cabca94..fc3811d6 100644 --- a/staking/app/StakeConnection.ts +++ b/staking/app/StakeConnection.ts @@ -390,6 +390,7 @@ export class StakeConnection { stakeAccount: StakeAccount, amount: PythBalance ) { + const maxCapacity = stakeAccount.hasReachedMaxCapacity(); const positions = stakeAccount.stakeAccountPositionsJs.positions; const time = await this.getTime(); @@ -427,10 +428,12 @@ export class StakeConnection { while (amountBeforeFinishing.gt(new BN(0)) && i < sortPositions.length) { if (sortPositions[i].value.amount.gte(amountBeforeFinishing)) { - toClose.push({ - index: sortPositions[i].index, - amount: amountBeforeFinishing, - }); + if (!maxCapacity) { + toClose.push({ + index: sortPositions[i].index, + amount: amountBeforeFinishing, + }); + } amountBeforeFinishing = new BN(0); } else { toClose.push({ @@ -1488,4 +1491,10 @@ export class StakeAccount { const balanceSummary = this.getBalanceSummary(timeOfEval).locked; return balanceSummary.locking.toBN().add(balanceSummary.locked.toBN()); } + + public hasReachedMaxCapacity(): boolean { + return ( + this.stakeAccountMetadata.nextIndex == wasm.Constants.MAX_POSITIONS() + ); + } }