diff --git a/docs/classes/arc.md b/docs/classes/arc.md index f8ea7b71..979be454 100644 --- a/docs/classes/arc.md +++ b/docs/classes/arc.md @@ -194,9 +194,9 @@ ___ * **lastBalance**? : *undefined | string* -* **observable**? : *Observable‹BN›* +* **observable**? : *Observable‹BigNumber›* -* **observer**? : *Observer‹BN›* +* **observer**? : *Observer‹BigNumber›* * **subscriptionsCount**: *number* @@ -242,7 +242,7 @@ ___ ### allowance -▸ **allowance**(`owner`: [Address](../globals.md#address), `spender`: [Address](../globals.md#address)): *Observable‹BN›* +▸ **allowance**(`owner`: [Address](../globals.md#address), `spender`: [Address](../globals.md#address)): *Observable‹BigNumber›* *Defined in [src/arc.ts:402](https://github.com/daostack/arc.js/blob/6c661ff/src/arc.ts#L402)* @@ -255,13 +255,13 @@ Name | Type | Description | `owner` | [Address](../globals.md#address) | Address of the owner of the tokens | `spender` | [Address](../globals.md#address) | Address of the spender | -**Returns:** *Observable‹BN›* +**Returns:** *Observable‹BigNumber›* ___ ### approveForStaking -▸ **approveForStaking**(`spender`: [Address](../globals.md#address), `amount`: BN): *[IOperationObservable](../interfaces/ioperationobservable.md)‹[ITransactionUpdate](../interfaces/itransactionupdate.md)‹undefined››* +▸ **approveForStaking**(`spender`: [Address](../globals.md#address), `amount`: BigNumber): *[IOperationObservable](../interfaces/ioperationobservable.md)‹[ITransactionUpdate](../interfaces/itransactionupdate.md)‹undefined››* *Defined in [src/arc.ts:392](https://github.com/daostack/arc.js/blob/6c661ff/src/arc.ts#L392)* @@ -270,7 +270,7 @@ ___ Name | Type | ------ | ------ | `spender` | [Address](../globals.md#address) | -`amount` | BN | +`amount` | BigNumber | **Returns:** *[IOperationObservable](../interfaces/ioperationobservable.md)‹[ITransactionUpdate](../interfaces/itransactionupdate.md)‹undefined››* @@ -317,7 +317,7 @@ ___ ### ethBalance -▸ **ethBalance**(`owner`: [Address](../globals.md#address)): *Observable‹BN›* +▸ **ethBalance**(`owner`: [Address](../globals.md#address)): *Observable‹BigNumber›* *Defined in [src/arc.ts:202](https://github.com/daostack/arc.js/blob/6c661ff/src/arc.ts#L202)* @@ -327,7 +327,7 @@ Name | Type | ------ | ------ | `owner` | [Address](../globals.md#address) | -**Returns:** *Observable‹BN›* +**Returns:** *Observable‹BigNumber›* ___ diff --git a/docs/classes/competitionscheme.md b/docs/classes/competitionscheme.md index 2af99945..183065ae 100644 --- a/docs/classes/competitionscheme.md +++ b/docs/classes/competitionscheme.md @@ -197,15 +197,15 @@ ___ ### ethBalance -▸ **ethBalance**(): *Promise‹Observable‹BN››* +▸ **ethBalance**(): *Promise‹Observable‹BigNumber››* *Defined in [src/schemes/competition.ts:323](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/competition.ts#L323)* get (an observable of) the Ether balance of the Competition from the web3Provider -**Returns:** *Promise‹Observable‹BN››* +**Returns:** *Promise‹Observable‹BigNumber››* -an observable stream of BN number instances +an observable stream of BigNumber number instances ___ diff --git a/docs/classes/dao.md b/docs/classes/dao.md index 3056b22d..c4754cd1 100644 --- a/docs/classes/dao.md +++ b/docs/classes/dao.md @@ -111,15 +111,15 @@ ___ ### ethBalance -▸ **ethBalance**(): *Promise‹Observable‹BN››* +▸ **ethBalance**(): *Promise‹Observable‹BigNumber››* *Defined in [src/dao.ts:336](https://github.com/daostack/arc.js/blob/6c661ff/src/dao.ts#L336)* get (an observable of) the Ether balance of the DAO from the web3Provider -**Returns:** *Promise‹Observable‹BN››* +**Returns:** *Promise‹Observable‹BigNumber››* -an observable stream of BN number instances +an observable stream of BigNumber number instances ___ diff --git a/docs/classes/proposal.md b/docs/classes/proposal.md index e691d65e..47783a50 100644 --- a/docs/classes/proposal.md +++ b/docs/classes/proposal.md @@ -213,7 +213,7 @@ ___ ### stake -▸ **stake**(`outcome`: [IProposalOutcome](../enums/iproposaloutcome.md), `amount`: BN): *[Operation](../globals.md#operation)‹[Stake](stake.md)›* +▸ **stake**(`outcome`: [IProposalOutcome](../enums/iproposaloutcome.md), `amount`: BigNumber): *[Operation](../globals.md#operation)‹[Stake](stake.md)›* *Defined in [src/proposal.ts:715](https://github.com/daostack/arc.js/blob/6c661ff/src/proposal.ts#L715)* @@ -224,7 +224,7 @@ Stake on this proposal Name | Type | Description | ------ | ------ | ------ | `outcome` | [IProposalOutcome](../enums/iproposaloutcome.md) | the outcome that is staked on, of type IProposalOutcome | -`amount` | BN | the amount, in GEN, to stake | +`amount` | BigNumber | the amount, in GEN, to stake | **Returns:** *[Operation](../globals.md#operation)‹[Stake](stake.md)›* diff --git a/docs/classes/reputation.md b/docs/classes/reputation.md index 2b6802fe..92c8546f 100644 --- a/docs/classes/reputation.md +++ b/docs/classes/reputation.md @@ -102,7 +102,7 @@ ___ ### mint -▸ **mint**(`beneficiary`: [Address](../globals.md#address), `amount`: BN): *[Operation](../globals.md#operation)‹undefined›* +▸ **mint**(`beneficiary`: [Address](../globals.md#address), `amount`: BigNumber): *[Operation](../globals.md#operation)‹undefined›* *Defined in [src/reputation.ts:130](https://github.com/daostack/arc.js/blob/6c661ff/src/reputation.ts#L130)* @@ -111,7 +111,7 @@ ___ Name | Type | ------ | ------ | `beneficiary` | [Address](../globals.md#address) | -`amount` | BN | +`amount` | BigNumber | **Returns:** *[Operation](../globals.md#operation)‹undefined›* @@ -119,7 +119,7 @@ ___ ### reputationOf -▸ **reputationOf**(`address`: [Address](../globals.md#address)): *Observable‹BN›* +▸ **reputationOf**(`address`: [Address](../globals.md#address)): *Observable‹BigNumber›* *Defined in [src/reputation.ts:102](https://github.com/daostack/arc.js/blob/6c661ff/src/reputation.ts#L102)* @@ -129,7 +129,7 @@ Name | Type | ------ | ------ | `address` | [Address](../globals.md#address) | -**Returns:** *Observable‹BN›* +**Returns:** *Observable‹BigNumber›* ___ diff --git a/docs/classes/token.md b/docs/classes/token.md index 745b8d5e..55fc771b 100644 --- a/docs/classes/token.md +++ b/docs/classes/token.md @@ -79,7 +79,7 @@ ___ ### allowance -▸ **allowance**(`owner`: [Address](../globals.md#address), `spender`: [Address](../globals.md#address)): *Observable‹BN›* +▸ **allowance**(`owner`: [Address](../globals.md#address), `spender`: [Address](../globals.md#address)): *Observable‹BigNumber›* *Defined in [src/token.ts:195](https://github.com/daostack/arc.js/blob/6c661ff/src/token.ts#L195)* @@ -90,13 +90,13 @@ Name | Type | `owner` | [Address](../globals.md#address) | `spender` | [Address](../globals.md#address) | -**Returns:** *Observable‹BN›* +**Returns:** *Observable‹BigNumber›* ___ ### approveForStaking -▸ **approveForStaking**(`spender`: [Address](../globals.md#address), `amount`: BN): *[IOperationObservable](../interfaces/ioperationobservable.md)‹[ITransactionUpdate](../interfaces/itransactionupdate.md)‹undefined››* +▸ **approveForStaking**(`spender`: [Address](../globals.md#address), `amount`: BigNumber): *[IOperationObservable](../interfaces/ioperationobservable.md)‹[ITransactionUpdate](../interfaces/itransactionupdate.md)‹undefined››* *Defined in [src/token.ts:238](https://github.com/daostack/arc.js/blob/6c661ff/src/token.ts#L238)* @@ -105,7 +105,7 @@ ___ Name | Type | ------ | ------ | `spender` | [Address](../globals.md#address) | -`amount` | BN | +`amount` | BigNumber | **Returns:** *[IOperationObservable](../interfaces/ioperationobservable.md)‹[ITransactionUpdate](../interfaces/itransactionupdate.md)‹undefined››* @@ -113,7 +113,7 @@ ___ ### balanceOf -▸ **balanceOf**(`owner`: string): *Observable‹BN›* +▸ **balanceOf**(`owner`: string): *Observable‹BigNumber›* *Defined in [src/token.ts:140](https://github.com/daostack/arc.js/blob/6c661ff/src/token.ts#L140)* @@ -123,7 +123,7 @@ Name | Type | ------ | ------ | `owner` | string | -**Returns:** *Observable‹BN›* +**Returns:** *Observable‹BigNumber›* ___ @@ -155,7 +155,7 @@ ___ ### mint -▸ **mint**(`beneficiary`: [Address](../globals.md#address), `amount`: BN): *[IOperationObservable](../interfaces/ioperationobservable.md)‹[ITransactionUpdate](../interfaces/itransactionupdate.md)‹undefined››* +▸ **mint**(`beneficiary`: [Address](../globals.md#address), `amount`: BigNumber): *[IOperationObservable](../interfaces/ioperationobservable.md)‹[ITransactionUpdate](../interfaces/itransactionupdate.md)‹undefined››* *Defined in [src/token.ts:222](https://github.com/daostack/arc.js/blob/6c661ff/src/token.ts#L222)* @@ -164,7 +164,7 @@ ___ Name | Type | ------ | ------ | `beneficiary` | [Address](../globals.md#address) | -`amount` | BN | +`amount` | BigNumber | **Returns:** *[IOperationObservable](../interfaces/ioperationobservable.md)‹[ITransactionUpdate](../interfaces/itransactionupdate.md)‹undefined››* @@ -188,7 +188,7 @@ ___ ### transfer -▸ **transfer**(`beneficiary`: [Address](../globals.md#address), `amount`: BN): *[IOperationObservable](../interfaces/ioperationobservable.md)‹[ITransactionUpdate](../interfaces/itransactionupdate.md)‹undefined››* +▸ **transfer**(`beneficiary`: [Address](../globals.md#address), `amount`: BigNumber): *[IOperationObservable](../interfaces/ioperationobservable.md)‹[ITransactionUpdate](../interfaces/itransactionupdate.md)‹undefined››* *Defined in [src/token.ts:230](https://github.com/daostack/arc.js/blob/6c661ff/src/token.ts#L230)* @@ -197,7 +197,7 @@ ___ Name | Type | ------ | ------ | `beneficiary` | [Address](../globals.md#address) | -`amount` | BN | +`amount` | BigNumber | **Returns:** *[IOperationObservable](../interfaces/ioperationobservable.md)‹[ITransactionUpdate](../interfaces/itransactionupdate.md)‹undefined››* diff --git a/docs/globals.md b/docs/globals.md index dfbdde28..00191e24 100644 --- a/docs/globals.md +++ b/docs/globals.md @@ -516,7 +516,7 @@ ___ ### fromWei -▸ **fromWei**(`amount`: BN): *string* +▸ **fromWei**(`amount`: BigNumber): *string* *Defined in [src/utils.ts:28](https://github.com/daostack/arc.js/blob/6c661ff/src/utils.ts#L28)* @@ -524,7 +524,7 @@ ___ Name | Type | ------ | ------ | -`amount` | BN | +`amount` | BigNumber | **Returns:** *string* @@ -716,11 +716,11 @@ Name | Type | * **limitExponentValue**: *number* = Number(params.limitExponentValue) -* **minimumDaoBounty**: *BN‹›* = new BN(params.minimumDaoBounty) +* **minimumDaoBounty**: *BigNumber‹›* = BigNumber.from(params.minimumDaoBounty) * **preBoostedVotePeriodLimit**: *number* = Number(params.preBoostedVotePeriodLimit) -* **proposingRepReward**: *BN‹›* = new BN(params.proposingRepReward) +* **proposingRepReward**: *BigNumber‹›* = BigNumber.from(params.proposingRepReward) * **queuedVotePeriodLimit**: *number* = Number(params.queuedVotePeriodLimit) @@ -728,7 +728,7 @@ Name | Type | * **quietEndingPeriod**: *number* = Number(params.quietEndingPeriod) -* **thresholdConst**: *number* = realMathToNumber(new BN(params.thresholdConst)) +* **thresholdConst**: *number* = realMathToNumber(BigNumber.from(params.thresholdConst)) * **votersReputationLossRatio**: *number* = Number(params.votersReputationLossRatio) @@ -736,7 +736,7 @@ ___ ### realMathToNumber -▸ **realMathToNumber**(`t`: BN): *number* +▸ **realMathToNumber**(`t`: BigNumber): *number* *Defined in [src/utils.ts:126](https://github.com/daostack/arc.js/blob/6c661ff/src/utils.ts#L126)* @@ -746,11 +746,11 @@ convert the number representation of RealMath.sol representations to real real n Name | Type | Description | ------ | ------ | ------ | -`t` | BN | a BN instance of a real number in the RealMath representation | +`t` | BigNumber | a BigNumber instance of a real number in the RealMath representation | **Returns:** *number* -a BN +a BigNumber ___ @@ -852,7 +852,7 @@ ___ ### toWei -▸ **toWei**(`amount`: string | number): *BN* +▸ **toWei**(`amount`: string | number): *BigNumber* *Defined in [src/utils.ts:33](https://github.com/daostack/arc.js/blob/6c661ff/src/utils.ts#L33)* @@ -862,7 +862,7 @@ Name | Type | ------ | ------ | `amount` | string | number | -**Returns:** *BN* +**Returns:** *BigNumber* ___ diff --git a/docs/interfaces/iallowance.md b/docs/interfaces/iallowance.md index 2e7bcc64..383d3643 100644 --- a/docs/interfaces/iallowance.md +++ b/docs/interfaces/iallowance.md @@ -19,7 +19,7 @@ ### amount -• **amount**: *BN* +• **amount**: *BigNumber* *Defined in [src/token.ts:42](https://github.com/daostack/arc.js/blob/6c661ff/src/token.ts#L42)* diff --git a/docs/interfaces/iapproval.md b/docs/interfaces/iapproval.md index 3dfc37a2..710ec036 100644 --- a/docs/interfaces/iapproval.md +++ b/docs/interfaces/iapproval.md @@ -61,6 +61,6 @@ ___ ### value -• **value**: *BN* +• **value**: *BigNumber* *Defined in [src/token.ts:35](https://github.com/daostack/arc.js/blob/6c661ff/src/token.ts#L35)* diff --git a/docs/interfaces/icompetitionsuggestionstate.md b/docs/interfaces/icompetitionsuggestionstate.md index cde576aa..c300e8a9 100644 --- a/docs/interfaces/icompetitionsuggestionstate.md +++ b/docs/interfaces/icompetitionsuggestionstate.md @@ -143,7 +143,7 @@ ___ ### totalVotes -• **totalVotes**: *BN* +• **totalVotes**: *BigNumber* *Defined in [src/schemes/competition.ts:84](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/competition.ts#L84)* diff --git a/docs/interfaces/icompetitionvotestate.md b/docs/interfaces/icompetitionvotestate.md index 053301d7..c0a9b94b 100644 --- a/docs/interfaces/icompetitionvotestate.md +++ b/docs/interfaces/icompetitionvotestate.md @@ -45,7 +45,7 @@ ___ ### reputation -• **reputation**: *BN* +• **reputation**: *BigNumber* *Defined in [src/schemes/competition.ts:98](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/competition.ts#L98)* diff --git a/docs/interfaces/icontributionreward.md b/docs/interfaces/icontributionreward.md index 3ee647c0..c2371eb2 100644 --- a/docs/interfaces/icontributionreward.md +++ b/docs/interfaces/icontributionreward.md @@ -71,7 +71,7 @@ ___ ### ethReward -• **ethReward**: *BN* +• **ethReward**: *BigNumber* *Defined in [src/schemes/contributionReward.ts:16](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionReward.ts#L16)* @@ -79,7 +79,7 @@ ___ ### ethRewardLeft -• **ethRewardLeft**: *BN | null* +• **ethRewardLeft**: *BigNumber | null* *Defined in [src/schemes/contributionReward.ts:27](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionReward.ts#L27)* @@ -95,7 +95,7 @@ ___ ### externalTokenReward -• **externalTokenReward**: *BN* +• **externalTokenReward**: *BigNumber* *Defined in [src/schemes/contributionReward.ts:14](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionReward.ts#L14)* @@ -103,7 +103,7 @@ ___ ### externalTokenRewardLeft -• **externalTokenRewardLeft**: *BN | null* +• **externalTokenRewardLeft**: *BigNumber | null* *Defined in [src/schemes/contributionReward.ts:28](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionReward.ts#L28)* @@ -111,7 +111,7 @@ ___ ### nativeTokenReward -• **nativeTokenReward**: *BN* +• **nativeTokenReward**: *BigNumber* *Defined in [src/schemes/contributionReward.ts:17](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionReward.ts#L17)* @@ -119,7 +119,7 @@ ___ ### nativeTokenRewardLeft -• **nativeTokenRewardLeft**: *BN | null* +• **nativeTokenRewardLeft**: *BigNumber | null* *Defined in [src/schemes/contributionReward.ts:26](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionReward.ts#L26)* @@ -143,7 +143,7 @@ ___ ### reputationChangeLeft -• **reputationChangeLeft**: *BN | null* +• **reputationChangeLeft**: *BigNumber | null* *Defined in [src/schemes/contributionReward.ts:25](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionReward.ts#L25)* @@ -151,6 +151,6 @@ ___ ### reputationReward -• **reputationReward**: *BN* +• **reputationReward**: *BigNumber* *Defined in [src/schemes/contributionReward.ts:20](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionReward.ts#L20)* diff --git a/docs/interfaces/icontributionrewardext.md b/docs/interfaces/icontributionrewardext.md index 94287d02..a6e87a14 100644 --- a/docs/interfaces/icontributionrewardext.md +++ b/docs/interfaces/icontributionrewardext.md @@ -71,7 +71,7 @@ ___ ### ethReward -• **ethReward**: *BN* +• **ethReward**: *BigNumber* *Defined in [src/schemes/contributionRewardExt.ts:13](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionRewardExt.ts#L13)* @@ -79,7 +79,7 @@ ___ ### ethRewardLeft -• **ethRewardLeft**: *BN* +• **ethRewardLeft**: *BigNumber* *Defined in [src/schemes/contributionRewardExt.ts:24](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionRewardExt.ts#L24)* @@ -95,7 +95,7 @@ ___ ### externalTokenReward -• **externalTokenReward**: *BN* +• **externalTokenReward**: *BigNumber* *Defined in [src/schemes/contributionRewardExt.ts:11](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionRewardExt.ts#L11)* @@ -103,7 +103,7 @@ ___ ### externalTokenRewardLeft -• **externalTokenRewardLeft**: *BN* +• **externalTokenRewardLeft**: *BigNumber* *Defined in [src/schemes/contributionRewardExt.ts:25](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionRewardExt.ts#L25)* @@ -111,7 +111,7 @@ ___ ### nativeTokenReward -• **nativeTokenReward**: *BN* +• **nativeTokenReward**: *BigNumber* *Defined in [src/schemes/contributionRewardExt.ts:14](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionRewardExt.ts#L14)* @@ -119,7 +119,7 @@ ___ ### nativeTokenRewardLeft -• **nativeTokenRewardLeft**: *BN* +• **nativeTokenRewardLeft**: *BigNumber* *Defined in [src/schemes/contributionRewardExt.ts:23](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionRewardExt.ts#L23)* @@ -143,7 +143,7 @@ ___ ### reputationChangeLeft -• **reputationChangeLeft**: *BN* +• **reputationChangeLeft**: *BigNumber* *Defined in [src/schemes/contributionRewardExt.ts:22](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionRewardExt.ts#L22)* @@ -151,6 +151,6 @@ ___ ### reputationReward -• **reputationReward**: *BN* +• **reputationReward**: *BigNumber* *Defined in [src/schemes/contributionRewardExt.ts:17](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionRewardExt.ts#L17)* diff --git a/docs/interfaces/idaostate.md b/docs/interfaces/idaostate.md index 72981455..a54cf813 100644 --- a/docs/interfaces/idaostate.md +++ b/docs/interfaces/idaostate.md @@ -110,7 +110,7 @@ ___ ### reputationTotalSupply -• **reputationTotalSupply**: *BN* +• **reputationTotalSupply**: *BigNumber* *Defined in [src/dao.ts:30](https://github.com/daostack/arc.js/blob/6c661ff/src/dao.ts#L30)* @@ -142,6 +142,6 @@ ___ ### tokenTotalSupply -• **tokenTotalSupply**: *BN* +• **tokenTotalSupply**: *BigNumber* *Defined in [src/dao.ts:31](https://github.com/daostack/arc.js/blob/6c661ff/src/dao.ts#L31)* diff --git a/docs/interfaces/igenesisprotocolparams.md b/docs/interfaces/igenesisprotocolparams.md index 0afc50ba..861c6b10 100644 --- a/docs/interfaces/igenesisprotocolparams.md +++ b/docs/interfaces/igenesisprotocolparams.md @@ -59,7 +59,7 @@ ___ ### minimumDaoBounty -• **minimumDaoBounty**: *BN* +• **minimumDaoBounty**: *BigNumber* *Defined in [src/genesisProtocol.ts:9](https://github.com/daostack/arc.js/blob/6c661ff/src/genesisProtocol.ts#L9)* @@ -75,7 +75,7 @@ ___ ### proposingRepReward -• **proposingRepReward**: *BN* +• **proposingRepReward**: *BigNumber* *Defined in [src/genesisProtocol.ts:11](https://github.com/daostack/arc.js/blob/6c661ff/src/genesisProtocol.ts#L11)* diff --git a/docs/interfaces/imemberstate.md b/docs/interfaces/imemberstate.md index 41ceb952..d9c288b4 100644 --- a/docs/interfaces/imemberstate.md +++ b/docs/interfaces/imemberstate.md @@ -52,6 +52,6 @@ ___ ### reputation -• **reputation**: *BN* +• **reputation**: *BigNumber* *Defined in [src/member.ts:21](https://github.com/daostack/arc.js/blob/6c661ff/src/member.ts#L21)* diff --git a/docs/interfaces/iproposalcreateoptionscomp.md b/docs/interfaces/iproposalcreateoptionscomp.md index 05402210..0d8651f8 100644 --- a/docs/interfaces/iproposalcreateoptionscomp.md +++ b/docs/interfaces/iproposalcreateoptionscomp.md @@ -75,7 +75,7 @@ ___ ### `Optional` ethReward -• **ethReward**? : *BN* +• **ethReward**? : *BigNumber* *Defined in [src/schemes/competition.ts:58](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/competition.ts#L58)* @@ -91,7 +91,7 @@ ___ ### `Optional` externalTokenReward -• **externalTokenReward**? : *BN* +• **externalTokenReward**? : *BigNumber* *Defined in [src/schemes/competition.ts:59](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/competition.ts#L59)* @@ -99,7 +99,7 @@ ___ ### `Optional` nativeTokenReward -• **nativeTokenReward**? : *BN* +• **nativeTokenReward**? : *BigNumber* *Defined in [src/schemes/competition.ts:63](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/competition.ts#L63)* @@ -133,7 +133,7 @@ ___ ### `Optional` reputationReward -• **reputationReward**? : *BN* +• **reputationReward**? : *BigNumber* *Defined in [src/schemes/competition.ts:57](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/competition.ts#L57)* diff --git a/docs/interfaces/iproposalcreateoptionscr.md b/docs/interfaces/iproposalcreateoptionscr.md index 079079fe..df736d08 100644 --- a/docs/interfaces/iproposalcreateoptionscr.md +++ b/docs/interfaces/iproposalcreateoptionscr.md @@ -71,7 +71,7 @@ ___ ### `Optional` ethReward -• **ethReward**? : *BN* +• **ethReward**? : *BigNumber* *Defined in [src/schemes/contributionReward.ts:35](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionReward.ts#L35)* @@ -87,7 +87,7 @@ ___ ### `Optional` externalTokenReward -• **externalTokenReward**? : *BN* +• **externalTokenReward**? : *BigNumber* *Defined in [src/schemes/contributionReward.ts:36](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionReward.ts#L36)* @@ -95,7 +95,7 @@ ___ ### `Optional` nativeTokenReward -• **nativeTokenReward**? : *BN* +• **nativeTokenReward**? : *BigNumber* *Defined in [src/schemes/contributionReward.ts:33](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionReward.ts#L33)* @@ -129,7 +129,7 @@ ___ ### `Optional` reputationReward -• **reputationReward**? : *BN* +• **reputationReward**? : *BigNumber* *Defined in [src/schemes/contributionReward.ts:34](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionReward.ts#L34)* diff --git a/docs/interfaces/iproposalcreateoptionscrext.md b/docs/interfaces/iproposalcreateoptionscrext.md index d4caf7fe..c1ee3819 100644 --- a/docs/interfaces/iproposalcreateoptionscrext.md +++ b/docs/interfaces/iproposalcreateoptionscrext.md @@ -70,7 +70,7 @@ ___ ### `Optional` ethReward -• **ethReward**? : *BN* +• **ethReward**? : *BigNumber* *Defined in [src/schemes/contributionRewardExt.ts:32](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionRewardExt.ts#L32)* @@ -86,7 +86,7 @@ ___ ### `Optional` externalTokenReward -• **externalTokenReward**? : *BN* +• **externalTokenReward**? : *BigNumber* *Defined in [src/schemes/contributionRewardExt.ts:33](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionRewardExt.ts#L33)* @@ -94,7 +94,7 @@ ___ ### `Optional` nativeTokenReward -• **nativeTokenReward**? : *BN* +• **nativeTokenReward**? : *BigNumber* *Defined in [src/schemes/contributionRewardExt.ts:30](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionRewardExt.ts#L30)* @@ -120,7 +120,7 @@ ___ ### `Optional` reputationReward -• **reputationReward**? : *BN* +• **reputationReward**? : *BigNumber* *Defined in [src/schemes/contributionRewardExt.ts:31](https://github.com/daostack/arc.js/blob/6c661ff/src/schemes/contributionRewardExt.ts#L31)* diff --git a/docs/interfaces/iproposalstate.md b/docs/interfaces/iproposalstate.md index 64e31c7f..2562dd47 100644 --- a/docs/interfaces/iproposalstate.md +++ b/docs/interfaces/iproposalstate.md @@ -138,7 +138,7 @@ ___ ### downStakeNeededToQueue -• **downStakeNeededToQueue**: *BN* +• **downStakeNeededToQueue**: *BigNumber* *Defined in [src/proposal.ts:77](https://github.com/daostack/arc.js/blob/6c661ff/src/proposal.ts#L77)* @@ -282,7 +282,7 @@ ___ ### stakesAgainst -• **stakesAgainst**: *BN* +• **stakesAgainst**: *BigNumber* *Defined in [src/proposal.ts:94](https://github.com/daostack/arc.js/blob/6c661ff/src/proposal.ts#L94)* @@ -290,7 +290,7 @@ ___ ### stakesFor -• **stakesFor**: *BN* +• **stakesFor**: *BigNumber* *Defined in [src/proposal.ts:93](https://github.com/daostack/arc.js/blob/6c661ff/src/proposal.ts#L93)* @@ -314,7 +314,7 @@ ___ ### totalRepWhenCreated -• **totalRepWhenCreated**: *BN* +• **totalRepWhenCreated**: *BigNumber* *Defined in [src/proposal.ts:97](https://github.com/daostack/arc.js/blob/6c661ff/src/proposal.ts#L97)* @@ -322,7 +322,7 @@ ___ ### totalRepWhenExecuted -• **totalRepWhenExecuted**: *BN* +• **totalRepWhenExecuted**: *BigNumber* *Defined in [src/proposal.ts:98](https://github.com/daostack/arc.js/blob/6c661ff/src/proposal.ts#L98)* @@ -338,7 +338,7 @@ ___ ### upstakeNeededToPreBoost -• **upstakeNeededToPreBoost**: *BN* +• **upstakeNeededToPreBoost**: *BigNumber* *Defined in [src/proposal.ts:100](https://github.com/daostack/arc.js/blob/6c661ff/src/proposal.ts#L100)* @@ -362,7 +362,7 @@ ___ ### votesAgainst -• **votesAgainst**: *BN* +• **votesAgainst**: *BigNumber* *Defined in [src/proposal.ts:103](https://github.com/daostack/arc.js/blob/6c661ff/src/proposal.ts#L103)* @@ -378,7 +378,7 @@ ___ ### votesFor -• **votesFor**: *BN* +• **votesFor**: *BigNumber* *Defined in [src/proposal.ts:102](https://github.com/daostack/arc.js/blob/6c661ff/src/proposal.ts#L102)* diff --git a/docs/interfaces/ireputationstate.md b/docs/interfaces/ireputationstate.md index e80e7c42..0f6cf4ee 100644 --- a/docs/interfaces/ireputationstate.md +++ b/docs/interfaces/ireputationstate.md @@ -34,6 +34,6 @@ ___ ### totalSupply -• **totalSupply**: *BN* +• **totalSupply**: *BigNumber* *Defined in [src/reputation.ts:13](https://github.com/daostack/arc.js/blob/6c661ff/src/reputation.ts#L13)* diff --git a/docs/interfaces/irewardstate.md b/docs/interfaces/irewardstate.md index 5e7c536b..f23f9648 100644 --- a/docs/interfaces/irewardstate.md +++ b/docs/interfaces/irewardstate.md @@ -44,7 +44,7 @@ ___ ### daoBountyForStaker -• **daoBountyForStaker**: *BN* +• **daoBountyForStaker**: *BigNumber* *Defined in [src/reward.ts:16](https://github.com/daostack/arc.js/blob/6c661ff/src/reward.ts#L16)* @@ -76,7 +76,7 @@ ___ ### reputationForProposer -• **reputationForProposer**: *BN* +• **reputationForProposer**: *BigNumber* *Defined in [src/reward.ts:17](https://github.com/daostack/arc.js/blob/6c661ff/src/reward.ts#L17)* @@ -92,7 +92,7 @@ ___ ### reputationForVoter -• **reputationForVoter**: *BN* +• **reputationForVoter**: *BigNumber* *Defined in [src/reward.ts:14](https://github.com/daostack/arc.js/blob/6c661ff/src/reward.ts#L14)* @@ -116,7 +116,7 @@ ___ ### tokensForStaker -• **tokensForStaker**: *BN* +• **tokensForStaker**: *BigNumber* *Defined in [src/reward.ts:15](https://github.com/daostack/arc.js/blob/6c661ff/src/reward.ts#L15)* diff --git a/docs/interfaces/istakestate.md b/docs/interfaces/istakestate.md index 2f026bd3..e9d47011 100644 --- a/docs/interfaces/istakestate.md +++ b/docs/interfaces/istakestate.md @@ -21,7 +21,7 @@ ### amount -• **amount**: *BN* +• **amount**: *BigNumber* *Defined in [src/stake.ts:15](https://github.com/daostack/arc.js/blob/6c661ff/src/stake.ts#L15)* diff --git a/docs/interfaces/itokenstate.md b/docs/interfaces/itokenstate.md index 582b2566..cb6fbf02 100644 --- a/docs/interfaces/itokenstate.md +++ b/docs/interfaces/itokenstate.md @@ -52,6 +52,6 @@ ___ ### totalSupply -• **totalSupply**: *BN* +• **totalSupply**: *BigNumber* *Defined in [src/token.ts:16](https://github.com/daostack/arc.js/blob/6c661ff/src/token.ts#L16)* diff --git a/docs/interfaces/ivotestate.md b/docs/interfaces/ivotestate.md index a237b1a8..e88ffca4 100644 --- a/docs/interfaces/ivotestate.md +++ b/docs/interfaces/ivotestate.md @@ -22,7 +22,7 @@ ### amount -• **amount**: *BN* +• **amount**: *BigNumber* *Defined in [src/vote.ts:15](https://github.com/daostack/arc.js/blob/6c661ff/src/vote.ts#L15)* diff --git a/package-lock.json b/package-lock.json index fe939007..68d16b1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -495,6 +495,39 @@ "yargs": "^12.0.2" } }, + "ethers": { + "version": "4.0.48", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.48.tgz", + "integrity": "sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g==", + "dev": true, + "requires": { + "aes-js": "3.0.0", + "bn.js": "^4.4.0", + "elliptic": "6.5.3", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.4", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "scrypt-js": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", + "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", + "dev": true + }, "yaeti": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-1.0.2.tgz", @@ -575,6 +608,39 @@ "xhr-request-promise": "^0.1.2" } }, + "ethers": { + "version": "4.0.48", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.48.tgz", + "integrity": "sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g==", + "dev": true, + "requires": { + "aes-js": "3.0.0", + "bn.js": "^4.4.0", + "elliptic": "6.5.3", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.4", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "scrypt-js": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", + "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", + "dev": true + }, "web3": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.2.tgz", @@ -625,6 +691,32 @@ "@ethersproject/strings": ">=5.0.0-beta.130" } }, + "@ethersproject/abstract-provider": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.3.tgz", + "integrity": "sha512-0dVq0IcJd6/qTjT+bhJw6ooJuCJDNWTL8SKRFBnqr4OgDW7p1AXX2l7lQd7vX9RpbnDzurSM+fTBKCVWjdm3Vw==", + "requires": { + "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/networks": "^5.0.3", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/transactions": "^5.0.3", + "@ethersproject/web": "^5.0.4" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.3.tgz", + "integrity": "sha512-uhHXqmcJcxWYD+hcvsp/pu8iSgqQzgSXHJtFGUYBBkWGpCp5kF95nSRlFnyVu9uAqZxwynBtOrPZBd1ACGBQBQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.0.3", + "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3" + } + }, "@ethersproject/address": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.3.tgz", @@ -638,6 +730,23 @@ "bn.js": "^4.4.0" } }, + "@ethersproject/base64": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.3.tgz", + "integrity": "sha512-sFq+/UwGCQsLxMvp7yO7yGWni87QXoV3C3IfjqUSY2BHkbZbCDm+PxZviUkiKf+edYZ2Glp0XnY7CgKSYUN9qw==", + "requires": { + "@ethersproject/bytes": "^5.0.4" + } + }, + "@ethersproject/basex": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.0.3.tgz", + "integrity": "sha512-EvoER+OXsMAZlvbC0M/9UTxjvbBvTccYCI+uCAhXw+eS1+SUdD4v7ekAFpVX78rPLrLZB1vChKMm6vPHIu3WRA==", + "requires": { + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/properties": "^5.0.3" + } + }, "@ethersproject/bignumber": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.6.tgz", @@ -664,6 +773,40 @@ "@ethersproject/bignumber": "^5.0.6" } }, + "@ethersproject/contracts": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.0.3.tgz", + "integrity": "sha512-60H7UJx6qsp3JP5q3jFjzVNGUygRfz+XzfRwx/VeCKjHBUpFxPEIO2S30SMjYKPqw6JsgxbOjxFFZgOfQiNesw==", + "requires": { + "@ethersproject/abi": "^5.0.3", + "@ethersproject/abstract-provider": "^5.0.3", + "@ethersproject/abstract-signer": "^5.0.3", + "@ethersproject/address": "^5.0.3", + "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3" + }, + "dependencies": { + "@ethersproject/abi": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.3.tgz", + "integrity": "sha512-fSSs4sgaf5R1955QSpYXW2YkrYBgyOSyENyyMEyJwxTsKJKQPaReTQXafyeRc8ZLi3/2uzeqakH09r0S1hlFng==", + "requires": { + "@ethersproject/address": "^5.0.3", + "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.3", + "@ethersproject/hash": "^5.0.3", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.3" + } + } + } + }, "@ethersproject/hash": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.3.tgz", @@ -675,6 +818,45 @@ "@ethersproject/strings": "^5.0.3" } }, + "@ethersproject/hdnode": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.0.3.tgz", + "integrity": "sha512-+VQj0gRxfwRPHH7J32fTU8Ouk9CBFBIqvl937I0swO5PghNXBy/1U+o8gZMOitLIId1P3Wr6QcaDHkusi7OQXw==", + "requires": { + "@ethersproject/abstract-signer": "^5.0.3", + "@ethersproject/basex": "^5.0.3", + "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/pbkdf2": "^5.0.3", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/sha2": "^5.0.3", + "@ethersproject/signing-key": "^5.0.4", + "@ethersproject/strings": "^5.0.3", + "@ethersproject/transactions": "^5.0.3", + "@ethersproject/wordlists": "^5.0.3" + } + }, + "@ethersproject/json-wallets": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.0.5.tgz", + "integrity": "sha512-g2kdOY5l+TDE5rIE9BLK+S7fiQMIIsM+KTxxVu4H2COROFwCSMeEb5uMCkccXc3iDX1sOBF653h8kTXCaFY03Q==", + "requires": { + "@ethersproject/abstract-signer": "^5.0.3", + "@ethersproject/address": "^5.0.3", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/hdnode": "^5.0.3", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/pbkdf2": "^5.0.3", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/random": "^5.0.3", + "@ethersproject/strings": "^5.0.3", + "@ethersproject/transactions": "^5.0.3", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, "@ethersproject/keccak256": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.3.tgz", @@ -689,6 +871,23 @@ "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.5.tgz", "integrity": "sha512-gJj72WGzQhUtCk6kfvI8elTaPOQyMvrMghp/nbz0ivTo39fZ7IjypFh/ySDeUSdBNplAwhzWKKejQhdpyefg/w==" }, + "@ethersproject/networks": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.3.tgz", + "integrity": "sha512-Gjpejul6XFetJXyvHCd37IiCC00203kYGU9sMaRMZcAcYKszCkbOeo/Q7Mmdr/fS7YBbB5iTOahDJWiRLu/b7A==", + "requires": { + "@ethersproject/logger": "^5.0.5" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.0.3.tgz", + "integrity": "sha512-asc+YgJn7v7GKWYXGz3GM1d9XYI2HvdCw1cLEow2niEC9BfYA29rr1exz100zISk95GIU1YP2zV//zHsMtWE5Q==", + "requires": { + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/sha2": "^5.0.3" + } + }, "@ethersproject/properties": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.3.tgz", @@ -697,6 +896,48 @@ "@ethersproject/logger": "^5.0.5" } }, + "@ethersproject/providers": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.0.7.tgz", + "integrity": "sha512-lT+w/w2PKX9oyddX0DTBYl2CVHJTJONZP5HLJ3MzVvSA5dTOdiJ9Sx5rpqR7Tw+mxVA9xPjanoNCaPPIT7cykQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.0.3", + "@ethersproject/abstract-signer": "^5.0.3", + "@ethersproject/address": "^5.0.3", + "@ethersproject/basex": "^5.0.3", + "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.3", + "@ethersproject/hash": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/networks": "^5.0.3", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/random": "^5.0.3", + "@ethersproject/rlp": "^5.0.3", + "@ethersproject/sha2": "^5.0.3", + "@ethersproject/strings": "^5.0.3", + "@ethersproject/transactions": "^5.0.3", + "@ethersproject/web": "^5.0.4", + "bech32": "1.1.4", + "ws": "7.2.3" + }, + "dependencies": { + "ws": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz", + "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==" + } + } + }, + "@ethersproject/random": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.0.3.tgz", + "integrity": "sha512-pEhWRbgNeAY1oYk4nIsEtCTh9TtLsivIDbOX11n+DLZLYM3c8qCLxThXtsHwVsMs1JHClZr5auYC4YxtVVzO/A==", + "requires": { + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5" + } + }, "@ethersproject/rlp": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.3.tgz", @@ -706,6 +947,50 @@ "@ethersproject/logger": "^5.0.5" } }, + "@ethersproject/sha2": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.0.3.tgz", + "integrity": "sha512-B1U9UkgxhUlC1J4sFUL2GwTo33bM2i/aaD3aiYdTh1FEXtGfqYA89KN1DJ83n+Em8iuvyiBRk6u30VmgqlHeHA==", + "requires": { + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "hash.js": "1.1.3" + }, + "dependencies": { + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + } + } + }, + "@ethersproject/signing-key": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.4.tgz", + "integrity": "sha512-I6pJoga1IvhtjYK5yXzCjs4ZpxrVbt9ZRAlpEw0SW9UuV020YfJH5EIVEGR2evdRceS3nAQIggqbsXSkP8Y1Dg==", + "requires": { + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "elliptic": "6.5.3" + } + }, + "@ethersproject/solidity": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.0.3.tgz", + "integrity": "sha512-a6ni4OIj1e+JrvDiuLVqygYmAh53Ljk5iErkjzPgFBY8dz9xQfDxhpASjOZY0lzCf+N125yeK9N7Vm3HI7OLzQ==", + "requires": { + "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/sha2": "^5.0.3", + "@ethersproject/strings": "^5.0.3" + } + }, "@ethersproject/strings": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.3.tgz", @@ -716,6 +1001,78 @@ "@ethersproject/logger": "^5.0.5" } }, + "@ethersproject/transactions": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.3.tgz", + "integrity": "sha512-cqsAAFUQV6iWqfgLL7KCPNfd3pXJPDdYtE6QuBEAIpc7cgbJ7TIDCF/dN+1otfERHJIbjGSNrhh4axKRnSFswg==", + "requires": { + "@ethersproject/address": "^5.0.3", + "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.3", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/rlp": "^5.0.3", + "@ethersproject/signing-key": "^5.0.4" + } + }, + "@ethersproject/units": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.0.3.tgz", + "integrity": "sha512-PyQ066mFczUy0CSJJrc/VK+1ATh1bsI8EkzAVT7GQ0IPJlNDcXnGNtlH5EQGHzuXA3GDQNV23poB0Cy/WDb2zg==", + "requires": { + "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/constants": "^5.0.3", + "@ethersproject/logger": "^5.0.5" + } + }, + "@ethersproject/wallet": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.0.3.tgz", + "integrity": "sha512-Nouwfh1HlpxaeRRi4+UDVsfrd9fitBHUvw35bTMSwJLFsZTb9xPd0LGWdX4llwVlAP/CXb6qDc0zwYy6uLp7Lw==", + "requires": { + "@ethersproject/abstract-provider": "^5.0.3", + "@ethersproject/abstract-signer": "^5.0.3", + "@ethersproject/address": "^5.0.3", + "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/hash": "^5.0.3", + "@ethersproject/hdnode": "^5.0.3", + "@ethersproject/json-wallets": "^5.0.5", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/random": "^5.0.3", + "@ethersproject/signing-key": "^5.0.4", + "@ethersproject/transactions": "^5.0.3", + "@ethersproject/wordlists": "^5.0.3" + } + }, + "@ethersproject/web": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.4.tgz", + "integrity": "sha512-1ZSbFGJo61huhDW5M8hqjP8zoCK6zZlu3jYAJrFKVNgBjEm1UYMY5fsoogYHWkLgCgBIf+M6yKzYdtAs4tol4Q==", + "requires": { + "@ethersproject/base64": "^5.0.3", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.3" + } + }, + "@ethersproject/wordlists": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.0.3.tgz", + "integrity": "sha512-Asro9CcBJqxtMnmKrsg79GMmH02p0JmdOwhEdRHRbr51UMRqAfV5RjiidYk21aMsTflv4VY3HgFs6q6FtRJs+w==", + "requires": { + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/hash": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.3" + } + }, "@graphprotocol/graph-cli": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/@graphprotocol/graph-cli/-/graph-cli-0.18.0.tgz", @@ -1236,6 +1593,31 @@ "xhr-request-promise": "^0.1.2" } }, + "ethers": { + "version": "4.0.48", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.48.tgz", + "integrity": "sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g==", + "dev": true, + "requires": { + "aes-js": "3.0.0", + "bn.js": "^4.4.0", + "elliptic": "6.5.3", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.4", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + }, + "dependencies": { + "scrypt-js": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", + "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", + "dev": true + } + } + }, "eventemitter3": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", @@ -3196,6 +3578,11 @@ "tweetnacl": "^0.14.3" } }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "bignumber.js": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", @@ -5549,28 +5936,56 @@ } }, "ethers": { - "version": "4.0.48", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.48.tgz", - "integrity": "sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g==", - "requires": { - "aes-js": "3.0.0", - "bn.js": "^4.4.0", - "elliptic": "6.5.3", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.0.10.tgz", + "integrity": "sha512-w5VgwFsEJpsuXzJh+jTpEi48D0IlgtDLE7w753SRH7PqbITZvu2R63cbp9GQIh+lw7GqpcDo/BvRQiJhpQz3kw==", + "requires": { + "@ethersproject/abi": "^5.0.3", + "@ethersproject/abstract-provider": "^5.0.3", + "@ethersproject/abstract-signer": "^5.0.3", + "@ethersproject/address": "^5.0.3", + "@ethersproject/base64": "^5.0.3", + "@ethersproject/basex": "^5.0.3", + "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.3", + "@ethersproject/contracts": "^5.0.3", + "@ethersproject/hash": "^5.0.3", + "@ethersproject/hdnode": "^5.0.3", + "@ethersproject/json-wallets": "^5.0.5", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/networks": "^5.0.3", + "@ethersproject/pbkdf2": "^5.0.3", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/providers": "^5.0.6", + "@ethersproject/random": "^5.0.3", + "@ethersproject/rlp": "^5.0.3", + "@ethersproject/sha2": "^5.0.3", + "@ethersproject/signing-key": "^5.0.4", + "@ethersproject/solidity": "^5.0.3", + "@ethersproject/strings": "^5.0.3", + "@ethersproject/transactions": "^5.0.3", + "@ethersproject/units": "^5.0.3", + "@ethersproject/wallet": "^5.0.3", + "@ethersproject/web": "^5.0.4", + "@ethersproject/wordlists": "^5.0.3" }, "dependencies": { - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" + "@ethersproject/abi": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.3.tgz", + "integrity": "sha512-fSSs4sgaf5R1955QSpYXW2YkrYBgyOSyENyyMEyJwxTsKJKQPaReTQXafyeRc8ZLi3/2uzeqakH09r0S1hlFng==", + "requires": { + "@ethersproject/address": "^5.0.3", + "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.3", + "@ethersproject/hash": "^5.0.3", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.3" } } } @@ -14265,9 +14680,9 @@ "dev": true }, "scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "scrypt-shim": { "version": "github:web3-js/scrypt-shim#aafdadda13e660e25e1c525d1f5b2443f5eb1ebb", @@ -14438,7 +14853,8 @@ "setimmediate": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" + "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=", + "dev": true }, "setprototypeof": { "version": "1.1.1", @@ -16247,7 +16663,8 @@ "uuid": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=", + "dev": true }, "validate-npm-package-license": { "version": "3.0.4", @@ -17956,7 +18373,8 @@ "xmlhttprequest": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "dev": true }, "xtend": { "version": "4.0.2", diff --git a/package.json b/package.json index 0fa87e7c..650ac91f 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "apollo-link-http": "^1.5.15", "apollo-link-retry": "^2.2.15", "apollo-link-ws": "^1.0.18", - "ethers": "^4.0.45", + "ethers": "^5.0.10", "form-data": "^3.0.0", "graphql": "^14.4.2", "graphql-tag": "^2.10.1", diff --git a/src/arc.ts b/src/arc.ts index 2063c72d..67e41189 100644 --- a/src/arc.ts +++ b/src/arc.ts @@ -1,9 +1,6 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { Contract, Signer } from 'ethers' import { providers } from 'ethers' -import 'ethers/dist/shims' -import { JsonRpcProvider } from 'ethers/providers' -import { BigNumber } from 'ethers/utils' import gql from 'graphql-tag' import { Observable, Observer, of } from 'rxjs' import { first } from 'rxjs/operators' @@ -91,8 +88,8 @@ export class Arc extends GraphNodeObserver { // accounts observed by ethBalance public observedAccounts: { [address: string]: { - observable?: Observable - observer?: Observer + observable?: Observable + observer?: Observer lastBalance?: string subscriptionsCount: number } @@ -357,7 +354,7 @@ export class Arc extends GraphNodeObserver { return Stake.search(this, options, apolloQueryOptions) } - public ethBalance(owner: Address): Observable { + public ethBalance(owner: Address): Observable { if (!this.observedAccounts[owner]) { this.observedAccounts[owner] = { subscriptionsCount: 1 @@ -365,10 +362,10 @@ export class Arc extends GraphNodeObserver { } if (this.observedAccounts[owner].observable) { this.observedAccounts[owner].subscriptionsCount += 1 - return this.observedAccounts[owner].observable as Observable + return this.observedAccounts[owner].observable as Observable } - const observable: Observable = Observable.create((observer: Observer) => { + const observable: Observable = Observable.create((observer: Observer) => { this.observedAccounts[owner].observer = observer // get the current balance and return it @@ -380,21 +377,25 @@ export class Arc extends GraphNodeObserver { .getBalance(owner) .then((currentBalance: BigNumber) => { const balance = currentBalance.toString() - const obs = this.observedAccounts[owner].observer as Observer - obs.next(new BN(balance)) + const obs = this.observedAccounts[owner].observer as Observer + obs.next(BigNumber.from(balance)) this.observedAccounts[owner].lastBalance = balance }) .catch((err: Error) => observer.error(err)) // called whenever the account balance changes const onBalanceChange = (balance: BigNumber) => { + console.log("6666666666") const accInfo = this.observedAccounts[owner] if (accInfo && balance.toString() !== accInfo.lastBalance) { - (accInfo.observer as Observer).next(new BN(balance.toString())) + (accInfo.observer as Observer).next(BigNumber.from(balance.toString())) accInfo.lastBalance = balance.toString() + console.log("77777777") } } + this.web3.on(owner, onBalanceChange) + console.log("onc") // unsubscribe return () => { @@ -481,16 +482,35 @@ export class Arc extends GraphNodeObserver { if (!abi) { abi = this.getABI({ address }) } + if (!this.web3) { throw new Error('Web3 provider not set') } + if (address === "0xd833215cbcc3f914bd1c9ece3ee7bf8b14f841bb") { + //console.log(this.defaultAccount) + } + + + if (Signer.isSigner(this.defaultAccount)) { + if (address === "0xd833215cbcc3f914bd1c9ece3ee7bf8b14f841bb") { + //console.log(1) + } return new Contract(address, abi, this.defaultAccount) } else if (this.isInfuraProvider) { + if (address === "0xd833215cbcc3f914bd1c9ece3ee7bf8b14f841bb") { + //console.log(2) + } return new Contract(address, abi, this.web3) } else { - return new Contract(address, abi, this.web3.getSigner(this.defaultAccount)) + let c = new Contract(address, abi, this.web3.getSigner(this.defaultAccount)); + if (address === "0xd833215cbcc3f914bd1c9ece3ee7bf8b14f841bb") { + //console.log(3) + + } + + return c } } @@ -556,6 +576,7 @@ export class Arc extends GraphNodeObserver { } public setAccount(address: Address) { + //console.log("setAccount", address) if (Signer.isSigner(this.defaultAccount)) { throw Error( 'The account cannot be set post-initialization when a custom Signer is being used' @@ -588,7 +609,7 @@ export class Arc extends GraphNodeObserver { }) } - public approveForStaking(spender: Address, amount: BN) { + public approveForStaking(spender: Address, amount: BigNumber) { return this.GENToken().approveForStaking(spender, amount) } @@ -598,7 +619,7 @@ export class Arc extends GraphNodeObserver { * @param spender Address of the spender * @return */ - public allowance(owner: Address, spender: Address): Observable { + public allowance(owner: Address, spender: Address): Observable { return this.GENToken().allowance(owner, spender) } @@ -653,8 +674,8 @@ export class Arc extends GraphNodeObserver { return descriptionHash } - public approveTokens(tokenAddress: Address, spender: Address, amount: BN) { - const signer = (this.web3 as JsonRpcProvider).getSigner(this.defaultAccount as any) + public approveTokens(tokenAddress: Address, spender: Address, amount: BigNumber) { + const signer = (this.web3 as providers.JsonRpcProvider).getSigner(this.defaultAccount as any) const abi = [ { constant: false, @@ -662,7 +683,7 @@ export class Arc extends GraphNodeObserver { { name: '_spender', type: 'address' }, { name: '_value', type: 'uint256' } ], - name: 'approve', + name: 'approve(address,uint256)', outputs: [{ name: '', type: 'bool' }], payable: false, stateMutability: 'nonpayable', @@ -673,7 +694,7 @@ export class Arc extends GraphNodeObserver { return this.sendTransaction({ contract: tokenContract, - method: 'approve', + method: 'approve(address,uint256)', args: [spender, amount.toString()] }) } diff --git a/src/dao.ts b/src/dao.ts index 6b42ae83..8d374e57 100644 --- a/src/dao.ts +++ b/src/dao.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import gql from 'graphql-tag' import { Observable } from 'rxjs' import { first, map } from 'rxjs/operators' @@ -43,14 +43,14 @@ export interface IDAOState { tokenName: string tokenSymbol: string memberCount: number - reputationTotalSupply: BN - tokenTotalSupply: BN + reputationTotalSupply: BigNumber + tokenTotalSupply: BigNumber numberOfQueuedProposals: number numberOfPreBoostedProposals: number numberOfBoostedProposals: number metadata: string metadataHash: string - ethBalance: BN + ethBalance: BigNumber } export interface IDAOQueryOptions extends ICommonQueryOptions { @@ -160,7 +160,7 @@ export class DAO extends Entity { id: item.nativeReputation.id, entity: new Reputation(context, item.nativeReputation.id) }, - reputationTotalSupply: new BN(item.nativeReputation.totalSupply), + reputationTotalSupply: BigNumber.from(item.nativeReputation.totalSupply), token: { id: item.nativeToken.id, entity: new Token(context, item.nativeToken.id) @@ -190,7 +190,7 @@ export class DAO extends Entity { .pipe(map((r) => r.reputation.entity)) } - public async ethBalance(): Promise> { + public async ethBalance(): Promise> { const avatar = this.context.getContract(this.id) return this.context.ethBalance(await avatar.vault()) } diff --git a/src/genesisProtocol.ts b/src/genesisProtocol.ts index 94eec956..9883daf7 100644 --- a/src/genesisProtocol.ts +++ b/src/genesisProtocol.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { realMathToNumber } from './index' export interface IGenesisProtocolParams { @@ -6,9 +6,9 @@ export interface IGenesisProtocolParams { boostedVotePeriodLimit: number daoBountyConst: number // ? limitExponentValue: number - minimumDaoBounty: BN // in GEN + minimumDaoBounty: BigNumber // in GEN preBoostedVotePeriodLimit: number - proposingRepReward: BN // in REP + proposingRepReward: BigNumber // in REP queuedVoteRequiredPercentage: number queuedVotePeriodLimit: number // in seconds (?) quietEndingPeriod: number @@ -22,13 +22,13 @@ export function mapGenesisProtocolParams(params: IGenesisProtocolParams) { boostedVotePeriodLimit: Number(params.boostedVotePeriodLimit), daoBountyConst: Number(params.daoBountyConst), limitExponentValue: Number(params.limitExponentValue), - minimumDaoBounty: new BN(params.minimumDaoBounty), + minimumDaoBounty: BigNumber.from(params.minimumDaoBounty), preBoostedVotePeriodLimit: Number(params.preBoostedVotePeriodLimit), - proposingRepReward: new BN(params.proposingRepReward), + proposingRepReward: BigNumber.from(params.proposingRepReward), queuedVotePeriodLimit: Number(params.queuedVotePeriodLimit), queuedVoteRequiredPercentage: Number(params.queuedVoteRequiredPercentage), quietEndingPeriod: Number(params.quietEndingPeriod), - thresholdConst: realMathToNumber(new BN(params.thresholdConst)), + thresholdConst: realMathToNumber(BigNumber.from(params.thresholdConst)), votersReputationLossRatio: Number(params.votersReputationLossRatio) } } diff --git a/src/member.ts b/src/member.ts index c7ffd644..7ec2413d 100644 --- a/src/member.ts +++ b/src/member.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { utils } from 'ethers' import gql from 'graphql-tag' import { Observable, Observer } from 'rxjs' @@ -33,7 +33,7 @@ export interface IMemberState { contract?: Address createdAt: Date dao: IEntityRef - reputation: BN + reputation: BigNumber } export interface IMemberQueryOptions extends ICommonQueryOptions { @@ -135,7 +135,7 @@ export class Member extends Entity { entity: new DAO(context, item.dao.id) }, contract: item.contract, - reputation: new BN(item.balance) + reputation: BigNumber.from(item.balance) } } @@ -174,7 +174,7 @@ export class Member extends Entity { id: this.coreState.id, address: this.coreState.address, dao: this.coreState.dao, - reputation: new BN(0) + reputation: BigNumber.from(0) } } else { throw Error(`No member with id ${this.id} was found`) @@ -219,7 +219,7 @@ export class Member extends Entity { return { address: this.coreState.address, dao: this.coreState.dao, - reputaion: new BN(0) + reputaion: BigNumber.from(0) } } else { return Member.itemMap(arc, items[0], queriedId) diff --git a/src/plugins/competition/plugin.ts b/src/plugins/competition/plugin.ts index 15330179..c2c7404b 100644 --- a/src/plugins/competition/plugin.ts +++ b/src/plugins/competition/plugin.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { Observable } from 'rxjs' import { Address, @@ -33,12 +33,12 @@ import { export interface IProposalCreateOptionsComp extends IProposalBaseCreateOptions { endTime: Date - reputationReward?: BN - ethReward?: BN - externalTokenReward?: BN + reputationReward?: BigNumber + ethReward?: BigNumber + externalTokenReward?: BigNumber externalTokenAddress?: Address rewardSplit: number[] - nativeTokenReward?: BN + nativeTokenReward?: BigNumber numberOfVotesPerVoter: number proposerIsAdmin?: boolean // true if new suggestions are limited to the proposer startTime: Date | null @@ -251,7 +251,7 @@ export class CompetitionPlugin extends ProposalPlugin< } } - public async ethBalance(): Promise> { + public async ethBalance(): Promise> { let state if (!this.coreState) { diff --git a/src/plugins/competition/proposal.ts b/src/plugins/competition/proposal.ts index e0535027..846eca70 100644 --- a/src/plugins/competition/proposal.ts +++ b/src/plugins/competition/proposal.ts @@ -292,7 +292,7 @@ export class CompetitionProposal extends Proposal { const contract = await CompetitionPlugin.getCompetitionContract(this.context, pluginState) return { contract, - method: 'vote', + method: 'vote(bytes32,uint256,uint256,address)', args: [options.suggestionId] } } @@ -336,7 +336,7 @@ export class CompetitionProposal extends Proposal { const contract = await CompetitionPlugin.getCompetitionContract(this.context, pluginState) return { contract, - method: 'redeem', + method: 'redeem(bytes32,bool[4])', args: [options.suggestionId] } } diff --git a/src/plugins/competition/suggestion.ts b/src/plugins/competition/suggestion.ts index 28a6ed99..9de66b8b 100644 --- a/src/plugins/competition/suggestion.ts +++ b/src/plugins/competition/suggestion.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { utils } from 'ethers' import gql from 'graphql-tag' import { Observable } from 'rxjs' @@ -34,7 +34,7 @@ export interface ICompetitionSuggestionState { beneficiary: Address // votes: [CompetitionVote!] @derivedFrom(field: "suggestion") tags: string[] - totalVotes: BN + totalVotes: BigNumber createdAt: Date redeemedAt: Date | null rewardPercentage: number @@ -186,7 +186,7 @@ export class CompetitionSuggestion extends Entity { suggestionId: item.suggestionId, tags: item.tags.map((tag: any) => tag.id), title: item.title, - totalVotes: new BN(item.totalVotes), + totalVotes: BigNumber.from(item.totalVotes), url: item.url } } diff --git a/src/plugins/competition/vote.ts b/src/plugins/competition/vote.ts index 8ff2a427..ebf6a693 100644 --- a/src/plugins/competition/vote.ts +++ b/src/plugins/competition/vote.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import gql from 'graphql-tag' import { Observable } from 'rxjs' import { @@ -17,7 +17,7 @@ export interface ICompetitionVoteState { suggestion: string voter: Address createdAt?: Date - reputation: BN + reputation: BigNumber } export interface ICompetitionVoteQueryOptions extends ICommonQueryOptions { diff --git a/src/plugins/contributionReward/plugin.ts b/src/plugins/contributionReward/plugin.ts index e3dfb4d1..a726173e 100644 --- a/src/plugins/contributionReward/plugin.ts +++ b/src/plugins/contributionReward/plugin.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import gql from 'graphql-tag' import { Address, @@ -28,10 +28,10 @@ export interface IContributionRewardState extends IPluginState { export interface IProposalCreateOptionsCR extends IProposalBaseCreateOptions { beneficiary: Address - nativeTokenReward?: BN - reputationReward?: BN - ethReward?: BN - externalTokenReward?: BN + nativeTokenReward?: BigNumber + reputationReward?: BigNumber + ethReward?: BigNumber + externalTokenReward?: BigNumber externalTokenAddress?: Address periodLength?: number periods?: any @@ -130,7 +130,7 @@ export class ContributionRewardPlugin extends ProposalPlugin< return { contract: this.context.getContract(options.plugin as string), - method: 'proposeContributionReward', + method: 'proposeContributionReward(string,int256,uint256[5],address,address)', args: [ options.descriptionHash || '', (options.reputationReward && options.reputationReward.toString()) || 0, diff --git a/src/plugins/contributionReward/proposal.ts b/src/plugins/contributionReward/proposal.ts index c63f8729..012d538b 100644 --- a/src/plugins/contributionReward/proposal.ts +++ b/src/plugins/contributionReward/proposal.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { DocumentNode } from 'graphql' import gql from 'graphql-tag' import { Observable } from 'rxjs' @@ -15,21 +15,21 @@ import { export interface IContributionRewardProposalState extends IProposalState { beneficiary: Address - externalTokenReward: BN + externalTokenReward: BigNumber externalToken: Address - ethReward: BN - nativeTokenReward: BN + ethReward: BigNumber + nativeTokenReward: BigNumber periods: number periodLength: number - reputationReward: BN + reputationReward: BigNumber alreadyRedeemedNativeTokenPeriods: number alreadyRedeemedReputationPeriods: number alreadyRedeemedExternalTokenPeriods: number alreadyRedeemedEthPeriods: number - reputationChangeLeft: BN | null - nativeTokenRewardLeft: BN | null - ethRewardLeft: BN | null - externalTokenRewardLeft: BN | null + reputationChangeLeft: BigNumber | null + nativeTokenRewardLeft: BigNumber | null + ethRewardLeft: BigNumber | null + externalTokenRewardLeft: BigNumber | null } export class ContributionRewardProposal extends Proposal { @@ -78,19 +78,19 @@ export class ContributionRewardProposal extends Proposal> { + public async ethBalance(): Promise> { let state if (!this.coreState) { diff --git a/src/plugins/contributionRewardExt/proposal.ts b/src/plugins/contributionRewardExt/proposal.ts index da3324ba..cc9cf35d 100644 --- a/src/plugins/contributionRewardExt/proposal.ts +++ b/src/plugins/contributionRewardExt/proposal.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import gql from 'graphql-tag' import { Observable } from 'rxjs' import { @@ -14,21 +14,21 @@ import { export interface IContributionRewardExtProposalState extends IProposalState { beneficiary: Address - externalTokenReward: BN + externalTokenReward: BigNumber externalToken: Address - ethReward: BN - nativeTokenReward: BN + ethReward: BigNumber + nativeTokenReward: BigNumber periods: number periodLength: number - reputationReward: BN + reputationReward: BigNumber alreadyRedeemedNativeTokenPeriods: number alreadyRedeemedReputationPeriods: number alreadyRedeemedExternalTokenPeriods: number alreadyRedeemedEthPeriods: number - reputationChangeLeft: BN | null - nativeTokenRewardLeft: BN | null - ethRewardLeft: BN | null - externalTokenRewardLeft: BN | null + reputationChangeLeft: BigNumber | null + nativeTokenRewardLeft: BigNumber | null + ethRewardLeft: BigNumber | null + externalTokenRewardLeft: BigNumber | null } export class ContributionRewardExtProposal extends Proposal { @@ -47,19 +47,19 @@ export class ContributionRewardExtProposal extends Proposal beneficiary: Address - amount: BN + amount: BigNumber executed: Date - amountRedeemed: BN + amountRedeemed: BigNumber } export class FundingRequestProposal extends Proposal { @@ -78,9 +78,9 @@ export class FundingRequestProposal extends Proposal { @@ -75,7 +75,7 @@ export class GenericPluginProposal extends Proposal contractToCall: item.genericScheme.contractToCall, executed: item.genericScheme.executed, returnValue: item.genericScheme.returnValue, - value: new BN(item.genericScheme.value) + value: BigNumber.from(item.genericScheme.value) } } diff --git a/src/plugins/join/plugin.ts b/src/plugins/join/plugin.ts index 6266f921..3ae65527 100644 --- a/src/plugins/join/plugin.ts +++ b/src/plugins/join/plugin.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { DocumentNode } from 'graphql' import gql from 'graphql-tag' import { @@ -25,15 +25,15 @@ export interface IJoinState extends IPluginState { votingMachine: Address voteParams: IGenesisProtocolParams fundingToken: Address - minFeeToJoin: BN - memberReputation: BN - fundingGoal: BN + minFeeToJoin: BigNumber + memberReputation: BigNumber + fundingGoal: BigNumber fundingGoalDeadline: Date } } export interface IProposalCreateOptionsJoin extends IProposalBaseCreateOptions { - fee: BN + fee: BigNumber } export interface IInitParamsJoin { @@ -128,9 +128,9 @@ export class Join extends ProposalPlugin< voteParams: mapGenesisProtocolParams(item.joinParams.voteParams), votingMachine: item.joinParams.votingMachine, fundingToken: item.joinParams.fundingToken, - minFeeToJoin: new BN(item.joinParams.minFeeToJoin), - memberReputation: new BN(item.joinParams.memberReputation), - fundingGoal: new BN(item.joinParams.fundingGoal), + minFeeToJoin: BigNumber.from(item.joinParams.minFeeToJoin), + memberReputation: BigNumber.from(item.joinParams.memberReputation), + fundingGoal: BigNumber.from(item.joinParams.fundingGoal), fundingGoalDeadline: secondSinceEpochToDate(item.joinParams.fundingGoalDeadline) } @@ -162,7 +162,7 @@ export class Join extends ProposalPlugin< return { contract: this.context.getContract(options.plugin), - method: 'proposeToJoin', + method: 'proposeToJoin(string,uint256)', args: [ options.descriptionHash, options.fee.toString() diff --git a/src/plugins/join/proposal.ts b/src/plugins/join/proposal.ts index 95cf56d9..5ed2b1f1 100644 --- a/src/plugins/join/proposal.ts +++ b/src/plugins/join/proposal.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { DocumentNode } from 'graphql' import gql from 'graphql-tag' import { from, Observable } from 'rxjs' @@ -22,9 +22,9 @@ import { export interface IJoinProposalState extends IProposalState { proposedMember: Address dao: IEntityRef - funding: BN, + funding: BigNumber, executed: boolean, - reputationMinted: BN + reputationMinted: BigNumber } export class JoinProposal extends Proposal { @@ -75,9 +75,9 @@ export class JoinProposal extends Proposal { return { ...baseState, proposedMember: item.join.proposedMember, - funding: new BN(item.join.funding), + funding: BigNumber.from(item.join.funding), executed: item.join.executed, - reputationMinted: new BN(item.join.reputationMinted) + reputationMinted: BigNumber.from(item.join.reputationMinted) } } diff --git a/src/plugins/pluginManager/plugin.ts b/src/plugins/pluginManager/plugin.ts index 928e2633..3f81ec7b 100644 --- a/src/plugins/pluginManager/plugin.ts +++ b/src/plugins/pluginManager/plugin.ts @@ -186,7 +186,8 @@ export class PluginManagerPlugin extends ProposalPlugin< const initializeParams = Plugins[options.add.pluginName].initializeParamsMap( options.add.pluginInitParams as any ) - const pluginData = abiInterface.functions.initialize.encode(initializeParams) + //const pluginData = abiInterface.functions.initialize.encode(initializeParams) + const pluginData = abiInterface.encodeFunctionData('transfer(address,uint256)', initializeParams) args.push( // NOTE: The next line is a workaround @@ -210,7 +211,7 @@ export class PluginManagerPlugin extends ProposalPlugin< return { contract: this.context.getContract(pluginAddress), - method: 'proposeScheme', + method: 'proposeScheme(address,bytes4,string)', args: [ ...args, options.remove ? options.remove.plugin : '0x0000000000000000000000000000000000000000', diff --git a/src/plugins/pluginRegistrar/plugin.ts b/src/plugins/pluginRegistrar/plugin.ts index 414393d4..a2eb64f8 100644 --- a/src/plugins/pluginRegistrar/plugin.ts +++ b/src/plugins/pluginRegistrar/plugin.ts @@ -171,7 +171,7 @@ export class PluginRegistrarPlugin extends ProposalPlugin< return { contract: this.context.getContract(options.plugin as string), - method: 'proposeScheme', + method: 'proposeScheme(address,bytes4,string)', args: [options.pluginToRegister, options.permissions, options.descriptionHash] } case 'SchemeRegistrarRemove': @@ -181,7 +181,7 @@ export class PluginRegistrarPlugin extends ProposalPlugin< return { contract: this.context.getContract(options.plugin as string), - method: 'proposeToRemoveScheme', + method: 'proposeToRemoveScheme(address,string)', args: [options.pluginToRegister, options.descriptionHash] } default: diff --git a/src/plugins/proposal.ts b/src/plugins/proposal.ts index 9530f6e8..7604cc1b 100644 --- a/src/plugins/proposal.ts +++ b/src/plugins/proposal.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { utils } from 'ethers' import { DocumentNode } from 'graphql' import gql from 'graphql-tag' @@ -130,13 +130,13 @@ export interface IProposalState { resolvedAt: number tags?: string[] title?: string - totalRepWhenCreated: BN - totalRepWhenExecuted: BN + totalRepWhenCreated: BigNumber + totalRepWhenExecuted: BigNumber type: ProposalName url?: string votes: Array> - votesFor: BN - votesAgainst: BN + votesFor: BigNumber + votesAgainst: BigNumber votesCount: number voteOnBehalf: Address winningOutcome: IProposalOutcome @@ -147,14 +147,14 @@ export interface IProposalState { stage: IProposalStage accountsWithUnclaimedRewards: Address[] boostedAt: number - upstakeNeededToPreBoost: BN - stakesFor: BN - stakesAgainst: BN + upstakeNeededToPreBoost: BigNumber + stakesFor: BigNumber + stakesAgainst: BigNumber preBoostedAt: number genesisProtocolParams: IGenesisProtocolParams executionState: IExecutionState expiresInQueueAt: number - downStakeNeededToQueue: BN + downStakeNeededToQueue: BigNumber confidenceThreshold: number } @@ -399,11 +399,11 @@ export abstract class Proposal extends En // (S+/S-) > AlphaConstant^NumberOfBoostedProposal. // (stakesFor/stakesAgainst) > gpQueue.threshold const stage: any = IProposalStage[item.stage] - const threshold = realMathToNumber(new BN(item.gpQueue.threshold)) - const stakesFor = new BN(item.stakesFor) - const stakesAgainst = new BN(item.stakesAgainst) + const threshold = realMathToNumber(BigNumber.from(item.gpQueue.threshold)) + const stakesFor = BigNumber.from(item.stakesFor) + const stakesAgainst = BigNumber.from(item.stakesAgainst) /** - * for doing multiplication between floating point (threshold) and BN numbers + * for doing multiplication between floating point (threshold) and BigNumber numbers */ const PRECISION = Math.pow(2, 40) /** @@ -420,11 +420,11 @@ export abstract class Proposal extends En * to move the proposal to the preboost queue * < 0 : then the proposal ought already to be pre-boosted */ - let upstakeNeededToPreBoost: BN = new BN(0) + let upstakeNeededToPreBoost: BigNumber = BigNumber.from(0) if (stage === IProposalStage.Queued) { - upstakeNeededToPreBoost = new BN(threshold * PRECISION) + upstakeNeededToPreBoost = BigNumber.from(threshold * PRECISION) .mul(stakesAgainst) - .div(new BN(PRECISION)) + .div(BigNumber.from(PRECISION)) .sub(stakesFor) } /** @@ -440,11 +440,11 @@ export abstract class Proposal extends En * to move the proposal to the Queued queue * <= 0 : then the proposal ought to already be in the Queued queue */ - let downStakeNeededToQueue: BN = new BN(0) + let downStakeNeededToQueue: BigNumber = BigNumber.from(0) if (stage === IProposalStage.PreBoosted) { downStakeNeededToQueue = stakesFor - .mul(new BN(PRECISION)) - .div(new BN(threshold * PRECISION)) + .mul(BigNumber.from(PRECISION)) + .div(BigNumber.from(threshold * PRECISION)) .sub(stakesAgainst) } @@ -509,8 +509,8 @@ export abstract class Proposal extends En stakesFor, tags: item.tags.map((t: any) => t.id), title: item.title, - totalRepWhenCreated: new BN(item.totalRepWhenCreated), - totalRepWhenExecuted: new BN(item.totalRepWhenExecuted), + totalRepWhenCreated: BigNumber.from(item.totalRepWhenCreated), + totalRepWhenExecuted: BigNumber.from(item.totalRepWhenExecuted), type, upstakeNeededToPreBoost, url: item.url, @@ -521,9 +521,9 @@ export abstract class Proposal extends En } }), voteOnBehalf: item.voteOnBehalf, - votesAgainst: new BN(item.votesAgainst), + votesAgainst: BigNumber.from(item.votesAgainst), votesCount: item.votes.length, - votesFor: new BN(item.votesFor), + votesFor: BigNumber.from(item.votesFor), votingMachine: item.votingMachine, winningOutcome: IProposalOutcome[item.winningOutcome] as any } @@ -570,7 +570,7 @@ export abstract class Proposal extends En return this.context.GENToken() } - public stake(outcome: IProposalOutcome, amount: BN): Operation { + public stake(outcome: IProposalOutcome, amount: BigNumber): Operation { const mapReceipt = (receipt: ITransactionReceipt) => { const [event, args] = getEventAndArgs(receipt, 'Stake', 'Proposal.stake') @@ -598,8 +598,8 @@ export abstract class Proposal extends En } // staker has sufficient balance const defaultAccount = await this.context.getAccount().pipe(first()).toPromise() - const balance = new BN(await stakingToken.contract().balanceOf(defaultAccount).toString()) - const amountBN = new BN(amount) + const balance = BigNumber.from(await stakingToken.contract().balanceOf(defaultAccount).toString()) + const amountBN = BigNumber.from(amount) if (balance.lt(amountBN)) { const msg = `Staker ${defaultAccount} has insufficient balance to stake ${amount.toString()} (balance is ${balance.toString()})` @@ -607,7 +607,7 @@ export abstract class Proposal extends En } // staker has approved the token spend - const allowance = new BN( + const allowance = BigNumber.from( await stakingToken.contract().allowance(defaultAccount, votingMachine.address) ) if (allowance.lt(amountBN)) { @@ -629,7 +629,7 @@ export abstract class Proposal extends En const createTransaction = async (): Promise => ({ contract: await this.votingMachine(), - method: 'stake', + method: 'stake(bytes32,uint256,uint256)', args: [ this.id, // proposalId outcome, // a value between 0 to and the proposal number of choices. @@ -699,7 +699,7 @@ export abstract class Proposal extends En const createTransaction = async (): Promise => ({ contract: await this.votingMachine(), - method: 'execute', + method: 'execute(bytes32)', args: [this.id] }) @@ -754,7 +754,7 @@ export abstract class Proposal extends En const createTransaction = async (): Promise => ({ contract: await this.votingMachine(), - method: 'vote', + method: 'vote(bytes32,uint256,uint256,address)', args: [ this.id, // proposalId outcome, // a value between 0 to and the proposal number of choices. diff --git a/src/plugins/reputationFromToken/plugin.ts b/src/plugins/reputationFromToken/plugin.ts index 62b88194..3bdcc6a2 100644 --- a/src/plugins/reputationFromToken/plugin.ts +++ b/src/plugins/reputationFromToken/plugin.ts @@ -57,7 +57,7 @@ export class ReputationFromTokenPlugin extends Plugin { const createTransaction = async (): Promise => { return { contract: await this.getContract(), - method: 'redeem', + method: 'redeem(bytes32,bool[4])', args: [beneficiary] } } diff --git a/src/plugins/tokenTrade/plugin.ts b/src/plugins/tokenTrade/plugin.ts index 7bbae9b1..30e77fde 100644 --- a/src/plugins/tokenTrade/plugin.ts +++ b/src/plugins/tokenTrade/plugin.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { DocumentNode } from 'graphql' import gql from 'graphql-tag' import { @@ -143,7 +143,7 @@ export class TokenTrade extends ProposalPlugin< const { address: pluginAddress } = await this.fetchState() - await this.context.approveTokens(options.sendTokenAddress, pluginAddress, new BN(options.sendTokenAmount)).send() + await this.context.approveTokens(options.sendTokenAddress, pluginAddress, BigNumber.from(options.sendTokenAmount)).send() return { contract: this.context.getContract(pluginAddress), diff --git a/src/queue.ts b/src/queue.ts index 6465b968..f6f3097f 100644 --- a/src/queue.ts +++ b/src/queue.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import gql from 'graphql-tag' import { Observable } from 'rxjs' import { @@ -96,7 +96,7 @@ export class Queue extends Entity { if (!item) { throw Error(`Queue ItemMap failed. ${queriedId ? `Could not find Queue with id '${queriedId}'` : ''}`) } - const threshold = realMathToNumber(new BN(item.threshold)) + const threshold = realMathToNumber(BigNumber.from(item.threshold)) const pluginState: IPluginState = Plugins[item.scheme.name].itemMap( context, diff --git a/src/reputation.ts b/src/reputation.ts index b06841f8..2f1673cd 100644 --- a/src/reputation.ts +++ b/src/reputation.ts @@ -1,5 +1,5 @@ import { ApolloQueryResult } from 'apollo-client' -import BN from 'bn.js' +import { BigNumber } from 'ethers' import gql from 'graphql-tag' import { Observable } from 'rxjs' import { map } from 'rxjs/operators' @@ -20,7 +20,7 @@ import { export interface IReputationState { id: Address address: Address - totalSupply: BN + totalSupply: BigNumber dao: IEntityRef } @@ -88,7 +88,7 @@ export class Reputation extends Entity { id: item.dao.id, entity: new DAO(context, item.dao.id) }, - totalSupply: new BN(item.totalSupply) + totalSupply: BigNumber.from(item.totalSupply) } } @@ -129,7 +129,7 @@ export class Reputation extends Entity { ) as Observable } - public reputationOf(address: Address): Observable { + public reputationOf(address: Address): Observable { isAddress(address) const query = gql`query ReputationHolderReputation { @@ -145,7 +145,7 @@ export class Reputation extends Entity { map((r: ApolloQueryResult) => r.data.reputationHolders), map((items: any[]) => { const item = items.length > 0 && items[0] - return item.balance !== undefined ? new BN(item.balance) : new BN(0) + return item.balance !== undefined ? BigNumber.from(item.balance) : BigNumber.from(0) }) ) } @@ -154,7 +154,7 @@ export class Reputation extends Entity { return this.context.getContract(this.address) } - public mint(beneficiary: Address, amount: BN): Operation { + public mint(beneficiary: Address, amount: BigNumber): Operation { const mapReceipt = (receipt: ITransactionReceipt) => undefined const errorHandler = async (err: Error) => { @@ -172,7 +172,7 @@ export class Reputation extends Entity { const transaction = { contract: this.contract(), - method: 'mint', + method: 'mint(address,uint256)', args: [beneficiary, amount.toString()] } diff --git a/src/reward.ts b/src/reward.ts index 97b30cc1..4845ca6b 100644 --- a/src/reward.ts +++ b/src/reward.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { DocumentNode } from 'graphql' import gql from 'graphql-tag' import { Observable } from 'rxjs' @@ -17,10 +17,10 @@ export interface IRewardState { beneficiary: Address createdAt: Date proposalId: string - reputationForVoter: BN - tokensForStaker: BN - daoBountyForStaker: BN - reputationForProposer: BN + reputationForVoter: BigNumber + tokensForStaker: BigNumber + daoBountyForStaker: BigNumber + reputationForProposer: BigNumber tokenAddress: Address reputationForVoterRedeemedAt: number tokensForStakerRedeemedAt: number @@ -170,16 +170,16 @@ export class Reward extends Entity { return { beneficiary: item.beneficiary, createdAt: item.createdAt, - daoBountyForStaker: new BN(item.daoBountyForStaker), + daoBountyForStaker: BigNumber.from(item.daoBountyForStaker), daoBountyForStakerRedeemedAt: Number(item.daoBountyForStakerRedeemedAt), id: item.id, proposalId: item.proposal.id, - reputationForProposer: new BN(item.reputationForProposer), + reputationForProposer: BigNumber.from(item.reputationForProposer), reputationForProposerRedeemedAt: Number(item.reputationForProposerRedeemedAt), - reputationForVoter: new BN(item.reputationForVoter), + reputationForVoter: BigNumber.from(item.reputationForVoter), reputationForVoterRedeemedAt: Number(item.reputationForVoterRedeemedAt), tokenAddress: item.tokenAddress, - tokensForStaker: new BN(item.tokensForStaker), + tokensForStaker: BigNumber.from(item.tokensForStaker), tokensForStakerRedeemedAt: Number(item.tokensForStakerRedeemedAt) } } diff --git a/src/stake.ts b/src/stake.ts index c95faceb..e57b8d3b 100644 --- a/src/stake.ts +++ b/src/stake.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { DocumentNode } from 'graphql' import gql from 'graphql-tag' import { Observable } from 'rxjs' @@ -23,7 +23,7 @@ export interface IStakeState { staker: Address createdAt: Date | undefined outcome: IProposalOutcome - amount: BN // amount staked + amount: BigNumber // amount staked // TODO: Any type of proposal? proposal: IEntityRef } @@ -196,7 +196,7 @@ export class Stake extends Entity { } return { - amount: new BN(item.amount), + amount: BigNumber.from(item.amount), createdAt: item.createdAt, id: item.id, outcome, diff --git a/src/token.ts b/src/token.ts index 32d3238c..d02bf928 100644 --- a/src/token.ts +++ b/src/token.ts @@ -1,5 +1,4 @@ -import BN from 'bn.js' -import { BigNumber } from 'ethers/utils' +import { BigNumber } from 'ethers' import gql from 'graphql-tag' import { Observable, Observer } from 'rxjs' import { first } from 'rxjs/operators' @@ -20,7 +19,7 @@ export interface ITokenState { name: string owner: Address symbol: string - totalSupply: BN + totalSupply: BigNumber } export interface ITokenQueryOptions extends ICommonQueryOptions { @@ -39,14 +38,14 @@ export interface IApproval { contract: Address owner: Address spender: Address - value: BN + value: BigNumber } export interface IAllowance { token: Address owner: Address spender: Address - amount: BN + amount: BigNumber } export class Token extends Entity { @@ -105,7 +104,7 @@ export class Token extends Entity { name: item.name, owner: item.dao.id, symbol: item.symbol, - totalSupply: new BN(item.totalSupply) + totalSupply: BigNumber.from(item.totalSupply) } } @@ -151,7 +150,7 @@ export class Token extends Entity { return this.context.getContract(this.address) } - public balanceOf(owner: string): Observable { + public balanceOf(owner: string): Observable { const errHandler = async (err: Error) => { if (err.message.match(/Returned values aren't valid/g) && this.context.web3) { // check if there is actually a contract deployed there @@ -164,21 +163,21 @@ export class Token extends Entity { } return err } - const observable = Observable.create(async (observer: Observer) => { + const observable = Observable.create(async (observer: Observer) => { try { const contract = this.contract() const toFilter = contract.filters.Transfer(null, owner) const onTransferTo = (data: any) => { contract.balanceOf(owner).then((newBalance: BigNumber) => { - observer.next(new BN(newBalance.toString())) + observer.next(BigNumber.from(newBalance.toString())) }) } const fromFilter = contract.filters.Transfer(owner) const onTransferFrom = (data: any) => { contract.balanceOf(owner).then((newBalance: number) => { - observer.next(new BN(newBalance.toString())) + observer.next(BigNumber.from(newBalance.toString())) }) } @@ -193,7 +192,7 @@ export class Token extends Entity { if (!balance) { observer.error(`balanceOf ${owner} returned null`) } - observer.next(new BN(balance.toString())) + observer.next(BigNumber.from(balance.toString())) contract.on(toFilter, onTransferTo) contract.on(fromFilter, onTransferFrom) }) @@ -214,15 +213,15 @@ export class Token extends Entity { return observable } - public allowance(owner: Address, spender: Address): Observable { - return Observable.create(async (observer: Observer) => { + public allowance(owner: Address, spender: Address): Observable { + return Observable.create(async (observer: Observer) => { const contract = this.contract() const filter = contract.filters.Approval(owner) const onApproval = () => { // const newBalance = data.returnValues.value contract.allowance(owner, spender).then((newBalance: number) => { - observer.next(new BN(newBalance.toString())) + observer.next(BigNumber.from(newBalance.toString())) }) } @@ -232,7 +231,7 @@ export class Token extends Entity { if (!balance) { observer.error(`balanceOf ${owner} returned null`) } - observer.next(new BN(balance.toString())) + observer.next(BigNumber.from(balance.toString())) contract.on(filter, onApproval) }) .catch((err: Error) => { @@ -244,26 +243,26 @@ export class Token extends Entity { }) } - public mint(beneficiary: Address, amount: BN) { + public mint(beneficiary: Address, amount: BigNumber) { return this.context.sendTransaction({ contract: this.contract(), - method: 'mint', + method: 'mint(address,uint256)', args: [beneficiary, amount.toString()] }) } - public transfer(beneficiary: Address, amount: BN) { + public transfer(beneficiary: Address, amount: BigNumber) { return this.context.sendTransaction({ contract: this.contract(), - method: 'transfer', + method: 'transfer(address,uint256)', args: [beneficiary, amount.toString()] }) } - public approveForStaking(spender: Address, amount: BN) { + public approveForStaking(spender: Address, amount: BigNumber) { return this.context.sendTransaction({ contract: this.contract(), - method: 'approve', + method: 'approve(address,uint256)', args: [spender, amount.toString()] }) } diff --git a/src/utils/helpers.ts b/src/utils/helpers.ts index 4bb4d7ed..50a47ce7 100644 --- a/src/utils/helpers.ts +++ b/src/utils/helpers.ts @@ -1,5 +1,5 @@ import { Observable as ZenObservable } from 'apollo-link' -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { utils } from 'ethers' import WebSocket from 'isomorphic-ws' import { Observable, Observer } from 'rxjs' @@ -24,14 +24,14 @@ const checkAddress = (address: string) => { } } -export function fromWei(amount: BN): string { +export function fromWei(amount: BigNumber): string { const etherAmount = utils.formatEther(amount.toString()) return etherAmount.toString() } -export function toWei(amount: string | number): BN { +export function toWei(amount: string | number): BigNumber { const weiAmount = utils.parseEther(amount.toString()) - return new BN(weiAmount.toString()) + return BigNumber.from(weiAmount.toString()) } export function checkWebsocket(options: { url: string }) { @@ -117,13 +117,13 @@ export function zenToRxjsObservable(zenObservable: ZenObservable) { } /** convert the number representation of RealMath.sol representations to real real numbers - * @param t a BN instance of a real number in the RealMath representation - * @return a BN + * @param t a BigNumber instance of a real number in the RealMath representation + * @return a BigNumber */ -export function realMathToNumber(t: BN): number { +export function realMathToNumber(t: BigNumber): number { const REAL_FBITS = 40 - const fraction = t.maskn(REAL_FBITS).toNumber() / Math.pow(2, REAL_FBITS) - return t.shrn(REAL_FBITS).toNumber() + fraction + const fraction = t.mask(REAL_FBITS).toNumber() / Math.pow(2, REAL_FBITS) + return t.shr(REAL_FBITS).toNumber() + fraction } export const NULL_ADDRESS = '0x0000000000000000000000000000000000000000' diff --git a/src/utils/operation.ts b/src/utils/operation.ts index ab740a0d..747a5350 100644 --- a/src/utils/operation.ts +++ b/src/utils/operation.ts @@ -1,9 +1,9 @@ -import { +import { + providers, Contract, ContractReceipt as ITransactionReceipt, - Event as ITransactionEvent -} from 'ethers/contract' -import { TransactionResponse } from 'ethers/providers' + Event as ITransactionEvent +} from 'ethers' import { Observable, Observer } from 'rxjs' import { first, take } from 'rxjs/operators' import { Arc, Logger } from '../index' @@ -93,6 +93,8 @@ export function sendTransaction( mapReceipt: transactionResultHandler, errorHandler: transactionErrorHandler ): Operation { + //console.log("info",tx.contract.interface.functions) + //console.log("tx.method",tx.method) const methodInfo = tx.contract.interface.functions[tx.method] if (methodInfo === undefined) { @@ -140,7 +142,9 @@ export function sendTransaction( gasLimit = tx.opts.gasLimit } else { try { - gasLimit = (await contract.estimate[tx.method](...tx.args, tx.opts)).toNumber() + //console.log("a",contract) + gasLimit = (await contract.estimateGas[tx.method](...tx.args, tx.opts)).toNumber() + //console.log("b") gasLimit *= 2 } catch (error) { await catchHandler(error, tx, await signer.getAddress()) @@ -152,7 +156,7 @@ export function sendTransaction( gasLimit: gasLimit ? gasLimit : 1000000 } - let response: TransactionResponse + let response: providers.TransactionResponse let hash: string = '' let result: T | undefined @@ -161,7 +165,9 @@ export function sendTransaction( }) try { + //console.log("c") response = await contract[tx.method](...tx.args, overrides) + //console.log("d") } catch (error) { await catchHandler(error, tx, await signer.getAddress()) return @@ -289,5 +295,5 @@ export function getEventAndArgs( throw Error(`${codeScope}: missing ${eventName} event args`) } - return [event, event.args] + return [event, event.args as any] } diff --git a/src/utils/types.ts b/src/utils/types.ts index 21edae72..d128b88b 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -1,17 +1,17 @@ -import { Signer } from 'ethers' -import { - AsyncSendable, - JsonRpcProvider, - Web3Provider as EthersWeb3JsProvider -} from 'ethers/providers' +import { Signer, providers } from 'ethers' +// import { +// AsyncSendable, + +// Web3Provider as EthersWeb3JsProvider +// } from 'ethers/providers' import { Observable } from 'rxjs' import { IApolloQueryOptions } from '../index' export type Address = string export type Date = number export type Hash = string -export type Web3Provider = string | AsyncSendable | Signer -export type Web3Client = JsonRpcProvider | EthersWeb3JsProvider +export type Web3Provider = string | Signer // AsyncSendable +export type Web3Client = providers.JsonRpcProvider | providers.Web3Provider //| EthersWeb3JsProvider export type IPFSProvider = string export interface IStateful { diff --git a/src/vote.ts b/src/vote.ts index 41d24890..bcea83d8 100644 --- a/src/vote.ts +++ b/src/vote.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { DocumentNode } from 'graphql' import gql from 'graphql-tag' import { Observable } from 'rxjs' @@ -24,7 +24,7 @@ export interface IVoteState { voter: Address createdAt: Date | undefined outcome: IProposalOutcome - amount: BN // amount of reputation that was voted with + amount: BigNumber // amount of reputation that was voted with proposal: IEntityRef dao?: Address } @@ -202,7 +202,7 @@ export class Vote extends Entity { } return { - amount: new BN(item.reputation || 0), + amount: BigNumber.from(item.reputation || 0), createdAt: item.createdAt, dao: item.dao.id, id: item.id, diff --git a/test/arc.spec.ts b/test/arc.spec.ts index ac88ec85..bb4d6431 100644 --- a/test/arc.spec.ts +++ b/test/arc.spec.ts @@ -1,7 +1,6 @@ -import BN from 'bn.js' +import { BigNumber, ethers } from 'ethers' import { Wallet } from 'ethers' -import { JsonRpcProvider } from 'ethers/providers' -import { BigNumber } from 'ethers/utils' +import { providers } from 'ethers' import gql from 'graphql-tag' import { first } from 'rxjs/operators' import { @@ -57,7 +56,7 @@ describe('Arc ', () => { it('arc.allowances() should work', async () => { const arc = await newArc() - const allowances: BN[] = [] + const allowances: BigNumber[] = [] const spender = '0xDb56f2e9369E0D7bD191099125a3f6C370F8ed15' const amount = toWei(1001) await arc.approveForStaking(spender, amount).send() @@ -70,7 +69,7 @@ describe('Arc ', () => { } arc.allowance(defaultAccount, spender).subscribe( - (next: BN) => { + (next: BigNumber) => { allowances.push(next) } ) @@ -82,7 +81,7 @@ describe('Arc ', () => { it('arc.allowance() should work', async () => { const arc = await newArc() - const allowances: BN[] = [] + const allowances: BigNumber[] = [] const spender = '0xDb56f2e9369E0D7bD191099125a3f6C370F8ed15' const amount = toWei(1001) await arc.approveForStaking(spender, amount).send() @@ -95,7 +94,7 @@ describe('Arc ', () => { } arc.allowance(defaultAccount, spender).subscribe( - (next: BN) => { + (next: BigNumber) => { allowances.push(next) } ) @@ -124,16 +123,16 @@ describe('Arc ', () => { it('arc.ethBalance() works with an account with 0 balance', async () => { const arc = await newArc() const balance = await arc.ethBalance('0x90f8bf6a479f320ead074411a4b0e7944ea81111').pipe(first()).toPromise() - expect(balance).toEqual(new BN(0)) + expect(balance).toEqual(BigNumber.from(0)) }) it('arc.ethBalance() works with multiple subscriptions', async () => { const arc = await newArc() // observe two balances - const balances1: BN[] = [] - const balances2: BN[] = [] - const balances3: BN[] = [] + const balances1: BigNumber[] = [] + const balances2: BigNumber[] = [] + const balances3: BigNumber[] = [] if (!arc.web3) { throw new Error('Web3 provider not set') } @@ -148,24 +147,41 @@ describe('Arc ', () => { }) // // send some ether to the test accounts - async function sendEth(address: Address, amount: BN) { + async function sendEth(address: Address, amount: BigNumber) { if (!arc.web3) { throw new Error('Web3 provider not set') } - await arc.web3.getSigner().sendTransaction({ - gasPrice: 100000000000, + //console.log(BigNumber.from(amount.toString()), amount.toString()) + //console.log("bbs",await arc.ethBalance(address).pipe(first()).toPromise()) + console.log(address) + console.log(amount) + const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545') + const signer = provider.getSigner() + await signer.sendTransaction({ + gasPrice: BigNumber.from('100000000000'), to: address, - value: new BigNumber(amount.toString()) + value: amount }) + console.log("55") + + //console.log("bs",await arc.ethBalance(address).pipe(first()).toPromise()) + } - const amount1 = new BN('123456') - const amount2 = new BN('456677') + const amount1 = BigNumber.from('123456') + const amount2 = BigNumber.from('456677') + console.log("balance before send",await arc.web3.getBalance(address1)) await sendEth(address1, amount1) + console.log("balance after send",await arc.web3.getBalance(address1)) + console.log("11") await sendEth(address2, amount2) - + console.log("22") + console.log("balances1", balances1) await waitUntilTrue(() => balances1.length > 1) + + console.log("33") await waitUntilTrue(() => balances2.length > 1) + console.log("44") expect(balances1.length).toEqual(2) expect(balances2.length).toEqual(2) @@ -178,6 +194,7 @@ describe('Arc ', () => { }) await waitUntilTrue(() => balances3.length >= 1) + expect(balances3[balances3.length - 1].toString()).toEqual(balances2[balances2.length - 1].toString()) await subscription2.unsubscribe() // expect(Object.keys(arc.observedAccounts)).toEqual([address1]) @@ -186,7 +203,7 @@ describe('Arc ', () => { // we have unsubscribed from subscription2, but we are still observing the account with subscription3 expect(Object.keys(arc.observedAccounts).length).toEqual(1) - const amount3 = new BN('333333') + const amount3 = BigNumber.from('333333') expect(balances3.length).toEqual(1) await sendEth(address2, amount3) await waitUntilTrue(() => balances3.length >= 2) @@ -249,7 +266,7 @@ describe('Arc ', () => { it('arc.getContract uses the custom signer', async () => { const signer = new Wallet( '0xe485d098507f54e7733a205420dfddbe58db035fa577fc294ebd14db90767a52', - new JsonRpcProvider('http://127.0.0.1:8545') + new providers.JsonRpcProvider('http://127.0.0.1:8545') ) const arc = await newArc({ @@ -265,7 +282,7 @@ describe('Arc ', () => { it('arc.getAccount works with a custom signer', async () => { const signer = new Wallet( '0xe485d098507f54e7733a205420dfddbe58db035fa577fc294ebd14db90767a52', - new JsonRpcProvider('http://127.0.0.1:8545') + new providers.JsonRpcProvider('http://127.0.0.1:8545') ) const arc = await newArc({ @@ -279,7 +296,7 @@ describe('Arc ', () => { it('arc.setAccount fails when a custom signer is used', async () => { const signer = new Wallet( '0xe485d098507f54e7733a205420dfddbe58db035fa577fc294ebd14db90767a52', - new JsonRpcProvider('http://127.0.0.1:8545') + new providers.JsonRpcProvider('http://127.0.0.1:8545') ) const arc = await newArc({ @@ -298,7 +315,7 @@ describe('Arc ', () => { it('arc.getSigner returns the custom signer', async () => { const signer = new Wallet( '0xe485d098507f54e7733a205420dfddbe58db035fa577fc294ebd14db90767a52', - new JsonRpcProvider('http://127.0.0.1:8545') + new providers.JsonRpcProvider('http://127.0.0.1:8545') ) const arc = await newArc({ @@ -329,8 +346,8 @@ it('arc.approveToken should return tx with status one', async () => { expect(approval.transactionHash).toBeDefined(); expect(approval.receipt!.status).toEqual(1); const token = new Token(arc, tokenAddress); - const signer = (arc.web3 as JsonRpcProvider).getSigner(arc.defaultAccount as any) - const allowances: Array = [] + const signer = (arc.web3 as providers.JsonRpcProvider).getSigner(arc.defaultAccount as any) + const allowances: Array = [] const lastAllowance = () => allowances[allowances.length - 1] await token.allowance(await signer.getAddress(), spender).subscribe( (next: any) => allowances.push(next) diff --git a/test/dao.spec.ts b/test/dao.spec.ts index 020f7ab1..181402a7 100644 --- a/test/dao.spec.ts +++ b/test/dao.spec.ts @@ -1,3 +1,4 @@ +import { BigNumber } from 'ethers' import { first } from 'rxjs/operators' import { Arc, IProposalCreateOptionsCR, AnyProposal } from '../src' import { DAO } from '../src' @@ -12,7 +13,6 @@ import { waitUntilTrue, createCRProposal } from './utils' -import { BigNumber } from 'ethers/utils' jest.setTimeout(20000) /** @@ -210,7 +210,7 @@ describe('DAO', () => { gasLimit: 4000000, gasPrice: 100000000000, to: dao.id, - value: new BigNumber(toWei('1').toString()).toHexString() + value: BigNumber.from(toWei('1').toString()).toHexString() }) const newBalance = await (await dao.ethBalance()).pipe(first()).toPromise() expect(Number(fromWei(newBalance.sub(previousBalance)))).toBe(1) diff --git a/test/proposal-claim-reward.spec.ts b/test/proposal-claim-reward.spec.ts index e8bbde8e..5c73b87d 100644 --- a/test/proposal-claim-reward.spec.ts +++ b/test/proposal-claim-reward.spec.ts @@ -1,12 +1,11 @@ import { first } from 'rxjs/operators' import { Arc, DAO, IProposalOutcome, IProposalStage, IProposalState, IProposalCreateOptionsCR, LATEST_ARC_VERSION, GenericPlugin, GenericPluginProposal, IGenericPluginProposalState } from '../src' -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { createAProposal, firstResult, getTestAddresses, getTestDAO, ITestAddresses, newArc, toWei, voteToPassProposal, waitUntilTrue, createCRProposal, getTestScheme } from './utils' -import { BigNumber } from 'ethers/utils' import { ethers } from 'ethers' import { ContributionRewardProposal } from '../src' @@ -25,7 +24,7 @@ describe('Claim rewards', () => { it('works for ether and native token', async () => { const beneficiary = '0xffcf8fdee72ac11b5c542428b35eef5769c409f0' - const ethReward = new BN(12345) + const ethReward = BigNumber.from(12345) const nativeTokenReward = toWei('271828') const reputationReward = toWei('8008') const states: IProposalState[] = [] @@ -38,12 +37,12 @@ describe('Claim rewards', () => { gasLimit: 4000000, gasPrice: 100000000000, to: dao.id, - value: new BigNumber(ethReward.toString()).toHexString() + value: BigNumber.from(ethReward.toString()).toHexString() }) const daoBalance = await (await dao.ethBalance()).pipe(first()).toPromise() - const daoEthBalance = new BN(daoBalance.toString()) + const daoEthBalance = BigNumber.from(daoBalance.toString()) expect(Number(daoEthBalance.toString())).toBeGreaterThanOrEqual(Number(ethReward.toString())) const options: IProposalCreateOptionsCR = { @@ -69,14 +68,14 @@ describe('Claim rewards', () => { const daoState = await dao.fetchState() const prevNativeTokenBalance = await firstResult(daoState.token.entity.balanceOf(beneficiary)) - const reputationBalances: Array = [] + const reputationBalances: Array = [] - daoState.reputation.entity.reputationOf(beneficiary).subscribe((next: BN) => { + daoState.reputation.entity.reputationOf(beneficiary).subscribe((next: BigNumber) => { reputationBalances.push(next) }) const prevBalance = await arc.web3.getBalance(beneficiary) - const prevEthBalance = new BN(prevBalance.toString()) + const prevEthBalance = BigNumber.from(prevBalance.toString()) await proposal.redeemRewards(beneficiary).send() @@ -84,7 +83,7 @@ describe('Claim rewards', () => { expect(newNativeTokenBalance.sub(prevNativeTokenBalance).toString()).toEqual(nativeTokenReward.toString()) const newBalance = await arc.web3.getBalance(beneficiary) - const newethBalance = new BN(newBalance.toString()) + const newethBalance = BigNumber.from(newBalance.toString()) expect(newethBalance.sub(prevEthBalance).toString()).toEqual(ethReward.toString()) // no rewards were claimable yet await waitUntilTrue(() => reputationBalances.length === 2) @@ -96,7 +95,7 @@ describe('Claim rewards', () => { it('works for external token', async () => { const beneficiary = '0xffcf8fdee72ac11b5c542428b35eef5769c409f0' - const externalTokenReward = new BN(12345) + const externalTokenReward = BigNumber.from(12345) const gen = arc.GENToken() await gen.transfer(dao.id, externalTokenReward).send() @@ -105,11 +104,11 @@ describe('Claim rewards', () => { const options: IProposalCreateOptionsCR = { beneficiary, dao: dao.id, - ethReward: new BN(0), + ethReward: BigNumber.from(0), externalTokenAddress: gen.address, externalTokenReward, - nativeTokenReward: new BN(0), - reputationReward: new BN(0), + nativeTokenReward: BigNumber.from(0), + reputationReward: BigNumber.from(0), plugin: getTestScheme("ContributionReward") } @@ -157,19 +156,20 @@ describe('Claim rewards', () => { dao = new DAO(arc, genericSchemeState.dao.id) const beneficiary = await arc.getAccount().pipe(first()).toPromise() - const stakeAmount = new BN(123456789) + const stakeAmount = BigNumber.from(123456789) await arc.GENToken().transfer(dao.id, stakeAmount).send() const actionMockABI = arc.getABI({ abiName: 'ActionMock', version: LATEST_ARC_VERSION }) if (!arc.web3) throw new Error("Web3 provider not set") - const callData = new ethers.utils.Interface(actionMockABI).functions.test2.encode([dao.id]) + //const callData = new ethers.utils.Interface(actionMockABI).functions.test2.encode([dao.id]) + const callData = new ethers.utils.Interface(actionMockABI).encodeFunctionData('transfer(address,uint256)', [dao.id]) const tx = await genericScheme.createProposal({ callData, dao: dao.id, plugin: genericSchemeState.address, - value: new BN("0") + value: BigNumber.from("0") }).send() if (!tx.result) throw new Error('Response yielded no result') diff --git a/test/proposal-competition.spec.ts b/test/proposal-competition.spec.ts index 67d6eba7..78688363 100644 --- a/test/proposal-competition.spec.ts +++ b/test/proposal-competition.spec.ts @@ -1,5 +1,4 @@ -import BN from 'bn.js' -import { BigNumber } from 'ethers/utils' +import { BigNumber } from 'ethers' import gql from 'graphql-tag' import { first } from 'rxjs/operators' import { inspect } from 'util' @@ -37,8 +36,8 @@ describe.skip('Competition Proposal', () => { let contributionRewardExtAddress: string let address0: string let address1: string - const ethReward = new BN('300') - const reputationReward = new BN('10111') + const ethReward = BigNumber.from('300') + const reputationReward = BigNumber.from('10111') function addSeconds(date: Date, seconds: number) { if (!(date instanceof Date)) { @@ -97,10 +96,10 @@ describe.skip('Competition Proposal', () => { gasLimit: 4000000, gasPrice: 100000000000, to: dao.id, - value: new BigNumber(ethReward.toString()).toHexString() + value: BigNumber.from(ethReward.toString()).toHexString() }) - const externalTokenReward = new BN(0) - const nativeTokenReward = new BN(0) + const externalTokenReward = BigNumber.from(0) + const nativeTokenReward = BigNumber.from(0) const now = await getBlockTime(arc.web3) const startTime = addSeconds(now, 2) const rewardSplit = options.rewardSplit || [80, 20] @@ -261,10 +260,10 @@ describe.skip('Competition Proposal', () => { gasLimit: 4000000, gasPrice: 100000000000, to: dao.id, - value: new BigNumber(ethReward.toString()).toHexString() + value: BigNumber.from(ethReward.toString()).toHexString() }) - const externalTokenReward = new BN(0) - const nativeTokenReward = new BN(0) + const externalTokenReward = BigNumber.from(0) + const nativeTokenReward = BigNumber.from(0) // TODO: test error handling for all these params // - all args are present @@ -289,7 +288,7 @@ describe.skip('Competition Proposal', () => { const pluginState = await plugin.fetchState() const beforeBalanceBigNum = await arc.web3.getBalance(address1) - const balanceBefore = new BN(beforeBalanceBigNum.toString()) + const balanceBefore = BigNumber.from(beforeBalanceBigNum.toString()) // CREATE PROPOSAL const tx = await plugin.createProposal(proposalOptions).send() @@ -381,7 +380,7 @@ describe.skip('Competition Proposal', () => { expect(suggestion1State.suggester).toEqual(address0) expect(suggestion1State.tags).toEqual(['tag1', 'tag2']) expect(suggestion1State.title).toEqual('title') - expect(suggestion1State.totalVotes).toEqual(new BN(0)) + expect(suggestion1State.totalVotes).toEqual(BigNumber.from(0)) expect(suggestion1State.description).toEqual(suggestion1Options.description) expect(suggestion1State.url).toEqual(suggestion1Options.url) expect(suggestion1State.proposal.id).toEqual(suggestion1Options.proposal) @@ -439,7 +438,7 @@ describe.skip('Competition Proposal', () => { await suggestion1.redeem().send() const afterBalanceBigNum = await arc.web3.getBalance(address1) - const balanceAfter = new BN(afterBalanceBigNum.toString()) + const balanceAfter = BigNumber.from(afterBalanceBigNum.toString()) const balanceDelta = balanceAfter.sub(balanceBefore) expect(balanceDelta.toString()).not.toEqual('0') }) @@ -466,8 +465,8 @@ describe.skip('Competition Proposal', () => { }) expect(competitionState.ethRewardLeft).toEqual(ethReward) - expect(competitionState.externalTokenRewardLeft).toEqual(new BN(0)) - expect(competitionState.nativeTokenRewardLeft).toEqual(new BN(0)) + expect(competitionState.externalTokenRewardLeft).toEqual(BigNumber.from(0)) + expect(competitionState.nativeTokenRewardLeft).toEqual(BigNumber.from(0)) expect(competitionState.reputationChangeLeft).toEqual(reputationReward) sub.unsubscribe() @@ -516,7 +515,7 @@ describe.skip('Competition Proposal', () => { const beneficiary = address1 const beforeBalanceBigNum = (await arc.web3.getBalance(beneficiary)).toString() - let balanceBefore = new BN(beforeBalanceBigNum) + let balanceBefore = BigNumber.from(beforeBalanceBigNum) // vote and wait until it is indexed await suggestions[0].vote().send() @@ -553,12 +552,12 @@ describe.skip('Competition Proposal', () => { await suggestions[0].redeem().send() const afterBalanceBigNum = (await arc.web3.getBalance(beneficiary)).toString() - let balanceAfter = new BN(afterBalanceBigNum) + let balanceAfter = BigNumber.from(afterBalanceBigNum) let balanceDelta = balanceAfter.sub(balanceBefore) expect(balanceDelta.toString()).toEqual('150') const crExtBalanceAfter = await (await contributionRewardExt.ethBalance()).pipe(first()).toPromise() - const crExtBalanceDelta = new BN(crExtBalanceBefore).sub(new BN(crExtBalanceAfter)) + const crExtBalanceDelta = BigNumber.from(crExtBalanceBefore).sub(BigNumber.from(crExtBalanceAfter)) expect(crExtBalanceDelta.toString()).toEqual('150') // the reward _is_ redeemed @@ -567,11 +566,11 @@ describe.skip('Competition Proposal', () => { ) const beforeBalanceBigNum2 = await arc.web3.getBalance(beneficiary) - balanceBefore = new BN(beforeBalanceBigNum2.toString()) + balanceBefore = BigNumber.from(beforeBalanceBigNum2.toString()) await suggestions[1].redeem().send() const afterBalanceBigNum2 = await arc.web3.getBalance(beneficiary) - balanceAfter = new BN(afterBalanceBigNum2.toString()) + balanceAfter = BigNumber.from(afterBalanceBigNum2.toString()) balanceDelta = balanceAfter.sub(balanceBefore) expect(balanceDelta.toString()).toEqual('150') @@ -611,20 +610,20 @@ describe.skip('Competition Proposal', () => { if (!arc.web3) { throw new Error('Web3 provider not set') } const beforeBalanceBigNum = await arc.web3.getBalance(beneficiary) - let balanceBefore = new BN(beforeBalanceBigNum.toString()) + let balanceBefore = BigNumber.from(beforeBalanceBigNum.toString()) await suggestions[2].redeem().send() const afterBalanceBigNum = await arc.web3.getBalance(beneficiary) - let balanceAfter = new BN(afterBalanceBigNum.toString()) + let balanceAfter = BigNumber.from(afterBalanceBigNum.toString()) let balanceDelta = balanceAfter.sub(balanceBefore) - expect(balanceDelta.toString()).toEqual((new BN(240)).toString()) + expect(balanceDelta.toString()).toEqual((BigNumber.from(240)).toString()) const beforeBalanceBigNum2 = await arc.web3.getBalance(beneficiary) - balanceBefore = new BN(beforeBalanceBigNum2.toString()) + balanceBefore = BigNumber.from(beforeBalanceBigNum2.toString()) await suggestions[0].redeem().send() const afterBalanceBigNum2 = await arc.web3.getBalance(beneficiary) - balanceAfter = new BN(afterBalanceBigNum2.toString()) + balanceAfter = BigNumber.from(afterBalanceBigNum2.toString()) balanceDelta = balanceAfter.sub(balanceBefore) expect(suggestions[3].redeem().send()).rejects.toThrow( @@ -658,21 +657,21 @@ describe.skip('Competition Proposal', () => { const suggestion1State = await suggestions[0].fetchState() expect(suggestion1State.positionInWinnerList).toEqual(0) - expect(suggestion1State.totalVotes).not.toEqual(new BN(0)) + expect(suggestion1State.totalVotes).not.toEqual(BigNumber.from(0)) expect(suggestion1State.isWinner).toEqual(true) const suggestion2State = await suggestions[1].fetchState() expect(suggestion2State.positionInWinnerList).toEqual(null) - expect(suggestion2State.totalVotes).toEqual(new BN(0)) + expect(suggestion2State.totalVotes).toEqual(BigNumber.from(0)) const suggestion3State = await suggestions[2].fetchState() expect(suggestion3State.positionInWinnerList).toEqual(null) - expect(suggestion3State.totalVotes).toEqual(new BN(0)) + expect(suggestion3State.totalVotes).toEqual(BigNumber.from(0)) expect(suggestion3State.isWinner).toEqual(false) const suggestion4State = await suggestions[3].fetchState() expect(suggestion4State.positionInWinnerList).toEqual(null) - expect(suggestion4State.totalVotes).toEqual(new BN(0)) + expect(suggestion4State.totalVotes).toEqual(BigNumber.from(0)) }) it('Can create a proposal using dao.createProposal', async () => { @@ -742,7 +741,7 @@ describe.skip('Competition Proposal', () => { redeemedAt: null, rewardPercentage: 0, suggester: address0, - totalVotes: new BN(0) + totalVotes: BigNumber.from(0) }) }) diff --git a/test/proposal-execute.spec.ts b/test/proposal-execute.spec.ts index 33c5a499..6ae9ff44 100644 --- a/test/proposal-execute.spec.ts +++ b/test/proposal-execute.spec.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { IProposalOutcome, DAO, Arc, IProposalStage, IProposalState, ContributionRewardProposal, IProposalCreateOptionsCR } from '../src' import { advanceTime, createAProposal, fromWei, getTestAddresses, getTestDAO, ITestAddresses, newArc, toWei, @@ -65,7 +65,7 @@ describe('Proposal execute()', () => { await proposal.vote(IProposalOutcome.Pass).send() // wait until the votes have been counted - await waitUntilTrue(() => lastState().votesFor.gt(new BN(0))) + await waitUntilTrue(() => lastState().votesFor.gt(BigNumber.from(0))) proposalState = lastState() expect(proposalState.stage).toEqual(IProposalStage.Queued) expect(Number(fromWei(proposalState.votesFor))).toBeGreaterThan(0) @@ -74,13 +74,13 @@ describe('Proposal execute()', () => { const amountToStakeFor = toWei(10000) await proposal.stakingToken().mint(accounts[0], amountToStakeFor).send() await proposal.stakingToken() - .approveForStaking(proposalState.votingMachine, amountToStakeFor.add(new BN(1000))).send() + .approveForStaking(proposalState.votingMachine, amountToStakeFor.add(BigNumber.from(1000))).send() await proposal.execute().send() await proposal.stake(IProposalOutcome.Pass, amountToStakeFor).send() - await waitUntilTrue(() => lastState().stakesFor.gt(new BN(0))) + await waitUntilTrue(() => lastState().stakesFor.gt(BigNumber.from(0))) proposalState = lastState() expect(Number(fromWei(proposalState.stakesFor))).toBeGreaterThan(0) @@ -115,7 +115,7 @@ describe('Proposal execute()', () => { const repTotalSupply = daoState.reputationTotalSupply const proposalStates: IProposalState[] = [] const lastState = () => proposalStates[proposalStates.length - 1] - const proposal = await createAProposal(dao, { ethReward: new BN(0)}) + const proposal = await createAProposal(dao, { ethReward: BigNumber.from(0)}) proposal.state({}).subscribe((state: IProposalState) => { proposalStates.push(state) }) @@ -132,7 +132,7 @@ describe('Proposal execute()', () => { await waitUntilTrue(() => { return lastState().executedAt !== 0 }) - expect(Number(lastState().votesFor.toString())).toBeGreaterThan(Number(repTotalSupply.div(new BN(2)).toString())) + expect(Number(lastState().votesFor.toString())).toBeGreaterThan(Number(repTotalSupply.div(BigNumber.from(2)).toString())) /// with the last (winning) vote, the proposal is already executed await expect(proposal.execute().send()).rejects.toThrow( diff --git a/test/proposal-fundingrequest.spec.ts b/test/proposal-fundingrequest.spec.ts index b0f295a8..4421e069 100644 --- a/test/proposal-fundingrequest.spec.ts +++ b/test/proposal-fundingrequest.spec.ts @@ -10,7 +10,7 @@ import { Proposal } from '../src' import { - BN, + BigNumber, newArc, voteToPassProposal, waitUntilTrue @@ -44,7 +44,7 @@ describe('FundingRequest', () => { }) expect(fundingRequest.createProposal({ - amount: new BN(1000), + amount: BigNumber.from(1000), beneficiary: '0xffcf8fdee72ac11b5c542428b35eef5769c409f0', dao: dao.id, descriptionHash: 'hello', @@ -85,7 +85,7 @@ describe('FundingRequest', () => { const value = await daoContract.db('FUNDED_BEFORE_DEADLINE') expect(value).toEqual('TRUE') const beneficiary = '0xffcf8fdee72ac11b5c542428b35eef5769c409f0' - const amount = new BN(1000) + const amount = BigNumber.from(1000) const tx = await fundingRequest.createProposal({ amount, @@ -111,7 +111,7 @@ describe('FundingRequest', () => { expect(proposalState).toMatchObject({ amount, beneficiary, - amountRedeemed: new BN(0), + amountRedeemed: BigNumber.from(0), stage: IProposalStage.Queued }) await voteToPassProposal(proposal) @@ -127,7 +127,7 @@ describe('FundingRequest', () => { // for some reason that I cannot fathom, amountRedeemed is not updated from the subscripton // so we fetch the state proposalState = await proposal.fetchState({fetchPolicy: 'no-cache'}, true) - return proposalState.amountRedeemed.gt(new BN(0)) + return proposalState.amountRedeemed.gt(BigNumber.from(0)) }) expect(proposalState.amountRedeemed).toEqual(amount) diff --git a/test/proposal-genericscheme.spec.ts b/test/proposal-genericscheme.spec.ts index deb9896a..f4ce5e9c 100644 --- a/test/proposal-genericscheme.spec.ts +++ b/test/proposal-genericscheme.spec.ts @@ -8,7 +8,7 @@ import { GenericPluginProposal, LATEST_ARC_VERSION } from '../src' -import { newArc, voteToPassProposal, waitUntilTrue, getTestScheme, BN } from './utils' +import { newArc, voteToPassProposal, waitUntilTrue, getTestScheme, BigNumber } from './utils' import { ethers } from 'ethers' jest.setTimeout(60000) @@ -36,7 +36,8 @@ describe('Proposal', () => { if (!arc.web3) throw new Error('Web3 provider not set') - const callData = new ethers.utils.Interface(actionMockABI).functions.test2.encode([dao.id]) + //const callData = new ethers.utils.Interface(actionMockABI).functions.test2.encode([dao.id]) + const callData = new ethers.utils.Interface(actionMockABI).encodeFunctionData('transfer(address,uint256)', [dao.id]) const plugins = await dao.plugins({ where: { name: 'GenericScheme' } }).pipe(first()).toPromise() as GenericPlugin[] const genericScheme = plugins[0] @@ -44,7 +45,7 @@ describe('Proposal', () => { const tx = await genericScheme.createProposal({ dao: dao.id, callData, - value: new BN('1'), + value: BigNumber.from('1'), plugin: getTestScheme('GenericScheme') }).send() @@ -65,7 +66,7 @@ describe('Proposal', () => { callData, executed: false, returnValue: null, - value: new BN('1') + value: BigNumber.from('1') }) // accept the proposal by voting the hell out of it diff --git a/test/proposal-join.spec.ts b/test/proposal-join.spec.ts index c569342a..9b54cc2a 100644 --- a/test/proposal-join.spec.ts +++ b/test/proposal-join.spec.ts @@ -10,7 +10,7 @@ import { Proposal, } from '../src' import { - BN, + BigNumber, newArc, voteToPassProposal, waitUntilTrue @@ -40,16 +40,16 @@ describe('Join', () => { expect(joinState.pluginParams).toMatchObject({ fundingToken: NULL_ADDRESS, - fundingGoal: new BN(1000), - minFeeToJoin: new BN(100), - memberReputation: new BN(1000) + fundingGoal: BigNumber.from(1000), + minFeeToJoin: BigNumber.from(100), + memberReputation: BigNumber.from(1000) }) expect(Object.prototype.toString.call(joinState.pluginParams.fundingGoalDeadline)).toBe('[object Date]') const dao = new DAO(arc, joinState.dao.id) const daoState = await dao.fetchState() - const fee = new BN(1000) + const fee = BigNumber.from(1000) const descriptionHash = 'hello' const proposedMember = accounts[daoState.memberCount].toLowerCase() arc.setAccount(proposedMember) @@ -85,7 +85,7 @@ describe('Join', () => { proposedMember, funding: fee, executed: false, - reputationMinted: new BN(0) + reputationMinted: BigNumber.from(0) }) await voteToPassProposal(proposal) diff --git a/test/proposal-stake.spec.ts b/test/proposal-stake.spec.ts index d3cd7a37..fa2ee9ea 100644 --- a/test/proposal-stake.spec.ts +++ b/test/proposal-stake.spec.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { first } from 'rxjs/operators' import { Stake, Arc, DAO, IProposalOutcome, IProposalStage, ContributionRewardProposal } from '../src/' import { createAProposal, @@ -34,7 +34,7 @@ describe('Stake on a ContributionReward', () => { const votingMachine = await proposal.votingMachine() await stakingToken.approveForStaking(votingMachine.address, toWei('100')).send() - const stake = await proposal.stake(IProposalOutcome.Pass, new BN(100)).send() + const stake = await proposal.stake(IProposalOutcome.Pass, BigNumber.from(100)).send() const state = (stake.result as Stake).coreState expect(state).toMatchObject({ @@ -82,7 +82,7 @@ describe('Stake on a ContributionReward', () => { ) proposal.context.defaultAccount = accounts[2] - await expect(proposal.stake(IProposalOutcome.Pass, new BN(10000000)).send()).rejects.toThrow( + await expect(proposal.stake(IProposalOutcome.Pass, BigNumber.from(10000000)).send()).rejects.toThrow( /Fetch state returned null. Entity not indexed yet or does not exist with this id/i ) }) @@ -96,7 +96,7 @@ describe('Stake on a ContributionReward', () => { const boostedProposal = boostedProposals[0] const state = await boostedProposal.fetchState() expect(state.stage).toEqual(IProposalStage.Boosted) - await expect(boostedProposal.stake(IProposalOutcome.Pass, new BN(10000000)).send()).rejects.toThrow( + await expect(boostedProposal.stake(IProposalOutcome.Pass, BigNumber.from(10000000)).send()).rejects.toThrow( /boosted/i ) }) @@ -115,7 +115,7 @@ describe('Stake on a ContributionReward', () => { return [] } } - await proposal.stake(IProposalOutcome.Pass, new BN(100)).send() + await proposal.stake(IProposalOutcome.Pass, BigNumber.from(100)).send() await waitUntilTrue(() => { const ls = lastStake() return ls.length > 0 diff --git a/test/proposal-tokenTrade.spec.ts b/test/proposal-tokenTrade.spec.ts index 6f53599e..e8476c39 100644 --- a/test/proposal-tokenTrade.spec.ts +++ b/test/proposal-tokenTrade.spec.ts @@ -1,5 +1,5 @@ import { first } from 'rxjs/operators' -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { Arc, DAO, @@ -44,11 +44,11 @@ describe('TokenTrade', () => { await genToken.mint(dao.id, 1000000) const userAddress = await (await arc.getSigner().pipe(first()).toPromise()).getAddress() - const newUserBalance = new BN(fromWei(await dutchXToken.balanceOf(userAddress).pipe(first()).toPromise())) - expect(newUserBalance.gte(new BN(150))) + const newUserBalance = BigNumber.from(fromWei(await dutchXToken.balanceOf(userAddress).pipe(first()).toPromise())) + expect(newUserBalance.gte(BigNumber.from(150))) - const userGenTokenBalance = new BN(await firstResult(arc.GENToken().balanceOf(userAddress))) - const daoDutchTokenBalance = new BN(await firstResult(await dutchXToken.balanceOf(dao.id))) + const userGenTokenBalance = BigNumber.from(await firstResult(arc.GENToken().balanceOf(userAddress))) + const daoDutchTokenBalance = BigNumber.from(await firstResult(await dutchXToken.balanceOf(dao.id))) // Propose exchanging 150 'DutchX Tokens' for 50 'GEN Tokens' const tokenTradeProposalOptions: IProposalCreateOptionsTokenTrade = { @@ -61,7 +61,7 @@ describe('TokenTrade', () => { } - await dutchXToken.approveForStaking(tokenTradePlugin.coreState!.address, new BN(250)).send() + await dutchXToken.approveForStaking(tokenTradePlugin.coreState!.address, BigNumber.from(250)).send() const tx = await tokenTradePlugin.createProposal(tokenTradeProposalOptions).send() if (!tx.result) { throw new Error('Create proposal yielded no results') } @@ -97,10 +97,10 @@ describe('TokenTrade', () => { await proposal.redeem().send() await waitUntilTrue(async () => { - const updatedUserGenTokenBalance = new BN(await firstResult(arc.GENToken().balanceOf(userAddress))) - const updateDAODutchTokenBalance = new BN(await firstResult(await dutchXToken.balanceOf(dao.id))) - const expectedUserBalance = new BN(userGenTokenBalance.add(new BN(50))) - const expectedDaoBalance = new BN(daoDutchTokenBalance.add(new BN(150))) + const updatedUserGenTokenBalance = BigNumber.from(await firstResult(arc.GENToken().balanceOf(userAddress))) + const updateDAODutchTokenBalance = BigNumber.from(await firstResult(await dutchXToken.balanceOf(dao.id))) + const expectedUserBalance = BigNumber.from(userGenTokenBalance.add(BigNumber.from(50))) + const expectedDaoBalance = BigNumber.from(daoDutchTokenBalance.add(BigNumber.from(150))) return ( updatedUserGenTokenBalance.eq(expectedUserBalance) && diff --git a/test/proposal.spec.ts b/test/proposal.spec.ts index b57ec33a..4f1d7d6d 100644 --- a/test/proposal.spec.ts +++ b/test/proposal.spec.ts @@ -1,4 +1,4 @@ -import { first} from 'rxjs/operators' +import { first } from 'rxjs/operators' import { Arc, DAO, @@ -14,7 +14,7 @@ import { IExecutionState } from '../src' -import BN from 'bn.js' +import { BigNumber, utils } from 'ethers' import { createAProposal, fromWei, getTestAddresses, @@ -26,7 +26,6 @@ import { createAProposal, waitUntilTrue, createCRProposal } from './utils' -import { getAddress } from 'ethers/utils' jest.setTimeout(20000) /** @@ -130,12 +129,12 @@ describe('Proposal', () => { expect(result.length).toEqual(1) result = await Proposal - .search(arc, { where: {proposer: getAddress(proposer), id: queuedProposal.id}}) + .search(arc, { where: {proposer: utils.getAddress(proposer), id: queuedProposal.id}}) .pipe(first()).toPromise() expect(result.length).toEqual(1) result = await Proposal - .search(arc, {where: {dao: getAddress(proposalState.dao.id), id: queuedProposal.id}}) + .search(arc, {where: {dao: utils.getAddress(proposalState.dao.id), id: queuedProposal.id}}) .pipe(first()).toPromise() expect(result.length).toEqual(1) }) @@ -226,7 +225,7 @@ describe('Proposal', () => { boostedAt: 0, description: '', descriptionHash: '0x000000000000000000000000000000000000000000000000000000000000efgh', - // downStakeNeededToQueue: new BN(0), + // downStakeNeededToQueue: BigNumber.from(0), executedAt: 0, executionState: IExecutionState.None, genesisProtocolParams: { @@ -234,9 +233,9 @@ describe('Proposal', () => { boostedVotePeriodLimit: 600, daoBountyConst: 10, limitExponentValue: 172, - minimumDaoBounty: new BN('100000000000000000000'), + minimumDaoBounty: BigNumber.from('100000000000000000000'), preBoostedVotePeriodLimit: 600, - proposingRepReward: new BN('5000000000000000000'), + proposingRepReward: BigNumber.from('5000000000000000000'), queuedVotePeriodLimit: 1800, queuedVoteRequiredPercentage: 50, quietEndingPeriod: 300, @@ -288,7 +287,7 @@ describe('Proposal', () => { const pState = await proposal.fetchState() expect(proposal).toBeInstanceOf(Proposal) - expect(pState.upstakeNeededToPreBoost).toEqual(new BN(0)) + expect(pState.upstakeNeededToPreBoost).toEqual(BigNumber.from(0)) // check if the upstakeNeededToPreBoost value is correct // (S+/S-) > AlphaConstant^NumberOfBoostedProposal. const boostedProposals = await pState.dao.entity @@ -363,7 +362,7 @@ describe('Proposal', () => { // wait until all transactions are indexed await waitUntilTrue(() => { - if (states.length > 1 && states[states.length - 1].votesFor.gt(new BN(0))) { + if (states.length > 1 && states[states.length - 1].votesFor.gt(BigNumber.from(0))) { return true } else { return false diff --git a/test/reputation.spec.ts b/test/reputation.spec.ts index a95b0865..64a5cd3f 100644 --- a/test/reputation.spec.ts +++ b/test/reputation.spec.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { first} from 'rxjs/operators' import { Address } from '../src/' import { Arc } from '../src/arc' @@ -59,13 +59,13 @@ describe('Reputation', () => { it('mint() works', async () => { const reputation = new Reputation(arc, addresses.organs.DemoReputation) - const reputationBefore = new BN((await reputation.contract().balanceOf(accounts[3])).toString()) + const reputationBefore = BigNumber.from((await reputation.contract().balanceOf(accounts[3])).toString()) await reputation.mint(accounts[3], toWei(1)).send() - await reputation.mint(accounts[3], new BN('1')).send() - await reputation.mint(accounts[3], new BN('1e18')).send() - await reputation.mint(accounts[3], new BN('3000e18')).send() + await reputation.mint(accounts[3], BigNumber.from('1')).send() + await reputation.mint(accounts[3], BigNumber.from('1e18')).send() + await reputation.mint(accounts[3], BigNumber.from('3000e18')).send() - const reputationAfter = new BN((await reputation.contract().balanceOf(accounts[3])).toString()) + const reputationAfter = BigNumber.from((await reputation.contract().balanceOf(accounts[3])).toString()) const difference = reputationAfter.sub(reputationBefore) expect(difference.toString()).toEqual('1000000000003003837') }) diff --git a/test/reward.spec.ts b/test/reward.spec.ts index d7f85f81..b39775da 100644 --- a/test/reward.spec.ts +++ b/test/reward.spec.ts @@ -1,4 +1,4 @@ -import { getAddress } from 'ethers/utils' +import { utils } from 'ethers' import { first } from 'rxjs/operators' import { Arc, DAO, IProposalCreateOptionsCR, IRewardState, Reward } from '../src' import { createCRProposal, getTestDAO, getTestScheme, newArc, toWei } from './utils' @@ -51,7 +51,7 @@ describe('Reward', () => { .pipe(first()).toPromise() expect(result.length).toBeGreaterThan(0) - result = await Reward.search(arc, { where: {beneficiary: getAddress(beneficiary)}}) + result = await Reward.search(arc, { where: {beneficiary: utils.getAddress(beneficiary)}}) .pipe(first()).toPromise() expect(result.length).toBeGreaterThan(0) diff --git a/test/stake.spec.ts b/test/stake.spec.ts index 6ceb7fe4..4960d60f 100644 --- a/test/stake.spec.ts +++ b/test/stake.spec.ts @@ -3,7 +3,7 @@ import { Arc } from '../src/arc' import { IProposalOutcome, ContributionRewardProposal} from '../src' import { Stake } from '../src/stake' import { createAProposal, newArc, toWei, waitUntilTrue } from './utils' -import { getAddress } from 'ethers/utils' +import { utils } from 'ethers' jest.setTimeout(60000) @@ -74,7 +74,7 @@ describe('Stake', () => { expect(result.length).toEqual(1) result = await Stake - .search(arc, {where: {staker: getAddress(state.staker), proposal: proposal.id}}) + .search(arc, {where: {staker: utils.getAddress(state.staker), proposal: proposal.id}}) .pipe(first()).toPromise() expect(result.length).toEqual(1) }) diff --git a/test/token.spec.ts b/test/token.spec.ts index 838ca004..122e1ad1 100644 --- a/test/token.spec.ts +++ b/test/token.spec.ts @@ -1,7 +1,7 @@ import { first} from 'rxjs/operators' import { Arc, Token } from '../src' import { Address } from '../src/' -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { fromWei, getTestAddresses, ITestAddresses, newArc, toWei, waitUntilTrue } from './utils' @@ -62,9 +62,9 @@ describe('Token', () => { const token = new Token(arc, addresses.organs.DemoDAOToken) const account = '0x90f8bf6a479f320ead074411a4b0e7944ea8c9c1' // check if the currentAccount is the owner of the contract - const balances: Array = [] - const amount = new BN('1234') - token.balanceOf(account).subscribe((next: BN) => balances.push(next)) + const balances: Array = [] + const amount = BigNumber.from('1234') + token.balanceOf(account).subscribe((next: BigNumber) => balances.push(next)) await token.mint(account, amount).send() await waitUntilTrue(() => balances.length > 1) expect(balances[1].sub(balances[0]).toString()).toEqual(amount.toString()) @@ -73,15 +73,15 @@ describe('Token', () => { it('balanceOf GEN token works', async () => { const token = arc.GENToken() const account = '0x90f8bf6a479f320ead074411a4b0e7944ea8c9c1' - const balances: Array = [] - const amountToMint = new BN('12345') - token.balanceOf(account).subscribe((next: BN) => balances.push(next)) + const balances: Array = [] + const amountToMint = BigNumber.from('12345') + token.balanceOf(account).subscribe((next: BigNumber) => balances.push(next)) await waitUntilTrue(() => balances.length > 0) - expect(typeof balances[0]).toEqual(typeof new BN(0)) + expect(typeof balances[0]).toEqual(typeof BigNumber.from(0)) await token.mint(account, amountToMint).send() await waitUntilTrue(() => balances.length > 1) expect(balances[1].sub(balances[0]).toString()).toEqual(amountToMint.toString()) - const amountToSend = new BN('23456') + const amountToSend = BigNumber.from('23456') await token.transfer('0x72939947e7a1c4ac94bb840e3304b322237ad1a8', amountToSend).send() await waitUntilTrue(() => balances.length > 2) expect(balances[1].sub(balances[2]).toString()).toEqual(amountToSend.toString()) @@ -90,7 +90,7 @@ describe('Token', () => { it('approveForStaking() and allowance() work', async () => { const token = arc.GENToken() const amount = toWei('31415') - const allowances: Array = [] + const allowances: Array = [] const lastAllowance = () => allowances[allowances.length - 1] const someAddress = '0xffcf8fdee72ac11b5c542428b35eef5769c409f0' diff --git a/test/utils.spec.ts b/test/utils.spec.ts index e006421f..953aedc9 100644 --- a/test/utils.spec.ts +++ b/test/utils.spec.ts @@ -1,4 +1,4 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { IContractInfo, realMathToNumber } from '../src' import { advanceTimeAndBlock, getContractAddressesFromMigration, newArc } from './utils' @@ -9,7 +9,7 @@ describe('Utils', () => { it('realMathToNumber works', () => { - expect(realMathToNumber(new BN('4727698744810')).toFixed(5)) + expect(realMathToNumber(BigNumber.from('4727698744810')).toFixed(5)) .toEqual(Math.pow(1.2, 8).toFixed(5)) }) diff --git a/test/utils.ts b/test/utils.ts index 082279b4..24cc7cc6 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -1,6 +1,6 @@ -import BN from 'bn.js' +import { BigNumber } from 'ethers' import { utils } from 'ethers' -import { JsonRpcProvider } from 'ethers/providers' +import { providers } from 'ethers' import { Observable } from 'rxjs' import { first } from 'rxjs/operators' import { @@ -24,21 +24,21 @@ export const graphqlWsProvider: string = 'http://127.0.0.1:8001/subgraphs/name/d export const web3Provider: string = 'http://127.0.0.1:8545' export const ipfsProvider: string = 'http://127.0.0.1:5001/api/v0' -export { BN } +export { BigNumber } export function padZeros(str: string, max = 36): string { str = str.toString() return str.length < max ? padZeros('0' + str, max) : str } -export function fromWei(amount: BN): string { +export function fromWei(amount: BigNumber): string { const etherAmount = utils.formatEther(amount.toString()) return etherAmount.toString() } -export function toWei(amount: string | number): BN { +export function toWei(amount: string | number): BigNumber { const weiAmount = utils.parseEther(amount.toString()) - return new BN(weiAmount.toString()) + return BigNumber.from(weiAmount.toString()) } export interface ITestAddresses { @@ -90,7 +90,7 @@ export function getTestScheme(name: PluginName): Address { return plugin.address } -export async function getOptions(web3: JsonRpcProvider) { +export async function getOptions(web3: providers.JsonRpcProvider) { const block = await web3.getBlock('latest') return { from: await web3.getSigner().getAddress(), @@ -208,7 +208,7 @@ export async function mintSomeReputation(version: string = LATEST_ARC_VERSION) { const token = new Reputation(arc, addresses.organs.DemoReputation) if (!arc.web3) { throw new Error('Web3 provider not set') } const accounts = await arc.web3.listAccounts() - await token.mint(accounts[1], new BN('99')).send() + await token.mint(accounts[1], BigNumber.from('99')).send() } export function mineANewBlock() { @@ -248,7 +248,7 @@ export async function voteToPassProposal(proposal: AnyProposal) { return } -const web3 = new JsonRpcProvider('http://127.0.0.1:8545') +const web3 = new providers.JsonRpcProvider('http://127.0.0.1:8545') export const advanceTime = async (time: number) => await web3.send('evm_increaseTime', [time]) diff --git a/test/vote.spec.ts b/test/vote.spec.ts index ebdc8c15..71c5a828 100644 --- a/test/vote.spec.ts +++ b/test/vote.spec.ts @@ -1,7 +1,7 @@ import { first } from 'rxjs/operators' import { IProposalOutcome, ContributionRewardProposal, Arc, Vote } from '../src/' import { createAProposal, getTestDAO, newArc, toWei, waitUntilTrue } from './utils' -import { getAddress } from 'ethers/utils' +import { utils } from 'ethers' jest.setTimeout(60000) @@ -68,7 +68,7 @@ describe('vote', () => { expect(result.length).toEqual(1) const voteState = await vote.fetchState() - result = await Vote.search(arc, {where: {id: vote.id, voter: getAddress(voteState.voter)}}) + result = await Vote.search(arc, {where: {id: vote.id, voter: utils.getAddress(voteState.voter)}}) .pipe(first()).toPromise() expect(result.length).toEqual(1) })