From 5ed20adf1dd0c260b2e6bb4f9f9fd4d8be5cf345 Mon Sep 17 00:00:00 2001 From: midpoint68 Date: Fri, 23 Jun 2023 16:54:07 -0400 Subject: [PATCH 1/5] update submodules --- lib/openzeppelin-contracts | 2 +- lib/v5-draw-beacon | 2 +- lib/v5-prize-pool | 2 +- lib/v5-twab-controller | 2 +- lib/v5-vault | 2 +- lib/v5-vrgda-claimer | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts index fa3a30a..e50c24f 160000 --- a/lib/openzeppelin-contracts +++ b/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit fa3a30a580e87dbc4f3a7693296901c0b83f06aa +Subproject commit e50c24f5839db17f46991478384bfda14acfb830 diff --git a/lib/v5-draw-beacon b/lib/v5-draw-beacon index a974df7..0d5d603 160000 --- a/lib/v5-draw-beacon +++ b/lib/v5-draw-beacon @@ -1 +1 @@ -Subproject commit a974df7db15bbaba109d5b6e2306f9ee020f0d5e +Subproject commit 0d5d6039f7bc54d8ec6cf41d15e669d018fd46c1 diff --git a/lib/v5-prize-pool b/lib/v5-prize-pool index 45a23d0..946fc54 160000 --- a/lib/v5-prize-pool +++ b/lib/v5-prize-pool @@ -1 +1 @@ -Subproject commit 45a23d0d7be8fe7c6d976f3f653b6d7a4064470f +Subproject commit 946fc5491973509b5225299a06f91a5c0b219880 diff --git a/lib/v5-twab-controller b/lib/v5-twab-controller index 1cf1554..5eadabd 160000 --- a/lib/v5-twab-controller +++ b/lib/v5-twab-controller @@ -1 +1 @@ -Subproject commit 1cf1554c4ee145a2c1d7944ea5dc4123c880bc69 +Subproject commit 5eadabda4a4a5060c9995d52976b027fb072da05 diff --git a/lib/v5-vault b/lib/v5-vault index 659aea3..3825867 160000 --- a/lib/v5-vault +++ b/lib/v5-vault @@ -1 +1 @@ -Subproject commit 659aea324d6679faefb9c604472645dde35a53c9 +Subproject commit 38258679fbd04270de74313ac4fdd74b77551faa diff --git a/lib/v5-vrgda-claimer b/lib/v5-vrgda-claimer index 444ef16..a3f1c7f 160000 --- a/lib/v5-vrgda-claimer +++ b/lib/v5-vrgda-claimer @@ -1 +1 @@ -Subproject commit 444ef16d619f0c958b0781ca263108cb96b50b44 +Subproject commit a3f1c7ff558d0295d20cd0b8aa0acd0c7dde876f From 8247a5ba1ae9a29b7d3eaecef801ed2ac911d07e Mon Sep 17 00:00:00 2001 From: midpoint68 Date: Fri, 23 Jun 2023 19:43:37 -0400 Subject: [PATCH 2/5] update integrations --- script/deploy/DeployPool.s.sol | 37 +++++++++++++++------------ script/deploy/DeployVault.s.sol | 2 +- test/integration/Claim.t.sol | 11 +++++--- test/utils/ForkBaseSetup.t.sol | 31 ++++++++++++---------- test/utils/Helpers.t.sol | 19 ++++++++++---- test/utils/IntegrationBaseSetup.t.sol | 33 +++++++++++++----------- 6 files changed, 77 insertions(+), 56 deletions(-) diff --git a/script/deploy/DeployPool.s.sol b/script/deploy/DeployPool.s.sol index e6ee95c..69d2fc3 100644 --- a/script/deploy/DeployPool.s.sol +++ b/script/deploy/DeployPool.s.sol @@ -3,11 +3,11 @@ pragma solidity 0.8.17; import { Script } from "forge-std/Script.sol"; -import { PrizePool, SD59x18 } from "v5-prize-pool/PrizePool.sol"; +import { PrizePool, ConstructorParams, SD59x18 } from "v5-prize-pool/PrizePool.sol"; import { ud2x18 } from "prb-math/UD2x18.sol"; import { sd1x18 } from "prb-math/SD1x18.sol"; import { TwabController } from "v5-twab-controller/TwabController.sol"; -import { Claimer, IVault } from "v5-vrgda-claimer/Claimer.sol"; +import { Claimer } from "v5-vrgda-claimer/Claimer.sol"; import { ILiquidationSource } from "v5-liquidator/interfaces/ILiquidationSource.sol"; import { LiquidationPair } from "v5-liquidator/LiquidationPair.sol"; import { LiquidationPairFactory } from "v5-liquidator/LiquidationPairFactory.sol"; @@ -26,32 +26,35 @@ contract DeployPool is Helpers { vm.startBroadcast(vm.envUint("PRIVATE_KEY")); ERC20Mintable prizeToken = _getToken("POOL", _tokenDeployPath); - TwabController twabController = new TwabController(); + TwabController twabController = new TwabController(1 days, 0); PrizePool prizePool = new PrizePool( - prizeToken, - twabController, - uint32(7), // grand prize should occur every 3.5 days - DRAW_PERIOD_SECONDS, - uint64(block.timestamp), // drawStartedAt - uint8(2), // minimum number of tiers - 100, - 10, - 10, - ud2x18(0.9e18), // claim threshold of 90% - sd1x18(0.9e18) // alpha + ConstructorParams( + prizeToken, + twabController, + address(0), + uint16(7), // grand prize should occur every 3.5 days + DRAW_PERIOD_SECONDS, + uint64(block.timestamp), // drawStartedAt + uint8(3), // minimum number of tiers + 100, + 10, + 10, + ud2x18(0.9e18), // claim threshold of 90% + sd1x18(0.9e18) // alpha + ) ); if (block.chainid == 5) { - prizePool.setManager(GOERLI_DEFENDER_ADDRESS); + prizePool.setDrawManager(GOERLI_DEFENDER_ADDRESS); } if (block.chainid == 11155111) { - prizePool.setManager(SEPOLIA_DEFENDER_ADDRESS); + prizePool.setDrawManager(SEPOLIA_DEFENDER_ADDRESS); } if (block.chainid == 80001) { - prizePool.setManager(MUMBAI_DEFENDER_ADDRESS); + prizePool.setDrawManager(MUMBAI_DEFENDER_ADDRESS); } new Claimer(prizePool, 0.0001e18, 1000e18, DRAW_PERIOD_SECONDS, ud2x18(0.5e18)); diff --git a/script/deploy/DeployVault.s.sol b/script/deploy/DeployVault.s.sol index 7f90f04..32e14a2 100644 --- a/script/deploy/DeployVault.s.sol +++ b/script/deploy/DeployVault.s.sol @@ -5,7 +5,7 @@ import { PrizePool, SD59x18 } from "v5-prize-pool/PrizePool.sol"; import { ud2x18 } from "prb-math/UD2x18.sol"; import { sd1x18 } from "prb-math/SD1x18.sol"; import { TwabController } from "v5-twab-controller/TwabController.sol"; -import { Claimer, IVault } from "v5-vrgda-claimer/Claimer.sol"; +import { Claimer } from "v5-vrgda-claimer/Claimer.sol"; import { ILiquidationSource } from "v5-liquidator/interfaces/ILiquidationSource.sol"; import { LiquidationPair } from "v5-liquidator/LiquidationPair.sol"; import { LiquidationPairFactory } from "v5-liquidator/LiquidationPairFactory.sol"; diff --git a/test/integration/Claim.t.sol b/test/integration/Claim.t.sol index 025832e..c5e495e 100644 --- a/test/integration/Claim.t.sol +++ b/test/integration/Claim.t.sol @@ -7,7 +7,7 @@ import { ERC20Mock } from "openzeppelin/mocks/ERC20Mock.sol"; import { AlreadyClaimedPrize } from "v5-prize-pool/PrizePool.sol"; -import { IntegrationBaseSetup, IVault } from "test/utils/IntegrationBaseSetup.t.sol"; +import { IntegrationBaseSetup } from "test/utils/IntegrationBaseSetup.t.sol"; import { Helpers } from "test/utils/Helpers.t.sol"; contract ClaimIntegrationTest is IntegrationBaseSetup, Helpers { @@ -45,11 +45,14 @@ contract ClaimIntegrationTest is IntegrationBaseSetup, Helpers { uint8[] memory _tiers = new uint8[](1); _tiers[0] = _tier; - uint256 _prizeSize = prizePool.calculatePrizeSize(_tier); + uint256 _prizeSize = prizePool.getTierPrizeSize(_tier); uint256 _prizePoolBalanceBeforeClaim = prizeToken.balanceOf(address(prizePool)); uint256 _alicePrizeTokenBalanceBeforeClaim = prizeToken.balanceOf(alice); - uint256 _claimFees = _claim(claimer, vault, prizePool, alice, _tiers); + uint32[] memory _prizeIndices = new uint32[](1); + _prizeIndices[0] = 0; + + uint256 _claimFees = _claim(claimer, vault, prizePool, alice, _prizeIndices, _tiers); assertEq( prizeToken.balanceOf(alice), @@ -62,6 +65,6 @@ contract ClaimIntegrationTest is IntegrationBaseSetup, Helpers { ); // Fails here with the error AlreadyClaimedPrize - _claim(claimer, vault, prizePool, alice, _tiers); + _claim(claimer, vault, prizePool, alice, _prizeIndices, _tiers); } } diff --git a/test/utils/ForkBaseSetup.t.sol b/test/utils/ForkBaseSetup.t.sol index 2266fb8..cce177c 100644 --- a/test/utils/ForkBaseSetup.t.sol +++ b/test/utils/ForkBaseSetup.t.sol @@ -5,11 +5,11 @@ import "forge-std/Test.sol"; import { IERC20, IERC4626 } from "openzeppelin/token/ERC20/extensions/ERC4626.sol"; import { DrawBeacon, RNGInterface } from "v5-draw-beacon/DrawBeacon.sol"; -import { PrizePool, SD59x18 } from "v5-prize-pool/PrizePool.sol"; +import { PrizePool, ConstructorParams, SD59x18 } from "v5-prize-pool/PrizePool.sol"; import { ud2x18 } from "prb-math/UD2x18.sol"; import { sd1x18 } from "prb-math/SD1x18.sol"; import { TwabController } from "v5-twab-controller/TwabController.sol"; -import { Claimer, IVault } from "v5-vrgda-claimer/Claimer.sol"; +import { Claimer } from "v5-vrgda-claimer/Claimer.sol"; import { ILiquidationSource } from "v5-liquidator/interfaces/ILiquidationSource.sol"; import { LiquidationPair } from "v5-liquidator/LiquidationPair.sol"; import { LiquidationPairFactory } from "v5-liquidator/LiquidationPairFactory.sol"; @@ -74,22 +74,25 @@ contract ForkBaseSetup is Test { prizeTokenAddress = address(0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e); // POOL token on Ethereum prizeToken = IERC20(prizeTokenAddress); - twabController = new TwabController(); + twabController = new TwabController(1 days, 0); uint64 drawStartsAt = uint64(block.timestamp); prizePool = new PrizePool( - prizeToken, - twabController, - uint32(365), // grand prize should occur once a year - drawPeriodSeconds, - drawStartsAt, - uint8(2), // minimum number of tiers - 100, - 10, - 10, - ud2x18(0.9e18), // claim threshold of 90% - sd1x18(0.9e18) // alpha + ConstructorParams( + prizeToken, + twabController, + address(0), + uint16(365), // grand prize should occur once a year + drawPeriodSeconds, + drawStartsAt, + uint8(3), // minimum number of tiers + 100, + 10, + 10, + ud2x18(0.9e18), // claim threshold of 90% + sd1x18(0.9e18) // alpha + ) ); drawBeacon = new DrawBeacon( diff --git a/test/utils/Helpers.t.sol b/test/utils/Helpers.t.sol index 617678f..d4fd3c1 100644 --- a/test/utils/Helpers.t.sol +++ b/test/utils/Helpers.t.sol @@ -6,7 +6,7 @@ import { ERC20Mock } from "openzeppelin/mocks/ERC20Mock.sol"; import { IERC20 } from "openzeppelin/token/ERC20/IERC20.sol"; import { IERC4626 } from "openzeppelin/token/ERC20/extensions/ERC4626.sol"; -import { Claim, Claimer, IVault } from "v5-vrgda-claimer/Claimer.sol"; +import { Claimer } from "v5-vrgda-claimer/Claimer.sol"; import { PrizePool } from "v5-prize-pool/PrizePool.sol"; import { LiquidationPair } from "v5-liquidator/LiquidationPair.sol"; import { LiquidationRouter } from "v5-liquidator/LiquidationRouter.sol"; @@ -76,11 +76,9 @@ contract Helpers is Test { Vault _vault, PrizePool _prizePool, address _user, + uint32[] memory _userPrizeIndices, uint8[] memory _tiers ) internal returns (uint256) { - Claim[] memory claims = new Claim[](1); - claims[0] = Claim({ vault: IVault(address(_vault)), winner: _user, tier: _tiers[0] }); - uint32 _drawPeriodSeconds = _prizePool.drawPeriodSeconds(); vm.warp( @@ -91,7 +89,18 @@ contract Helpers is Test { 10 ); - (, uint256 _totalFees) = _claimer.claimPrizes(1, claims, address(this)); + address[] memory _winners = new address[](1); + _winners[0] = _user; + uint32[][] memory _prizeIndices = new uint32[][](1); + _prizeIndices[0] = _userPrizeIndices; + + uint256 _totalFees = _claimer.claimPrizes( + Vault(address(_vault)), + _tiers[0], + _winners, + _prizeIndices, + address(this) + ); return _totalFees; } diff --git a/test/utils/IntegrationBaseSetup.t.sol b/test/utils/IntegrationBaseSetup.t.sol index 432f161..bed8fcd 100644 --- a/test/utils/IntegrationBaseSetup.t.sol +++ b/test/utils/IntegrationBaseSetup.t.sol @@ -5,11 +5,11 @@ import "forge-std/Test.sol"; import { ERC20Mock } from "openzeppelin/mocks/ERC20Mock.sol"; import { IERC20 } from "openzeppelin/token/ERC20/IERC20.sol"; -import { PrizePool, SD59x18 } from "v5-prize-pool/PrizePool.sol"; +import { PrizePool, ConstructorParams, SD59x18 } from "v5-prize-pool/PrizePool.sol"; import { ud2x18 } from "prb-math/UD2x18.sol"; import { sd1x18 } from "prb-math/SD1x18.sol"; import { TwabController } from "v5-twab-controller/TwabController.sol"; -import { Claimer, IVault } from "v5-vrgda-claimer/Claimer.sol"; +import { Claimer } from "v5-vrgda-claimer/Claimer.sol"; import { ILiquidationSource } from "v5-liquidator/interfaces/ILiquidationSource.sol"; import { LiquidationPair } from "v5-liquidator/LiquidationPair.sol"; import { LiquidationPairFactory } from "v5-liquidator/LiquidationPairFactory.sol"; @@ -69,23 +69,26 @@ contract IntegrationBaseSetup is Test { underlyingAsset = new ERC20Mock(); prizeToken = new ERC20Mock(); - twabController = new TwabController(); + twabController = new TwabController(1 days, 0); prizePool = new PrizePool( - prizeToken, - twabController, - uint32(365), // grand prize should occur once a year - drawPeriodSeconds, // drawPeriodSeconds - uint64(block.timestamp), // drawStartedAt - uint8(2), // minimum number of tiers - 100, - 10, - 10, - ud2x18(0.9e18), // claim threshold of 90% - sd1x18(0.9e18) // alpha + ConstructorParams( + prizeToken, + twabController, + address(0), + uint16(365), // grand prize should occur once a year + drawPeriodSeconds, // drawPeriodSeconds + uint64(block.timestamp), // drawStartedAt + uint8(3), // minimum number of tiers + 100, + 10, + 10, + ud2x18(0.9e18), // claim threshold of 90% + sd1x18(0.9e18) // alpha + ) ); - prizePool.setManager(address(this)); + prizePool.setDrawManager(address(this)); claimer = new Claimer(prizePool, 0.0001e18, 1000e18, drawPeriodSeconds, ud2x18(0.5e18)); From 47878b96e1204d8922500c507d3f8cf3ada0eaac Mon Sep 17 00:00:00 2001 From: midpoint68 Date: Fri, 23 Jun 2023 21:07:44 -0400 Subject: [PATCH 3/5] add TwabController constructor parameters --- script/deploy/DeployPool.s.sol | 2 +- test/utils/ForkBaseSetup.t.sol | 2 +- test/utils/IntegrationBaseSetup.t.sol | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/script/deploy/DeployPool.s.sol b/script/deploy/DeployPool.s.sol index 69d2fc3..ef5c79b 100644 --- a/script/deploy/DeployPool.s.sol +++ b/script/deploy/DeployPool.s.sol @@ -26,7 +26,7 @@ contract DeployPool is Helpers { vm.startBroadcast(vm.envUint("PRIVATE_KEY")); ERC20Mintable prizeToken = _getToken("POOL", _tokenDeployPath); - TwabController twabController = new TwabController(1 days, 0); + TwabController twabController = new TwabController(1 days, uint32(block.timestamp)); PrizePool prizePool = new PrizePool( ConstructorParams( diff --git a/test/utils/ForkBaseSetup.t.sol b/test/utils/ForkBaseSetup.t.sol index cce177c..464bb0d 100644 --- a/test/utils/ForkBaseSetup.t.sol +++ b/test/utils/ForkBaseSetup.t.sol @@ -74,7 +74,7 @@ contract ForkBaseSetup is Test { prizeTokenAddress = address(0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e); // POOL token on Ethereum prizeToken = IERC20(prizeTokenAddress); - twabController = new TwabController(1 days, 0); + twabController = new TwabController(1 days, uint32(block.timestamp)); uint64 drawStartsAt = uint64(block.timestamp); diff --git a/test/utils/IntegrationBaseSetup.t.sol b/test/utils/IntegrationBaseSetup.t.sol index bed8fcd..89c5ace 100644 --- a/test/utils/IntegrationBaseSetup.t.sol +++ b/test/utils/IntegrationBaseSetup.t.sol @@ -69,7 +69,7 @@ contract IntegrationBaseSetup is Test { underlyingAsset = new ERC20Mock(); prizeToken = new ERC20Mock(); - twabController = new TwabController(1 days, 0); + twabController = new TwabController(1 days, uint32(block.timestamp)); prizePool = new PrizePool( ConstructorParams( From d948c914ac602b00fde09ed8e9aa7bf3dbf28b42 Mon Sep 17 00:00:00 2001 From: midpoint68 Date: Fri, 23 Jun 2023 21:20:44 -0400 Subject: [PATCH 4/5] add approximation to tests with rounding issues --- test/fork/morpho/Deposit.t.sol | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/test/fork/morpho/Deposit.t.sol b/test/fork/morpho/Deposit.t.sol index 1f10e84..58dc9b2 100644 --- a/test/fork/morpho/Deposit.t.sol +++ b/test/fork/morpho/Deposit.t.sol @@ -39,7 +39,7 @@ contract DepositMorphoForkTest is ForkBaseSetup, Helpers { uint256 _shares = _deposit(underlyingAsset, vault, _amount, alice); assertEq(vault.balanceOf(alice), _shares); - assertEq(vault.convertToAssets(vault.balanceOf(alice)), _amount); + assertApproxEqAbs(vault.convertToAssets(vault.balanceOf(alice)), _amount, 1000); // approximate to cover rounding in `convertToAssets` function assertEq(twabController.balanceOf(address(vault), alice), _amount); assertEq(twabController.delegateBalanceOf(address(vault), alice), _amount); @@ -48,9 +48,10 @@ contract DepositMorphoForkTest is ForkBaseSetup, Helpers { assertApproxEqAbs(aToken.balanceOf(morphoPoolAddress), _aTokenBalanceBefore + _amount, 1); } else { // Part of the USDC variable debt is repayed - assertEq( + assertApproxEqAbs( variableDebtToken.balanceOf(morphoPoolAddress), - _variableDebtTokenBalanceBefore - _amount + _variableDebtTokenBalanceBefore - _amount, + 1 ); } @@ -71,7 +72,7 @@ contract DepositMorphoForkTest is ForkBaseSetup, Helpers { uint256 _shares = _sponsor(underlyingAsset, vault, _amount, alice); assertEq(vault.balanceOf(alice), _shares); - assertEq(vault.convertToAssets(vault.balanceOf(alice)), _amount); + assertApproxEqAbs(vault.convertToAssets(vault.balanceOf(alice)), _amount, 1000); // approximate to cover rounding in `convertToAssets` function assertEq(twabController.balanceOf(address(vault), alice), _amount); assertEq(twabController.delegateBalanceOf(address(vault), alice), 0); @@ -83,9 +84,10 @@ contract DepositMorphoForkTest is ForkBaseSetup, Helpers { assertApproxEqAbs(aToken.balanceOf(morphoPoolAddress), _aTokenBalanceBefore + _amount, 1); } else { // Part of the USDC variable debt is repayed - assertEq( + assertApproxEqAbs( variableDebtToken.balanceOf(morphoPoolAddress), - _variableDebtTokenBalanceBefore - _amount + _variableDebtTokenBalanceBefore - _amount, + 1 ); } @@ -108,7 +110,7 @@ contract DepositMorphoForkTest is ForkBaseSetup, Helpers { twabController.delegate(address(vault), bob); assertEq(vault.balanceOf(alice), _shares); - assertEq(vault.convertToAssets(vault.balanceOf(alice)), _amount); + assertApproxEqAbs(vault.convertToAssets(vault.balanceOf(alice)), _amount, 1000); // approximate to cover rounding in `convertToAssets` function assertEq(twabController.balanceOf(address(vault), alice), _amount); assertEq(twabController.delegateBalanceOf(address(vault), alice), 0); @@ -120,9 +122,10 @@ contract DepositMorphoForkTest is ForkBaseSetup, Helpers { assertApproxEqAbs(aToken.balanceOf(morphoPoolAddress), _aTokenBalanceBefore + _amount, 1); } else { // Part of the USDC variable debt is repayed - assertEq( + assertApproxEqAbs( variableDebtToken.balanceOf(morphoPoolAddress), - _variableDebtTokenBalanceBefore - _amount + _variableDebtTokenBalanceBefore - _amount, + 1 ); } From 96e9675c16d6a7e1ab870a394ad387bc2b8cb33a Mon Sep 17 00:00:00 2001 From: midpoint68 Date: Fri, 23 Jun 2023 21:42:38 -0400 Subject: [PATCH 5/5] update sepolia contract lists --- deployments/ethSepolia/contracts.json | 3852 ++++++++++++++++++------- deployments/ethSepolia/vaults.json | 30 +- 2 files changed, 2773 insertions(+), 1109 deletions(-) diff --git a/deployments/ethSepolia/contracts.json b/deployments/ethSepolia/contracts.json index a2069e1..d815953 100644 --- a/deployments/ethSepolia/contracts.json +++ b/deployments/ethSepolia/contracts.json @@ -5,11 +5,11 @@ "minor": 0, "patch": 0 }, - "timestamp": "2023-06-02T18:41:11.308Z", + "timestamp": "2023-06-24T01:40:07.035Z", "contracts": [ { "chainId": 11155111, - "address": "0x9464506e291b6AD228F1B448cF16B33caDF1d0E2", + "address": "0x0EBA4e7003F80AD550Fe61aF7851f4fe49036B33", "version": { "major": 1, "minor": 0, @@ -361,7 +361,7 @@ }, { "chainId": 11155111, - "address": "0x7c01a0343595403422190C6Af9a3342c8b2Dc4C7", + "address": "0x7De5077DfA7B87038710c3782d1Dfd76261562BC", "version": { "major": 1, "minor": 0, @@ -386,7 +386,7 @@ }, { "chainId": 11155111, - "address": "0x4a798649F6AA23D6a3a1cab65fc0a8fa772E0a40", + "address": "0xB20Ff9fe4065CC1494dFa3A273A527A05871074F", "version": { "major": 1, "minor": 0, @@ -976,7 +976,7 @@ }, { "chainId": 11155111, - "address": "0x7A8f1413B44F7346EAb36c4793Bd54148Ca916A5", + "address": "0x59D6b2E784f45568a76b9627De97e06Fc237DA83", "version": { "major": 1, "minor": 0, @@ -1566,7 +1566,7 @@ }, { "chainId": 11155111, - "address": "0x6EBa7deCd74D8327FA83b7Edc6Cb1dEADDfD8EFA", + "address": "0x73b3f9fecf92b4f0Eb6a20c977cBb30964858fD7", "version": { "major": 1, "minor": 0, @@ -2156,7 +2156,7 @@ }, { "chainId": 11155111, - "address": "0xbdaAB70E7d8767e94680AD2D27B503daE01447A4", + "address": "0xf78De71CF358a92AeE3370A7a3B743bF63c257d4", "version": { "major": 1, "minor": 0, @@ -2746,7 +2746,7 @@ }, { "chainId": 11155111, - "address": "0x07056BA1bD5D71AA743F33Aa3A7BB76f08834873", + "address": "0x62739A657d3bB724694b46B35795532EC9B42b47", "version": { "major": 1, "minor": 0, @@ -3336,7 +3336,7 @@ }, { "chainId": 11155111, - "address": "0x21925199568C8bd5623622FF31d719749f920A8D", + "address": "0x09f06F4BC026fB75E0064747edd49D371D20D434", "version": { "major": 1, "minor": 0, @@ -3926,7 +3926,7 @@ }, { "chainId": 11155111, - "address": "0xd037f82EE26D0160843E7Ba4848513Abac956301", + "address": "0x21A7c83D23d75b5eA80115974e3473fc35B1f263", "version": { "major": 1, "minor": 0, @@ -3934,6 +3934,75 @@ }, "type": "TwabController", "abi": [ + { + "inputs": [ + { + "internalType": "uint32", + "name": "_periodLength", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "_periodOffset", + "type": "uint32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint112", + "name": "balance", + "type": "uint112" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "string", + "name": "message", + "type": "string" + } + ], + "name": "BalanceLTAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint112", + "name": "delegateBalance", + "type": "uint112" + }, + { + "internalType": "uint96", + "name": "delegateAmount", + "type": "uint96" + }, + { + "internalType": "string", + "name": "message", + "type": "string" + } + ], + "name": "DelegateBalanceLTAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegate", + "type": "address" + } + ], + "name": "SameDelegateAlreadySet", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -4185,6 +4254,32 @@ "name": "TotalSupplyObservationRecorded", "type": "event" }, + { + "inputs": [], + "name": "PERIOD_LENGTH", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERIOD_OFFSET", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "SPONSORSHIP_ADDRESS", @@ -4600,7 +4695,7 @@ "type": "uint32" } ], - "stateMutability": "pure", + "stateMutability": "view", "type": "function" }, { @@ -4972,7 +5067,7 @@ }, { "chainId": 11155111, - "address": "0xC5a77bcb8cD13c5619153d46fB7379c9158a8884", + "address": "0xA377A589C1957D7777F6eDF1b7C22C911a56e90F", "version": { "major": 1, "minor": 0, @@ -4983,64 +5078,81 @@ { "inputs": [ { - "internalType": "contract IERC20", - "name": "_prizeToken", - "type": "address" - }, - { - "internalType": "contract TwabController", - "name": "_twabController", - "type": "address" - }, - { - "internalType": "uint32", - "name": "_grandPrizePeriodDraws", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "_drawPeriodSeconds", - "type": "uint32" - }, - { - "internalType": "uint64", - "name": "nextDrawStartsAt_", - "type": "uint64" - }, - { - "internalType": "uint8", - "name": "_numberOfTiers", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "_tierShares", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "_canaryShares", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "_reserveShares", - "type": "uint8" - }, - { - "internalType": "UD2x18", - "name": "_claimExpansionThreshold", - "type": "uint64" - }, - { - "internalType": "SD1x18", - "name": "_smoothing", - "type": "int64" + "components": [ + { + "internalType": "contract IERC20", + "name": "prizeToken", + "type": "address" + }, + { + "internalType": "contract TwabController", + "name": "twabController", + "type": "address" + }, + { + "internalType": "address", + "name": "drawManager", + "type": "address" + }, + { + "internalType": "uint16", + "name": "grandPrizePeriodDraws", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "drawPeriodSeconds", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "firstDrawStartsAt", + "type": "uint64" + }, + { + "internalType": "uint8", + "name": "numberOfTiers", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "tierShares", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "canaryShares", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "reserveShares", + "type": "uint8" + }, + { + "internalType": "UD2x18", + "name": "claimExpansionThreshold", + "type": "uint64" + }, + { + "internalType": "SD1x18", + "name": "smoothing", + "type": "int64" + } + ], + "internalType": "struct ConstructorParams", + "name": "params", + "type": "tuple" } ], "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "name": "AddToDrawZero", + "type": "error" + }, { "inputs": [ { @@ -5060,19 +5172,24 @@ { "inputs": [ { - "internalType": "uint112", - "name": "requestedLiquidity", - "type": "uint112" + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "drawManager", + "type": "address" } ], - "name": "InsufficientLiquidity", + "name": "CallerNotDrawManager", "type": "error" }, { "inputs": [ { "internalType": "uint256", - "name": "requested", + "name": "amount", "type": "uint256" }, { @@ -5081,77 +5198,263 @@ "type": "uint256" } ], - "name": "InsufficientRewardsError", + "name": "ContributionGTDeltaBalance", "type": "error" }, { "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + }, + { + "internalType": "address", + "name": "vault", + "type": "address" + }, { "internalType": "uint8", - "name": "numTiers", + "name": "tier", "type": "uint8" + }, + { + "internalType": "uint32", + "name": "prizeIndex", + "type": "uint32" } ], - "name": "NumberOfTiersLessThanMinimum", + "name": "DidNotWin", "type": "error" }, { "inputs": [ { - "internalType": "uint256", - "name": "x", - "type": "uint256" + "internalType": "uint16", + "name": "drawId", + "type": "uint16" }, { - "internalType": "uint256", - "name": "y", - "type": "uint256" + "internalType": "uint16", + "name": "newestDrawId", + "type": "uint16" } ], - "name": "PRBMath_MulDiv18_Overflow", + "name": "DrawClosed", + "type": "error" + }, + { + "inputs": [], + "name": "DrawManagerAlreadySet", "type": "error" }, { "inputs": [ { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, + "internalType": "uint64", + "name": "drawEndsAt", + "type": "uint64" + } + ], + "name": "DrawNotFinished", + "type": "error" + }, + { + "inputs": [ { "internalType": "uint256", - "name": "y", + "name": "fee", "type": "uint256" }, { "internalType": "uint256", - "name": "denominator", + "name": "maxFee", "type": "uint256" } ], - "name": "PRBMath_MulDiv_Overflow", + "name": "FeeTooLarge", "type": "error" }, { "inputs": [ { - "internalType": "SD59x18", - "name": "x", - "type": "int256" + "internalType": "uint104", + "name": "requestedLiquidity", + "type": "uint104" } ], - "name": "PRBMath_SD59x18_Ceil_Overflow", + "name": "InsufficientLiquidity", "type": "error" }, { "inputs": [ { - "internalType": "int256", - "name": "x", - "type": "int256" + "internalType": "uint104", + "name": "amount", + "type": "uint104" + }, + { + "internalType": "uint104", + "name": "reserve", + "type": "uint104" } ], - "name": "PRBMath_SD59x18_Convert_Overflow", + "name": "InsufficientReserve", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requested", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "available", + "type": "uint256" + } + ], + "name": "InsufficientRewardsError", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "endDrawId", + "type": "uint16" + } + ], + "name": "InvalidDisbursedEndDrawId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "startDrawId", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "endDrawId", + "type": "uint16" + } + ], + "name": "InvalidDrawRange", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "invalidPrizeIndex", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "prizeCount", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "tier", + "type": "uint8" + } + ], + "name": "InvalidPrizeIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "tier", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "numberOfTiers", + "type": "uint8" + } + ], + "name": "InvalidTier", + "type": "error" + }, + { + "inputs": [], + "name": "NoCompletedDraw", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "numTiers", + "type": "uint8" + } + ], + "name": "NumberOfTiersLessThanMinimum", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + } + ], + "name": "PRBMath_MulDiv18_Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "denominator", + "type": "uint256" + } + ], + "name": "PRBMath_MulDiv_Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "SD59x18", + "name": "x", + "type": "int256" + } + ], + "name": "PRBMath_SD59x18_Ceil_Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "x", + "type": "int256" + } + ], + "name": "PRBMath_SD59x18_Convert_Overflow", "type": "error" }, { @@ -5251,15 +5554,36 @@ "name": "PRBMath_UD60x18_Convert_Overflow", "type": "error" }, + { + "inputs": [], + "name": "RandomNumberIsZero", + "type": "error" + }, { "inputs": [ { - "internalType": "UD60x18", - "name": "x", - "type": "uint256" + "internalType": "int64", + "name": "smoothing", + "type": "int64" + } + ], + "name": "SmoothingGTEOne", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "numWinners", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "numPrizeLists", + "type": "uint128" } ], - "name": "PRBMath_UD60x18_IntoSD59x18_Overflow", + "name": "WinnerPrizeMismatch", "type": "error" }, { @@ -5267,9 +5591,9 @@ "inputs": [ { "indexed": true, - "internalType": "uint32", + "internalType": "uint16", "name": "drawId", - "type": "uint32" + "type": "uint16" }, { "indexed": true, @@ -5295,12 +5619,6 @@ "name": "payout", "type": "uint152" }, - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, { "indexed": false, "internalType": "uint96", @@ -5323,17 +5641,54 @@ { "indexed": true, "internalType": "address", - "name": "previousManager", + "name": "vault", "type": "address" }, { "indexed": true, - "internalType": "address", - "name": "newManager", - "type": "address" + "internalType": "uint16", + "name": "drawId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "ContributePrizeTokens", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint16", + "name": "drawId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "winningRandomNumber", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "numTiers", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "nextNumTiers", + "type": "uint8" } ], - "name": "ManagerTransferred", + "name": "DrawCompleted", "type": "event" }, { @@ -5342,11 +5697,11 @@ { "indexed": true, "internalType": "address", - "name": "pendingOwner", + "name": "drawManager", "type": "address" } ], - "name": "OwnershipOffered", + "name": "DrawManagerSet", "type": "event" }, { @@ -5355,17 +5710,42 @@ { "indexed": true, "internalType": "address", - "name": "previousOwner", + "name": "to", "type": "address" }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "available", + "type": "uint256" + } + ], + "name": "WithdrawClaimRewards", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { "indexed": true, "internalType": "address", - "name": "newOwner", + "name": "to", "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "name": "OwnershipTransferred", + "name": "WithdrawReserve", "type": "event" }, { @@ -5408,26 +5788,7 @@ "type": "uint8" } ], - "name": "calculatePrizeSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "_tier", - "type": "uint8" - } - ], - "name": "calculateTierTwabTimestamps", + "name": "calculateTierTwabTimestamps", "outputs": [ { "internalType": "uint64", @@ -5546,33 +5907,26 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ - { - "internalType": "address", - "name": "_winner", - "type": "address" - }, { "internalType": "uint8", "name": "_tier", "type": "uint8" }, { - "internalType": "address", - "name": "_to", - "type": "address" + "internalType": "address[]", + "name": "_winners", + "type": "address[]" + }, + { + "internalType": "uint32[][]", + "name": "_prizeIndices", + "type": "uint32[][]" }, { "internalType": "uint96", - "name": "_fee", + "name": "_feePerPrizeClaim", "type": "uint96" }, { @@ -5581,7 +5935,7 @@ "type": "address" } ], - "name": "claimPrize", + "name": "claimPrizes", "outputs": [ { "internalType": "uint256", @@ -5603,9 +5957,9 @@ "name": "completeAndStartNextDraw", "outputs": [ { - "internalType": "uint32", + "internalType": "uint16", "name": "", - "type": "uint32" + "type": "uint16" } ], "stateMutability": "nonpayable", @@ -5635,6 +5989,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "drawManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "drawPeriodSeconds", @@ -5688,14 +6055,14 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "uint16", "name": "_startDrawIdInclusive", - "type": "uint32" + "type": "uint16" }, { - "internalType": "uint32", + "internalType": "uint16", "name": "_endDrawIdInclusive", - "type": "uint32" + "type": "uint16" } ], "name": "getContributedBetween", @@ -5727,9 +6094,9 @@ "name": "getNextDrawId", "outputs": [ { - "internalType": "uint256", + "internalType": "uint16", "name": "", - "type": "uint256" + "type": "uint16" } ], "stateMutability": "view", @@ -5763,6 +6130,25 @@ } ], "name": "getTierAccrualDurationInDraws", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "_tier", + "type": "uint8" + } + ], + "name": "getTierPrizeCount", "outputs": [ { "internalType": "uint32", @@ -5781,28 +6167,28 @@ "type": "uint8" } ], - "name": "getTierPrizeCount", + "name": "getTierPrizeSize", "outputs": [ { - "internalType": "uint256", + "internalType": "uint96", "name": "", - "type": "uint256" + "type": "uint96" } ], - "stateMutability": "pure", + "stateMutability": "view", "type": "function" }, { "inputs": [ { - "internalType": "uint32", + "internalType": "uint16", "name": "_startDrawIdInclusive", - "type": "uint32" + "type": "uint16" }, { - "internalType": "uint32", + "internalType": "uint16", "name": "_endDrawIdInclusive", - "type": "uint32" + "type": "uint16" } ], "name": "getTotalContributedBetween", @@ -5850,14 +6236,14 @@ "type": "address" }, { - "internalType": "uint32", - "name": "startDrawId", - "type": "uint32" + "internalType": "uint16", + "name": "_startDrawId", + "type": "uint16" }, { - "internalType": "uint32", - "name": "endDrawId", - "type": "uint32" + "internalType": "uint16", + "name": "_endDrawId", + "type": "uint16" } ], "name": "getVaultPortion", @@ -5923,9 +6309,9 @@ "name": "grandPrizePeriodDraws", "outputs": [ { - "internalType": "uint32", + "internalType": "uint16", "name": "", - "type": "uint32" + "type": "uint16" } ], "stateMutability": "view", @@ -5960,6 +6346,11 @@ "internalType": "uint8", "name": "_tier", "type": "uint8" + }, + { + "internalType": "uint32", + "name": "_prizeIndex", + "type": "uint32" } ], "name": "isWinner", @@ -5988,7 +6379,7 @@ }, { "inputs": [], - "name": "lastCompletedDrawStartedAt", + "name": "lastCompletedDrawAwardedAt", "outputs": [ { "internalType": "uint64", @@ -6001,34 +6392,28 @@ }, { "inputs": [], - "name": "manager", + "name": "lastCompletedDrawEndedAt", "outputs": [ { - "internalType": "address", + "internalType": "uint64", "name": "", - "type": "address" + "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { - "inputs": [ - { - "internalType": "bytes[]", - "name": "data", - "type": "bytes[]" - } - ], - "name": "multicall", + "inputs": [], + "name": "lastCompletedDrawStartedAt", "outputs": [ { - "internalType": "bytes[]", - "name": "results", - "type": "bytes[]" + "internalType": "uint64", + "name": "", + "type": "uint64" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { @@ -6070,32 +6455,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "prizeToken", @@ -6122,13 +6481,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "reserve", @@ -6172,18 +6524,12 @@ "inputs": [ { "internalType": "address", - "name": "_newManager", + "name": "_drawManager", "type": "address" } ], - "name": "setManager", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], + "name": "setDrawManager", + "outputs": [], "stateMutability": "nonpayable", "type": "function" }, @@ -6226,19 +6572,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "twabController", @@ -6263,6 +6596,11 @@ "internalType": "uint8", "name": "_tier", "type": "uint8" + }, + { + "internalType": "uint32", + "name": "_prizeIndex", + "type": "uint32" } ], "name": "wasClaimed", @@ -6316,7 +6654,7 @@ }, { "chainId": 11155111, - "address": "0x2cf5A98a21f90Db59323e27156F9B3090273ac5D", + "address": "0x28781b60C9b3FE86c3018EBb9650766ea08673f5", "version": { "major": 1, "minor": 0, @@ -6355,11 +6693,6 @@ "stateMutability": "nonpayable", "type": "constructor" }, - { - "inputs": [], - "name": "DrawInvalid", - "type": "error" - }, { "inputs": [ { @@ -6443,31 +6776,24 @@ { "inputs": [ { - "internalType": "uint256", - "name": "drawId", - "type": "uint256" + "internalType": "contract Vault", + "name": "vault", + "type": "address" }, { - "components": [ - { - "internalType": "contract IVault", - "name": "vault", - "type": "address" - }, - { - "internalType": "address", - "name": "winner", - "type": "address" - }, - { - "internalType": "uint8", - "name": "tier", - "type": "uint8" - } - ], - "internalType": "struct Claim[]", - "name": "_claims", - "type": "tuple[]" + "internalType": "uint8", + "name": "tier", + "type": "uint8" + }, + { + "internalType": "address[]", + "name": "winners", + "type": "address[]" + }, + { + "internalType": "uint32[][]", + "name": "prizeIndices", + "type": "uint32[][]" }, { "internalType": "address", @@ -6477,11 +6803,6 @@ ], "name": "claimPrizes", "outputs": [ - { - "internalType": "uint256", - "name": "claimCount", - "type": "uint256" - }, { "internalType": "uint256", "name": "totalFees", @@ -6492,27 +6813,19 @@ "type": "function" }, { - "inputs": [], - "name": "computeMaxFee", - "outputs": [ + "inputs": [ { "internalType": "uint256", - "name": "", + "name": "_maxFee", "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ + }, { "internalType": "uint256", "name": "_claimCount", "type": "uint256" } ], - "name": "computeTotalFees", + "name": "computeFeePerClaim", "outputs": [ { "internalType": "uint256", @@ -6524,13 +6837,56 @@ "type": "function" }, { - "inputs": [], - "name": "decayConstant", + "inputs": [ + { + "internalType": "uint8", + "name": "_tier", + "type": "uint8" + } + ], + "name": "computeMaxFee", "outputs": [ { - "internalType": "SD59x18", + "internalType": "uint256", "name": "", - "type": "int256" + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "_tier", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "_claimCount", + "type": "uint256" + } + ], + "name": "computeTotalFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decayConstant", + "outputs": [ + { + "internalType": "SD59x18", + "name": "", + "type": "int256" } ], "stateMutability": "view", @@ -6593,12 +6949,25 @@ ], "stateMutability": "view", "type": "function" + }, + { + "inputs": [], + "name": "timeToReachMaxFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" } ] }, { "chainId": 11155111, - "address": "0x32C45E4596931eC5900eA4D2703E7CF961Ce2ad6", + "address": "0x59Ba766ff229c21b97184647292706039aF63dA1", "version": { "major": 1, "minor": 0, @@ -6776,7 +7145,7 @@ }, { "chainId": 11155111, - "address": "0xF7eB1E290D88322180293D187e1f01FBCD2Fb76f", + "address": "0x2C5bD053eA3D51a390Bfa0f88d064e211485037B", "version": { "major": 1, "minor": 0, @@ -6880,7 +7249,7 @@ }, { "chainId": 11155111, - "address": "0x3428e7fA4c91aFACb40B258A1ba8dBCF2FB0b4EA", + "address": "0x6D8c6c9408C7073b17Acb7bA1eBc541fb57c1aef", "version": { "major": 1, "minor": 0, @@ -7854,7 +8223,7 @@ }, { "chainId": 11155111, - "address": "0x8b7fBF3B9CD7AfD0fFC73Fb6EBaCfb627Ea2eBad", + "address": "0xDE352b8556c1dbF3F1E3F49fdE5c5961fF17C2a3", "version": { "major": 1, "minor": 0, @@ -8828,7 +9197,7 @@ }, { "chainId": 11155111, - "address": "0xAc3b788d614a43Dc2fD5e8DCDd896b2c44AD4E25", + "address": "0x7C77fE5a4261fe27e9219410c65f9d42747e5F69", "version": { "major": 1, "minor": 0, @@ -9802,7 +10171,7 @@ }, { "chainId": 11155111, - "address": "0x366147C73E070F7C70fE6021c27081646c0a2e7d", + "address": "0x47d031Ddb80cC7a0a10d684eFd01b6Be76f0E391", "version": { "major": 1, "minor": 0, @@ -10776,7 +11145,7 @@ }, { "chainId": 11155111, - "address": "0x61682FBA8394970CE014bcDE8ae0eC149c29757c", + "address": "0xf33E8ECD7518e5E464ecB0FB94aE4Fc2f39adB5B", "version": { "major": 1, "minor": 0, @@ -11750,7 +12119,7 @@ }, { "chainId": 11155111, - "address": "0xD1f46c4A4fe6f2983220271dbF13E4bBc384e551", + "address": "0xfC29e757A2D1f66649De91e9225F36AB6c1BD44d", "version": { "major": 1, "minor": 0, @@ -12724,7 +13093,7 @@ }, { "chainId": 11155111, - "address": "0x06a36F610682e20BEF9F02C5A2530B1c2A36E862", + "address": "0x4D07Ba104ff254c19B443aDE6224f744Db84FB8A", "version": { "major": 1, "minor": 0, @@ -13698,7 +14067,7 @@ }, { "chainId": 11155111, - "address": "0x0C393C363bAE8Eebe6E1Afe4716e317CbD2E9949", + "address": "0x06B36307e4dA41F0C42efb7d7AbC02Df0c8b5c49", "version": { "major": 1, "minor": 0, @@ -13762,171 +14131,394 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "claimer", + "type": "address" + } + ], + "name": "CallerNotClaimer", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "DepositMoreThanMax", + "type": "error" + }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, + { + "inputs": [], + "name": "LPZeroAddress", + "type": "error" + }, { "inputs": [ { - "internalType": "string", - "name": "str", - "type": "string" + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "availableYield", + "type": "uint256" } ], - "name": "StringTooLong", + "name": "LiquidationAmountOutGTYield", + "type": "error" + }, + { + "inputs": [], + "name": "LiquidationAmountOutZero", "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "owner", + "name": "caller", "type": "address" }, { - "indexed": true, "internalType": "address", - "name": "spender", + "name": "liquidationPair", "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" } ], - "name": "Approval", - "type": "event" + "name": "LiquidationCallerNotLP", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": false, "internalType": "address", - "name": "user", + "name": "tokenIn", "type": "address" }, { - "indexed": false, - "internalType": "bool", - "name": "status", - "type": "bool" + "internalType": "address", + "name": "prizeToken", + "type": "address" } ], - "name": "AutoClaimDisabled", - "type": "event" + "name": "LiquidationTokenInNotPrizeToken", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": false, - "internalType": "contract Claimer", - "name": "previousClaimer", + "internalType": "address", + "name": "tokenOut", "type": "address" }, { - "indexed": false, - "internalType": "contract Claimer", - "name": "newClaimer", + "internalType": "address", + "name": "vaultShare", "type": "address" } ], - "name": "ClaimerSet", - "type": "event" + "name": "LiquidationTokenOutNotVaultShare", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { "internalType": "address", - "name": "sender", + "name": "receiver", "type": "address" }, { - "indexed": true, + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "MintGTMax", + "type": "error" + }, + { + "inputs": [], + "name": "OwnerZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "PrizePoolZeroAddress", + "type": "error" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, { - "indexed": false, "internalType": "uint256", - "name": "assets", + "name": "amount", "type": "uint256" }, { - "indexed": false, "internalType": "uint256", - "name": "shares", + "name": "max", "type": "uint256" } ], - "name": "Deposit", - "type": "event" + "name": "RedeemMoreThanMax", + "type": "error" }, { - "anonymous": false, - "inputs": [], - "name": "EIP712DomainChanged", - "type": "event" + "inputs": [ + { + "internalType": "string", + "name": "str", + "type": "string" + } + ], + "name": "StringTooLong", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": false, - "internalType": "contract LiquidationPair", - "name": "newLiquidationPair", + "internalType": "address", + "name": "token", "type": "address" } ], - "name": "LiquidationPairSet", - "type": "event" + "name": "TargetTokenNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "TwabControllerZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "VaultUnderCollateralized", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "caller", + "name": "owner", "type": "address" }, { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" + "internalType": "uint256", + "name": "amount", + "type": "uint256" }, { - "indexed": false, + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "WithdrawMoreThanMax", + "type": "error" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "shares", "type": "uint256" + }, + { + "internalType": "uint256", + "name": "yieldFeeTotalSupply", + "type": "uint256" } ], - "name": "MintYieldFee", - "type": "event" + "name": "YieldFeeGTAvailable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "yieldFeePercentage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feePrecision", + "type": "uint256" + } + ], + "name": "YieldFeePercentageGTPrecision", + "type": "error" + }, + { + "inputs": [], + "name": "YieldVaultZeroAddress", + "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, - "internalType": "contract IERC20", - "name": "asset", + "internalType": "address", + "name": "owner", "type": "address" }, { - "indexed": false, + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract Claimer", + "name": "previousClaimer", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract Claimer", + "name": "newClaimer", + "type": "address" + } + ], + "name": "ClaimerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "EIP712DomainChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract LiquidationPair", + "name": "newLiquidationPair", + "type": "address" + } + ], + "name": "LiquidationPairSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "MintYieldFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "asset", + "type": "address" + }, + { + "indexed": false, "internalType": "string", "name": "name", "type": "string" @@ -14220,25 +14812,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "autoClaimDisabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "availableYieldBalance", @@ -14293,24 +14866,24 @@ }, { "inputs": [ - { - "internalType": "address", - "name": "_winner", - "type": "address" - }, { "internalType": "uint8", "name": "_tier", "type": "uint8" }, { - "internalType": "address", - "name": "_to", - "type": "address" + "internalType": "address[]", + "name": "_winners", + "type": "address[]" + }, + { + "internalType": "uint32[][]", + "name": "_prizes", + "type": "uint32[][]" }, { "internalType": "uint96", - "name": "_claimFee", + "name": "_feePerClaim", "type": "uint96" }, { @@ -14319,7 +14892,7 @@ "type": "address" } ], - "name": "claimPrize", + "name": "claimPrizes", "outputs": [ { "internalType": "uint256", @@ -14486,25 +15059,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_disable", - "type": "bool" - } - ], - "name": "disableAutoClaim", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "eip712Domain", @@ -15423,13 +15977,13 @@ "tokens": [ { "chainId": 11155111, - "address": "0x0C393C363bAE8Eebe6E1Afe4716e317CbD2E9949", + "address": "0x06B36307e4dA41F0C42efb7d7AbC02Df0c8b5c49", "name": "PoolTogether Dai Stablecoin Low Yield Prize Token", "decimals": 18, "symbol": "PTDAILYT", "extensions": { "underlyingAsset": { - "address": "0x4a798649F6AA23D6a3a1cab65fc0a8fa772E0a40", + "address": "0xB20Ff9fe4065CC1494dFa3A273A527A05871074F", "symbol": "DAI", "name": "Dai Stablecoin" } @@ -15439,7 +15993,7 @@ }, { "chainId": 11155111, - "address": "0xB7Dd2a4A31F861E603467Ff64e1baF213abf31aA", + "address": "0x8D2f7af29454531A1Ca9aDCcc0E8e988D79492D0", "version": { "major": 1, "minor": 0, @@ -15791,7 +16345,7 @@ }, { "chainId": 11155111, - "address": "0x171df7a2D8547322de5BA27FD9856B04620A3562", + "address": "0x041a898Bc37129d2D2232163c3374f4077255F74", "version": { "major": 1, "minor": 0, @@ -15855,102 +16409,325 @@ "stateMutability": "nonpayable", "type": "constructor" }, - { - "inputs": [], - "name": "InvalidShortString", - "type": "error" - }, { "inputs": [ { - "internalType": "string", - "name": "str", - "type": "string" + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "claimer", + "type": "address" } ], - "name": "StringTooLong", + "name": "CallerNotClaimer", "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "owner", + "name": "receiver", "type": "address" }, { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" + "internalType": "uint256", + "name": "amount", + "type": "uint256" }, { - "indexed": false, "internalType": "uint256", - "name": "value", + "name": "max", "type": "uint256" } ], - "name": "Approval", - "type": "event" + "name": "DepositMoreThanMax", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidShortString", + "type": "error" + }, + { + "inputs": [], + "name": "LPZeroAddress", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": false, - "internalType": "address", - "name": "user", - "type": "address" + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" }, { - "indexed": false, - "internalType": "bool", - "name": "status", - "type": "bool" + "internalType": "uint256", + "name": "availableYield", + "type": "uint256" } ], - "name": "AutoClaimDisabled", - "type": "event" + "name": "LiquidationAmountOutGTYield", + "type": "error" + }, + { + "inputs": [], + "name": "LiquidationAmountOutZero", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": false, - "internalType": "contract Claimer", - "name": "previousClaimer", + "internalType": "address", + "name": "caller", "type": "address" }, { - "indexed": false, - "internalType": "contract Claimer", - "name": "newClaimer", + "internalType": "address", + "name": "liquidationPair", "type": "address" } ], - "name": "ClaimerSet", - "type": "event" + "name": "LiquidationCallerNotLP", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "sender", + "name": "tokenIn", "type": "address" }, { - "indexed": true, "internalType": "address", - "name": "owner", + "name": "prizeToken", "type": "address" - }, + } + ], + "name": "LiquidationTokenInNotPrizeToken", + "type": "error" + }, + { + "inputs": [ { - "indexed": false, + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "address", + "name": "vaultShare", + "type": "address" + } + ], + "name": "LiquidationTokenOutNotVaultShare", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "MintGTMax", + "type": "error" + }, + { + "inputs": [], + "name": "OwnerZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "PrizePoolZeroAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "RedeemMoreThanMax", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "str", + "type": "string" + } + ], + "name": "StringTooLong", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TargetTokenNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "TwabControllerZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "VaultUnderCollateralized", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "WithdrawMoreThanMax", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "yieldFeeTotalSupply", + "type": "uint256" + } + ], + "name": "YieldFeeGTAvailable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "yieldFeePercentage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feePrecision", + "type": "uint256" + } + ], + "name": "YieldFeePercentageGTPrecision", + "type": "error" + }, + { + "inputs": [], + "name": "YieldVaultZeroAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract Claimer", + "name": "previousClaimer", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract Claimer", + "name": "newClaimer", + "type": "address" + } + ], + "name": "ClaimerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" @@ -16313,25 +17090,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "autoClaimDisabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "availableYieldBalance", @@ -16386,24 +17144,24 @@ }, { "inputs": [ - { - "internalType": "address", - "name": "_winner", - "type": "address" - }, { "internalType": "uint8", "name": "_tier", "type": "uint8" }, { - "internalType": "address", - "name": "_to", - "type": "address" + "internalType": "address[]", + "name": "_winners", + "type": "address[]" + }, + { + "internalType": "uint32[][]", + "name": "_prizes", + "type": "uint32[][]" }, { "internalType": "uint96", - "name": "_claimFee", + "name": "_feePerClaim", "type": "uint96" }, { @@ -16412,7 +17170,7 @@ "type": "address" } ], - "name": "claimPrize", + "name": "claimPrizes", "outputs": [ { "internalType": "uint256", @@ -16579,25 +17337,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_disable", - "type": "bool" - } - ], - "name": "disableAutoClaim", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "eip712Domain", @@ -17516,13 +18255,13 @@ "tokens": [ { "chainId": 11155111, - "address": "0x171df7a2D8547322de5BA27FD9856B04620A3562", + "address": "0x041a898Bc37129d2D2232163c3374f4077255F74", "name": "PoolTogether Dai Stablecoin High Yield Prize Token", "decimals": 18, "symbol": "PTDAIHYT", "extensions": { "underlyingAsset": { - "address": "0x4a798649F6AA23D6a3a1cab65fc0a8fa772E0a40", + "address": "0xB20Ff9fe4065CC1494dFa3A273A527A05871074F", "symbol": "DAI", "name": "Dai Stablecoin" } @@ -17532,7 +18271,7 @@ }, { "chainId": 11155111, - "address": "0x0A896b3b97769546eD428Ef66fCD34A66B00e013", + "address": "0xcB998E913449016a985127aC9f5543Af2F68fb6c", "version": { "major": 1, "minor": 0, @@ -17884,7 +18623,7 @@ }, { "chainId": 11155111, - "address": "0xe288828FFb4087F633E17D4715103648266C0cdb", + "address": "0x0771Ba4b988c66afb02f9AdF21F6E3A14d33C24E", "version": { "major": 1, "minor": 0, @@ -17948,64 +18687,287 @@ "stateMutability": "nonpayable", "type": "constructor" }, - { - "inputs": [], - "name": "InvalidShortString", - "type": "error" - }, { "inputs": [ { - "internalType": "string", - "name": "str", - "type": "string" - } - ], - "name": "StringTooLong", + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "claimer", + "type": "address" + } + ], + "name": "CallerNotClaimer", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "DepositMoreThanMax", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidShortString", + "type": "error" + }, + { + "inputs": [], + "name": "LPZeroAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "availableYield", + "type": "uint256" + } + ], + "name": "LiquidationAmountOutGTYield", + "type": "error" + }, + { + "inputs": [], + "name": "LiquidationAmountOutZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "liquidationPair", + "type": "address" + } + ], + "name": "LiquidationCallerNotLP", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "prizeToken", + "type": "address" + } + ], + "name": "LiquidationTokenInNotPrizeToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "address", + "name": "vaultShare", + "type": "address" + } + ], + "name": "LiquidationTokenOutNotVaultShare", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "MintGTMax", + "type": "error" + }, + { + "inputs": [], + "name": "OwnerZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "PrizePoolZeroAddress", "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { - "indexed": true, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "RedeemMoreThanMax", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "str", + "type": "string" + } + ], + "name": "StringTooLong", + "type": "error" + }, + { + "inputs": [ + { "internalType": "address", - "name": "spender", + "name": "token", + "type": "address" + } + ], + "name": "TargetTokenNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "TwabControllerZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "VaultUnderCollateralized", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", "type": "address" }, { - "indexed": false, "internalType": "uint256", - "name": "value", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", "type": "uint256" } ], - "name": "Approval", - "type": "event" + "name": "WithdrawMoreThanMax", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "yieldFeeTotalSupply", + "type": "uint256" + } + ], + "name": "YieldFeeGTAvailable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "yieldFeePercentage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feePrecision", + "type": "uint256" + } + ], + "name": "YieldFeePercentageGTPrecision", + "type": "error" + }, + { + "inputs": [], + "name": "YieldVaultZeroAddress", + "type": "error" }, { "anonymous": false, "inputs": [ { - "indexed": false, + "indexed": true, "internalType": "address", - "name": "user", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", "type": "address" }, { "indexed": false, - "internalType": "bool", - "name": "status", - "type": "bool" + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], - "name": "AutoClaimDisabled", + "name": "Approval", "type": "event" }, { @@ -18406,25 +19368,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "autoClaimDisabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "availableYieldBalance", @@ -18479,24 +19422,24 @@ }, { "inputs": [ - { - "internalType": "address", - "name": "_winner", - "type": "address" - }, { "internalType": "uint8", "name": "_tier", "type": "uint8" }, { - "internalType": "address", - "name": "_to", - "type": "address" + "internalType": "address[]", + "name": "_winners", + "type": "address[]" + }, + { + "internalType": "uint32[][]", + "name": "_prizes", + "type": "uint32[][]" }, { "internalType": "uint96", - "name": "_claimFee", + "name": "_feePerClaim", "type": "uint96" }, { @@ -18505,7 +19448,7 @@ "type": "address" } ], - "name": "claimPrize", + "name": "claimPrizes", "outputs": [ { "internalType": "uint256", @@ -18672,25 +19615,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_disable", - "type": "bool" - } - ], - "name": "disableAutoClaim", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "eip712Domain", @@ -19609,13 +20533,13 @@ "tokens": [ { "chainId": 11155111, - "address": "0xe288828FFb4087F633E17D4715103648266C0cdb", + "address": "0x0771Ba4b988c66afb02f9AdF21F6E3A14d33C24E", "name": "PoolTogether USD Coin Low Yield Prize Token", "decimals": 6, "symbol": "PTUSDCLYT", "extensions": { "underlyingAsset": { - "address": "0x7A8f1413B44F7346EAb36c4793Bd54148Ca916A5", + "address": "0x59D6b2E784f45568a76b9627De97e06Fc237DA83", "symbol": "USDC", "name": "USD Coin" } @@ -19625,7 +20549,7 @@ }, { "chainId": 11155111, - "address": "0x6cE0913aC773E704D58B3aD737E1FBCDF1f7f61d", + "address": "0x218EB3364fCE798494c81C85CEC72eBa863Cf63f", "version": { "major": 1, "minor": 0, @@ -19977,7 +20901,7 @@ }, { "chainId": 11155111, - "address": "0x0B87bF0822AFAecDEb367cfAaCcf40c0e895F3AD", + "address": "0x0Ec780bE0191f8A364FAccdE91D13BE6F96632bE", "version": { "major": 1, "minor": 0, @@ -20041,11 +20965,174 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "claimer", + "type": "address" + } + ], + "name": "CallerNotClaimer", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "DepositMoreThanMax", + "type": "error" + }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, + { + "inputs": [], + "name": "LPZeroAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "availableYield", + "type": "uint256" + } + ], + "name": "LiquidationAmountOutGTYield", + "type": "error" + }, + { + "inputs": [], + "name": "LiquidationAmountOutZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "liquidationPair", + "type": "address" + } + ], + "name": "LiquidationCallerNotLP", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "prizeToken", + "type": "address" + } + ], + "name": "LiquidationTokenInNotPrizeToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "address", + "name": "vaultShare", + "type": "address" + } + ], + "name": "LiquidationTokenOutNotVaultShare", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "MintGTMax", + "type": "error" + }, + { + "inputs": [], + "name": "OwnerZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "PrizePoolZeroAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "RedeemMoreThanMax", + "type": "error" + }, { "inputs": [ { @@ -20058,47 +21145,107 @@ "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "owner", + "name": "token", "type": "address" - }, + } + ], + "name": "TargetTokenNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "TwabControllerZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "VaultUnderCollateralized", + "type": "error" + }, + { + "inputs": [ { - "indexed": true, "internalType": "address", - "name": "spender", + "name": "owner", "type": "address" }, { - "indexed": false, "internalType": "uint256", - "name": "value", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", "type": "uint256" } ], - "name": "Approval", - "type": "event" + "name": "WithdrawMoreThanMax", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "yieldFeeTotalSupply", + "type": "uint256" + } + ], + "name": "YieldFeeGTAvailable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "yieldFeePercentage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feePrecision", + "type": "uint256" + } + ], + "name": "YieldFeePercentageGTPrecision", + "type": "error" + }, + { + "inputs": [], + "name": "YieldVaultZeroAddress", + "type": "error" }, { "anonymous": false, "inputs": [ { - "indexed": false, + "indexed": true, "internalType": "address", - "name": "user", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", "type": "address" }, { "indexed": false, - "internalType": "bool", - "name": "status", - "type": "bool" + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], - "name": "AutoClaimDisabled", + "name": "Approval", "type": "event" }, { @@ -20500,32 +21647,13 @@ "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "availableYieldBalance", + "outputs": [ { - "internalType": "address", + "internalType": "uint256", "name": "", - "type": "address" - } - ], - "name": "autoClaimDisabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "availableYieldBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" + "type": "uint256" } ], "stateMutability": "view", @@ -20572,24 +21700,24 @@ }, { "inputs": [ - { - "internalType": "address", - "name": "_winner", - "type": "address" - }, { "internalType": "uint8", "name": "_tier", "type": "uint8" }, { - "internalType": "address", - "name": "_to", - "type": "address" + "internalType": "address[]", + "name": "_winners", + "type": "address[]" + }, + { + "internalType": "uint32[][]", + "name": "_prizes", + "type": "uint32[][]" }, { "internalType": "uint96", - "name": "_claimFee", + "name": "_feePerClaim", "type": "uint96" }, { @@ -20598,7 +21726,7 @@ "type": "address" } ], - "name": "claimPrize", + "name": "claimPrizes", "outputs": [ { "internalType": "uint256", @@ -20765,25 +21893,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_disable", - "type": "bool" - } - ], - "name": "disableAutoClaim", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "eip712Domain", @@ -21702,13 +22811,13 @@ "tokens": [ { "chainId": 11155111, - "address": "0x0B87bF0822AFAecDEb367cfAaCcf40c0e895F3AD", + "address": "0x0Ec780bE0191f8A364FAccdE91D13BE6F96632bE", "name": "PoolTogether USD Coin High Yield Prize Token", "decimals": 6, "symbol": "PTUSDCHYT", "extensions": { "underlyingAsset": { - "address": "0x7A8f1413B44F7346EAb36c4793Bd54148Ca916A5", + "address": "0x59D6b2E784f45568a76b9627De97e06Fc237DA83", "symbol": "USDC", "name": "USD Coin" } @@ -21718,7 +22827,7 @@ }, { "chainId": 11155111, - "address": "0xb0Eca9B1b3c1939A8954177eC49Af5832B128553", + "address": "0x1eDe085552A72C5C2317fd46FC550E01414ee09B", "version": { "major": 1, "minor": 0, @@ -22070,7 +23179,7 @@ }, { "chainId": 11155111, - "address": "0xebC5c1257A6DB56d2c3C9466A5271C5Be4FB1397", + "address": "0x8FaF98698e4fF29149a8A9D06Db20E3509F3754b", "version": { "major": 1, "minor": 0, @@ -22134,173 +23243,396 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "claimer", + "type": "address" + } + ], + "name": "CallerNotClaimer", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "DepositMoreThanMax", + "type": "error" + }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, + { + "inputs": [], + "name": "LPZeroAddress", + "type": "error" + }, { "inputs": [ { - "internalType": "string", - "name": "str", - "type": "string" + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "availableYield", + "type": "uint256" } ], - "name": "StringTooLong", + "name": "LiquidationAmountOutGTYield", + "type": "error" + }, + { + "inputs": [], + "name": "LiquidationAmountOutZero", "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "owner", + "name": "caller", "type": "address" }, { - "indexed": true, "internalType": "address", - "name": "spender", + "name": "liquidationPair", "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" } ], - "name": "Approval", - "type": "event" + "name": "LiquidationCallerNotLP", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": false, "internalType": "address", - "name": "user", + "name": "tokenIn", "type": "address" }, { - "indexed": false, - "internalType": "bool", - "name": "status", - "type": "bool" + "internalType": "address", + "name": "prizeToken", + "type": "address" } ], - "name": "AutoClaimDisabled", - "type": "event" + "name": "LiquidationTokenInNotPrizeToken", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": false, - "internalType": "contract Claimer", - "name": "previousClaimer", + "internalType": "address", + "name": "tokenOut", "type": "address" }, { - "indexed": false, - "internalType": "contract Claimer", - "name": "newClaimer", + "internalType": "address", + "name": "vaultShare", "type": "address" } ], - "name": "ClaimerSet", - "type": "event" + "name": "LiquidationTokenOutNotVaultShare", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { "internalType": "address", - "name": "sender", + "name": "receiver", "type": "address" }, { - "indexed": true, + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "MintGTMax", + "type": "error" + }, + { + "inputs": [], + "name": "OwnerZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "PrizePoolZeroAddress", + "type": "error" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, { - "indexed": false, "internalType": "uint256", - "name": "assets", + "name": "amount", "type": "uint256" }, { - "indexed": false, "internalType": "uint256", - "name": "shares", + "name": "max", "type": "uint256" } ], - "name": "Deposit", - "type": "event" + "name": "RedeemMoreThanMax", + "type": "error" }, { - "anonymous": false, - "inputs": [], - "name": "EIP712DomainChanged", - "type": "event" + "inputs": [ + { + "internalType": "string", + "name": "str", + "type": "string" + } + ], + "name": "StringTooLong", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": false, - "internalType": "contract LiquidationPair", - "name": "newLiquidationPair", + "internalType": "address", + "name": "token", "type": "address" } ], - "name": "LiquidationPairSet", - "type": "event" + "name": "TargetTokenNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "TwabControllerZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "VaultUnderCollateralized", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "caller", + "name": "owner", "type": "address" }, { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" + "internalType": "uint256", + "name": "amount", + "type": "uint256" }, { - "indexed": false, + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "WithdrawMoreThanMax", + "type": "error" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "shares", "type": "uint256" + }, + { + "internalType": "uint256", + "name": "yieldFeeTotalSupply", + "type": "uint256" } ], - "name": "MintYieldFee", - "type": "event" + "name": "YieldFeeGTAvailable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "yieldFeePercentage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feePrecision", + "type": "uint256" + } + ], + "name": "YieldFeePercentageGTPrecision", + "type": "error" + }, + { + "inputs": [], + "name": "YieldVaultZeroAddress", + "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, - "internalType": "contract IERC20", - "name": "asset", + "internalType": "address", + "name": "owner", "type": "address" }, { - "indexed": false, - "internalType": "string", - "name": "name", + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract Claimer", + "name": "previousClaimer", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract Claimer", + "name": "newClaimer", + "type": "address" + } + ], + "name": "ClaimerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "EIP712DomainChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract LiquidationPair", + "name": "newLiquidationPair", + "type": "address" + } + ], + "name": "LiquidationPairSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "MintYieldFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", "type": "string" }, { @@ -22592,25 +23924,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "autoClaimDisabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "availableYieldBalance", @@ -22665,24 +23978,24 @@ }, { "inputs": [ - { - "internalType": "address", - "name": "_winner", - "type": "address" - }, { "internalType": "uint8", "name": "_tier", "type": "uint8" }, { - "internalType": "address", - "name": "_to", - "type": "address" + "internalType": "address[]", + "name": "_winners", + "type": "address[]" + }, + { + "internalType": "uint32[][]", + "name": "_prizes", + "type": "uint32[][]" }, { "internalType": "uint96", - "name": "_claimFee", + "name": "_feePerClaim", "type": "uint96" }, { @@ -22691,7 +24004,7 @@ "type": "address" } ], - "name": "claimPrize", + "name": "claimPrizes", "outputs": [ { "internalType": "uint256", @@ -22858,25 +24171,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_disable", - "type": "bool" - } - ], - "name": "disableAutoClaim", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "eip712Domain", @@ -23795,13 +25089,13 @@ "tokens": [ { "chainId": 11155111, - "address": "0xebC5c1257A6DB56d2c3C9466A5271C5Be4FB1397", + "address": "0x8FaF98698e4fF29149a8A9D06Db20E3509F3754b", "name": "PoolTogether Gemini dollar Prize Token", "decimals": 2, "symbol": "PTGUSDT", "extensions": { "underlyingAsset": { - "address": "0x6EBa7deCd74D8327FA83b7Edc6Cb1dEADDfD8EFA", + "address": "0x73b3f9fecf92b4f0Eb6a20c977cBb30964858fD7", "symbol": "GUSD", "name": "Gemini dollar" } @@ -23811,7 +25105,7 @@ }, { "chainId": 11155111, - "address": "0x3B2934DeD25Fb5d4C37fA74a320d6BBC379D0C7B", + "address": "0xbaAf2a638F68e734226F364Bec45098eCB37bB53", "version": { "major": 1, "minor": 0, @@ -24163,7 +25457,7 @@ }, { "chainId": 11155111, - "address": "0x7Ea2e76587962c526B60492bd8342AAe859f1219", + "address": "0xB9c16115DA139a0A6bF2e6d2418a7987cf6DCb83", "version": { "major": 1, "minor": 0, @@ -24227,105 +25521,328 @@ "stateMutability": "nonpayable", "type": "constructor" }, - { - "inputs": [], - "name": "InvalidShortString", - "type": "error" - }, { "inputs": [ { - "internalType": "string", - "name": "str", - "type": "string" + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "claimer", + "type": "address" } ], - "name": "StringTooLong", + "name": "CallerNotClaimer", "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "owner", + "name": "receiver", "type": "address" }, { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" + "internalType": "uint256", + "name": "amount", + "type": "uint256" }, { - "indexed": false, "internalType": "uint256", - "name": "value", + "name": "max", "type": "uint256" } ], - "name": "Approval", - "type": "event" + "name": "DepositMoreThanMax", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidShortString", + "type": "error" + }, + { + "inputs": [], + "name": "LPZeroAddress", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": false, - "internalType": "address", - "name": "user", - "type": "address" + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" }, { - "indexed": false, - "internalType": "bool", - "name": "status", - "type": "bool" + "internalType": "uint256", + "name": "availableYield", + "type": "uint256" } ], - "name": "AutoClaimDisabled", - "type": "event" + "name": "LiquidationAmountOutGTYield", + "type": "error" + }, + { + "inputs": [], + "name": "LiquidationAmountOutZero", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": false, - "internalType": "contract Claimer", - "name": "previousClaimer", + "internalType": "address", + "name": "caller", "type": "address" }, { - "indexed": false, - "internalType": "contract Claimer", - "name": "newClaimer", + "internalType": "address", + "name": "liquidationPair", "type": "address" } ], - "name": "ClaimerSet", - "type": "event" + "name": "LiquidationCallerNotLP", + "type": "error" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "sender", + "name": "tokenIn", "type": "address" }, { - "indexed": true, "internalType": "address", - "name": "owner", + "name": "prizeToken", "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "assets", - "type": "uint256" + } + ], + "name": "LiquidationTokenInNotPrizeToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "address", + "name": "vaultShare", + "type": "address" + } + ], + "name": "LiquidationTokenOutNotVaultShare", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "MintGTMax", + "type": "error" + }, + { + "inputs": [], + "name": "OwnerZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "PrizePoolZeroAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "RedeemMoreThanMax", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "str", + "type": "string" + } + ], + "name": "StringTooLong", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TargetTokenNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "TwabControllerZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "VaultUnderCollateralized", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "WithdrawMoreThanMax", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "yieldFeeTotalSupply", + "type": "uint256" + } + ], + "name": "YieldFeeGTAvailable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "yieldFeePercentage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feePrecision", + "type": "uint256" + } + ], + "name": "YieldFeePercentageGTPrecision", + "type": "error" + }, + { + "inputs": [], + "name": "YieldVaultZeroAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract Claimer", + "name": "previousClaimer", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract Claimer", + "name": "newClaimer", + "type": "address" + } + ], + "name": "ClaimerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "assets", + "type": "uint256" }, { "indexed": false, @@ -24685,25 +26202,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "autoClaimDisabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "availableYieldBalance", @@ -24758,24 +26256,24 @@ }, { "inputs": [ - { - "internalType": "address", - "name": "_winner", - "type": "address" - }, { "internalType": "uint8", "name": "_tier", "type": "uint8" }, { - "internalType": "address", - "name": "_to", - "type": "address" + "internalType": "address[]", + "name": "_winners", + "type": "address[]" + }, + { + "internalType": "uint32[][]", + "name": "_prizes", + "type": "uint32[][]" }, { "internalType": "uint96", - "name": "_claimFee", + "name": "_feePerClaim", "type": "uint96" }, { @@ -24784,7 +26282,7 @@ "type": "address" } ], - "name": "claimPrize", + "name": "claimPrizes", "outputs": [ { "internalType": "uint256", @@ -24951,25 +26449,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_disable", - "type": "bool" - } - ], - "name": "disableAutoClaim", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "eip712Domain", @@ -25888,13 +27367,13 @@ "tokens": [ { "chainId": 11155111, - "address": "0x7Ea2e76587962c526B60492bd8342AAe859f1219", + "address": "0xB9c16115DA139a0A6bF2e6d2418a7987cf6DCb83", "name": "PoolTogether Wrapped BTC Prize Token", "decimals": 8, "symbol": "PTWBTCT", "extensions": { "underlyingAsset": { - "address": "0xbdaAB70E7d8767e94680AD2D27B503daE01447A4", + "address": "0xf78De71CF358a92AeE3370A7a3B743bF63c257d4", "symbol": "WBTC", "name": "Wrapped BTC" } @@ -25904,7 +27383,7 @@ }, { "chainId": 11155111, - "address": "0x8d268B3f56e31B4580B39be87e252B79222032fd", + "address": "0xc5798343eEAFAd8E80D1b90Bb763E5106F520476", "version": { "major": 1, "minor": 0, @@ -26149,191 +27628,433 @@ "inputs": [ { "internalType": "address", - "name": "_account", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amountInMax", + "type": "uint256" + } + ], + "name": "swapExactAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "swapMultiplier", + "outputs": [ + { + "internalType": "UFixed32x4", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tokenIn", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tokenOut", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "virtualReserveIn", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "virtualReserveOut", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + } + ] + }, + { + "chainId": 11155111, + "address": "0x21b8f4c7E92a37B893BE39b4Ec447459fa5031C6", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "type": "Vault", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_asset", + "type": "address" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "contract TwabController", + "name": "_twabController", + "type": "address" + }, + { + "internalType": "contract IERC4626", + "name": "_yieldVault", + "type": "address" + }, + { + "internalType": "contract PrizePool", + "name": "_prizePool", + "type": "address" + }, + { + "internalType": "contract Claimer", + "name": "_claimer", + "type": "address" + }, + { + "internalType": "address", + "name": "_yieldFeeRecipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_yieldFeePercentage", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "claimer", + "type": "address" + } + ], + "name": "CallerNotClaimer", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "DepositMoreThanMax", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidShortString", + "type": "error" + }, + { + "inputs": [], + "name": "LPZeroAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "availableYield", + "type": "uint256" + } + ], + "name": "LiquidationAmountOutGTYield", + "type": "error" + }, + { + "inputs": [], + "name": "LiquidationAmountOutZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "liquidationPair", + "type": "address" + } + ], + "name": "LiquidationCallerNotLP", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "prizeToken", + "type": "address" + } + ], + "name": "LiquidationTokenInNotPrizeToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenOut", "type": "address" }, + { + "internalType": "address", + "name": "vaultShare", + "type": "address" + } + ], + "name": "LiquidationTokenOutNotVaultShare", + "type": "error" + }, + { + "inputs": [ { "internalType": "uint256", - "name": "_amountOut", + "name": "shares", "type": "uint256" }, { - "internalType": "uint256", - "name": "_amountInMax", - "type": "uint256" - } - ], - "name": "swapExactAmountOut", - "outputs": [ + "internalType": "address", + "name": "receiver", + "type": "address" + }, { "internalType": "uint256", - "name": "", + "name": "max", "type": "uint256" } ], - "stateMutability": "nonpayable", - "type": "function" + "name": "MintGTMax", + "type": "error" }, { "inputs": [], - "name": "swapMultiplier", - "outputs": [ - { - "internalType": "UFixed32x4", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" + "name": "OwnerZeroAddress", + "type": "error" }, { "inputs": [], - "name": "target", - "outputs": [ + "name": "PrizePoolZeroAddress", + "type": "error" + }, + { + "inputs": [ { "internalType": "address", - "name": "", + "name": "owner", "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" } ], - "stateMutability": "view", - "type": "function" + "name": "RedeemMoreThanMax", + "type": "error" }, { - "inputs": [], - "name": "tokenIn", - "outputs": [ + "inputs": [ { - "internalType": "address", - "name": "", - "type": "address" + "internalType": "string", + "name": "str", + "type": "string" } ], - "stateMutability": "view", - "type": "function" + "name": "StringTooLong", + "type": "error" }, { - "inputs": [], - "name": "tokenOut", - "outputs": [ + "inputs": [ { "internalType": "address", - "name": "", + "name": "token", "type": "address" } ], - "stateMutability": "view", - "type": "function" + "name": "TargetTokenNotSupported", + "type": "error" }, { "inputs": [], - "name": "virtualReserveIn", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" + "name": "TwabControllerZeroAddress", + "type": "error" }, { "inputs": [], - "name": "virtualReserveOut", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - } - ] - }, - { - "chainId": 11155111, - "address": "0xD6D82beB1243A254A61ae4B3a1936Da962F947b7", - "version": { - "major": 1, - "minor": 0, - "patch": 0 - }, - "type": "Vault", - "abi": [ + "name": "VaultUnderCollateralized", + "type": "error" + }, { "inputs": [ - { - "internalType": "contract IERC20", - "name": "_asset", - "type": "address" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "contract TwabController", - "name": "_twabController", - "type": "address" - }, - { - "internalType": "contract IERC4626", - "name": "_yieldVault", - "type": "address" - }, - { - "internalType": "contract PrizePool", - "name": "_prizePool", - "type": "address" - }, - { - "internalType": "contract Claimer", - "name": "_claimer", - "type": "address" - }, { "internalType": "address", - "name": "_yieldFeeRecipient", + "name": "owner", "type": "address" }, { "internalType": "uint256", - "name": "_yieldFeePercentage", + "name": "amount", "type": "uint256" }, { - "internalType": "address", - "name": "_owner", - "type": "address" + "internalType": "uint256", + "name": "max", + "type": "uint256" } ], - "stateMutability": "nonpayable", - "type": "constructor" + "name": "WithdrawMoreThanMax", + "type": "error" }, { - "inputs": [], - "name": "InvalidShortString", + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "yieldFeeTotalSupply", + "type": "uint256" + } + ], + "name": "YieldFeeGTAvailable", "type": "error" }, { "inputs": [ { - "internalType": "string", - "name": "str", - "type": "string" + "internalType": "uint256", + "name": "yieldFeePercentage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feePrecision", + "type": "uint256" } ], - "name": "StringTooLong", + "name": "YieldFeePercentageGTPrecision", + "type": "error" + }, + { + "inputs": [], + "name": "YieldVaultZeroAddress", "type": "error" }, { @@ -26361,25 +28082,6 @@ "name": "Approval", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "status", - "type": "bool" - } - ], - "name": "AutoClaimDisabled", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -26778,25 +28480,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "autoClaimDisabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "availableYieldBalance", @@ -26851,24 +28534,24 @@ }, { "inputs": [ - { - "internalType": "address", - "name": "_winner", - "type": "address" - }, { "internalType": "uint8", "name": "_tier", "type": "uint8" }, { - "internalType": "address", - "name": "_to", - "type": "address" + "internalType": "address[]", + "name": "_winners", + "type": "address[]" + }, + { + "internalType": "uint32[][]", + "name": "_prizes", + "type": "uint32[][]" }, { "internalType": "uint96", - "name": "_claimFee", + "name": "_feePerClaim", "type": "uint96" }, { @@ -26877,7 +28560,7 @@ "type": "address" } ], - "name": "claimPrize", + "name": "claimPrizes", "outputs": [ { "internalType": "uint256", @@ -27044,25 +28727,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_disable", - "type": "bool" - } - ], - "name": "disableAutoClaim", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "eip712Domain", @@ -27981,13 +29645,13 @@ "tokens": [ { "chainId": 11155111, - "address": "0xD6D82beB1243A254A61ae4B3a1936Da962F947b7", + "address": "0x21b8f4c7E92a37B893BE39b4Ec447459fa5031C6", "name": "PoolTogether Wrapped Ether Prize Token", "decimals": 18, "symbol": "PTWETHT", "extensions": { "underlyingAsset": { - "address": "0x07056BA1bD5D71AA743F33Aa3A7BB76f08834873", + "address": "0x62739A657d3bB724694b46B35795532EC9B42b47", "symbol": "WETH", "name": "Wrapped Ether" } @@ -27997,7 +29661,7 @@ }, { "chainId": 11155111, - "address": "0x7575F9A29E64f1EC1E8dA5908eA19F736094Fa82", + "address": "0x41DdF34cC33f954Bf853188fBc830CBdD03839b3", "version": { "major": 1, "minor": 0, diff --git a/deployments/ethSepolia/vaults.json b/deployments/ethSepolia/vaults.json index 63775eb..2f5add6 100644 --- a/deployments/ethSepolia/vaults.json +++ b/deployments/ethSepolia/vaults.json @@ -8,17 +8,17 @@ "minor": 0, "patch": 0 }, - "timestamp": "2023-06-02T18:41:11.447Z", + "timestamp": "2023-06-24T01:40:07.082Z", "tokens": [ { "chainId": 11155111, - "address": "0x0C393C363bAE8Eebe6E1Afe4716e317CbD2E9949", + "address": "0x06B36307e4dA41F0C42efb7d7AbC02Df0c8b5c49", "name": "PoolTogether Dai Stablecoin Low Yield Prize Token", "decimals": 18, "symbol": "PTDAILYT", "extensions": { "underlyingAsset": { - "address": "0x4a798649F6AA23D6a3a1cab65fc0a8fa772E0a40", + "address": "0xB20Ff9fe4065CC1494dFa3A273A527A05871074F", "symbol": "DAI", "name": "Dai Stablecoin" } @@ -26,13 +26,13 @@ }, { "chainId": 11155111, - "address": "0x171df7a2D8547322de5BA27FD9856B04620A3562", + "address": "0x041a898Bc37129d2D2232163c3374f4077255F74", "name": "PoolTogether Dai Stablecoin High Yield Prize Token", "decimals": 18, "symbol": "PTDAIHYT", "extensions": { "underlyingAsset": { - "address": "0x4a798649F6AA23D6a3a1cab65fc0a8fa772E0a40", + "address": "0xB20Ff9fe4065CC1494dFa3A273A527A05871074F", "symbol": "DAI", "name": "Dai Stablecoin" } @@ -40,13 +40,13 @@ }, { "chainId": 11155111, - "address": "0xe288828FFb4087F633E17D4715103648266C0cdb", + "address": "0x0771Ba4b988c66afb02f9AdF21F6E3A14d33C24E", "name": "PoolTogether USD Coin Low Yield Prize Token", "decimals": 6, "symbol": "PTUSDCLYT", "extensions": { "underlyingAsset": { - "address": "0x7A8f1413B44F7346EAb36c4793Bd54148Ca916A5", + "address": "0x59D6b2E784f45568a76b9627De97e06Fc237DA83", "symbol": "USDC", "name": "USD Coin" } @@ -54,13 +54,13 @@ }, { "chainId": 11155111, - "address": "0x0B87bF0822AFAecDEb367cfAaCcf40c0e895F3AD", + "address": "0x0Ec780bE0191f8A364FAccdE91D13BE6F96632bE", "name": "PoolTogether USD Coin High Yield Prize Token", "decimals": 6, "symbol": "PTUSDCHYT", "extensions": { "underlyingAsset": { - "address": "0x7A8f1413B44F7346EAb36c4793Bd54148Ca916A5", + "address": "0x59D6b2E784f45568a76b9627De97e06Fc237DA83", "symbol": "USDC", "name": "USD Coin" } @@ -68,13 +68,13 @@ }, { "chainId": 11155111, - "address": "0xebC5c1257A6DB56d2c3C9466A5271C5Be4FB1397", + "address": "0x8FaF98698e4fF29149a8A9D06Db20E3509F3754b", "name": "PoolTogether Gemini dollar Prize Token", "decimals": 2, "symbol": "PTGUSDT", "extensions": { "underlyingAsset": { - "address": "0x6EBa7deCd74D8327FA83b7Edc6Cb1dEADDfD8EFA", + "address": "0x73b3f9fecf92b4f0Eb6a20c977cBb30964858fD7", "symbol": "GUSD", "name": "Gemini dollar" } @@ -82,13 +82,13 @@ }, { "chainId": 11155111, - "address": "0x7Ea2e76587962c526B60492bd8342AAe859f1219", + "address": "0xB9c16115DA139a0A6bF2e6d2418a7987cf6DCb83", "name": "PoolTogether Wrapped BTC Prize Token", "decimals": 8, "symbol": "PTWBTCT", "extensions": { "underlyingAsset": { - "address": "0xbdaAB70E7d8767e94680AD2D27B503daE01447A4", + "address": "0xf78De71CF358a92AeE3370A7a3B743bF63c257d4", "symbol": "WBTC", "name": "Wrapped BTC" } @@ -96,13 +96,13 @@ }, { "chainId": 11155111, - "address": "0xD6D82beB1243A254A61ae4B3a1936Da962F947b7", + "address": "0x21b8f4c7E92a37B893BE39b4Ec447459fa5031C6", "name": "PoolTogether Wrapped Ether Prize Token", "decimals": 18, "symbol": "PTWETHT", "extensions": { "underlyingAsset": { - "address": "0x07056BA1bD5D71AA743F33Aa3A7BB76f08834873", + "address": "0x62739A657d3bB724694b46B35795532EC9B42b47", "symbol": "WETH", "name": "Wrapped Ether" }