Fix tests
This commit is contained in:
		@@ -148,7 +148,7 @@ export class StakerActor extends BaseActor {
 | 
			
		||||
    public async stakeWithPoolAsync(poolId: string, amount: BigNumber): Promise<void> {
 | 
			
		||||
        await this.stakeAsync(amount);
 | 
			
		||||
        await this.moveStakeAsync(
 | 
			
		||||
            new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
            new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
            new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
            amount,
 | 
			
		||||
        );
 | 
			
		||||
@@ -202,14 +202,14 @@ export class StakerActor extends BaseActor {
 | 
			
		||||
            stakeBalanceInVault: await this._stakingApiWrapper.zrxVaultContract.balanceOf.callAsync(this._owner),
 | 
			
		||||
            inactiveStakeBalance: await this._stakingApiWrapper.stakingContract.getOwnerStakeByStatus.callAsync(
 | 
			
		||||
                this._owner,
 | 
			
		||||
                StakeStatus.Inactive,
 | 
			
		||||
                StakeStatus.Undelegated,
 | 
			
		||||
            ),
 | 
			
		||||
            delegatedStakeBalance: await this._stakingApiWrapper.stakingContract.getOwnerStakeByStatus.callAsync(
 | 
			
		||||
                this._owner,
 | 
			
		||||
                StakeStatus.Delegated,
 | 
			
		||||
            ),
 | 
			
		||||
            globalInactiveStakeBalance: await this._stakingApiWrapper.stakingContract.getGlobalStakeByStatus.callAsync(
 | 
			
		||||
                StakeStatus.Inactive,
 | 
			
		||||
                StakeStatus.Undelegated,
 | 
			
		||||
            ),
 | 
			
		||||
            globalDelegatedStakeBalance: await this._stakingApiWrapper.stakingContract.getGlobalStakeByStatus.callAsync(
 | 
			
		||||
                StakeStatus.Delegated,
 | 
			
		||||
@@ -289,7 +289,7 @@ export class StakerActor extends BaseActor {
 | 
			
		||||
        // @TODO check receipt logs and return value via eth_call
 | 
			
		||||
        // check balances
 | 
			
		||||
        // from
 | 
			
		||||
        if (from.status === StakeStatus.Inactive) {
 | 
			
		||||
        if (from.status === StakeStatus.Undelegated) {
 | 
			
		||||
            StakerActor._decrementNextBalance(expectedBalances.inactiveStakeBalance, amount);
 | 
			
		||||
            StakerActor._decrementNextBalance(expectedBalances.globalInactiveStakeBalance, amount);
 | 
			
		||||
        } else if (from.status === StakeStatus.Delegated && from.poolId !== undefined) {
 | 
			
		||||
@@ -299,7 +299,7 @@ export class StakerActor extends BaseActor {
 | 
			
		||||
            StakerActor._decrementNextBalance(expectedBalances.totalDelegatedStakeByPool[from.poolId], amount);
 | 
			
		||||
        }
 | 
			
		||||
        // to
 | 
			
		||||
        if (to.status === StakeStatus.Inactive) {
 | 
			
		||||
        if (to.status === StakeStatus.Undelegated) {
 | 
			
		||||
            StakerActor._incrementNextBalance(expectedBalances.inactiveStakeBalance, amount);
 | 
			
		||||
            StakerActor._incrementNextBalance(expectedBalances.globalInactiveStakeBalance, amount);
 | 
			
		||||
        } else if (to.status === StakeStatus.Delegated && to.poolId !== undefined) {
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ blockchainTests.resets('Catastrophe Tests', env => {
 | 
			
		||||
            });
 | 
			
		||||
            const inactiveStakeBalance = await stakingApiWrapper.stakingContract.getOwnerStakeByStatus.callAsync(
 | 
			
		||||
                actors[0],
 | 
			
		||||
                StakeStatus.Inactive,
 | 
			
		||||
                StakeStatus.Undelegated,
 | 
			
		||||
            );
 | 
			
		||||
            expect(inactiveStakeBalance.currentEpochBalance).to.be.bignumber.equal(amountToStake);
 | 
			
		||||
        });
 | 
			
		||||
@@ -56,7 +56,7 @@ blockchainTests.resets('Catastrophe Tests', env => {
 | 
			
		||||
            });
 | 
			
		||||
            const inactiveStakeBalance = await stakingApiWrapper.stakingContract.getOwnerStakeByStatus.callAsync(
 | 
			
		||||
                actors[0],
 | 
			
		||||
                StakeStatus.Inactive,
 | 
			
		||||
                StakeStatus.Undelegated,
 | 
			
		||||
            );
 | 
			
		||||
            expect(inactiveStakeBalance.currentEpochBalance).to.be.bignumber.equal(ZERO);
 | 
			
		||||
        });
 | 
			
		||||
@@ -71,7 +71,7 @@ blockchainTests.resets('Catastrophe Tests', env => {
 | 
			
		||||
            // read stake balance in read-only mode
 | 
			
		||||
            const inactiveStakeBalanceReadOnly = await stakingApiWrapper.stakingContract.getOwnerStakeByStatus.callAsync(
 | 
			
		||||
                actors[0],
 | 
			
		||||
                StakeStatus.Inactive,
 | 
			
		||||
                StakeStatus.Undelegated,
 | 
			
		||||
            );
 | 
			
		||||
            expect(inactiveStakeBalanceReadOnly.currentEpochBalance).to.be.bignumber.equal(amountToStake);
 | 
			
		||||
        });
 | 
			
		||||
@@ -86,7 +86,7 @@ blockchainTests.resets('Catastrophe Tests', env => {
 | 
			
		||||
            });
 | 
			
		||||
            const inactiveStakeBalance = await stakingApiWrapper.stakingContract.getOwnerStakeByStatus.callAsync(
 | 
			
		||||
                actors[0],
 | 
			
		||||
                StakeStatus.Inactive,
 | 
			
		||||
                StakeStatus.Undelegated,
 | 
			
		||||
            );
 | 
			
		||||
            expect(inactiveStakeBalance.currentEpochBalance).to.be.bignumber.equal(amountToStake);
 | 
			
		||||
        });
 | 
			
		||||
 
 | 
			
		||||
@@ -176,7 +176,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            const amount = toBaseUnitAmount(4);
 | 
			
		||||
            await stakers[0].stakeAsync(amount);
 | 
			
		||||
            await stakers[0].moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
@@ -248,7 +248,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            const totalStakeAmount = toBaseUnitAmount(10);
 | 
			
		||||
            await stakers[0].stakeAsync(stakeAmounts[0]);
 | 
			
		||||
            await stakers[0].moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                stakeAmounts[0],
 | 
			
		||||
            );
 | 
			
		||||
@@ -259,7 +259,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            // second staker delegates (epoch 1)
 | 
			
		||||
            await stakers[1].stakeAsync(stakeAmounts[1]);
 | 
			
		||||
            await stakers[1].moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                stakeAmounts[1],
 | 
			
		||||
            );
 | 
			
		||||
@@ -355,7 +355,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            // undelegate (withdraws delegator's rewards)
 | 
			
		||||
            await stakers[0].moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                stakeAmount,
 | 
			
		||||
            );
 | 
			
		||||
            // sanity check final balances
 | 
			
		||||
