From 922021410668aa24d00d2064a39c4f4437949a7b Mon Sep 17 00:00:00 2001 From: Maycon Amaro <131882788+mayconamaroCW@users.noreply.github.com> Date: Wed, 20 Mar 2024 13:56:49 -0300 Subject: [PATCH] build: update contracts and regen signatures (#414) * fix: repos on compile contracts sh * deps: update brlc token to 0858ec4 * chore: restore repo state after test * deps: update pix cashier to a528d0c * deps: update yield streamer to 7683517 * build: regen signatures --- e2e-contracts/clone-contracts.sh | 6 +- e2e-contracts/compile-contracts.sh | 11 +- e2e-contracts/patches/brlc-token.patch | 174 ++++++++++----------- e2e-contracts/test-contracts.sh | 3 + static/contracts/BRLCToken.signatures | 16 +- static/contracts/BalanceTracker.signatures | 27 ++++ static/contracts/PixCashier.signatures | 6 + static/contracts/YieldStreamer.signatures | 104 ++++++++++++ 8 files changed, 252 insertions(+), 95 deletions(-) create mode 100644 static/contracts/BalanceTracker.signatures create mode 100644 static/contracts/YieldStreamer.signatures diff --git a/e2e-contracts/clone-contracts.sh b/e2e-contracts/clone-contracts.sh index baefc1de8..919faa7bb 100755 --- a/e2e-contracts/clone-contracts.sh +++ b/e2e-contracts/clone-contracts.sh @@ -43,7 +43,7 @@ clone() { log "Cloning or updating repositories" clone brlc-multisig 918a226 clone brlc-periphery b8d507a -clone brlc-token 86d5d4f +clone brlc-token 0858ec4 clone compound-periphery e4d68df -clone brlc-yield-streamer e63d8ba -clone brlc-pix-cashier 00cc007 \ No newline at end of file +clone brlc-yield-streamer 7683517 +clone brlc-pix-cashier a528d0c \ No newline at end of file diff --git a/e2e-contracts/compile-contracts.sh b/e2e-contracts/compile-contracts.sh index 6e5cf5b42..d0385ccca 100755 --- a/e2e-contracts/compile-contracts.sh +++ b/e2e-contracts/compile-contracts.sh @@ -31,11 +31,14 @@ asdf local solidity 0.8.16 # execute compile_contract brlc-token BRLCToken -compile_contract brlc-periphery CardPaymentProcessor +compile_contract brlc-pix-cashier PixCashier + compile_contract brlc-periphery CashbackDistributor -compile_contract brlc-periphery PixCashier -compile_contract brlc-periphery TokenDistributor +compile_contract brlc-periphery CardPaymentProcessor + +compile_contract compound-periphery CompoundAgent compile_contract brlc-multisig MultiSigWallet -compile_contract compound-periphery CompoundAgent \ No newline at end of file +compile_contract brlc-yield-streamer BalanceTracker +compile_contract brlc-yield-streamer YieldStreamer diff --git a/e2e-contracts/patches/brlc-token.patch b/e2e-contracts/patches/brlc-token.patch index 2225707e1..9cf0a00fd 100644 --- a/e2e-contracts/patches/brlc-token.patch +++ b/e2e-contracts/patches/brlc-token.patch @@ -1,8 +1,8 @@ diff --git a/test/base/CWToken.complex.test.ts b/test/base/CWToken.complex.test.ts -index 267986e..1ef6e0e 100644 +index 2e65c20..8dcf54a 100644 --- a/test/base/CWToken.complex.test.ts +++ b/test/base/CWToken.complex.test.ts -@@ -55,6 +55,21 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -49,6 +49,21 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", return { token }; } @@ -21,10 +21,10 @@ index 267986e..1ef6e0e 100644 + } + } + - async function checkComplexBalanceGetter( - props: { - token: Contract; -@@ -66,7 +81,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", + async function deployAndConfigureToken(): Promise<{ token: Contract }> { + const { token } = await deployToken(); + await proveTx(token.connect(deployer).setMainBlocklister(deployer.address)); +@@ -72,7 +87,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", }; } ) { @@ -33,7 +33,7 @@ index 267986e..1ef6e0e 100644 const { token, amounts } = props; if (amounts.mint > 0) { await proveTx(token.connect(deployer).mint(user.address, amounts.mint)); -@@ -271,15 +286,15 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -277,15 +292,15 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", describe("Frozen and premint balances", async () => { let timestamp: number; @@ -45,95 +45,95 @@ index 267986e..1ef6e0e 100644 it("Transfer to purpose account - test 5 with release awaiting", async () => { const { token } = await setUpFixture(deployAndConfigureToken); await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 5) ).to.changeTokenBalances( -@@ -294,7 +309,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -300,7 +315,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 10) ).to.changeTokenBalances( -@@ -309,7 +324,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -315,7 +330,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 15) ).to.be.revertedWithCustomError(token, REVERT_ERROR_TRANSFER_EXCEEDED_FROZEN_AMOUNT); -@@ -320,7 +335,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -326,7 +341,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 20) ).to.be.revertedWithCustomError(token, REVERT_ERROR_TRANSFER_EXCEEDED_FROZEN_AMOUNT); -@@ -331,7 +346,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -337,7 +352,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 25) ).to.be.revertedWith(REVERT_MESSAGE_ERC20_TRANSFER_AMOUNT_EXCEEDS_BALANCE); -@@ -342,7 +357,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -348,7 +363,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 5) ).to.changeTokenBalances( -@@ -357,7 +372,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -363,7 +378,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 10) ).to.changeTokenBalances( -@@ -372,7 +387,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -378,7 +393,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 15) ).to.be.revertedWithCustomError(token, REVERT_ERROR_TRANSFER_EXCEEDED_FROZEN_AMOUNT); -@@ -383,7 +398,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -389,7 +404,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 20) ).to.be.revertedWithCustomError(token, REVERT_ERROR_TRANSFER_EXCEEDED_FROZEN_AMOUNT); -@@ -394,7 +409,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -400,7 +415,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 25) ).to.be.revertedWith(REVERT_MESSAGE_ERC20_TRANSFER_AMOUNT_EXCEEDS_BALANCE); -@@ -503,15 +518,15 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -509,15 +524,15 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", describe("Premint and restricted balances", async () => { let timestamp: number; @@ -145,95 +145,95 @@ index 267986e..1ef6e0e 100644 it("Transfer to purpose account - test 5 with release awaiting", async () => { const { token } = await setUpFixture(deployAndConfigureToken); await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 5) ).to.changeTokenBalances( -@@ -527,7 +542,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -533,7 +548,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 10) ).to.changeTokenBalances( -@@ -543,7 +558,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -549,7 +564,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 15) ).to.changeTokenBalances( -@@ -559,7 +574,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -565,7 +580,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 20) ).to.changeTokenBalances( -@@ -575,7 +590,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -581,7 +596,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 25) ).to.be.revertedWith(REVERT_MESSAGE_ERC20_TRANSFER_AMOUNT_EXCEEDS_BALANCE); -@@ -587,7 +602,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -593,7 +608,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 5) ).to.changeTokenBalances( -@@ -603,7 +618,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -609,7 +624,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 10) ).to.changeTokenBalances( -@@ -619,7 +634,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -625,7 +640,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 15) ).to.be.revertedWithCustomError(token, REVERT_ERROR_TRANSFER_EXCEEDED_RESTRICTED_AMOUNT); -@@ -630,7 +645,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -636,7 +651,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 20) ).to.be.revertedWithCustomError(token, REVERT_ERROR_TRANSFER_EXCEEDED_RESTRICTED_AMOUNT); -@@ -641,7 +656,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -647,7 +662,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", await proveTx(token.connect(deployer).mint(user.address, 10)); - await proveTx(token.connect(deployer).premint(user.address, 10, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 10, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 10)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 25) ).to.be.revertedWith(REVERT_MESSAGE_ERC20_TRANSFER_AMOUNT_EXCEEDS_BALANCE); -@@ -767,8 +782,8 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -773,8 +788,8 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", describe("Frozen, restricted and premint balances", async () => { let timestamp: number; @@ -244,8 +244,8 @@ index 267986e..1ef6e0e 100644 }); it("Transfer to purpose account - test 5 with release awaiting", async () => { const { token } = await setUpFixture(deployAndConfigureToken); -@@ -776,7 +791,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", - await proveTx(token.connect(deployer).premint(user.address, 5, timestamp)); +@@ -782,7 +797,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", + await proveTx(token.connect(deployer).premint(user.address, 5, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 5)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 5)); - await time.increaseTo(timestamp); @@ -253,8 +253,8 @@ index 267986e..1ef6e0e 100644 await expect( token.connect(user).transfer(purposeAccount.address, 5) ).to.changeTokenBalances( -@@ -793,7 +808,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", - await proveTx(token.connect(deployer).premint(user.address, 5, timestamp)); +@@ -799,7 +814,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", + await proveTx(token.connect(deployer).premint(user.address, 5, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 5)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 5)); - await time.increaseTo(timestamp); @@ -262,8 +262,8 @@ index 267986e..1ef6e0e 100644 await expect( token.connect(user).transfer(purposeAccount.address, 10) ).to.changeTokenBalances( -@@ -810,7 +825,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", - await proveTx(token.connect(deployer).premint(user.address, 5, timestamp)); +@@ -816,7 +831,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", + await proveTx(token.connect(deployer).premint(user.address, 5, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 5)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 5)); - await time.increaseTo(timestamp); @@ -271,8 +271,8 @@ index 267986e..1ef6e0e 100644 await expect( token.connect(user).transfer(purposeAccount.address, 15) ).to.changeTokenBalances( -@@ -827,7 +842,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", - await proveTx(token.connect(deployer).premint(user.address, 5, timestamp)); +@@ -833,7 +848,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", + await proveTx(token.connect(deployer).premint(user.address, 5, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 5)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 5)); - await time.increaseTo(timestamp); @@ -280,8 +280,8 @@ index 267986e..1ef6e0e 100644 await expect( token.connect(user).transfer(purposeAccount.address, 20) ).to.be.revertedWithCustomError(token, REVERT_ERROR_TRANSFER_EXCEEDED_FROZEN_AMOUNT); -@@ -839,7 +854,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", - await proveTx(token.connect(deployer).premint(user.address, 5, timestamp)); +@@ -845,7 +860,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", + await proveTx(token.connect(deployer).premint(user.address, 5, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 5)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 5)); - await time.increaseTo(timestamp); @@ -289,8 +289,8 @@ index 267986e..1ef6e0e 100644 await expect( token.connect(user).transfer(purposeAccount.address, 25) ).to.be.revertedWith(REVERT_MESSAGE_ERC20_TRANSFER_AMOUNT_EXCEEDS_BALANCE); -@@ -851,7 +866,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", - await proveTx(token.connect(deployer).premint(user.address, 5, timestamp)); +@@ -857,7 +872,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", + await proveTx(token.connect(deployer).premint(user.address, 5, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 5)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 5)); - await time.increaseTo(timestamp); @@ -298,8 +298,8 @@ index 267986e..1ef6e0e 100644 await expect( token.connect(user).transfer(nonPurposeAccount.address, 5) ).to.changeTokenBalances( -@@ -868,7 +883,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", - await proveTx(token.connect(deployer).premint(user.address, 5, timestamp)); +@@ -874,7 +889,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", + await proveTx(token.connect(deployer).premint(user.address, 5, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 5)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 5)); - await time.increaseTo(timestamp); @@ -307,8 +307,8 @@ index 267986e..1ef6e0e 100644 await expect( token.connect(user).transfer(nonPurposeAccount.address, 10) ).to.changeTokenBalances( -@@ -885,7 +900,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", - await proveTx(token.connect(deployer).premint(user.address, 5, timestamp)); +@@ -891,7 +906,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", + await proveTx(token.connect(deployer).premint(user.address, 5, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 5)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 5)); - await time.increaseTo(timestamp); @@ -316,8 +316,8 @@ index 267986e..1ef6e0e 100644 await expect( token.connect(user).transfer(nonPurposeAccount.address, 15) ).to.be.revertedWithCustomError(token, REVERT_ERROR_TRANSFER_EXCEEDED_RESTRICTED_AMOUNT); -@@ -897,7 +912,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", - await proveTx(token.connect(deployer).premint(user.address, 5, timestamp)); +@@ -903,7 +918,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", + await proveTx(token.connect(deployer).premint(user.address, 5, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 5)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 5)); - await time.increaseTo(timestamp); @@ -325,8 +325,8 @@ index 267986e..1ef6e0e 100644 await expect( token.connect(user).transfer(nonPurposeAccount.address, 20) ).to.be.revertedWithCustomError(token, REVERT_ERROR_TRANSFER_EXCEEDED_FROZEN_AMOUNT); -@@ -909,7 +924,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", - await proveTx(token.connect(deployer).premint(user.address, 5, timestamp)); +@@ -915,7 +930,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", + await proveTx(token.connect(deployer).premint(user.address, 5, timestamp, PremintRestriction.None)); await proveTx(token.connect(deployer).freeze(user.address, 5)); await proveTx(token.connect(deployer).updateRestriction(user.address, PURPOSE, 5)); - await time.increaseTo(timestamp); @@ -334,7 +334,7 @@ index 267986e..1ef6e0e 100644 await expect( token.connect(user).transfer(nonPurposeAccount.address, 25) ).to.be.revertedWith(REVERT_MESSAGE_ERC20_TRANSFER_AMOUNT_EXCEEDS_BALANCE); -@@ -1297,13 +1312,13 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -1303,13 +1318,13 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", describe("Premint balance only, no frozen balance or restricted balance", async () => { let timestamp: number; @@ -345,88 +345,88 @@ index 267986e..1ef6e0e 100644 }); it("Transfer to purpose account with release awaiting - test 5", async () => { const { token } = await setUpFixture(deployAndConfigureToken); - await proveTx(token.connect(deployer).premint(user.address, 20, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 20, timestamp, PremintRestriction.None)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 5) ).to.changeTokenBalances( -@@ -1316,7 +1331,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -1322,7 +1337,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", it("Transfer to purpose account with release awaiting - test 10", async () => { const { token } = await setUpFixture(deployAndConfigureToken); - await proveTx(token.connect(deployer).premint(user.address, 20, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 20, timestamp, PremintRestriction.None)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 10) ).to.changeTokenBalances( -@@ -1329,7 +1344,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -1335,7 +1350,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", it("Transfer to purpose account with release awaiting - test 15", async () => { const { token } = await setUpFixture(deployAndConfigureToken); - await proveTx(token.connect(deployer).premint(user.address, 20, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 20, timestamp, PremintRestriction.None)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 15) ).to.changeTokenBalances( -@@ -1342,7 +1357,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -1348,7 +1363,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", it("Transfer to purpose account with release awaiting - test 20", async () => { const { token } = await setUpFixture(deployAndConfigureToken); - await proveTx(token.connect(deployer).premint(user.address, 20, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 20, timestamp, PremintRestriction.None)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 20) ).to.changeTokenBalances( -@@ -1355,7 +1370,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -1361,7 +1376,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", it("Transfer to purpose account with release awaiting - test 25", async () => { const { token } = await setUpFixture(deployAndConfigureToken); - await proveTx(token.connect(deployer).premint(user.address, 20, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 20, timestamp, PremintRestriction.None)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(purposeAccount.address, 25) ).to.be.revertedWith(REVERT_MESSAGE_ERC20_TRANSFER_AMOUNT_EXCEEDS_BALANCE); -@@ -1364,7 +1379,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -1370,7 +1385,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", it("Transfer to non-purpose account with release awaiting - test 5", async () => { const { token } = await setUpFixture(deployAndConfigureToken); - await proveTx(token.connect(deployer).premint(user.address, 20, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 20, timestamp, PremintRestriction.None)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 5) ).to.changeTokenBalances( -@@ -1377,7 +1392,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -1383,7 +1398,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", it("Transfer to non-purpose account with release awaiting - test 10", async () => { const { token } = await setUpFixture(deployAndConfigureToken); - await proveTx(token.connect(deployer).premint(user.address, 20, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 20, timestamp, PremintRestriction.None)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 10) ).to.changeTokenBalances( -@@ -1390,7 +1405,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -1396,7 +1411,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", it("Transfer to non-purpose account with release awaiting - test 15", async () => { const { token } = await setUpFixture(deployAndConfigureToken); - await proveTx(token.connect(deployer).premint(user.address, 20, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 20, timestamp, PremintRestriction.None)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 15) ).to.changeTokenBalances( -@@ -1403,7 +1418,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -1409,7 +1424,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", it("Transfer to non-purpose account with release awaiting - test 20", async () => { const { token } = await setUpFixture(deployAndConfigureToken); - await proveTx(token.connect(deployer).premint(user.address, 20, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 20, timestamp, PremintRestriction.None)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( token.connect(user).transfer(nonPurposeAccount.address, 20) ).to.changeTokenBalances( -@@ -1416,7 +1431,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", +@@ -1422,7 +1437,7 @@ describe("Contract 'CWToken' - Premintable, Freezable & Restrictable scenarios", it("Transfer to non-purpose account with release awaiting - test 25", async () => { const { token } = await setUpFixture(deployAndConfigureToken); - await proveTx(token.connect(deployer).premint(user.address, 20, timestamp)); + await proveTx(token.connect(deployer).premint(user.address, 20, timestamp, PremintRestriction.None)); - await time.increaseTo(timestamp); + await increaseTo(timestamp); await expect( diff --git a/e2e-contracts/test-contracts.sh b/e2e-contracts/test-contracts.sh index b4fae8303..95a9947fb 100755 --- a/e2e-contracts/test-contracts.sh +++ b/e2e-contracts/test-contracts.sh @@ -23,6 +23,9 @@ test() { npx hardhat test --bail --network stratus test/$test.test.ts result_code=$? + # restore original files + git restore . + # go back to previous directory cd - diff --git a/static/contracts/BRLCToken.signatures b/static/contracts/BRLCToken.signatures index d9f2324ec..93712469a 100644 --- a/static/contracts/BRLCToken.signatures +++ b/static/contracts/BRLCToken.signatures @@ -5,13 +5,17 @@ b112e196: approveFreezing() a8d775b6: assignPurposes(address,bytes32[]) 5be35263: assignedPurposes(address) 70a08231: balanceOf(address) +8a1259fe: balanceOfComplex(address) a6dc84f0: balanceOfFrozen(address) +863f67a1: balanceOfPremint(address) 5ef7f091: balanceOfRestricted(address,bytes32) f9f92be4: blacklist(address) e5c7160b: blocklist(address) 42966c68: burn(uint256) 001db792: configureBlocklister(address,bool) +860ad0a4: configureMaxPendingPremintsCount(uint16) 4e44d956: configureMinter(address,uint256) +c58f317d: configureTrustedAccount(address,bool) 313ce567: decimals() a457c2d7: decreaseAllowance(address,uint256) f04f29eb: enableBlocklist(bool) @@ -20,6 +24,7 @@ bdd3a38f: freezeApproval(address) 266565a9: frozenBalance(address) dc1caf3f: getAfterTokenTransferHooks() 116302d2: getBeforeTokenTransferHooks() +4a9f3278: getPremints(address) 39509351: increaseAllowance(address,uint256) 4cd88b76: initialize(string,string) 6bcf7fe3: isBRLCoin() @@ -28,8 +33,10 @@ fe575a87: isBlacklisted(address) 8e204c43: isBlocklisted(address) 47401e14: isBlocklister(address) aa271e1a: isMinter(address) +ebf1383f: isTrustedAccount(address) e4380539: mainBlocklister() bf2fa22b: mainMinter() +f3edcb27: maxPendingPremintsCount() 40c10f19: mint(address,uint256) 8a6db9c3: minterAllowance(address) 06fdde03: name() @@ -37,7 +44,7 @@ bf2fa22b: mainMinter() 8456cb59: pause() 5c975abb: paused() 9fd0506d: pauser() -f7bb5c88: premint(address,uint256,uint256) +16c33f84: premint(address,uint256,uint256,uint8) 3092afd5: removeMinter(address) 715018a6: renounceOwnership() b2118a8d: rescueERC20(address,address,uint256) @@ -71,9 +78,12 @@ cecd8222: FreezingNotApproved() 0522a022: MaxPendingPremintsCountAlreadyConfigured() fb2deceb: MaxPendingPremintsLimitReached() 0f5d8c27: PremintReleaseTimePassed() +a2524939: PremintRestrictionFailure() +b1dc6115: PremintUnchanged() 709e2c14: TransferExceededFrozenAmount() bc260d1b: TransferExceededPremintedAmount() e96a60ef: TransferExceededRestrictedAmount() +95abf2d9: TrustedAccountAlreadyConfigured() 07768670: UnauthorizedBlocklister(address) 07349a1d: UnauthorizedMainBlocklister(address) 72b0340d: UnauthorizedMainMinter(address) @@ -83,6 +93,7 @@ c7a3e880: UnauthorizedRescuer(address) 5da07de5: ZeroAddressToBlocklist() 97b9d4c4: ZeroBurnAmount() 215b990c: ZeroMintAmount() +71fcb179: ZeroPremintAmount() 2a11ebd3: ZeroPurpose() Event signatures: @@ -102,15 +113,18 @@ bebabe862f007498b2c8d1696d0a6140092bc96ce3d1b0d739fac6fe3fa03470: FreezeTransfer 7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498: Initialized(uint8) d812f31f4dad318816d4c01dadf7d16795df36df1a0b3b7c4716ebf119b753a2: MainBlockListerChanged(address) 94a1d945505bf46d66861bec296a0035cef6cf54462f3f2202fa15477ca34f37: MainMinterChanged(address) +8641d99956c716649257289558a2b024f456806564ac6748b0d83ad88d36df2d: MaxPendingPremintsCountConfigured(uint256) ab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8: Mint(address,address,uint256) 46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d20: MinterConfigured(address,uint256) e94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692: MinterRemoved(address) 8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0: OwnershipTransferred(address,address) 62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258: Paused(address) b80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a604: PauserChanged(address) +ec0cd90c7b6f0150e0aac398f3faa16a7ac53c60b84e3b1ea17aedc48858f3ac: Premint(address,address,uint256,uint256,uint256) e475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a: RescuerChanged(address) 36a9e0b95197cc2414aa6bf0e005905bcd9645087d04c0b984507e08f8f19264: SelfBlocklisted(address) ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef: Transfer(address,address,uint256) +7cf80b165e8243b32218f22b57abfa5ab415fb2510e0f6a3ca51106bc7d690d3: TrustedAccountConfigured(address,bool) bc3fe0fc667d12a7a22748747f024a7d971127ffc48f6622675d3e97a2591a51: UnBlocklisted(address) 5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa: Unpaused(address) 8a02b5504957d932661cb8688c083945e213a5ead916da39238245c700c07ac4: UpdateRestriction(address,bytes32,uint256,uint256) diff --git a/static/contracts/BalanceTracker.signatures b/static/contracts/BalanceTracker.signatures new file mode 100644 index 000000000..268375dab --- /dev/null +++ b/static/contracts/BalanceTracker.signatures @@ -0,0 +1,27 @@ +Function signatures: +904e2a82: INITIALIZATION_DAY() +20af2412: NEGATIVE_TIME_SHIFT() +82bfefc8: TOKEN() +49b7b37d: _balanceRecords(address,uint256) +df6258be: afterTokenTransfer(address,address,uint256) +7cbab1c7: beforeTokenTransfer(address,address,uint256) +dffcf6c0: dayAndTime() +34d9ac15: getDailyBalances(address,uint256,uint256) +8129fc1c: initialize() +8da5cb5b: owner() +f21f8760: readBalanceRecord(address,uint256) +715018a6: renounceOwnership() +fc0c546a: token() +f2fde38b: transferOwnership(address) + +Error signatures: +0666bcba: FromDayPriorInitDay() +1dd3c0a0: SafeCastOverflowUint16() +a9627746: SafeCastOverflowUint240() +f1f88d16: ToDayPriorFromDay() +d86ad9cf: UnauthorizedCaller(address) + +Event signatures: +8d995e7fbf7a5ef41cee9e6936368925d88e07af89306bb78a698551562e683c: BalanceRecordCreated(address,uint16,uint240) +7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498: Initialized(uint8) +8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0: OwnershipTransferred(address,address) diff --git a/static/contracts/PixCashier.signatures b/static/contracts/PixCashier.signatures index a0dbe3e7e..a65f0a7e9 100644 --- a/static/contracts/PixCashier.signatures +++ b/static/contracts/PixCashier.signatures @@ -8,6 +8,9 @@ e63ab1e9: PAUSER_ROLE() e5c7160b: blocklist(address) e3541348: cashIn(address,uint256,bytes32) 06efe2d6: cashInBatch(address[],uint256[],bytes32[],bytes32) +c345b864: cashInPremint(address,uint256,bytes32,uint256) +e86145c8: cashInPremintRevoke(bytes32,uint256) +b733bb84: cashInPremintUpdate(uint256,bytes32,uint256) d485e8bf: cashOutBalanceOf(address) 96738714: confirmCashOut(bytes32) 09451818: confirmCashOutBatch(bytes32[]) @@ -47,8 +50,10 @@ Error signatures: 7ee34630: CashInAlreadyExecuted(bytes32) de57d75e: CashInBatchAlreadyExecuted(bytes32) a41c246c: EmptyTransactionIdsArray() +c19f538b: InappropriateCashInStatus(bytes32,uint8) 84e6fe28: InappropriateCashOutAccount(bytes32,address) 8e547672: InappropriateCashOutStatus(bytes32,uint8) +4981ac67: InappropriatePremintReleaseTime() 70bd0e00: InvalidBatchArrays() a636f0c5: TokenMintingFailure() bfcf3c0b: ZeroAccount() @@ -61,6 +66,7 @@ Event signatures: 917c251bb231c4b997a420bebe47edad5c20e70715da16c38e9b2e172e44ab92: Blocklisted(address) 97a0bec022dc6ac1ebecc8ea2b7058cf29dc7753458a562ff74c8b60b1a41c26: CashIn(address,uint256,bytes32) d6e8be24cc32a6b7965a3cc71dbbaa32b99a2949bbd0e631445c0ac235ed0396: CashInBatch(bytes32,bytes32[],uint8[]) +d889c59257da3a7688817d38ea2c09f9d626dbe8f4a79303d98df645bb37d758: CashInPremint(address,uint256,uint256,bytes32,uint256) 73be2fd0252d8f4a508e5998cbde717696188f410e1eb423ad2bd59ce755a9d2: ConfirmCashOut(address,uint256,uint256,bytes32) 7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498: Initialized(uint8) 62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258: Paused(address) diff --git a/static/contracts/YieldStreamer.signatures b/static/contracts/YieldStreamer.signatures new file mode 100644 index 000000000..9cbb2d319 --- /dev/null +++ b/static/contracts/YieldStreamer.signatures @@ -0,0 +1,104 @@ +Function signatures: +2d11c58a: FEE_RATE() +1de5e06f: MAX_DAILY_BALANCE_LIMIT() +d731c4f6: MIN_CLAIM_AMOUNT() +7067e881: RATE_FACTOR() +d275cc63: ROUNDING_COEF() +f13e43fe: assignAccountGroup(bytes32,address[]) +19139092: balanceTracker() +f9f92be4: blacklist(address) +e5c7160b: blocklist(address) +99a5d747: calculateFee(uint256) +cc2afffa: calculateStream(uint256,uint256) +93f715d8: calculateYieldByDays(address,uint256,uint256,uint256) +379607f5: claim(uint256) +2537cbc2: claimAllPreview(address) +087267db: claimPreview(address,uint256) +001db792: configureBlocklister(address,bool) +f0decb6b: configureLookBackPeriod(uint256,uint256) +0e3cbdc0: configureYieldRate(bytes32,uint256,uint256) +dffcf6c0: dayAndTime() +f04f29eb: enableBlocklist(bool) +b3f00674: feeReceiver() +964b5fca: getAccountYieldRates(address) +34d9ac15: getDailyBalances(address,uint256,uint256) +2368d18c: getDailyBalancesWithYield(address,uint16,uint16) +4545d7b0: getGroupYieldRates(bytes32) +a4f89d9e: getLastClaimDetails(address) +034258b7: getLookBackPeriods() +8129fc1c: initialize() +fe575a87: isBlacklisted(address) +25fa37de: isBlocklistEnabled() +8e204c43: isBlocklisted(address) +47401e14: isBlocklister(address) +e4380539: mainBlocklister() +8da5cb5b: owner() +8456cb59: pause() +5c975abb: paused() +9fd0506d: pauser() +715018a6: renounceOwnership() +b2118a8d: rescueERC20(address,address,uint256) +38a63183: rescuer() +d2156be2: selfBlacklist() +7dab5935: selfBlocklist() +598b75ad: setBalanceTracker(address) +efdcd974: setFeeReceiver(address) +ade847e4: setMainBlocklister(address) +2d88af4a: setPauser(address) +cd5cecf8: setRescuer(address) +fc0c546a: token() +f2fde38b: transferOwnership(address) +1a895266: unBlacklist(address) +31b23020: unBlocklist(address) +3f4ba83a: unpause() +4f1aef49: updateLookBackPeriod(uint256,uint256,uint256) +68e073c2: updateYieldRate(bytes32,uint256,uint256,uint256) + +Error signatures: +11b61b6a: AlreadyConfigured() +4b3f6880: BalanceTrackerAlreadyConfigured() +417933b9: BlocklistedAccount(address) +241fb311: ClaimAmountBelowMinimum() +7f98fde9: ClaimAmountNonRounded() +17c62205: ClaimRejectionDueToShortfall(uint256) +3b511c76: FeeReceiverAlreadyConfigured() +deb93f59: GroupAlreadyAssigned(address) +8e1b3a42: LookBackPeriodCountLimit() +f0ac7983: LookBackPeriodInvalidEffectiveDay() +492cd027: LookBackPeriodInvalidParametersCombination() +83fa7f8b: LookBackPeriodLengthAlreadyConfigured() +ce65c0c2: LookBackPeriodLengthZero() +9e9ff8e1: LookBackPeriodWrongIndex() +1dd3c0a0: SafeCastOverflowUint16() +a9627746: SafeCastOverflowUint240() +f1f88d16: ToDayPriorFromDay() +07768670: UnauthorizedBlocklister(address) +07349a1d: UnauthorizedMainBlocklister(address) +ae3b56d5: UnauthorizedPauser(address) +c7a3e880: UnauthorizedRescuer(address) +be113e9f: YieldRateInvalidEffectiveDay() +3cb2bc10: YieldRateValueAlreadyConfigured() +ae9114d1: YieldRateWrongIndex() +5da07de5: ZeroAddressToBlocklist() + +Event signatures: +090169477b750f56ca536f50fb3f76bcf841b6970f1be25bd0845e26584a1559: AccountGroupAssigned(bytes32,address) +79a164b9509a6d0f45878e8d7205eb03edbc52d20c056df08535d5efdd634915: BalanceTrackerChanged(address,address) +f9e980fc4cb715a065afbab5e812bd225b2523b03a481511cc4c4c6c15a2d68e: BlocklistEnabled(bool) +917c251bb231c4b997a420bebe47edad5c20e70715da16c38e9b2e172e44ab92: Blocklisted(address) +7af80f70ae054271acff70f98f71a9dce90df18449fbda8a96cba93816ec90a4: BlocklisterConfigured(address,bool) +34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf7: Claim(address,uint256,uint256) +a4b009cc442411b602eaf94bc0579b6abdb8fd90b4ef5b9426e270038906bd03: FeeReceiverChanged(address,address) +7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498: Initialized(uint8) +a131b2f9f128487233977b2b53fe5884517875df10955a020176f9cc1706b184: LookBackPeriodConfigured(uint256,uint256) +c19764b8b06f4727b91cf251056039bf34d266d4048675a4781fc87df479a7b3: LookBackPeriodUpdated(uint256,uint256,uint256,uint256,uint256) +d812f31f4dad318816d4c01dadf7d16795df36df1a0b3b7c4716ebf119b753a2: MainBlockListerChanged(address) +8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0: OwnershipTransferred(address,address) +62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258: Paused(address) +b80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a604: PauserChanged(address) +e475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a: RescuerChanged(address) +36a9e0b95197cc2414aa6bf0e005905bcd9645087d04c0b984507e08f8f19264: SelfBlocklisted(address) +bc3fe0fc667d12a7a22748747f024a7d971127ffc48f6622675d3e97a2591a51: UnBlocklisted(address) +5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa: Unpaused(address) +3342c4fd4f37fc9d60fe177d206eb8f9c86fcfe03f501f99e29a8995e9f801eb: YieldRateConfigured(bytes32,uint256,uint256) +61e0fa3cc0ef8c1da3eac41086cd82df2f04b16fb3ccf7c23082d07ffbda3fea: YieldRateUpdated(bytes32,uint256,uint256,uint256,uint256,uint256)