feat: Fee minter contract to periodically call mintFeeShares#1216
Open
CheyenneAtapour wants to merge 29 commits intomainfrom
Open
feat: Fee minter contract to periodically call mintFeeShares#1216CheyenneAtapour wants to merge 29 commits intomainfrom
CheyenneAtapour wants to merge 29 commits intomainfrom
Conversation
Forge Build Sizes
🔕 Unchanged
|
🌈 Test ResultsNo files changed, compilation skipped
Ran 6 tests for tests/contracts/hub/fees/Hub.MintFeeShares.t.sol:HubMintFeeSharesTest
[PASS] test_mintFeeShares() (gas: 325652)
[PASS] test_mintFeeShares_noFees() (gas: 384713)
[PASS] test_mintFeeShares_noShares() (gas: 301749)
[PASS] test_mintFeeShares_revertsWith_AccessManagedUnauthorized() (gas: 29096)
[PASS] test_mintFeeShares_revertsWith_AssetNotListed() (gas: 32893)
[PASS] test_mintFeeShares_revertsWith_SpokeNotActive() (gas: 248741)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 40.52ms (4.10ms CPU time)
Ran 5 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.PermitReserve.t.sol:SignatureGatewayPermitReserveTest
[PASS] test_permitReserve() (gas: 101530)
[PASS] test_permitReserve_forwards_correct_call() (gas: 51018)
[PASS] test_permitReserve_ignores_permit_reverts() (gas: 40088)
[PASS] test_permitReserve_revertsWith_ReserveNotListed() (gas: 31030)
[PASS] test_permitReserve_revertsWith_SpokeNotRegistered() (gas: 29373)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 50.23ms (1.95ms CPU time)
Ran 2 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.Reverts.InsufficientAllowance.t.sol:SignatureGateway_InsufficientAllowance_Test
[PASS] test_repayWithSig_revertsWith_ERC20InsufficientAllowance() (gas: 463594)
[PASS] test_supplyWithSig_revertsWith_ERC20InsufficientAllowance() (gas: 87496)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 34.62ms (4.14ms CPU time)
Ran 9 tests for tests/gas/Hub.Operations.gas.t.sol:HubOperations_Gas_Tests
[PASS] test_add() (gas: 280037)
[PASS] test_deficit() (gas: 1392118)
[PASS] test_draw() (gas: 433406)
[PASS] test_mintFeeShares() (gas: 519703)
[PASS] test_payFee_transferShares() (gas: 971259)
[PASS] test_refreshPremium() (gas: 672333)
[PASS] test_remove() (gas: 325619)
[PASS] test_restore() (gas: 946959)
[PASS] test_restore_with_transfer() (gas: 947622)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 50.71ms (7.02ms CPU time)
Ran 19 tests for tests/contracts/spoke/AaveOracle.t.sol:AaveOracleTest
[PASS] test_constructor() (gas: 15250)
[PASS] test_decimals() (gas: 8358)
[PASS] test_fuzz_constructor(uint8) (runs: 5000, μ: 16685, ~: 17009)
Logs:
Bound result 1
[PASS] test_getReservePrice() (gas: 46794)
[PASS] test_getReservePrice_revertsWith_InvalidPrice() (gas: 44558)
[PASS] test_getReservePrice_revertsWith_InvalidSource() (gas: 10899)
[PASS] test_getReservePrices() (gas: 76746)
[PASS] test_getReservePrices_revertsWith_InvalidSource() (gas: 48933)
[PASS] test_getReserveSource() (gas: 47184)
[PASS] test_setReserveSource() (gas: 44204)
[PASS] test_setReserveSource_revertsWith_InvalidPrice() (gas: 97493)
[PASS] test_setReserveSource_revertsWith_InvalidSource() (gas: 17205)
[PASS] test_setReserveSource_revertsWith_InvalidSourceDecimals() (gas: 16954)
[PASS] test_setReserveSource_revertsWith_OnlySpoke() (gas: 12996)
[PASS] test_setReserveSource_revertsWith_OracleMismatch() (gas: 5010870)
[PASS] test_setSpoke() (gas: 5039232)
[PASS] test_setSpoke_revertsWith_InvalidAddress() (gas: 10892)
[PASS] test_setSpoke_revertsWith_OnlyDeployer(address) (runs: 5000, μ: 13465, ~: 13465)
[PASS] test_setSpoke_revertsWith_SpokeAlreadySet() (gas: 15102)
Suite result: ok. 19 passed; 0 failed; 0 skipped; finished in 1.43s (1.39s CPU time)
Ran 2 tests for tests/deployments/procedures/deploy/spoke/AaveV4AaveOracleDeployProcedure.t.sol:AaveV4AaveOracleDeployProcedureTest
[PASS] test_deployAaveOracle() (gas: 524367)
[PASS] test_deployAaveOracle_reverts_inputValidation() (gas: 8466)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 6.95ms (107.09µs CPU time)
Ran 2 tests for tests/deployments/procedures/deploy/AaveV4AccessManagerEnumerableDeployProcedure.t.sol:AaveV4AccessManagerEnumerableDeployProcedureTest
[PASS] test_deployAccessManagerEnumerable() (gas: 4403059)
[PASS] test_deployAccessManagerEnumerable_reverts() (gas: 10562)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 6.60ms (652.07µs CPU time)
Ran 6 tests for tests/deployments/procedures/deploy/roles/AaveV4AccessManagerRolesProcedure.t.sol:AaveV4AccessManagerRolesProcedureTest
[PASS] test_grantAccessManagerAdminRole() (gas: 177653)
[PASS] test_grantAccessManagerAdminRole_reverts() (gas: 14087)
[PASS] test_labelAllRoles() (gas: 1713955)
[PASS] test_labelAllRoles_reverts_zeroAddress() (gas: 8466)
[PASS] test_replaceDefaultAdminRole() (gas: 144664)
[PASS] test_replaceDefaultAdminRole_reverts() (gas: 178594)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 7.28ms (1.94ms CPU time)
Ran 5 tests for tests/deployments/batches/AaveV4AuthorityBatch.t.sol:AaveV4AuthorityBatchTest
[PASS] test_adminRoleMemberTracking() (gas: 21955)
[PASS] test_differentSaltProducesDifferentAddress() (gas: 14349)
[PASS] test_getReport() (gas: 19926)
[PASS] test_noOtherRolesInitialized() (gas: 15847)
[PASS] test_revert_zeroAdmin() (gas: 3765)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 7.07ms (1.15ms CPU time)
Ran 6 tests for tests/contracts/hub/fees/Hub.PayFee.t.sol:HubPayFeeTest
[PASS] test_payFee_fuzz(uint256,uint256) (runs: 5000, μ: 712214, ~: 712380)
Logs:
Bound result 68691281934999
Bound result 0
Bound result 100
[PASS] test_payFee_fuzz_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 712676, ~: 712929)
Logs:
Bound result 615514462186775432459
Bound result 10765498
Bound result 571193127101173104469
[PASS] test_payFee_revertsWith_InvalidShares() (gas: 25298)
[PASS] test_payFee_revertsWith_SpokeNotActive() (gas: 67924)
[PASS] test_payFee_revertsWith_underflow_added_shares_exceeded() (gas: 142707)
[PASS] test_payFee_revertsWith_underflow_added_shares_exceeded_with_interest() (gas: 646910)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 30.88s (30.85s CPU time)
Ran 21 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.Reverts.InvalidSignature.t.sol:SignatureGatewayInvalidSignatureTest
[PASS] test_borrowWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 155226, ~: 154787)
[PASS] test_borrowWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39263)
[PASS] test_borrowWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37609)
[PASS] test_repayWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 155182, ~: 154743)
[PASS] test_repayWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39284)
[PASS] test_repayWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37588)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 154539, ~: 155631)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39358)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37680)
[PASS] test_supplyWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 155244, ~: 154805)
[PASS] test_supplyWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39329)
[PASS] test_supplyWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37620)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 141570, ~: 140298)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidSignatureDueTo_InvalidSigner() (gas: 25576)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 27259)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 141563, ~: 140291)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidSignatureDueTo_InvalidSigner() (gas: 25486)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 27230)
[PASS] test_withdrawWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 155223, ~: 154784)
[PASS] test_withdrawWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39370)
[PASS] test_withdrawWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37609)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 44.99s (44.96s CPU time)
Ran 11 tests for tests/contracts/hub/add-remove/Hub.Reclaim.t.sol:HubReclaimTest
[PASS] test_reclaim() (gas: 642334)
Logs:
Bound result 1000000000000000000000
Bound result 500000000000000000000
Bound result 200000000000000000000
[PASS] test_reclaim_fullAmount() (gas: 623453)
[PASS] test_reclaim_fuzz(uint256,uint256,uint256) (runs: 5000, μ: 644032, ~: 643310)
Logs:
Bound result 615514462186775432459
Bound result 571193127101173104469
Bound result 564283877115702805413
[PASS] test_reclaim_multipleSweepsAndReclaims() (gas: 734012)
[PASS] test_reclaim_revertsWith_AssetNotListed() (gas: 18447)
[PASS] test_reclaim_revertsWith_InsufficientTransferred() (gas: 442924)
[PASS] test_reclaim_revertsWith_InsufficientTransferred_noSwept() (gas: 109383)
[PASS] test_reclaim_revertsWith_InvalidAmount_zero() (gas: 99136)
[PASS] test_reclaim_revertsWith_OnlyReinvestmentController(address) (runs: 5000, μ: 98357, ~: 98357)
[PASS] test_reclaim_revertsWith_OnlyReinvestmentController_init() (gas: 46036)
[PASS] test_reclaim_revertsWith_underflow_exceedsSwept_afterSweep() (gas: 606671)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 17.14s (17.11s CPU time)
Ran 7 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.Reverts.SpokeNotRegistered.t.sol:SignatureGateway_SpokeNotRegistered_Test
[PASS] test_borrowWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13433, ~: 13433)
[PASS] test_repayWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13411, ~: 13411)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_SpokeNotRegistered((address,uint256,bool,address,uint256,uint256)) (runs: 5000, μ: 13446, ~: 13446)
[PASS] test_supplyWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13476, ~: 13476)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_SpokeNotRegistered((address,address,uint256,uint256)) (runs: 5000, μ: 13709, ~: 13709)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_SpokeNotRegistered((address,address,uint256,uint256)) (runs: 5000, μ: 13665, ~: 13665)
[PASS] test_withdrawWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13476, ~: 13476)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 18.59s (18.55s CPU time)
Ran 7 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.Reverts.Unauthorized.t.sol:SignatureGateway_Unauthorized_PositionManagerActive_Test
[PASS] test_borrowWithSig_revertsWith_Unauthorized() (gas: 80669)
[PASS] test_repayWithSig_revertsWith_Unauthorized() (gas: 118700)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_Unauthorized() (gas: 73255)
[PASS] test_supplyWithSig_revertsWith_Unauthorized() (gas: 140299)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_Unauthorized() (gas: 81545)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_Unauthorized() (gas: 81655)
[PASS] test_withdrawWithSig_revertsWith_Unauthorized() (gas: 79681)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 37.85ms (4.93ms CPU time)
Ran 7 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.Reverts.Unauthorized.t.sol:SignatureGateway_Unauthorized_PositionManagerNotActive_Test
[PASS] test_borrowWithSig_revertsWith_Unauthorized() (gas: 78461)
[PASS] test_repayWithSig_revertsWith_Unauthorized() (gas: 116492)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_Unauthorized() (gas: 71047)
[PASS] test_supplyWithSig_revertsWith_Unauthorized() (gas: 138091)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_Unauthorized() (gas: 79337)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_Unauthorized() (gas: 79447)
[PASS] test_withdrawWithSig_revertsWith_Unauthorized() (gas: 77473)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 36.95ms (4.85ms CPU time)
Ran 4 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.SetSelfAsUserPositionManagerWithSig.t.sol:SignatureGatewaySetSelfAsUserPositionManagerTest
[PASS] test_setSelfAsUserPositionManagerWithSig() (gas: 140247)
[PASS] test_setSelfAsUserPositionManagerWithSig_forwards_correct_call() (gas: 32698)
[PASS] test_setSelfAsUserPositionManagerWithSig_ignores_underlying_spoke_reverts() (gas: 29754)
[PASS] test_setSelfAsUserPositionManagerWithSig_revertsWith_SpokeNotRegistered() (gas: 16553)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 32.74ms (1.31ms CPU time)
Ran 14 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.t.sol:SignatureGatewayTest
[PASS] test_borrowWithSig() (gas: 843431)
[PASS] test_multicall() (gas: 681960)
[PASS] test_multicall_atomicity_on_revert() (gas: 551378)
[PASS] test_multicall_no_atomicity_with_trycatch() (gas: 653662)
[PASS] test_renouncePositionManagerRole() (gas: 29776)
[PASS] test_renouncePositionManagerRole_revertsWith_OnlyOwner() (gas: 18135)
[PASS] test_repayWithSig() (gas: 856488)
[PASS] test_setSelfAsUserPositionManagerWithSig() (gas: 336990)
[PASS] test_setUsingAsCollateralWithSig() (gas: 543151)
[PASS] test_supplyWithSig() (gas: 629653)
[PASS] test_updateUserDynamicConfigWithSig() (gas: 361979)
[PASS] test_updateUserRiskPremiumWithSig() (gas: 1068979)
[PASS] test_useNonce_monotonic(bytes32) (runs: 5000, μ: 13346, ~: 13346)
[PASS] test_withdrawWithSig() (gas: 633591)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 529.97ms (497.41ms CPU time)
Ran 3 tests for tests/contracts/spoke/misc/Spoke.Access.t.sol:SpokeAccessTest
[PASS] testAccess_change_authority() (gas: 519305)
[PASS] testAccess_hub_functions_callable_by_spokes() (gas: 603850)
[PASS] testAccess_spoke_admin_config_access() (gas: 496807)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 35.13ms (3.30ms CPU time)
Ran 12 tests for tests/contracts/hub/draw-restore/Hub.RefreshPremium.t.sol:HubRefreshPremiumTest
[PASS] test_refreshPremium_emitsEvent() (gas: 264186)
[PASS] test_refreshPremium_fuzz_positiveDeltas(uint256,int256,int256) (runs: 5000, μ: 503675, ~: 509051)
Logs:
Bound result 999999999910000000000000000001
Bound result 1
Bound result 4102
[PASS] test_refreshPremium_fuzz_withAccrual(uint256,uint256,uint256,uint256) (runs: 5000, μ: 480618, ~: 490442)
Logs:
Bound result 3313
Bound result 360
Bound result 355555555555555555556
Bound result 19267
[PASS] test_refreshPremium_haltedSpokesAllowed() (gas: 129404)
[PASS] test_refreshPremium_maxRiskPremiumThreshold() (gas: 910790)
[PASS] test_refreshPremium_negativeDeltas(uint256) (runs: 5000, μ: 472486, ~: 472498)
Logs:
Bound result 3124043968137
[PASS] test_refreshPremium_negativeDeltas_withAccrual(uint256) (runs: 5000, μ: 544243, ~: 544467)
Logs:
Bound result 3124043968137
[PASS] test_refreshPremium_revertsWith_InvalidPremiumChange_NonZeroRestoredPremiumRay() (gas: 867378)
[PASS] test_refreshPremium_revertsWith_InvalidPremiumChange_RiskPremiumThresholdExceeded_DecreasingPremium() (gas: 886242)
[PASS] test_refreshPremium_revertsWith_SpokeNotActive() (gas: 65397)
[PASS] test_refreshPremium_riskPremiumThreshold() (gas: 933880)
[PASS] test_refreshPremium_spokePremiumUpdateIsContained() (gas: 723261)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 21.81s (21.77s CPU time)
Ran 15 tests for tests/contracts/hub/add-remove/Hub.Remove.t.sol:HubRemoveTest
[PASS] test_remove() (gas: 221433)
Logs:
Bound result 2
Bound result 100000000000000000000
[PASS] test_remove_all_with_interest() (gas: 387732)
[PASS] test_remove_fuzz(uint256,uint256) (runs: 5000, μ: 220250, ~: 220306)
Logs:
Bound result 4
Bound result 100
[PASS] test_remove_fuzz_all_liquidity_with_interest(uint256,uint256) (runs: 5000, μ: 438433, ~: 438707)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_remove_fuzz_multi_spoke(uint256,uint256) (runs: 5000, μ: 304350, ~: 304458)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_remove_fuzz_multi_spoke_with_interest(uint256,uint256,uint256,uint256) (runs: 5000, μ: 439434, ~: 439978)
Logs:
Bound result 12034
Bound result 9861
Bound result 19146
Bound result 20852
[PASS] test_remove_revertsWith_InsufficientLiquidity() (gas: 162043)
[PASS] test_remove_revertsWith_InsufficientLiquidity_exceeding_added_amount() (gas: 151233)
[PASS] test_remove_revertsWith_InsufficientLiquidity_zero_added() (gas: 26348)
[PASS] test_remove_revertsWith_InvalidAddress() (gas: 21463)
[PASS] test_remove_revertsWith_InvalidAmount() (gas: 23620)
[PASS] test_remove_revertsWith_SpokeHalted() (gas: 68400)
[PASS] test_remove_revertsWith_SpokeNotActive() (gas: 68398)
[PASS] test_remove_revertsWith_underflow_exceeding_added_amount() (gas: 186917)
[PASS] test_remove_revertsWtih_underflow_one_extra_wei() (gas: 367420)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 34.26s (34.22s CPU time)
Ran 4 tests for tests/contracts/spoke/risk-premium/Spoke.RiskPremium.Scenario.t.sol:SpokeRiskPremiumScenarioTest
[PASS] test_getUserRiskPremium_applyInterest_two_users_two_reserves_borrowed() (gas: 3356158)
[PASS] test_getUserRiskPremium_fuzz_inflight_calcs((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint40) (runs: 5000, μ: 2514627, ~: 2569162)
Logs:
Bound result 6
Bound result 416966230219621053938274952927
Bound result 796581240052418918521216347353
Bound result 939822379796025780
Bound result 42049413792536014079
Bound result 0
Bound result 151038352776559397490183429611
Bound result 33522909571553656
Bound result 12412
[PASS] test_getUserRiskPremium_fuzz_two_users_two_reserves_borrowed((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint16,uint16,uint40[3]) (runs: 5000, μ: 2992857, ~: 2918197)
Logs:
Bound result 223956166008161788759778990970
Bound result 1152343750000000000
Bound result 80
Bound result 40
Bound result 24024024024072072072072072073
Bound result 1200000000
Bound result 5908
Bound result 2185
Bound result 9655
Bound result 11272
Bound result 15082
Bound result 13636
Bound result 1519
[PASS] test_riskPremiumPropagatesCorrectly_singleBorrow() (gas: 2028196)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 116.73s (116.69s CPU time)
Ran 7 tests for tests/contracts/hub/deficit/Hub.ReportDeficit.t.sol:HubReportDeficitTest
[PASS] test_reportDeficit_fuzz_revertsWith_SurplusDrawnDeficitReported(uint256) (runs: 5000, μ: 229179, ~: 229606)
Logs:
Bound result 3124043968137
[PASS] test_reportDeficit_fuzz_revertsWith_SurplusPremiumRayDeficitReported(uint256) (runs: 5000, μ: 229870, ~: 230296)
Logs:
Bound result 3124043968137
[PASS] test_reportDeficit_fuzz_with_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 381710, ~: 382431)
Logs:
Bound result 3427
Bound result 19477
Bound result 307
Bound result 355555555555555555556
[PASS] test_reportDeficit_halted() (gas: 274045)
[PASS] test_reportDeficit_revertsWith_InvalidAmount() (gas: 27786)
[PASS] test_reportDeficit_revertsWith_SpokeNotActive(address) (runs: 5000, μ: 40042, ~: 40042)
[PASS] test_reportDeficit_with_premium() (gas: 381054)
Logs:
Bound result 10000000000
Bound result 31536000
Bound result 5000000000
Bound result 0
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 16.42s (16.38s CPU time)
Ran 3 tests for tests/contracts/hub/misc/Hub.Rescue.t.sol:HubRescueTest
[PASS] test_cannot_rescue_liquidity_fee_reverts_with_InsufficientTransferred() (gas: 277182)
[PASS] test_rescue_fuzz_with_interest(uint256,uint256) (runs: 5000, μ: 520748, ~: 520710)
Logs:
Bound result 351500639
Bound result 1256746
[PASS] test_rescue_scenario_fuzz(uint256) (runs: 5000, μ: 458914, ~: 458708)
Logs:
Bound result 3124043968137
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 18.17s (18.14s CPU time)
Ran 23 tests for tests/contracts/hub/draw-restore/Hub.Restore.t.sol:HubRestoreTest
[PASS] test_restore_full_amount_with_interest() (gas: 379923)
Logs:
Bound result 1000000000000000000000
Bound result 500000000000000000000
Bound result 31536000
[PASS] test_restore_full_amount_with_interest_and_premium() (gas: 695434)
Logs:
Bound result 100000000000000000000
Bound result 50000000000000000000
Bound result 31536000
Bound result 1
[PASS] test_restore_fuzz_full_amount_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 381205, ~: 381298)
Logs:
Bound result 615514462186775432459
Bound result 571193127101173104469
Bound result 173721804
[PASS] test_restore_fuzz_full_amount_with_interest_and_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 685714, ~: 697386)
Logs:
Bound result 12059
Bound result 6069
Bound result 739555556
Bound result 354
[PASS] test_restore_fuzz_revertsWith_SurplusDrawnRestored_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 255546, ~: 256677)
Logs:
Bound result 615514462186775432459
Bound result 571193127101173104469
Bound result 173721804
[PASS] test_restore_fuzz_revertsWith_SurplusDrawnRestored_with_interest_and_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 655143, ~: 655404)
Logs:
Bound result 12059
Bound result 6069
Bound result 739555556
Bound result 354
[PASS] test_restore_one_share_delta_increase_revertsWith_InvalidPremiumChange() (gas: 246388)
[PASS] test_restore_partial_drawn() (gas: 341434)
[PASS] test_restore_partial_same_block() (gas: 340516)
[PASS] test_restore_premiumDeltas_twoWeiIncrease_realizedDelta() (gas: 244814)
[PASS] test_restore_revertsWith_InsufficientTransferred() (gas: 264148)
[PASS] test_restore_revertsWith_InvalidAmount_zero() (gas: 67795)
[PASS] test_restore_revertsWith_InvalidPremiumChange_premiumIncrease() (gas: 253321)
[PASS] test_restore_revertsWith_InvalidPremiumChange_premiumSharesIncrease() (gas: 253365)
[PASS] test_restore_revertsWith_SpokeHalted() (gas: 110434)
[PASS] test_restore_revertsWith_SpokeNotActive_whenPaused() (gas: 196951)
[PASS] test_restore_revertsWith_SurplusDrawnRestored() (gas: 371756)
[PASS] test_restore_revertsWith_SurplusDrawnRestored_with_interest() (gas: 255279)
Logs:
Bound result 100000000000000000000
Bound result 50000000000000000000
Bound result 15768000
[PASS] test_restore_revertsWith_SurplusDrawnRestored_with_interest_and_premium() (gas: 653344)
Logs:
Bound result 100000000000000000000
Bound result 50000000000000000000
Bound result 31536000
Bound result 1
[PASS] test_restore_revertsWith_SurplusPremiumRayRestored() (gas: 517967)
[PASS] test_restore_revertsWith_underflow_offsetIncrease() (gas: 262202)
[PASS] test_restore_tooMuchDrawn_revertsWith_SurplusDrawnRestored() (gas: 222111)
[PASS] test_restore_when_asset_caps_reset() (gas: 459000)
Suite result: ok. 23 passed; 0 failed; 0 skipped; finished in 20.40s (20.37s CPU time)
Ran 1 test for tests/contracts/hub/misc/Hub.Rounding.t.sol:HubRoundingTest
[PASS] test_sharePriceWithMultipleDonations() (gas: 681921221)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.11s (3.07s CPU time)
Ran 4 tests for tests/contracts/hub/misc/Hub.Skim.t.sol:HubSkimTest
[PASS] test_skimAdd_fuzz_donationAfterAdd(uint256,uint256,uint256) (runs: 5000, μ: 241475, ~: 241547)
Logs:
Bound result 3
Bound result 18470873395738003579119570309
Bound result 446067553769140138733721804
[PASS] test_skimAdd_fuzz_donationBeforeAdd(uint256,uint256,uint256) (runs: 5000, μ: 241485, ~: 241557)
Logs:
Bound result 3
Bound result 18470873395738003579119570309
Bound result 446067553769140138733721804
[PASS] test_skimAdd_fuzz_wrongSpokeTransfer(uint256,uint256,uint256) (runs: 5000, μ: 230542, ~: 230486)
Logs:
Bound result 3
Bound result 18132171100462486213502917929
Bound result 446067553769140138733721804
[PASS] test_skimRestore_fuzz_liquidityDonation(uint256,uint256,uint256) (runs: 5000, μ: 282081, ~: 283377)
Logs:
Bound result 3
Bound result 18470873395738003579119570309
Bound result 446067553769140138733721804
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 36.15s (36.11s CPU time)
Ran 10 tests for tests/contracts/hub/configuration/Hub.SpokeConfig.t.sol:HubSpokeConfigTest
[PASS] test_add_active_halted_scenarios() (gas: 320777)
[PASS] test_draw_active_halted_scenarios() (gas: 323360)
[PASS] test_eliminateDeficit_active_halted_scenarios() (gas: 859545)
[PASS] test_mintFeeShares_active_halted_scenarios() (gas: 854206)
[PASS] test_payFeeShares_active_halted_scenarios() (gas: 390412)
[PASS] test_refreshPremium_active_halted_scenarios() (gas: 286040)
[PASS] test_remove_active_halted_scenarios() (gas: 337215)
[PASS] test_reportDeficit_active_halted_scenarios() (gas: 466692)
[PASS] test_restore_active_halted_scenarios() (gas: 372855)
[PASS] test_transferShares_fuzz_active_halted_scenarios(bool,bool,bool,bool) (runs: 5000, μ: 223438, ~: 223453)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 4.30s (4.26s CPU time)
Ran 8 tests for tests/contracts/hub/misc/Hub.Sweep.t.sol:HubSweepTest
[PASS] test_sweep() (gas: 471853)
Logs:
Bound result 1000000000000000000000
Bound result 1000000000000000000000
[PASS] test_sweep_does_not_impact_utilization(uint256,uint256) (runs: 5000, μ: 653513, ~: 654743)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_sweep_fuzz(uint256,uint256) (runs: 5000, μ: 476265, ~: 476465)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_sweep_revertsWith_AssetNotListed() (gas: 17956)
[PASS] test_sweep_revertsWith_InsufficientLiquidity() (gas: 227157)
[PASS] test_sweep_revertsWith_InvalidAmount() (gas: 110855)
[PASS] test_sweep_revertsWith_OnlyReinvestmentController(address) (runs: 5000, μ: 98425, ~: 98425)
[PASS] test_sweep_revertsWith_OnlyReinvestmentController_init() (gas: 45573)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 21.67s (21.64s CPU time)
Ran 1 test for tests/contracts/spoke/accrual/Spoke.AccrueInterest.Scenario.t.sol:SpokeAccrueInterestScenarioTest
[PASS] test_accrueInterest_fuzz_RPBorrowAndSkipTime_twoActions((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256),uint40) (runs: 5000, μ: 6655139, ~: 6506258)
Logs:
Bound result 416966230219621053938274952927
Bound result 0
Bound result 255831241153786906
Bound result 41191294854201435881
Bound result 124281697546210950467266407747
Bound result 33522909571553656
Bound result 481970306954558904
Bound result 12412
Bound result 6
Bound result 124281697546210950467266407747
Bound result 33522909571553656
Bound result 481970306954558904
Bound result 12412
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 168.26s (168.23s CPU time)
Ran 7 tests for tests/contracts/hub/add-remove/Hub.TransferShares.t.sol:HubTransferSharesTest
[PASS] test_transferShares() (gas: 199716)
Logs:
Bound result 1000000000000000000000
Bound result 1000000000000000000000
[PASS] test_transferShares_fuzz(uint256,uint256) (runs: 5000, μ: 203088, ~: 203299)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_transferShares_fuzz_revertsWith_underflow_spoke_added_shares_exceeded(uint256) (runs: 5000, μ: 155825, ~: 155537)
Logs:
Bound result 3124043968137
[PASS] test_transferShares_revertsWith_AddCapExceeded() (gas: 211348)
[PASS] test_transferShares_revertsWith_SpokeHalted() (gas: 190902)
[PASS] test_transferShares_revertsWith_SpokeNotActive() (gas: 184103)
[PASS] test_transferShares_zeroShares_revertsWith_InvalidShares() (gas: 27543)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 9.78s (9.75s CPU time)
Ran 10 tests for tests/contracts/hub/misc/Hub.Upgradeable.t.sol:HubUpgradeableTest
[PASS] test_hub_revision_accessible() (gas: 5003152)
[PASS] test_implementation_constructor_fuzz(uint64) (runs: 5000, μ: 6332111, ~: 6332111)
[PASS] test_proxy_constructor_fuzz(uint64) (runs: 5000, μ: 6350277, ~: 6350269)
Logs:
Bound result 649
[PASS] test_proxy_constructor_fuzz_revertsWith_InvalidInitialization(uint64) (runs: 5000, μ: 12660276, ~: 12660268)
Logs:
Bound result 649
[PASS] test_proxy_constructor_revertsWith_InvalidAddress() (gas: 4998882)
[PASS] test_proxy_constructor_revertsWith_InvalidInitialization_ZeroRevision() (gas: 6329422)
[PASS] test_proxy_reinitialization_fuzz(uint64) (runs: 5000, μ: 14073222, ~: 14073206)
Logs:
Bound result 649
[PASS] test_proxy_reinitialization_revertsWith_CallerNotProxyAdmin() (gas: 12650654)
[PASS] test_proxy_reinitialization_revertsWith_InvalidAddress() (gas: 12651077)
[PASS] test_proxy_storage_persists_across_upgrade() (gas: 14073302)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 22.00s (21.97s CPU time)
Ran 8 tests for tests/contracts/hub/misc/HubAccrueInterest.t.sol:HubAccrueInterestTest
[PASS] test_accrueInterest_NoActionTaken() (gas: 48710)
[PASS] test_accrueInterest_NoInterest_NoDebt(uint40) (runs: 5000, μ: 406997, ~: 406870)
Logs:
Bound result 9
[PASS] test_accrueInterest_NoInterest_OnlyAdd(uint40) (runs: 5000, μ: 210198, ~: 210139)
Logs:
Bound result 9
[PASS] test_accrueInterest_fuzz_BorrowAmountAndElapsed(uint256,uint40) (runs: 5000, μ: 279994, ~: 279897)
Logs:
Bound result 68691281934999
Bound result 1
[PASS] test_accrueInterest_fuzz_BorrowAmountRateAndElapsed(uint256,uint256,uint40) (runs: 5000, μ: 398614, ~: 398372)
Logs:
Bound result 615514462186775432459
Bound result 27544
Bound result 6348
[PASS] test_accrueInterest_fuzz_BorrowAndWait(uint40) (runs: 5000, μ: 278698, ~: 278605)
Logs:
Bound result 9
[PASS] test_getAssetDrawnRate_MatchesStoredAfterAction() (gas: 195004)
[PASS] test_getAssetDrawnRate_fuzz_DiffersAfterTimePasses(uint40) (runs: 5000, μ: 219591, ~: 219462)
Logs:
Bound result 9
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 29.08s (29.05s CPU time)
Ran 13 tests for tests/contracts/hub/configurator/HubConfigurator.GranularAccessControl.t.sol:HubConfiguratorGranularAccessControlTest
[PASS] test_assetManager_canCall_deactivateAsset() (gas: 149209)
[PASS] test_assetManager_canCall_haltAsset() (gas: 149223)
[PASS] test_assetManager_canCall_resetAssetCaps() (gas: 149707)
[PASS] test_assetManager_canCall_updateLiquidityFee() (gas: 90157)
[PASS] test_assetManager_cannotCall_anySpokeManagerMethod() (gas: 354221)
[PASS] test_fuzz_unauthorized_cannotCall_assetManagerMethods(address) (runs: 5000, μ: 279962, ~: 279962)
[PASS] test_fuzz_unauthorized_cannotCall_spokeManagerMethods(address) (runs: 5000, μ: 354590, ~: 354590)
[PASS] test_spokeManager_canCall_addSpoke() (gas: 132156)
[PASS] test_spokeManager_canCall_resetSpokeCaps() (gas: 205666)
[PASS] test_spokeManager_canCall_updateSpokeActive() (gas: 71977)
[PASS] test_spokeManager_canCall_updateSpokeCaps() (gas: 72523)
[PASS] test_spokeManager_canCall_updateSpokeHalted() (gas: 71946)
[PASS] test_spokeManager_cannotCall_anyAssetManagerMethod() (gas: 279027)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 5.78s (5.74s CPU time)
Ran 60 tests for tests/contracts/hub/configurator/HubConfigurator.t.sol:HubConfiguratorTest
[PASS] test_addAsset_fuzz(bool,address,uint8,address,uint256,uint16,uint32,uint32,uint32) (runs: 5000, μ: 457960, ~: 458540)
Logs:
Bound result 7
Bound result 8551
Bound result 9999
Bound result 0
Bound result 31874
Bound result 42657
[PASS] test_addAsset_fuzz_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 48852, ~: 49221)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals(bool,address,uint8,address,uint256,address) (runs: 5000, μ: 70234, ~: 70214)
Logs:
Bound result 21
Bound result 5098
[PASS] test_addAsset_revertsWith_InvalidAddress_irStrategy() (gas: 63250)
[PASS] test_addAsset_revertsWith_InvalidAddress_underlying() (gas: 63187)
[PASS] test_addAsset_revertsWith_InvalidLiquidityFee() (gas: 356185)
[PASS] test_addAsset_reverts_invalidIrData() (gas: 81471)
[PASS] test_addSpoke() (gas: 140965)
[PASS] test_addSpokeToAssets() (gas: 239204)
[PASS] test_addSpokeToAssets_revertsWith_AccessManagedUnauthorized() (gas: 28169)
[PASS] test_addSpokeToAssets_revertsWith_MismatchedConfigs() (gas: 35971)
[PASS] test_addSpoke_revertsWith_AccessManagedUnauthorized() (gas: 27836)
[PASS] test_deactivateAsset() (gas: 191176)
[PASS] test_deactivateAsset_revertsWith_AccessManagedUnauthorized() (gas: 29021)
[PASS] test_deactivateSpoke() (gas: 192554)
[PASS] test_deactivateSpoke_revertsWith_AccessManagedUnauthorized() (gas: 29035)
[PASS] test_haltAsset() (gas: 191232)
[PASS] test_haltAsset_revertsWith_AccessManagedUnauthorized() (gas: 28977)
[PASS] test_haltSpoke() (gas: 192574)
[PASS] test_haltSpoke_revertsWith_AccessManagedUnauthorized() (gas: 29023)
[PASS] test_resetAssetCaps() (gas: 265416)
[PASS] test_resetAssetCaps_revertsWith_AccessManagedUnauthorized() (gas: 28952)
[PASS] test_resetSpokeCaps() (gas: 285587)
[PASS] test_resetSpokeCaps_revertsWith_AccessManagedUnauthorized() (gas: 29087)
[PASS] test_updateFeeConfig_Scenario() (gas: 366884)
Logs:
Bound result 0
Bound result 1800
Bound result 0
Bound result 400
Bound result 0
Bound result 0
[PASS] test_updateFeeConfig_fuzz(uint256,uint16,address) (runs: 5000, μ: 202963, ~: 203255)
Logs:
Bound result 0
Bound result 448
[PASS] test_updateFeeConfig_fuzz_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 35062, ~: 35062)
[PASS] test_updateFeeConfig_revertsWith_InvalidAddress_spoke() (gas: 65284)
[PASS] test_updateFeeConfig_revertsWith_InvalidLiquidityFee() (gas: 68932)
[PASS] test_updateFeeReceiver_Scenario() (gas: 237399)
[PASS] test_updateFeeReceiver_WithdrawFromOldSpoke() (gas: 2132208)
[PASS] test_updateFeeReceiver_correctAccruals() (gas: 2170340)
[PASS] test_updateFeeReceiver_fuzz(address) (runs: 5000, μ: 196109, ~: 196127)
[PASS] test_updateFeeReceiver_fuzz_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 34746, ~: 34746)
[PASS] test_updateFeeReceiver_revertsWith_InvalidAddress_spoke() (gas: 69939)
[PASS] test_updateFeeReceiver_revertsWith_SpokeAlreadyListed() (gas: 95268)
[PASS] test_updateInterestRateData() (gas: 86852)
[PASS] test_updateInterestRateData_revertsWith_AccessManagedUnauthorized() (gas: 30180)
[PASS] test_updateInterestRateStrategy() (gas: 109286)
[PASS] test_updateInterestRateStrategy_fuzz_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 46099, ~: 46099)
[PASS] test_updateInterestRateStrategy_revertsWith_DrawnRateStrategyReverts() (gas: 91881)
[PASS] test_updateInterestRateStrategy_revertsWith_InvalidAddress_irStrategy() (gas: 81455)
[PASS] test_updateInterestRateStrategy_revertsWith_InvalidInterestRateStrategy() (gas: 81656)
[PASS] test_updateLiquidityFee_fuzz(uint256,uint16) (runs: 5000, μ: 107268, ~: 108851)
Logs:
Bound result 3
Bound result 0
[PASS] test_updateLiquidityFee_revertsWith_AccessManagedUnauthorized() (gas: 27622)
[PASS] test_updateLiquidityFee_revertsWith_InvalidLiquidityFee() (gas: 70079)
[PASS] test_updateReinvestmentController() (gas: 117309)
[PASS] test_updateReinvestmentController_fuzz_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 34703, ~: 34703)
[PASS] test_updateSpokeActive() (gas: 107347)
[PASS] test_updateSpokeActive_revertsWith_AccessManagedUnauthorized() (gas: 31321)
[PASS] test_updateSpokeAddCap() (gas: 81852)
[PASS] test_updateSpokeAddCap_revertsWith_AccessManagedUnauthorized() (gas: 31290)
[PASS] test_updateSpokeCaps() (gas: 81965)
[PASS] test_updateSpokeCaps_revertsWith_AccessManagedUnauthorized() (gas: 31300)
[PASS] test_updateSpokeDrawCap() (gas: 81770)
[PASS] test_updateSpokeDrawCap_revertsWith_AccessManagedUnauthorized() (gas: 31289)
[PASS] test_updateSpokeHalted() (gas: 110103)
[PASS] test_updateSpokeHalted_revertsWith_AccessManagedUnauthorized() (gas: 31276)
[PASS] test_updateSpokeRiskPremiumThreshold() (gas: 81837)
[PASS] test_updateSpokeRiskPremiumThreshold_revertsWith_AccessManagedUnauthorized() (gas: 31301)
Suite result: ok. 60 passed; 0 failed; 0 skipped; finished in 13.31s (13.27s CPU time)
Ran 46 tests for tests/config-engine/HubEngine.t.sol:HubEngineTest
[PASS] test_computeImplementationAddress() (gas: 23584)
[PASS] test_executeHubAssetCapsResets() (gas: 181431)
[PASS] test_executeHubAssetConfigUpdates_allFields() (gas: 334425)
[PASS] test_executeHubAssetConfigUpdates_crossHub() (gas: 247710)
[PASS] test_executeHubAssetConfigUpdates_feeBoth() (gas: 240719)
[PASS] test_executeHubAssetConfigUpdates_feeNeither() (gas: 66927)
[PASS] test_executeHubAssetConfigUpdates_feeOnly() (gas: 143502)
[PASS] test_executeHubAssetConfigUpdates_irDataOnly() (gas: 128392)
[PASS] test_executeHubAssetConfigUpdates_irNoOp() (gas: 58043)
[PASS] test_executeHubAssetConfigUpdates_multipleAssets() (gas: 221260)
[PASS] test_executeHubAssetConfigUpdates_receiverOnly() (gas: 219983)
[PASS] test_executeHubAssetConfigUpdates_reinvestmentController() (gas: 139675)
[PASS] test_executeHubAssetConfigUpdates_revertsWith_partialSentinelIrDataOnStrategyChange() (gas: 46882)
[PASS] test_executeHubAssetConfigUpdates_revertsWith_sentinelIrDataOnStrategyChange() (gas: 46713)
[PASS] test_executeHubAssetConfigUpdates_strategyChange() (gas: 146574)
[PASS] test_executeHubAssetDeactivations() (gas: 239878)
[PASS] test_executeHubAssetHalts() (gas: 166768)
[PASS] test_executeHubAssetHalts_multipleAssets() (gas: 285454)
[PASS] test_executeHubAssetListings() (gas: 410191)
[PASS] test_executeHubAssetListings_multipleHubs() (gas: 769892)
[PASS] test_executeHubAssetListings_noTokenization() (gas: 405284)
[PASS] test_executeHubAssetListings_revert() (gas: 419961)
[PASS] test_executeHubAssetListings_tokenization_deterministicAddress() (gas: 4121236)
[PASS] test_executeHubAssetListings_tokenization_skipsOnEmptyName() (gas: 437215)
[PASS] test_executeHubAssetListings_tokenization_skipsOnEmptySymbol() (gas: 437495)
[PASS] test_executeHubAssetListings_withTokenization() (gas: 4125867)
[PASS] test_executeHubAssetListings_withTokenization_duplicateUnderlying_revertsBeforeCreate2() (gas: 4113862)
[PASS] test_executeHubSpokeCapsResets() (gas: 169773)
[PASS] test_executeHubSpokeConfigUpdates_addCapOnly() (gas: 97393)
[PASS] test_executeHubSpokeConfigUpdates_allFields() (gas: 152645)
[PASS] test_executeHubSpokeConfigUpdates_capsBoth() (gas: 102591)
[PASS] test_executeHubSpokeConfigUpdates_capsNeither() (gas: 52383)
[PASS] test_executeHubSpokeConfigUpdates_drawCapOnly() (gas: 97336)
[PASS] test_executeHubSpokeConfigUpdates_haltedOnly() (gas: 93137)
[PASS] test_executeHubSpokeConfigUpdates_multipleHubs() (gas: 149870)
[PASS] test_executeHubSpokeConfigUpdates_multipleUpdates() (gas: 136451)
[PASS] test_executeHubSpokeConfigUpdates_riskPremiumThreshold() (gas: 93080)
[PASS] test_executeHubSpokeConfigUpdates_statusBoth() (gas: 109379)
[PASS] test_executeHubSpokeDeactivations() (gas: 162387)
[PASS] test_executeHubSpokeToAssetsAdditions() (gas: 7766031)
[PASS] test_executeHubSpokeToAssetsAdditions_revert_spokeAlreadyListed() (gas: 77369)
[PASS] test_fuzz_executeHubAssetConfigUpdates_feeOnly(uint256) (runs: 5000, μ: 146991, ~: 147413)
Logs:
Bound result 4978
[PASS] test_fuzz_executeHubSpokeConfigUpdates_addCap(uint256) (runs: 5000, μ: 101222, ~: 101527)
Logs:
Bound result 925020712585
[PASS] test_fuzz_executeHubSpokeConfigUpdates_capsBoth(uint256,uint256) (runs: 5000, μ: 102571, ~: 102444)
Logs:
Bound result 521561012887
Bound result 100
[PASS] test_fuzz_executeHubSpokeConfigUpdates_drawCap(uint256) (runs: 5000, μ: 101145, ~: 101450)
Logs:
Bound result 925020712585
[PASS] test_fuzz_executeHubSpokeConfigUpdates_riskPremiumThreshold(uint256) (runs: 5000, μ: 101517, ~: 101739)
Logs:
Bound result 8908425
Suite result: ok. 46 passed; 0 failed; 0 skipped; finished in 6.81s (6.78s CPU time)
Ran 20 tests for tests/contracts/spoke/risk-premium/Spoke.RiskPremium.t.sol:SpokeRiskPremiumTest
[PASS] test_getUserRiskPremium_fuzz_applyInterest_two_reserves_borrowed(uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 2359928, ~: 2410922)
Logs:
Bound result 80000000000000000000000000
Bound result 11161
Bound result 3562812926
Bound result 10000000000000000000
Bound result 14392
[PASS] test_getUserRiskPremium_fuzz_applyingInterest(uint256,uint256,uint256,uint256) (runs: 5000, μ: 1673118, ~: 1730549)
Logs:
Bound result 5314
Bound result 8397
Bound result 55555555555554845
Bound result 19797
[PASS] test_getUserRiskPremium_fuzz_four_reserves_change_cr(uint256,uint256,uint256,uint256,uint256,uint24) (runs: 5000, μ: 2091523, ~: 2072980)
Logs:
Bound result 6369
Bound result 748111466082993287060025057983
Bound result 1
Bound result 163154532952117007
Bound result 6304403909286328381
Bound result 60380874664557845373500555178
[PASS] test_getUserRiskPremium_fuzz_four_reserves_change_one_price(uint256,uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 2269701, ~: 2252681)
Logs:
Bound result 8218757779814625
Bound result 748111466082993287060025057983
Bound result 1
Bound result 163154532952117007
Bound result 6304403909286328381
Bound result 60380874664557845373500555178
[PASS] test_getUserRiskPremium_fuzz_four_reserves_prices_supply_debt((uint256,uint256,uint256,uint256,uint24,uint256),(uint256,uint256,uint256,uint256,uint24,uint256),(uint256,uint256,uint256,uint256,uint24,uint256),(uint256,uint256,uint256,uint256,uint24,uint256)) (runs: 5000, μ: 1988120, ~: 1996244)
Logs:
Bound result 7053
Bound result 5670
Bound result 3025
Bound result 11479757830989107198
Bound result 2724
Bound result 30
Bound result 119
Bound result 15721
Bound result 9024
Bound result 15160
Bound result 10000000000000000
Bound result 10000000000000000
Bound result 9839
Bound result 20533
Bound result 2415
Bound result 18090
[PASS] test_getUserRiskPremium_fuzz_four_reserves_supply_and_borrow(uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 1584606, ~: 1579543)
Logs:
Bound result 80000000000000000000000000
Bound result 3562812926
Bound result 11161
Bound result 10000000000000000000
Bound result 14392
[PASS] test_getUserRiskPremium_fuzz_single_reserve_collateral_borrowed_amount(uint256) (runs: 5000, μ: 427679, ~: 427177)
Logs:
Bound result 3124043968137
[PASS] test_getUserRiskPremium_fuzz_supply_does_not_impact(uint256,uint256) (runs: 5000, μ: 607023, ~: 606905)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_getUserRiskPremium_fuzz_three_reserves_supply_and_borrow(uint256,uint256,uint256,uint256) (runs: 5000, μ: 1254604, ~: 1295105)
Logs:
Bound result 5314
Bound result 355555555555555555556
Bound result 8397
Bound result 19797
[PASS] test_getUserRiskPremium_fuzz_two_reserves_supply_and_borrow(uint256,uint256,uint256) (runs: 5000, μ: 1048803, ~: 1082497)
Logs:
Bound result 615514462186775432459
Bound result 573251106969745917
Bound result 446067553769140138733721804
[PASS] test_getUserRiskPremium_multi_reserve_collateral() (gas: 969150)
[PASS] test_getUserRiskPremium_multi_reserve_collateral_lower_rp_than_highest_cr() (gas: 1735618)
[PASS] test_getUserRiskPremium_multi_reserve_collateral_weth_partial_cover() (gas: 1309006)
[PASS] test_getUserRiskPremium_no_collateral() (gas: 98052)
[PASS] test_getUserRiskPremium_no_collateral_set() (gas: 200717)
[PASS] test_getUserRiskPremium_single_reserve_collateral() (gas: 211079)
[PASS] test_getUserRiskPremium_single_reserve_collateral_borrowed() (gas: 421913)
[PASS] test_getUserRiskPremium_two_reserves_equal_parts() (gas: 1122489)
[PASS] test_riskPremium_collateral_insufficient_to_cover_debt() (gas: 2469247)
[PASS] test_riskPremium_postActions() (gas: 1342164)
Suite result: ok. 20 passed; 0 failed; 0 skipped; finished in 255.88s (255.84s CPU time)
Ran 7 tests for tests/contracts/spoke/accrual/Spoke.AccrueInterest.t.sol:SpokeAccrueInterestTest
[PASS] test_accrueInterest_NoActionTaken() (gas: 155586)
[PASS] test_accrueInterest_NoInterest_NoDebt(uint40) (runs: 5000, μ: 711051, ~: 710886)
Logs:
Bound result 9
[PASS] test_accrueInterest_NoInterest_OnlySupply(uint40) (runs: 5000, μ: 273087, ~: 273088)
Logs:
Bound result 9
[PASS] test_accrueInterest_TenPercentRp(uint256,uint40) (runs: 5000, μ: 613295, ~: 613715)
Logs:
Bound result 68691281934999
Bound result 0
[PASS] test_accrueInterest_fuzz_BorrowAmountAndSkipTime(uint256,uint40) (runs: 5000, μ: 572551, ~: 572913)
Logs:
Bound result 68691281934999
Bound result 0
[SKIP: pending rft] test_accrueInterest_fuzz_RPBorrowAndSkipTime((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256),uint40) (runs: 0, μ: 0, ~: 0)
[PASS] test_accrueInterest_fuzz_RatesRPBorrowAndSkipTime((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256),(uint96,uint96,uint96,uint96),uint40) (runs: 5000, μ: 4872779, ~: 4892338)
Logs:
Bound result 689134102
Bound result 10600
Bound result 10425
Bound result 8328
Bound result 6127
Bound result 0
Bound result 250000000000000
Bound result 63451123729063859757
Bound result 42990
Bound result 50335
Bound result 84483
Bound result 67373
Bound result 0
Bound result 6127
Bound result 0
Bound result 1208502
Bound result 1563
Suite result: ok. 6 passed; 0 failed; 1 skipped; finished in 145.79s (145.76s CPU time)
Ran 11 tests for tests/contracts/spoke/libraries/KeyValueList.t.sol:KeyValueListTest
[PASS] test_add_unique() (gas: 352075)
[PASS] test_fuzz_add(uint256,uint256) (runs: 5000, μ: 231245, ~: 232296)
[PASS] test_fuzz_add_unique(uint256,uint256) (runs: 5000, μ: 239539, ~: 245293)
Logs:
Bound result 100
[PASS] test_fuzz_get(uint256[]) (runs: 5000, μ: 377309, ~: 378109)
[PASS] test_fuzz_get_uninitialized(uint256[]) (runs: 5000, μ: 264434, ~: 249976)
[PASS] test_fuzz_get_uninitialized_sorted(uint256[]) (runs: 5000, μ: 179986, ~: 153212)
[PASS] test_fuzz_pack_unpack_roundtrip(uint256,uint256) (runs: 5000, μ: 9177, ~: 9363)
Logs:
Bound result 1869986064
Bound result 100
[PASS] test_fuzz_sortByKey(uint256[]) (runs: 5000, μ: 434865, ~: 429379)
[PASS] test_fuzz_sortByKey_length(uint256) (runs: 5000, μ: 201196, ~: 198960)
Logs:
Bound result 37
[PASS] test_fuzz_sortByKey_with_collision(uint256[]) (runs: 5000, μ: 512997, ~: 509095)
[PASS] test_fuzz_uncheckedAt(uint256[]) (runs: 5000, μ: 150000, ~: 150694)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 70.72s (70.72s CPU time)
Ran 2 tests for tests/contracts/spoke/libraries/liquidation-logic/LiquidationLogic.CollateralToLiquidate.t.sol:LiquidationLogicCollateralToLiquidateTest
[PASS] test_calculateCollateralAmountToLiquidate() (gas: 174095)
[PASS] test_calculateCollateralToLiquidate_fuzz((address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 197999, ~: 186709)
Logs:
Bound result 4
Bound result 6
Bound result 50000000
Bound result 99000000000000000000000012757
Bound result 4
Bound result 32
Bound result 9
Bound result 68705357564765520
Bound result 13696
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 3.49s (3.46s CPU time)
Ran 3 tests for tests/contracts/spoke/libraries/liquidation-logic/LiquidationLogic.DebtToLiquidate.t.sol:LiquidationLogicDebtToLiquidateTest
[PASS] test_calculateDebtToLiquidate_fuzz((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 39382, ~: 39476)
Logs:
Bound result 1631194238
Bound result 10585
Bound result 3436
Bound result 1187448874948792728
Bound result 232473893725761368
Bound result 7575125999959706
Bound result 15
Bound result 306286583169637935431906209884
Bound result 75679658657443156232320694161
Bound result 101634016077
Bound result 57926430471
[PASS] test_calculateDebtToLiquidate_fuzz_AmountAdjustedDueToDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 41801, ~: 42015)
Logs:
Bound result 70926329783942120364072175663
Bound result 10952
Bound result 571
Bound result 1000000000245911023
Bound result 807916903965221770
Bound result 194303
Bound result 8
Bound result 639415332419395644268441709566
Bound result 46275732414744422509594151845
Bound result 130132405063050
Bound result 352406514306028
Bound result 194303
Bound result 88144493760
[PASS] test_calculateDebtToLiquidate_fuzz_ImpossibleToAdjustForDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 41672, ~: 41661)
Logs:
Bound result 1631194238
Bound result 10585
Bound result 3436
Bound result 1187448874948792728
Bound result 232473893725761368
Bound result 7575125999959706
Bound result 15
Bound result 306286583169637935431906209884
Bound result 75679658657443156232320694161
Bound result 101634016077
Bound result 57926430471
Bound result 5
Bound result 10000000000000000
Bound result 101634016077
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 4.91s (4.88s CPU time)
Ran 7 tests for tests/contracts/spoke/libraries/liquidation-logic/LiquidationLogic.DebtToTargetHealthFactor.t.sol:LiquidationLogicDebtToTargetHealthFactorTest
[PASS] test_calculateDebtToTargetHealthFactor_HealthFactorEqualsTargetHealthFactor((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 23359, ~: 23420)
Logs:
Bound result 3116123919
Bound result 10725
Bound result 2977
Bound result 1486249897798496545
Bound result 555054242782847130
Bound result 6199474701275945
Bound result 9
[PASS] test_calculateDebtToTargetHealthFactor_NoPrecisionLoss() (gas: 28007)
[PASS] test_calculateDebtToTargetHealthFactor_PrecisionLoss() (gas: 17498)
[PASS] test_calculateDebtToTargetHealthFactor_UnitPrice() (gas: 28029)
[PASS] test_calculateDebtToTargetHealthFactor_fuzz_NoRevert((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 20587, ~: 20569)
Logs:
Bound result 3116123919
Bound result 10725
Bound result 2977
Bound result 1486249897798496545
Bound result 555054242782847130
Bound result 6199474701275945
Bound result 9
[PASS] test_calculateDebtToTargetHealthFactor_fuzz_revertsWith_DivisionByZero_ZeroAssetPrice((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 22868, ~: 22929)
Logs:
Bound result 3116123919
Bound result 10725
Bound result 2977
Bound result 1486249897798496545
Bound result 555054242782847130
Bound result 6199474701275945
Bound result 9
[PASS] test_calculateDebtToTargetHealthFactor_revertsWith_ArithmeticError_TargetHealthFactorLessThanHealthFactor((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 22664, ~: 22725)
Logs:
Bound result 3116123919
Bound result 10725
Bound result 2977
Bound result 1486249897798496545
Bound result 555054242782847130
Bound result 6199474701275945
Bound result 9
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 3.23s (3.19s CPU time)
Ran 16 tests for tests/contracts/spoke/libraries/liquidation-logic/LiquidationLogic.EvaluateDeficit.t.sol:LiquidationLogicEvaluateDeficitTest
[PASS] test_evaluateDeficit_CRE_SCCM_DRE_BRCM() (gas: 8919)
[PASS] test_evaluateDeficit_CRE_SCCM_DRE_BRCO() (gas: 8932)
[PASS] test_evaluateDeficit_CRE_SCCM_DRN_BRCM() (gas: 8930)
[PASS] test_evaluateDeficit_CRE_SCCM_DRN_BRCO() (gas: 8942)
[PASS] test_evaluateDeficit_CRE_SCCO_DRE_BRCM() (gas: 8968)
[PASS] test_evaluateDeficit_CRE_SCCO_DRE_BRCO() (gas: 8991)
[PASS] test_evaluateDeficit_CRE_SCCO_DRN_BRCM() (gas: 8911)
[PASS] test_evaluateDeficit_CRE_SCCO_DRN_BRCO() (gas: 8944)
[PASS] test_evaluateDeficit_CRN_SCCM_DRE_BRCM() (gas: 8899)
[PASS] test_evaluateDeficit_CRN_SCCM_DRE_BRCO() (gas: 8955)
[PASS] test_evaluateDeficit_CRN_SCCM_DRN_BRCM() (gas: 8889)
[PASS] test_evaluateDeficit_CRN_SCCM_DRN_BRCO() (gas: 8922)
[PASS] test_evaluateDeficit_CRN_SCCO_DRE_BRCM() (gas: 8921)
[PASS] test_evaluateDeficit_CRN_SCCO_DRE_BRCO() (gas: 8956)
[PASS] test_evaluateDeficit_CRN_SCCO_DRN_BRCM() (gas: 8907)
[PASS] test_evaluateDeficit_CRN_SCCO_DRN_BRCO() (gas: 8962)
Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 33.90ms (1.18ms CPU time)
Ran 4 tests for tests/contracts/spoke/libraries/liquidation-logic/LiquidationLogic.ExecuteLiquidation.t.sol:LiquidationLogicExecuteLiquidationTest
[PASS] test_executeLiquidation() (gas: 385499)
[PASS] test_executeLiquidation_revertsWith_InvalidDebtToCover() (gas: 86003)
[PASS] test_executeLiquidation_revertsWith_MustNotLeaveDust_Collateral() (gas: 155559)
[PASS] test_executeLiquidation_revertsWith_MustNotLeaveDust_Debt() (gas: 155684)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 41.54ms (1.92ms CPU time)
Ran 3 tests for tests/contracts/spoke/libraries/liquidation-logic/LiquidationLogic.LiquidateCollateral.t.sol:LiquidationLogicLiquidateCollateralTest
[PASS] test_liquidateCollateral_fuzz(uint256,uint256,bool) (runs: 5000, μ: 211509, ~: 195795)
Logs:
Bound result 99999987886613104001
Bound result 19864
[PASS] test_liquidateCollateral_revertsWith_ArithmeticUnderflow() (gas: 28110)
[PASS] test_liquidateCollateral_revertsWith_ArithmeticUnderflow_FeeShares() (gas: 123764)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 2.99s (2.95s CPU time)
Ran 5 tests for tests/contracts/spoke/accrual/Spoke.AccrueLiquidityFee.EdgeCases.t.sol:SpokeAccrueLiquidityFeeEdgeCasesTest
[PASS] test_accrueLiquidityFee_fuzz_maxLiquidityFee_with_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 558031, ~: 558106)
Logs:
Bound result 19104
Bound result 739555556
Bound result 0
Bound result 6547
[PASS] test_accrueLiquidityFee_fuzz_maxLiquidityFee_with_premium_multiple_users(uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 818994, ~: 819111)
Logs:
Bound result 14219
Bound result 64000000
Bound result 0
Bound result 5469
Bound result 11007
[PASS] test_accrueLiquidityFee_maxLiquidityFee_multi_spoke() (gas: 281470908)
[PASS] test_accrueLiquidityFee_maxLiquidityFee_multi_user() (gas: 197683658)
[PASS] test_accrueLiquidityFee_maxLiquidityFee_with_premium() (gas: 558123)
Logs:
Bound result 5000
Bound result 34560000
Bound result 2
Bound result 500000000000000000000
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 18.94s (18.91s CPU time)
Ran 4 tests for tests/contracts/spoke/libraries/liquidation-logic/LiquidationLogic.LiquidateDebt.t.sol:LiquidationLogicLiquidateDebtTest
[PASS] test_liquidateDebt_fuzz(uint256) (runs: 5000, μ: 236616, ~: 226818)
[PASS] test_liquidateDebt_revertsWith_ArithmeticUnderflow() (gas: 111952)
[PASS] test_liquidateDebt_revertsWith_InsufficientAllowance() (gas: 121410)
[PASS] test_liquidateDebt_revertsWith_InsufficientBalance() (gas: 181814)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.94s (2.91s CPU time)
Ran 4 tests for tests/contracts/spoke/libraries/liquidation-logic/LiquidationLogic.LiquidateUser.t.sol:LiquidationLogicLiquidateUserTest
[PASS] test_liquidateUser() (gas: 386562)
[PASS] test_liquidateUser_revertsWith_InvalidDebtToCover() (gas: 78781)
[PASS] test_liquidateUser_revertsWith_MustNotLeaveDust_Collateral() (gas: 152355)
[PASS] test_liquidateUser_revertsWith_MustNotLeaveDust_Debt() (gas: 156499)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 40.41ms (1.90ms CPU time)
Ran 7 tests for tests/contracts/spoke/accrual/Spoke.AccrueLiquidityFee.t.sol:SpokeAccrueLiquidityFeeTest
[PASS] test_accrueLiquidityFee() (gas: 923020)
[PASS] test_accrueLiquidityFee_NoActionTaken() (gas: 138320)
[PASS] test_accrueLiquidityFee_NoInterest_OnlySupply(uint40) (runs: 5000, μ: 261777, ~: 261744)
Logs:
Bound result 9
[PASS] test_accrueLiquidityFee_exact() (gas: 929328)
[PASS] test_accrueLiquidityFee_fuzz_BorrowAmountAndSkipTime(uint256,uint40) (runs: 5000, μ: 1006339, ~: 1031646)
Logs:
Bound result 68691281934999
Bound result 0
[PASS] test_accrueLiquidityFee_maxLiquidityFee() (gas: 563962)
[PASS] test_accrueLiquidityFee_setUsingAsCollateral() (gas: 922952)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 22.24s (22.20s CPU time)
Ran 15 tests for tests/contracts/spoke/position-manager/Spoke.SetUserPositionManagerWithSig.t.sol:SpokeSetUserPositionManagersWithSigTest
[PASS] test_DOMAIN_SEPARATOR() (gas: 5039341)
[PASS] test_eip712Domain() (gas: 5044742)
[PASS] test_positionManagerUpdate_typeHash() (gas: 3903)
[PASS] test_setUserPositionManager_typeHash() (gas: 15642)
[PASS] test_setUserPositionManagersWithSig() (gas: 287767)
[PASS] test_setUserPositionManagersWithSig_ERC1271() (gas: 374521)
[PASS] test_setUserPositionManagersWithSig_ERC1271_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 458227, ~: 455925)
[PASS] test_setUserPositionManagersWithSig_ERC1271_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 277122)
[PASS] test_setUserPositionManagersWithSig_ERC1271_revertsWith_InvalidSignature_dueTo_InvalidHash() (gas: 328428)
[PASS] test_setUserPositionManagersWithSig_multiple_updates((address,bool)[]) (runs: 5000, μ: 2443476, ~: 2405836)
[PASS] test_setUserPositionManagersWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 259907, ~: 263400)
[PASS] test_setUserPositionManagersWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 33302)
[PASS] test_setUserPositionManagersWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 33695)
[PASS] test_setUserPositionManagersWithSig_zero_updates() (gas: 256432)
[PASS] test_useNonce_monotonic(bytes32) (runs: 5000, μ: 19474, ~: 19474)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 62.73s (62.70s CPU time)
Ran 9 tests for tests/contracts/spoke/misc/Spoke.SetUsingAsCollateral.t.sol:SpokeSetUsingAsCollateralTest
[PASS] test_setUsingAsCollateral() (gas: 314916)
[PASS] test_setUsingAsCollateral_collateralStatusUnchanged() (gas: 474354)
[PASS] test_setUsingAsCollateral_revertsWith_MaximumUserReservesExceeded() (gas: 5706493)
[PASS] test_setUsingAsCollateral_revertsWith_ReentrancyGuardReentrantCall() (gas: 777432)
[PASS] test_setUsingAsCollateral_revertsWith_ReserveFrozen() (gas: 106635)
[PASS] test_setUsingAsCollateral_revertsWith_ReserveNotListed() (gas: 28527)
[PASS] test_setUsingAsCollateral_revertsWith_ReservePaused() (gas: 65885)
[PASS] test_setUsingAsCollateral_to_limit_disable_enable_again() (gas: 5963016)
[PASS] test_setUsingAsCollateral_unlimited_whenLimitIsMax() (gas: 826611)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 45.52ms (12.75ms CPU time)
Ran 8 tests for tests/contracts/spoke/libraries/liquidation-logic/LiquidationLogic.LiquidationAmounts.t.sol:LiquidationLogicLiquidationAmountsTest
[PASS] test_calculateLiquidationAmounts_EnoughCollateral() (gas: 176648)
[PASS] test_calculateLiquidationAmounts_InsufficientCollateral() (gas: 177287)
[PASS] test_calculateLiquidationAmounts_fuzz_EnoughCollateral_CollateralDust((address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 297743, ~: 287330)
Logs:
Bound result 3
Bound result 2767
Bound result 443124196721905572
Bound result 14843
Bound result 8
Bound result 18
Bound result 13290
Bound result 5661
Bound result 1999999999999999997
Bound result 443124196721905572
Bound result 9304570613870847
Bound result 9
Bound result 999999999999999999999999999997
Bound result 1000000000000000000000000000
Bound result 28591
Bound result 54527
Bound result 6504484831365108
Bound result 7
Bound result 1109
Bound result 18850239771387979476210927906
Bound result 0
Bound result 6504484831365108
Bound result 26
Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935
[PASS] test_calculateLiquidationAmounts_fuzz_EnoughCollateral_NoCollateralDust((address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 250754, ~: 239689)
Logs:
Bound result 3
Bound result 2767
Bound result 443124196721905572
Bound result 14843
Bound result 8
Bound result 18
Bound result 13290
Bound result 5661
Bound result 1999999999999999997
Bound result 443124196721905572
Bound result 9304570613870847
Bound result 9
Bound result 999999999999999999999999999997
Bound result 1000000000000000000000000000
Bound result 28591
Bound result 54527
Bound result 6504484831365108
Bound result 7
Bound result 1109
Bound result 18850239771387979476210927906
Bound result 0
Bound result 18850239771387979476210927906
Bound result 999999999999999999999999999997
[PASS] test_calculateLiquidationAmounts_fuzz_EnoughCollateral_NoDebtLeft((address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 269428, ~: 258218)
Logs:
Bound result 893415334883476655
Bound result 2978
Bound result 585276700757443494
Bound result 14565
Bound result 17
Bound result 6068916064772864016873118816625778489046207115382530586
Bound result 14565
Bound result 4221
Bound result 1761319261088019793
Bound result 585276700757443494
Bound result 2668101281511416
Bound result 17
Bound result 939188368361739499122738155709
Bound result 99000000009036773106626147332
Bound result 16273769303837
Bound result 25177732562014
Bound result 530496439064419
Bound result 16
Bound result 1239
Bound result 671701841481068112906874569041
Bound result 3
Bound result 6068916064772864016873118816625778489046207115382530586
Bound result 14565
Bound result 4221
Bound result 1761319261088019793
Bound result 585276700757443494
Bound result 2668101281511416
Bound result 17
Bound result 939188368361739499122738155709
Bound result 99000000009036773106626147332
Bound result 16273769303837
Bound result 25177732562014
Bound result 2668101281511416
Bound result 4335186362
Bound result 671701841481068112906874569041
Bound result 939188368361739499122738155709
[PASS] test_calculateLiquidationAmounts_fuzz_InsufficientCollateral((address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 255492, ~: 244711)
Logs:
Bound result 0
Bound result 9162
Bound result 952182180277452612
Bound result 13130
Bound result 7
Bound result 999999999999999999999999999999999999999999999999999999999999999998
Bound result 12879
Bound result 158
Bound result 1485288739068866729
Bound result 952182180277452612
Bound result 7894865674485545
Bound result 10
Bound result 242916801671864835135351
Bound result 86396069818162326504418408934
Bound result 49009
Bound result 950864
Bound result 7335482531593515
Bound result 18
Bound result 8819
Bound result 866735583069146632577593
Bound result 3
Bound result 259881494216107223
Bound result 242916801671864835135351
[PASS] test_calculateLiquidationAmounts_fuzz_revertsWith_MustNotLeaveDust_Collateral((address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 280206, ~: 269295)
Logs:
Bound result 3886412
Bound result 2
Bound result 147
Bound result 12468
Bound result 6
Bound result 28951245481117846533722652
Bound result 12468
Bound result 3739
Bound result 1000109044247905327
Bound result 147
Bound result 1766670143596910
Bound result 14
Bound result 885000589634409638603543244567
Bound result 45625495039344622427514351693
Bound result 1
Bound result 45089934476
Bound result 9035404749081580
Bound result 15
Bound result 274
Bound result 471071379138868438154450132077
Bound result 5
Bound result 9035404749081580
Bound result 3252684925
Bound result 115792089237316195423570985008687907853269984665640564039457584007913129639935
[PASS] test_calculateLiquidationAmounts_fuzz_revertsWith_MustNotLeaveDust_Debt((address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 260822, ~: 249661)
Logs:
Bound result 893415334883476655
Bound result 2978
Bound result 585276700757443494
Bound result 14565
Bound result 17
Bound result 6068916064772864016873118816625778489046207115382530586
Bound result 14565
Bound result 4221
Bound result 1761319261088019793
Bound result 585276700757443494
Bound result 2668101281511416
Bound result 17
Bound result 939188368361739499122738155709
Bound result 99000000009036773106626147332
Bound result 16273769303837
Bound result 25177732562014
Bound result 530496439064419
Bound result 16
Bound result 1239
Bound result 671701841481068112906874569041
Bound result 3
Bound result 6068916064772864016873118816625778489046207115382530586
Bound result 14565
Bound result 4221
Bound result 1761319261088019793
Bound result 585276700757443494
Bound result 2668101281511416
Bound result 17
Bound result 939188368361739499122738155709
Bound result 99000000009036773106626147332
Bound result 16273769303837
Bound result 25177732562014
Bound result 2668101281511416
Bound result 4335186362
Su...*[Comment body truncated]* |
♻️ Forge Gas Snapshots🔕 Unchanged
|
Kogaroshi
reviewed
Feb 17, 2026
Kogaroshi
reviewed
Feb 17, 2026
Kogaroshi
reviewed
Feb 17, 2026
Kogaroshi
reviewed
Feb 17, 2026
Kogaroshi
reviewed
Feb 17, 2026
Kogaroshi
reviewed
Feb 17, 2026
| /// @title FeeSharesMinterBase | ||
| /// @author Aave Labs | ||
| /// @notice Contract to mint fee shares on the Hub when specific conditions are met. | ||
| contract FeeSharesMinterBase is Ownable { |
Contributor
Author
There was a problem hiding this comment.
idk about Steward, but still open to suggestions about names
Contributor
Author
There was a problem hiding this comment.
The word "keeper" is used for these. I'm open to that
| MintConfig memory config = _configs[hub][assetId]; | ||
|
|
||
| // Check mint interval | ||
| if (block.timestamp - lastMintTime[hub][assetId] < config.minTimeInterval) { |
Member
There was a problem hiding this comment.
i dont think we should place a time based min interval, but rather amount based instead?
Contributor
Author
There was a problem hiding this comment.
I think the amount does make more sense. cc @miguelmtzinf on this
Contributor
Author
There was a problem hiding this comment.
I removed the time component now, but kept the ratio
yan-man
reviewed
Mar 30, 2026
yan-man
reviewed
Mar 30, 2026
Kogaroshi
reviewed
Apr 13, 2026
| /// @notice Contract to mint fee shares on the Hub when specific conditions are met. | ||
| contract FeeSharesMinterBase is IFeeSharesMinterBase, Ownable2Step, Rescuable { | ||
| mapping(address hub => mapping(uint256 assetId => uint16 minAccruedFeesPercent)) | ||
| internal _configs; |
Contributor
There was a problem hiding this comment.
minAccruedFeesPercent ? it is not a struct anymore, just an uint16, calling it "configs" seems strange when there is only 1 parameter to configure
yan-man
reviewed
Apr 14, 2026
yan-man
reviewed
Apr 15, 2026
yan-man
reviewed
Apr 15, 2026
yan-man
reviewed
Apr 15, 2026
yan-man
reviewed
Apr 15, 2026
yan-man
reviewed
Apr 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a fee minter contract which will enforce specific conditions for calling mintFeeShares() on the hub, and allow for mintFeeShares() to be called consistently