@@ -436,7 +436,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            // undelegate stake and finalize epoch
 | 
			
		||||
            await stakers[0].moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                stakeAmount,
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
@@ -472,7 +472,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            // undelegate stake and finalize epoch
 | 
			
		||||
            await stakers[0].moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                stakeAmount,
 | 
			
		||||
            );
 | 
			
		||||
            await payProtocolFeeAndFinalize();
 | 
			
		||||
@@ -499,7 +499,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            // undelegate stake and finalize epoch
 | 
			
		||||
            await stakers[0].moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                stakeAmount,
 | 
			
		||||
            );
 | 
			
		||||
            await payProtocolFeeAndFinalize();
 | 
			
		||||
@@ -507,7 +507,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            await payProtocolFeeAndFinalize(rewardNotForDelegator);
 | 
			
		||||
            // delegate stake and go to next epoch
 | 
			
		||||
            await stakers[0].moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                stakeAmount,
 | 
			
		||||
            );
 | 
			
		||||
@@ -530,7 +530,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            const stakeAmount = toBaseUnitAmount(4);
 | 
			
		||||
            await stakers[0].stakeAsync(stakeAmount);
 | 
			
		||||
            await stakers[0].moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                stakeAmount,
 | 
			
		||||
            );
 | 
			
		||||
@@ -539,7 +539,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            // undelegate stake and finalize epoch
 | 
			
		||||
            await stakers[0].moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                stakeAmount,
 | 
			
		||||
            );
 | 
			
		||||
            // this should go to the delegator
 | 
			
		||||
@@ -547,7 +547,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            // delegate stake ~ this will result in a payout where rewards are computed on
 | 
			
		||||
            // the balance's `currentEpochBalance` field but not the `nextEpochBalance` field.
 | 
			
		||||
            await stakers[0].moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                stakeAmount,
 | 
			
		||||
            );
 | 
			
		||||
@@ -565,7 +565,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            const stakeAmount = toBaseUnitAmount(4);
 | 
			
		||||
            await stakers[0].stakeAsync(stakeAmount);
 | 
			
		||||
            await stakers[0].moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                stakeAmount,
 | 
			
		||||
            );
 | 
			
		||||
@@ -595,7 +595,7 @@ blockchainTests.resets('Testing Rewards', env => {
 | 
			
		||||
            const undelegateAmount = toBaseUnitAmount(2.5);
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolId),
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                undelegateAmount,
 | 
			
		||||
            );
 | 
			
		||||
            // finalize
 | 
			
		||||
 
 | 
			
		||||
@@ -77,14 +77,14 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAsync(amount);
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
            // still epoch 1 ~ should be able to move stake again
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
        });
 | 
			
		||||
@@ -93,7 +93,7 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAsync(amount);
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
@@ -109,13 +109,13 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAsync(amount);
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
            // stake is now inactive, should not be able to move it out of active status again
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[1]),
 | 
			
		||||
                amount,
 | 
			
		||||
                new StakingRevertErrors.InsufficientBalanceError(amount, ZERO),
 | 
			
		||||
@@ -127,14 +127,14 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            // epoch 1
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAndMoveAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
            // still epoch 1 ~ should be able to move stake again
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
        });
 | 
			
		||||
@@ -142,13 +142,13 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            // epoch 1
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAndMoveAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
            // stake is now inactive, should not be able to move it out of active status again
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[1]),
 | 
			
		||||
                amount,
 | 
			
		||||
                new StakingRevertErrors.InsufficientBalanceError(amount, ZERO),
 | 
			
		||||
@@ -157,11 +157,15 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
    });
 | 
			
		||||
    describe('Move Zero Stake', () => {
 | 
			
		||||
        it('inactive -> inactive', async () => {
 | 
			
		||||
            await staker.moveStakeAsync(new StakeInfo(StakeStatus.Inactive), new StakeInfo(StakeStatus.Inactive), ZERO);
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                ZERO,
 | 
			
		||||
            );
 | 
			
		||||
        });
 | 
			
		||||
        it('inactive -> delegated', async () => {
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                ZERO,
 | 
			
		||||
            );
 | 
			
		||||
@@ -169,7 +173,7 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
        it('delegated -> inactive', async () => {
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                ZERO,
 | 
			
		||||
            );
 | 
			
		||||
        });
 | 
			
		||||
@@ -193,8 +197,8 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            // setup
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAsync(amount);
 | 
			
		||||
            if (from.status !== StakeStatus.Inactive) {
 | 
			
		||||
                await staker.moveStakeAsync(new StakeInfo(StakeStatus.Inactive), from, amount);
 | 
			
		||||
            if (from.status !== StakeStatus.Undelegated) {
 | 
			
		||||
                await staker.moveStakeAsync(new StakeInfo(StakeStatus.Undelegated), from, amount);
 | 
			
		||||
            }
 | 
			
		||||
            // run test, checking balances in epochs [n .. n + 2]
 | 
			
		||||
            // in epoch `n` - `next` is set
 | 
			
		||||
@@ -203,18 +207,18 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            await staker.goToNextEpochAsync();
 | 
			
		||||
        };
 | 
			
		||||
        it('inactive -> inactive', async () => {
 | 
			
		||||
            await testMovePartialStake(new StakeInfo(StakeStatus.Inactive), new StakeInfo(StakeStatus.Inactive));
 | 
			
		||||
            await testMovePartialStake(new StakeInfo(StakeStatus.Undelegated), new StakeInfo(StakeStatus.Undelegated));
 | 
			
		||||
        });
 | 
			
		||||
        it('inactive -> delegated', async () => {
 | 
			
		||||
            await testMovePartialStake(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
            );
 | 
			
		||||
        });
 | 
			
		||||
        it('delegated -> inactive', async () => {
 | 
			
		||||
            await testMovePartialStake(
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
            );
 | 
			
		||||
        });
 | 
			
		||||
        it('delegated -> delegated (same pool)', async () => {
 | 
			
		||||
@@ -233,7 +237,7 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAsync(amount);
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, unusedPoolId),
 | 
			
		||||
                amount,
 | 
			
		||||
                new StakingRevertErrors.PoolExistenceError(unusedPoolId, false),
 | 
			
		||||
@@ -243,7 +247,7 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAsync(amount);
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
@@ -264,13 +268,13 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAsync(amount);
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
            await staker.goToNextEpochAsync(); // stake is now inactive
 | 
			
		||||
@@ -280,14 +284,14 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAsync(amount);
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
            await staker.goToNextEpochAsync(); // stake is now delegated
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
            await staker.unstakeAsync(amount, new StakingRevertErrors.InsufficientBalanceError(amount, ZERO));
 | 
			
		||||
@@ -296,7 +300,7 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAsync(amount);
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
@@ -306,7 +310,7 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAsync(amount);
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
@@ -317,7 +321,7 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
            const amount = toBaseUnitAmount(10);
 | 
			
		||||
            await staker.stakeAsync(amount);
 | 
			
		||||
            await staker.moveStakeAsync(
 | 
			
		||||
                new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                new StakeInfo(StakeStatus.Delegated, poolIds[0]),
 | 
			
		||||
                amount,
 | 
			
		||||
            );
 | 
			
		||||
@@ -338,7 +342,7 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
        //     // Later in Epoch 1: User delegates and deactivates some stake
 | 
			
		||||
        //     await staker.moveStakeAsync(
 | 
			
		||||
        //         new StakeInfo(StakeStatus.Active),
 | 
			
		||||
        //         new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
        //         new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
        //         toBaseUnitAmount(1),
 | 
			
		||||
        //     );
 | 
			
		||||
        //     await staker.moveStakeAsync(
 | 
			
		||||
@@ -352,7 +356,7 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
        //     await staker.goToNextEpochAsync();
 | 
			
		||||
        //     // Later in Epoch 3: User reactivates half of their inactive stake; this becomes Active next epoch
 | 
			
		||||
        //     await staker.moveStakeAsync(
 | 
			
		||||
        //         new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
        //         new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
        //         new StakeInfo(StakeStatus.Active),
 | 
			
		||||
        //         toBaseUnitAmount(0.5),
 | 
			
		||||
        //     );
 | 
			
		||||
@@ -367,7 +371,7 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
        //     // Later in Epoch 4: User deactivates all active stake
 | 
			
		||||
        //     await staker.moveStakeAsync(
 | 
			
		||||
        //         new StakeInfo(StakeStatus.Active),
 | 
			
		||||
        //         new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
        //         new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
        //         toBaseUnitAmount(1.5),
 | 
			
		||||
        //     );
 | 
			
		||||
        //     // Later in Epoch 4: User withdraws all available inactive stake
 | 
			
		||||
@@ -376,7 +380,7 @@ blockchainTests.resets('Stake Statuses', env => {
 | 
			
		||||
        //     await staker.goToNextEpochAsync();
 | 
			
		||||
        //     // Later in Epoch 5: User reactivates a portion of their stake
 | 
			
		||||
        //     await staker.moveStakeAsync(
 | 
			
		||||
        //         new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
        //         new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
        //         new StakeInfo(StakeStatus.Active),
 | 
			
		||||
        //         toBaseUnitAmount(1),
 | 
			
		||||
        //     );
 | 
			
		||||
 
 | 
			
		||||
@@ -120,7 +120,7 @@ export class CumulativeRewardTrackingSimulation {
 | 
			
		||||
                        from: this._staker,
 | 
			
		||||
                    });
 | 
			
		||||
                    receipt = await this._stakingApiWrapper.stakingContract.moveStake.awaitTransactionSuccessAsync(
 | 
			
		||||
                        new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                        new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                        new StakeInfo(StakeStatus.Delegated, this._poolId),
 | 
			
		||||
                        this._amountToStake,
 | 
			
		||||
                        { from: this._staker },
 | 
			
		||||
@@ -130,7 +130,7 @@ export class CumulativeRewardTrackingSimulation {
 | 
			
		||||
                case TestAction.Undelegate:
 | 
			
		||||
                    receipt = await this._stakingApiWrapper.stakingContract.moveStake.awaitTransactionSuccessAsync(
 | 
			
		||||
                        new StakeInfo(StakeStatus.Delegated, this._poolId),
 | 
			
		||||
                        new StakeInfo(StakeStatus.Inactive),
 | 
			
		||||
                        new StakeInfo(StakeStatus.Undelegated),
 | 
			
		||||
                        this._amountToStake,
 | 
			
		||||
                        { from: this._staker },
 | 
			
		||||
                    );
 | 
			
		||||
 
 | 
			
		||||
@@ -58,7 +58,7 @@ export interface EndOfEpochInfo {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface StoredBalance {
 | 
			
		||||
    currentEpoch: number | BigNumber;
 | 
			
		||||
    currentEpoch: BigNumber;
 | 
			
		||||
    currentEpochBalance: BigNumber;
 | 
			
		||||
    nextEpochBalance: BigNumber;
 | 
			
		||||
}
 | 
			
		||||
@@ -68,7 +68,7 @@ export interface StakeBalanceByPool {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export enum StakeStatus {
 | 
			
		||||
    Inactive,
 | 
			
		||||
    Undelegated,
 | 
			
		||||
    Delegated,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user