Open
Conversation
🌈 Test ResultsNo files changed, compilation skipped
Ran 2 tests for tests/contracts/spoke/multi-hub/Spoke.MultipleHub.t.sol:SpokeMultipleHubTest
[PASS] test_borrow_secondHub() (gas: 911937)
[PASS] test_borrow_thirdHub() (gas: 752607)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 40.47ms (3.34ms CPU time)
Ran 14 tests for tests/gas/Spoke.Operations.gas.t.sol:SpokeOperations_Gas_Tests
[PASS] test_borrow() (gas: 1371799)
[PASS] test_liquidation_full() (gas: 10933918)
[PASS] test_liquidation_partial() (gas: 10933334)
[PASS] test_liquidation_receiveShares_full() (gas: 10915397)
[PASS] test_liquidation_receiveShares_partial() (gas: 10914815)
[PASS] test_liquidation_reportDeficit_full() (gas: 10911977)
[PASS] test_multicall_ops() (gas: 1450594)
[PASS] test_repay() (gas: 898901)
[PASS] test_setUserPositionManagersWithSig() (gas: 306627)
[PASS] test_supply() (gas: 558759)
[PASS] test_updateRiskPremium() (gas: 1366793)
[PASS] test_updateUserDynamicConfig() (gas: 592852)
[PASS] test_usingAsCollateral() (gas: 1525378)
[PASS] test_withdraw() (gas: 2028769)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 78.14ms (35.69ms CPU time)
Ran 14 tests for tests/gas/Spoke.Operations.gas.t.sol:SpokeOperations_ZeroRiskPremium_Gas_Tests
[PASS] test_borrow() (gas: 1134901)
[PASS] test_liquidation_full() (gas: 10797506)
[PASS] test_liquidation_partial() (gas: 10796922)
[PASS] test_liquidation_receiveShares_full() (gas: 10778985)
[PASS] test_liquidation_receiveShares_partial() (gas: 10778403)
[PASS] test_liquidation_reportDeficit_full() (gas: 10835462)
[PASS] test_multicall_ops() (gas: 1369306)
[PASS] test_repay() (gas: 807209)
[PASS] test_setUserPositionManagersWithSig() (gas: 311081)
[PASS] test_supply() (gas: 561440)
[PASS] test_updateRiskPremium() (gas: 989523)
[PASS] test_updateUserDynamicConfig() (gas: 597306)
[PASS] test_usingAsCollateral() (gas: 1138795)
[PASS] test_withdraw() (gas: 1664153)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 74.80ms (31.27ms CPU time)
Ran 4 tests for tests/contracts/spoke/misc/Spoke.PermitReserve.t.sol:SpokePermitReserveTest
[PASS] test_permitReserve() (gas: 88250)
[PASS] test_permitReserve_forwards_correct_call() (gas: 35555)
[PASS] test_permitReserve_ignores_permit_reverts() (gas: 24413)
[PASS] test_permitReserve_revertsWith_ReserveNotListedIn() (gas: 22972)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 24.80ms (1.08ms CPU time)
Ran 10 tests for tests/contracts/spoke/position-manager/Spoke.PositionManager.t.sol:SpokePositionManagerTest
[PASS] test_onlyPositionManager_on_borrow() (gas: 548693)
[PASS] test_onlyPositionManager_on_repay() (gas: 578448)
[PASS] test_onlyPositionManager_on_supply() (gas: 298243)
[PASS] test_onlyPositionManager_on_updateUserDynamicConfig() (gas: 1449120)
[PASS] test_onlyPositionManager_on_updateUserRiskPremium() (gas: 1696157)
[PASS] test_onlyPositionManager_on_usingAsCollateral() (gas: 144498)
[PASS] test_onlyPositionManager_on_withdraw() (gas: 328129)
[PASS] test_renouncePositionManagerRole() (gas: 20246)
[PASS] test_renouncePositionManagerRole_noop_from_disabled() (gas: 21936)
[PASS] test_setApprovalForPositionManager(bytes32) (runs: 5000, μ: 18155, ~: 18155)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 430.42ms (406.46ms CPU time)
Ran 19 tests for tests/contracts/spoke/AaveOracle.t.sol:AaveOracleTest
[PASS] test_constructor() (gas: 15306)
[PASS] test_decimals() (gas: 8358)
[PASS] test_fuzz_constructor(uint8) (runs: 5000, μ: 16734, ~: 17061)
Logs:
Bound result 1
[PASS] test_getReservePrice() (gas: 46794)
[PASS] test_getReservePrice_revertsWith_InvalidPrice() (gas: 44603)
[PASS] test_getReservePrice_revertsWith_InvalidSource() (gas: 10899)
[PASS] test_getReservePrices() (gas: 76746)
[PASS] test_getReservePrices_revertsWith_InvalidSource() (gas: 48911)
[PASS] test_getReserveSource() (gas: 47184)
[PASS] test_setReserveSource() (gas: 44249)
[PASS] test_setReserveSource_revertsWith_InvalidPrice() (gas: 97493)
[PASS] test_setReserveSource_revertsWith_InvalidSource() (gas: 17183)
[PASS] test_setReserveSource_revertsWith_InvalidSourceDecimals() (gas: 16954)
[PASS] test_setReserveSource_revertsWith_OnlySpoke() (gas: 12996)
[PASS] test_setReserveSource_revertsWith_OracleMismatch() (gas: 5029386)
[PASS] test_setSpoke() (gas: 5057683)
[PASS] test_setSpoke_revertsWith_InvalidAddress() (gas: 10870)
[PASS] test_setSpoke_revertsWith_OnlyDeployer(address) (runs: 5000, μ: 13442, ~: 13442)
[PASS] test_setSpoke_revertsWith_SpokeAlreadySet() (gas: 15102)
Suite result: ok. 19 passed; 0 failed; 0 skipped; finished in 1.09s (1.06s CPU time)
Ran 7 tests for tests/contracts/spoke/repay/Spoke.Repay.EdgeCases.t.sol:SpokeRepayEdgeCaseTest
[PASS] test_fuzz_repay_effect_on_ex_rates(uint256,uint256) (runs: 5000, μ: 724158, ~: 724076)
Logs:
Bound result 99999999999999999999999999999
Bound result 489261355
Bound result 36944886581538291355593328238
[PASS] test_repay_less_than_share() (gas: 758581)
[PASS] test_repay_only_base_debt_interest() (gas: 891207)
[PASS] test_repay_only_base_debt_no_premium() (gas: 779192)
[PASS] test_repay_supply_ex_rate_decr() (gas: 1784318)
[PASS] test_repay_supply_ex_rate_decr_skip_time() (gas: 1779911)
[PASS] test_repay_zero_shares_nonzero_premium_debt() (gas: 893063)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 17.22s (17.20s CPU time)
Ran 50 tests for tests/contracts/access/AccessManagerEnumerable.t.sol:AccessManagerEnumerableTest
[PASS] test_getLabelOfRole_revertsForAdminRole() (gas: 15937)
[PASS] test_getLabelOfRole_revertsForPublicRole() (gas: 15996)
[PASS] test_getLabelOfRole_revertsForUnlabeledRole() (gas: 15965)
[PASS] test_getLabelRole_revertsWithUnregisteredLabel() (gas: 11859)
[PASS] test_getRoleMembers_fuzz(uint256,uint256) (runs: 5000, μ: 2096845, ~: 2095721)
Logs:
Bound result 9
Bound result 10
[PASS] test_getRoleOfTargetSelector() (gas: 505164)
[PASS] test_getRoleOfTargetSelector_afterReassignment() (gas: 364143)
[PASS] test_getRoleTargetSelectors_fuzz(uint256,uint256) (runs: 5000, μ: 1743646, ~: 1742778)
Logs:
Bound result 9
Bound result 10
[PASS] test_grantRole() (gas: 435571)
[PASS] test_grantRole_fuzz(uint64,uint256) (runs: 5000, μ: 1029869, ~: 1034661)
Logs:
Bound result 9
[PASS] test_isAdminRole() (gas: 245794)
[PASS] test_isAdminRole_excludesAdminRole() (gas: 89137)
[PASS] test_isAdminRole_multipleRoles() (gas: 441098)
[PASS] test_isLabelAssigned() (gas: 206189)
[PASS] test_isLabelAssigned_afterRelabel() (gas: 257137)
[PASS] test_isLabelAssigned_afterRemoval() (gas: 164483)
[PASS] test_isRole() (gas: 245831)
[PASS] test_isRoleLabeled() (gas: 204928)
[PASS] test_isRoleLabeled_afterRelabel() (gas: 256147)
[PASS] test_isRoleLabeled_afterRemoval() (gas: 163819)
[PASS] test_isRole_afterLabel() (gas: 201007)
[PASS] test_isRole_excludesAdminAndPublicRole() (gas: 218195)
[PASS] test_labelRole_onlyAuthorized_revertsWithUnauthorizedAccount() (gas: 13327)
[PASS] test_labelRole_relabel() (gas: 268258)
[PASS] test_labelRole_relabelTrackedRole_noDuplicate() (gas: 264781)
[PASS] test_labelRole_removeLabel() (gas: 175413)
[PASS] test_labelRole_removeLabelOnUnlabeledRole_revertsWithUnlabeledRole() (gas: 20083)
[PASS] test_labelRole_revertsWithAlreadyLabeledRole() (gas: 204993)
[PASS] test_labelRole_revertsWithAlreadyLabeledRole_evenIfLabelAlsoUsed() (gas: 347242)
[PASS] test_labelRole_revertsWithDuplicateLabel() (gas: 208101)
[PASS] test_labelRole_trackLabels() (gas: 368802)
[PASS] test_labelRole_tracksAlreadyTrackedRole_noDuplicate() (gas: 214156)
[PASS] test_labelRole_tracksUntrackedRole() (gas: 206424)
[PASS] test_renounceRole() (gas: 435727)
[PASS] test_renounceRole_shouldNotTrack() (gas: 24687)
[PASS] test_revokeRole() (gas: 437941)
[PASS] test_revokeRole_shouldNotTrack() (gas: 33311)
[PASS] test_setRoleAdmin_fuzz_trackAdminRoles_multipleRoles_multipleAdmins(uint256) (runs: 5000, μ: 2144605, ~: 2197017)
Logs:
Bound result 12
[PASS] test_setRoleAdmin_fuzz_trackRolesAndTrackAdminRoles_multipleRoles(uint256) (runs: 5000, μ: 1960884, ~: 1899644)
Logs:
Bound result 12
[PASS] test_setRoleAdmin_trackAdminOfRoles() (gas: 606296)
[PASS] test_setRoleAdmin_trackAdminOfRoles_changeAdminRole() (gas: 577396)
[PASS] test_setRoleAdmin_trackAdminRoles() (gas: 609417)
[PASS] test_setRoleAdmin_trackRolesAndTrackAdminRoles() (gas: 386651)
[PASS] test_setRoleGuardian_trackRoles() (gas: 266703)
[PASS] test_setTargetFunctionRole() (gas: 611297)
[PASS] test_setTargetFunctionRole_multipleTargets() (gas: 1198461)
[PASS] test_setTargetFunctionRole_removeTarget() (gas: 1029312)
[PASS] test_setTargetFunctionRole_skipAddPublicRole() (gas: 211675)
[PASS] test_setTargetFunctionRole_skipAddToAdminRole() (gas: 39629)
[PASS] test_setTargetFunctionRole_withReplace() (gas: 884760)
Suite result: ok. 50 passed; 0 failed; 0 skipped; finished in 25.69s (25.69s CPU time)
Ran 22 tests for tests/contracts/hub/AssetInterestRateStrategy.t.sol:AssetInterestRateStrategyTest
[PASS] test_calculateInterestRate_AtMaxUtilization() (gas: 24643)
Logs:
Bound result 10000
Bound result 778565440757296803935461404101
[PASS] test_calculateInterestRate_AtOptimalPoint() (gas: 24281)
Logs:
Bound result 2000
Bound result 778565440757296803935461404101
[PASS] test_calculateInterestRate_LeftToOptimalPoint(uint256) (runs: 5000, μ: 24191, ~: 24330)
Logs:
Bound result 137
Bound result 252173843969976304268974536488
[PASS] test_calculateInterestRate_RightToOptimalPoint(uint256) (runs: 5000, μ: 25366, ~: 25416)
Logs:
Bound result 8137
Bound result 252173843969976304268974536488
[PASS] test_calculateInterestRate_ZeroDebtZeroLiquidity() (gas: 18749)
Logs:
Bound result 0
[PASS] test_calculateInterestRate_fuzz_ZeroDebt(uint256) (runs: 5000, μ: 19050, ~: 18800)
Logs:
Bound result 3124043968137
[PASS] test_calculateInterestRate_revertsWith_InterestRateDataNotSet() (gas: 11226)
[PASS] test_deploy_revertsWith_InvalidAddress() (gas: 3724)
[PASS] test_getBaseDrawnRate() (gas: 14789)
[PASS] test_getInterestRateData() (gas: 19326)
[PASS] test_getMaxDrawnRate() (gas: 15235)
[PASS] test_getOptimalUsageRatio() (gas: 14750)
[PASS] test_getRateGrowthAfterOptimal() (gas: 14791)
[PASS] test_getRateGrowthBeforeOptimal() (gas: 14813)
[PASS] test_maxDrawnRate() (gas: 8270)
[PASS] test_maxOptimalRatio() (gas: 8313)
[PASS] test_minOptimalRatio() (gas: 8321)
[PASS] test_setInterestRateData() (gas: 68976)
[PASS] test_setInterestRateData_revertsWith_InvalidMaxDrawnRate() (gas: 41783)
[PASS] test_setInterestRateData_revertsWith_InvalidOptimalUsageRatio() (gas: 42401)
[PASS] test_setInterestRateData_revertsWith_InvalidRateData() (gas: 35313)
[PASS] test_setInterestRateData_revertsWith_OnlyHub() (gas: 23563)
Suite result: ok. 22 passed; 0 failed; 0 skipped; finished in 1.22s (1.20s CPU time)
Ran 6 tests for tests/contracts/position-manager/libraries/ConfigPermissionsMap.t.sol:ConfigPermissionsMapTest
[PASS] test_constants() (gas: 12031)
[PASS] test_getConfigPermissionValues(uint8) (runs: 5000, μ: 13703, ~: 13703)
[PASS] test_setCanSetUsingAsCollateral_fuzz(uint8,bool) (runs: 5000, μ: 10578, ~: 10566)
[PASS] test_setCanUpdateUserDynamicConfig_fuzz(uint8,bool) (runs: 5000, μ: 10602, ~: 10590)
[PASS] test_setCanUpdateUserRiskPremium_fuzz(uint8,bool) (runs: 5000, μ: 10634, ~: 10622)
[PASS] test_setGlobalPermissions_fuzz(bool) (runs: 5000, μ: 13145, ~: 13155)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 1.08s (1.08s CPU time)
Ran 10 tests for tests/contracts/spoke/configuration/Spoke.DynamicConfig.Triggers.t.sol:SpokeDynamicConfigTriggersTest
[PASS] test_borrow_triggers_dynamicConfigUpdate() (gas: 1506111)
[PASS] test_liquidate_does_not_trigger_dynamicConfigUpdate() (gas: 1790730)
[PASS] test_repay_does_not_trigger_dynamicConfigUpdate() (gas: 1058891)
[PASS] test_supply_does_not_trigger_dynamicConfigUpdate() (gas: 1277274)
[PASS] test_updateUserDynamicConfig_doesHFCheck() (gas: 945792)
[PASS] test_updateUserDynamicConfig_reverts_when_not_authorized(address) (runs: 5000, μ: 1287585, ~: 1287585)
[PASS] test_updateUserDynamicConfig_triggers_dynamicConfigUpdate() (gas: 733095)
[PASS] test_updateUserDynamicConfig_updatesRP() (gas: 1455009)
[PASS] test_usingAsCollateral_triggers_dynamicConfigUpdate() (gas: 1531925)
[PASS] test_withdraw_triggers_dynamicConfigUpdate() (gas: 1536691)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 29.92s (29.90s CPU time)
Ran 21 tests for tests/contracts/spoke/configuration/Spoke.DynamicConfig.t.sol:SpokeDynamicConfigTest
[PASS] test_addDynamicReserveConfig() (gas: 79180)
[PASS] test_addDynamicReserveConfig_fuzz_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_incompatible(uint16,uint32) (runs: 5000, μ: 46219, ~: 46391)
Logs:
Bound result 9010
Bound result 11100
[PASS] test_addDynamicReserveConfig_once() (gas: 508859)
[PASS] test_addDynamicReserveConfig_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 45602, ~: 45602)
[PASS] test_addDynamicReserveConfig_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_collateralFactor() (gas: 57217)
[PASS] test_addDynamicReserveConfig_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_liquidationBonus() (gas: 40371)
[PASS] test_addDynamicReserveConfig_revertsWith_InvalidLiquidationFee() (gas: 40878)
[PASS] test_addDynamicReserveConfig_revertsWith_MaximumDynamicConfigKeyReached() (gas: 43361)
[PASS] test_addDynamicReserveConfig_revertsWith_ReserveNotListed() (gas: 28264)
[PASS] test_fuzz_addDynamicReserveConfig_spaced_dup_updates(bytes32) (runs: 5000, μ: 415388, ~: 445873)
[PASS] test_fuzz_addDynamicReserveConfig_trailing_order(bytes32) (runs: 5000, μ: 396633, ~: 429985)
[PASS] test_offboardReserve_existing_borrows_remain_unaffected() (gas: 1263146)
[PASS] test_updateDynamicReserveConfig() (gas: 1718912)
[PASS] test_updateDynamicReserveConfig_fuzz_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus(uint16,uint32) (runs: 5000, μ: 56823, ~: 56995)
Logs:
Bound result 9010
Bound result 11100
[PASS] test_updateDynamicReserveConfig_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 45581, ~: 45581)
[PASS] test_updateDynamicReserveConfig_revertsWith_DynamicConfigKeyUninitialized() (gas: 48973)
[PASS] test_updateDynamicReserveConfig_revertsWith_InvalidCollateralFactor() (gas: 50049)
[PASS] test_updateDynamicReserveConfig_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_collateralFactor() (gas: 50783)
[PASS] test_updateDynamicReserveConfig_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_liquidationBonus() (gas: 50953)
[PASS] test_updateDynamicReserveConfig_revertsWith_InvalidLiquidationFee() (gas: 51457)
[PASS] test_updateDynamicReserveConfig_revertsWith_ReserveNotListed() (gas: 28657)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 23.56s (23.54s CPU time)
Ran 5 tests for tests/gas/Spoke.Getters.gas.t.sol:SpokeGetters_Gas_Tests
[PASS] test_getUserAccountData() (gas: 23662)
[PASS] test_getUserAccountData_oneSupplies() (gas: 295196)
[PASS] test_getUserAccountData_twoSupplies() (gas: 537085)
[PASS] test_getUserAccountData_twoSupplies_oneBorrows() (gas: 1078969)
[PASS] test_getUserAccountData_twoSupplies_twoBorrows() (gas: 1661266)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 46.02ms (4.56ms CPU time)
Ran 6 tests for tests/contracts/spoke/misc/Spoke.Getters.t.sol:SpokeGettersTest
[PASS] test_getLiquidationBonus_configured() (gas: 100881)
Logs:
Bound result 2
Bound result 1000000000000000000
Bound result 4000
Bound result 900000000000000000
[PASS] test_getLiquidationBonus_fuzz_configured(uint256,uint256,uint16,uint64) (runs: 5000, μ: 99668, ~: 100011)
Logs:
Bound result 1
Bound result 6862
Bound result 2999
Bound result 469390602750270781
[PASS] test_getLiquidationBonus_fuzz_notConfigured(uint256,uint256) (runs: 5000, μ: 77602, ~: 77822)
Logs:
Bound result 4
Bound result 100
[PASS] test_getLiquidationBonus_notConfigured() (gas: 78810)
Logs:
Bound result 2
Bound result 1000000000000000000
[PASS] test_premiumRayGetters() (gas: 1712630)
[PASS] test_protocol_getters() (gas: 303359)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 2.65s (2.63s CPU time)
Ran 4 tests for tests/contracts/spoke/liquidation/Spoke.LiquidationCall.Dust.t.sol:SpokeLiquidationCallDustTest
[PASS] test_collateralDust_min_debtToTarget() (gas: 18141111)
[PASS] test_debtToCover_exceeds_collateralValue() (gas: 18129444)
[PASS] test_dustColl_allowed() (gas: 17988464)
[PASS] test_dustDebt_allowed() (gas: 18119832)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 62.86ms (29.01ms CPU time)
Ran 14 tests for tests/contracts/spoke/liquidation/Spoke.LiquidationCall.Scenarios.t.sol:SpokeLiquidationCallScenariosTest
[PASS] test_liquidationCall_revertsWith_ReentrancyGuardReentrantCall_hubRefreshPremium() (gas: 26375540)
[PASS] test_liquidationCall_revertsWith_ReentrancyGuardReentrantCall_hubRemove() (gas: 26245173)
[PASS] test_liquidationCall_revertsWith_ReentrancyGuardReentrantCall_hubReportDeficit() (gas: 26358115)
[PASS] test_liquidationCall_revertsWith_ReentrancyGuardReentrantCall_hubRestore() (gas: 26321528)
[PASS] test_liquidationCall_scenario1() (gas: 4733599)
[PASS] test_liquidationCall_scenario2() (gas: 4741968)
[PASS] test_liquidationCall_scenario3() (gas: 3800889)
[PASS] test_liquidationCall_scenario4() (gas: 28132837)
[PASS] test_liquidationCall_scenario5() (gas: 3946383)
[PASS] test_liquidationCall_scenario6() (gas: 2711353)
[PASS] test_liquidationCall_scenario7() (gas: 3777151)
[PASS] test_liquidationCall_scenario8() (gas: 2540326)
[PASS] test_scenario_halted_asset() (gas: 27308008)
[PASS] test_scenario_halted_asset_with_deficit() (gas: 27150906)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 210.87ms (179.32ms CPU time)
Ran 26 tests for tests/contracts/position-manager/ConfigPositionManager/ConfigPositionManager.Permit.t.sol:ConfigPositionManagerPermitTest
[PASS] test_DOMAIN_SEPARATOR() (gas: 5711)
[PASS] test_eip712Domain() (gas: 10941)
[PASS] test_setCanSetUsingAsCollateralPermissionPermit_typeHash() (gas: 9929)
[PASS] test_setCanSetUsingAsCollateralPermissionWithSig_fuzz(address,bool) (runs: 5000, μ: 158903, ~: 159261)
[PASS] test_setCanSetUsingAsCollateralPermissionWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 145129, ~: 142733)
[PASS] test_setCanSetUsingAsCollateralPermissionWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 28465)
[PASS] test_setCanSetUsingAsCollateralPermissionWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 32780)
[PASS] test_setCanSetUsingAsCollateralPermissionWithSig_revertsWith_SpokeNotRegistered() (gas: 61776)
[PASS] test_setCanUpdateUserDynamicConfigPermissionPermit_typeHash() (gas: 9863)
[PASS] test_setCanUpdateUserDynamicConfigPermissionWithSig_fuzz(address,bool) (runs: 5000, μ: 158842, ~: 159200)
[PASS] test_setCanUpdateUserDynamicConfigPermissionWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 145106, ~: 142710)
[PASS] test_setCanUpdateUserDynamicConfigPermissionWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 28434)
[PASS] test_setCanUpdateUserDynamicConfigPermissionWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 32782)
[PASS] test_setCanUpdateUserDynamicConfigPermissionWithSig_revertsWith_SpokeNotRegistered() (gas: 61767)
[PASS] test_setCanUpdateUserRiskPremiumPermissionPermit_typeHash() (gas: 9949)
[PASS] test_setCanUpdateUserRiskPremiumPermissionWithSig_fuzz(address,bool) (runs: 5000, μ: 158886, ~: 159244)
[PASS] test_setCanUpdateUserRiskPremiumPermissionWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 145107, ~: 142711)
[PASS] test_setCanUpdateUserRiskPremiumPermissionWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 28411)
[PASS] test_setCanUpdateUserRiskPremiumPermissionWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 32749)
[PASS] test_setCanUpdateUserRiskPremiumPermissionWithSig_revertsWith_SpokeNotRegistered() (gas: 61744)
[PASS] test_setGlobalPermissionPermit_typeHash() (gas: 10002)
[PASS] test_setGlobalPermissionWithSig_fuzz(address,bool) (runs: 5000, μ: 161306, ~: 160329)
[PASS] test_setGlobalPermissionWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 145089, ~: 142693)
[PASS] test_setGlobalPermissionWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 28398)
[PASS] test_setGlobalPermissionWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 32788)
[PASS] test_setGlobalPermissionWithSig_revertsWith_SpokeNotRegistered() (gas: 61729)
Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 50.05s (50.02s CPU time)
Ran 40 tests for tests/contracts/position-manager/ConfigPositionManager/ConfigPositionManager.t.sol:ConfigPositionManagerTest
[PASS] test_multicall() (gas: 85051)
[PASS] test_renounceCanUpdateUserDynamicConfigPermission() (gas: 42286)
[PASS] test_renounceCanUpdateUserDynamicConfigPermission_revertsWith_SpokeNotRegistered() (gas: 17445)
[PASS] test_renounceCanUpdateUserRiskPremiumPermission() (gas: 42198)
[PASS] test_renounceCanUpdateUserRiskPremiumPermission_revertsWith_SpokeNotRegistered() (gas: 17400)
[PASS] test_renounceCanUpdateUsingAsCollateralPermission() (gas: 42190)
[PASS] test_renounceCanUpdateUsingAsCollateralPermission_revertsWith_SpokeNotRegistered() (gas: 17446)
[PASS] test_renounceGlobalPermission() (gas: 42969)
[PASS] test_renounceGlobalPermission_revertsWith_SpokeNotRegistered() (gas: 17445)
[PASS] test_setCanSetUsingAsCollateralPermission() (gas: 52808)
[PASS] test_setCanSetUsingAsCollateralPermission_remove() (gas: 42331)
[PASS] test_setCanSetUsingAsCollateralPermission_revertsWith_InvalidAddress_zeroDelegatee() (gas: 17884)
[PASS] test_setCanSetUsingAsCollateralPermission_revertsWith_SpokeNotRegistered() (gas: 17540)
[PASS] test_setCanUpdateUserDynamicConfigPermission() (gas: 52817)
[PASS] test_setCanUpdateUserDynamicConfigPermission_remove() (gas: 42340)
[PASS] test_setCanUpdateUserDynamicConfigPermission_revertsWith_InvalidAddress_zeroDelegatee() (gas: 17959)
[PASS] test_setCanUpdateUserDynamicConfigPermission_revertsWith_SpokeNotRegistered() (gas: 17560)
[PASS] test_setCanUpdateUserRiskPremiumPermission() (gas: 52796)
[PASS] test_setCanUpdateUserRiskPremiumPermission_remove() (gas: 42357)
[PASS] test_setCanUpdateUserRiskPremiumPermission_revertsWith_InvalidAddress_zeroDelegatee() (gas: 17937)
[PASS] test_setCanUpdateUserRiskPremiumPermission_revertsWith_SpokeNotRegistered() (gas: 17542)
[PASS] test_setGlobalPermission() (gas: 54258)
[PASS] test_setGlobalPermission_removeAllPermissions() (gas: 43109)
[PASS] test_setGlobalPermission_removePreviousPermissions() (gas: 47740)
[PASS] test_setGlobalPermission_revertsWith_InvalidAddress_zeroDelegatee() (gas: 17911)
[PASS] test_setGlobalPermission_revertsWith_SpokeNotRegistered() (gas: 17561)
[PASS] test_setGlobalPermission_setThenRemove() (gas: 49380)
[PASS] test_setUsingAsCollateralOnBehalfOf_fuzz_withGlobalPermission(uint256,bool) (runs: 5000, μ: 114593, ~: 119432)
Logs:
Bound result 2
[PASS] test_setUsingAsCollateralOnBehalfOf_fuzz_withPermission(uint256,bool) (runs: 5000, μ: 114630, ~: 119469)
Logs:
Bound result 2
[PASS] test_setUsingAsCollateralOnBehalfOf_noop_whenStatusUnchanged(uint256,bool) (runs: 5000, μ: 92267, ~: 104979)
Logs:
Bound result 2
[PASS] test_setUsingAsCollateralOnBehalfOf_revertsWith_CallerNotAllowed() (gas: 22145)
[PASS] test_setUsingAsCollateralOnBehalfOf_revertsWith_SpokeNotRegistered() (gas: 17556)
[PASS] test_updateUserDynamicConfigOnBehalfOf_revertsWith_CallerNotAllowed() (gas: 19930)
[PASS] test_updateUserDynamicConfigOnBehalfOf_revertsWith_SpokeNotRegistered() (gas: 17489)
[PASS] test_updateUserDynamicConfigOnBehalfOf_withGlobalPermission() (gas: 74670)
[PASS] test_updateUserDynamicConfigOnBehalfOf_withPermission() (gas: 74683)
[PASS] test_updateUserRiskPremiumOnBehalfOf_revertsWith_CallerNotAllowed() (gas: 19910)
[PASS] test_updateUserRiskPremiumOnBehalfOf_revertsWith_SpokeNotRegistered() (gas: 17469)
[PASS] test_updateUserRiskPremiumOnBehalfOf_withGlobalPermission() (gas: 829671)
[PASS] test_updateUserRiskPremiumOnBehalfOf_withPermission() (gas: 829751)
Suite result: ok. 40 passed; 0 failed; 0 skipped; finished in 11.60s (11.57s CPU time)
Ran 8 tests for tests/contracts/position-manager/libraries/EIP712Hash.t.sol:EIP712HashTest
[PASS] test_constants() (gas: 11129)
[PASS] test_hash_borrow_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 6689, ~: 6689)
[PASS] test_hash_repay_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 6690, ~: 6690)
[PASS] test_hash_setUsingAsCollateral_fuzz((address,uint256,bool,address,uint256,uint256)) (runs: 5000, μ: 7148, ~: 7148)
[PASS] test_hash_supply_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 6733, ~: 6733)
[PASS] test_hash_updateUserDynamicConfig_fuzz((address,address,uint256,uint256)) (runs: 5000, μ: 6349, ~: 6349)
[PASS] test_hash_updateUserRiskPremium_fuzz((address,address,uint256,uint256)) (runs: 5000, μ: 6370, ~: 6370)
[PASS] test_hash_withdraw_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 6711, ~: 6711)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 5.23s (5.23s CPU time)
Ran 3 tests for tests/contracts/utils/ExtSload.t.sol:ExtSloadTest
[PASS] test_extSload(bytes32) (runs: 5000, μ: 9767, ~: 9767)
[PASS] test_extSloads(uint256) (runs: 5000, μ: 952128, ~: 914497)
Logs:
Bound result 812
[PASS] test_extSloads(uint256,bytes) (runs: 5000, μ: 1003570, ~: 955120)
Logs:
Bound result 362
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 64.44s (64.44s CPU time)
Ran 5 tests for tests/gas/Gateways.Operations.gas.t.sol:NativeTokenGateway_Gas_Tests
[PASS] test_borrowNative() (gas: 947983)
[PASS] test_repayNative() (gas: 1020514)
[PASS] test_supplyAndCollateralNative() (gas: 315108)
[PASS] test_supplyNative() (gas: 294582)
[PASS] test_withdrawNative() (gas: 527815)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 45.64ms (4.20ms CPU time)
Ran 8 tests for tests/gas/Gateways.Operations.gas.t.sol:SignatureGateway_Gas_Tests
[PASS] test_borrowWithSig() (gas: 766879)
[PASS] test_repayWithSig() (gas: 983023)
[PASS] test_setSelfAsUserPositionManagerWithSig() (gas: 209294)
[PASS] test_setUsingAsCollateralWithSig() (gas: 294316)
[PASS] test_supplyWithSig() (gas: 447274)
[PASS] test_updateUserDynamicConfigWithSig() (gas: 145250)
[PASS] test_updateUserRiskPremiumWithSig() (gas: 143093)
[PASS] test_withdrawWithSig() (gas: 423521)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 49.64ms (8.00ms CPU time)
Ran 21 tests for tests/contracts/spoke/withdraw/Spoke.Withdraw.HealthFactor.t.sol:SpokeWithdrawHealthFactorTest
[PASS] test_unsetCollateral_fuzz_revertsWith_HealthFactorBelowThreshold(uint256) (runs: 5000, μ: 917470, ~: 917078)
Logs:
Bound result 3124043968137
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_interest_increase(uint256,uint256) (runs: 5000, μ: 666458, ~: 666838)
Logs:
Bound result 80
Bound result 327323530
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls(uint256,uint256) (runs: 5000, μ: 897442, ~: 897544)
Logs:
Bound result 2867247507249
Bound result 2917432920835457
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls_price_drop_dai(uint256,uint256,uint256) (runs: 5000, μ: 1160991, ~: 1161267)
Logs:
Bound result 2
Bound result 1100000000000000000
Bound result 96
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls_price_drop_weth(uint256,uint256,uint256) (runs: 5000, μ: 1161429, ~: 1161283)
Logs:
Bound result 200000000
Bound result 1100000000000000000
Bound result 96
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls_with_interest(uint256,uint256) (runs: 5000, μ: 952450, ~: 953011)
Logs:
Bound result 2867247507249
Bound result 2917432920835457
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts(uint256,uint256) (runs: 5000, μ: 1020824, ~: 1020247)
Logs:
Bound result 1831884821
Bound result 120
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts_price_drop(uint256,uint256,uint256) (runs: 5000, μ: 1270776, ~: 1270471)
Logs:
Bound result 16223
Bound result 294810381084112878185707385574
Bound result 3000000000000000000
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 1058463, ~: 1058058)
Logs:
Bound result 16223
Bound result 294810381084112878185707385574
Bound result 3000000000000000000
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_price_drop(uint256,uint256) (runs: 5000, μ: 879467, ~: 879813)
Logs:
Bound result 132268384570
Bound result 644966812442621595807
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_singleBorrow(uint256) (runs: 5000, μ: 631157, ~: 631109)
Logs:
Bound result 24080
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_interest_increase() (gas: 661569)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_colls() (gas: 892897)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_colls_price_drop_dai() (gas: 1155120)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_colls_price_drop_weth() (gas: 1155123)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_colls_with_interest() (gas: 948033)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_debts() (gas: 1015367)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_debts_price_drop() (gas: 1263948)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_debts_with_interest() (gas: 1051862)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_price_drop() (gas: 874315)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_singleBorrow() (gas: 632627)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 174.87s (174.82s CPU time)
Ran 12 tests for tests/contracts/position-manager/GiverPositionManager.t.sol:GiverPositionManagerTest
[PASS] test_multicall() (gas: 348052)
[PASS] test_repayOnBehalfOf() (gas: 662400)
Logs:
Bound result 50000000000000000000
[PASS] test_repayOnBehalfOf_fuzz(uint256) (runs: 5000, μ: 659291, ~: 662628)
Logs:
Bound result 3124043968137
[PASS] test_repayOnBehalfOf_fuzz_withInterest(uint256,uint256) (runs: 5000, μ: 593858, ~: 590214)
Logs:
Bound result 900000068691281935000
Bound result 25920101
[PASS] test_repayOnBehalfOf_maxRepay() (gas: 583981)
[PASS] test_repayOnBehalfOf_maxRepay_revertsWith_InvalidRepayAmount() (gas: 490693)
[PASS] test_repayOnBehalfOf_revertsWith_ReserveNotListed() (gas: 32367)
[PASS] test_repayOnBehalfOf_revertsWith_SpokeNotRegistered() (gas: 28767)
[PASS] test_supplyOnBehalfOf() (gas: 315270)
Logs:
Bound result 100000000000000000000
[PASS] test_supplyOnBehalfOf_fuzz(uint256) (runs: 5000, μ: 315567, ~: 315341)
Logs:
Bound result 3124043968137
[PASS] test_supplyOnBehalfOf_revertsWith_ReserveNotListed() (gas: 32428)
[PASS] test_supplyOnBehalfOf_revertsWith_SpokeNotRegistered() (gas: 28817)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 30.73s (30.71s CPU time)
Ran 6 tests for tests/contracts/hub/misc/Hub.Access.t.sol:HubAccessTest
[PASS] test_change_authority() (gas: 213977)
[PASS] test_change_role_responsibility() (gas: 131759)
[PASS] test_hub_access_manager_exposure() (gas: 18422)
[PASS] test_hub_admin_access() (gas: 1364028)
[PASS] test_migrate_role_responsibility() (gas: 718316)
[PASS] test_setInterestRateData_access() (gas: 113564)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 28.01ms (3.83ms CPU time)
Ran 19 tests for tests/contracts/hub/add-remove/Hub.Add.t.sol:HubAddTest
[PASS] test_add_AddCapReachedButNotExceeded_rounding() (gas: 680262)
[PASS] test_add_fuzz_AddCapReachedButNotExceeded(uint40) (runs: 5000, μ: 173465, ~: 173421)
Logs:
Bound result 9
[PASS] test_add_fuzz_multi_asset_multi_spoke(uint256,uint256,uint256) (runs: 5000, μ: 348248, ~: 348396)
Logs:
Bound result 3
Bound result 218470873395738003579119570309
Bound result 446067553769140138733721804
[PASS] test_add_fuzz_revertsWith_AddCapExceeded(uint40) (runs: 5000, μ: 127526, ~: 127482)
Logs:
Bound result 9
[PASS] test_add_fuzz_revertsWith_AddCapExceeded_due_to_interest(uint40,uint256,uint256) (runs: 5000, μ: 281827, ~: 281693)
Logs:
Bound result 1291
Bound result 1071208440522043736492
Bound result 173721804
[PASS] test_add_fuzz_revertsWith_InvalidShares_due_to_index(uint256,uint256,uint256) (runs: 5000, μ: 228039, ~: 228238)
Logs:
Bound result 999999999904900000000000000001
Bound result 3122070484
Bound result 9
[PASS] test_add_fuzz_single_asset(uint256,address,uint256) (runs: 5000, μ: 360363, ~: 360383)
Logs:
Bound result 0
Bound result 714477922937634359008573850498
[PASS] test_add_fuzz_single_spoke_multi_add(uint256,uint256) (runs: 5000, μ: 839570, ~: 839599)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_add_multi_add_minimal_shares() (gas: 332551)
[PASS] test_add_revertsWith_AmountDowncastOverflow() (gas: 363552)
[PASS] test_add_revertsWith_InsufficientTransferred() (gas: 69426)
[PASS] test_add_revertsWith_InvalidAmount() (gas: 18616)
[PASS] test_add_revertsWith_InvalidShares() (gas: 228061)
[PASS] test_add_revertsWith_SharesDowncastOverflow() (gas: 228597)
[PASS] test_add_revertsWith_SpokeHalted() (gas: 106274)
[PASS] test_add_revertsWith_SpokeNotActive() (gas: 106255)
[PASS] test_add_single_asset() (gas: 351288)
Logs:
Bound result 2
Bound result 100000000000000000000
[PASS] test_add_with_increased_index() (gas: 324174)
[PASS] test_add_with_increased_index_with_premium() (gas: 687684)
Suite result: ok. 19 passed; 0 failed; 0 skipped; finished in 50.56s (50.53s CPU time)
Ran 5 tests for tests/contracts/spoke/withdraw/Spoke.Withdraw.Scenario.t.sol:SpokeWithdrawScenarioTest
[PASS] test_withdraw_fuzz_all_liquidity_with_interest_multi_user((uint256,uint256,uint256,uint256,uint256[2],uint256)) (runs: 5000, μ: 1127826, ~: 1152296)
Logs:
Bound result 2
Bound result 991466614162668518126885086414
Bound result 3692366002731856463108822170
Bound result 454377326
Bound result 136923370
Bound result 440735623449517850262567531806
Bound result 16904
[PASS] test_withdraw_fuzz_partial_full_with_interest(uint256,uint256,uint256,uint40) (runs: 5000, μ: 963937, ~: 963915)
Logs:
Bound result 3
Bound result 1
Bound result 1
Bound result 5355
[PASS] test_withdraw_round_trip_deposit_withdraw(uint256,uint256,address,uint256) (runs: 5000, μ: 417459, ~: 417444)
Logs:
Bound result 4
Bound result 386061929037201014875895872375
Bound result 50000000000000000000
[PASS] test_withdraw_round_trip_withdraw_deposit(uint256,uint256,uint256,address,uint256) (runs: 5000, μ: 438568, ~: 437872)
Logs:
Bound result 2
Bound result 2
Bound result 435990357906337338302356819498
Bound result 950702884693869056163874704002
[PASS] test_withdraw_underwater_reserve_not_collateral() (gas: 973916)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 79.72s (79.69s CPU time)
Ran 6 tests for tests/contracts/spoke/withdraw/Spoke.Withdraw.Validation.t.sol:SpokeWithdrawValidationTest
[PASS] test_withdraw_fuzz_revertsWith_InsufficientLiquidity_with_debt(uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 445269, ~: 445345)
Logs:
Bound result 1
Bound result 13800454394220
Bound result 519825888141
Bound result 73242
Bound result 175908665
[PASS] test_withdraw_fuzz_revertsWith_InsufficientSupply_zero_supplied(uint256) (runs: 5000, μ: 60954, ~: 60661)
Logs:
Bound result 3124043968137
[PASS] test_withdraw_revertsWith_InsufficientLiquidity_with_debt() (gas: 437909)
[PASS] test_withdraw_revertsWith_InvalidAmount_zero_supplied() (gas: 57304)
[PASS] test_withdraw_revertsWith_ReserveNotListed() (gas: 22475)
[PASS] test_withdraw_revertsWith_ReservePaused() (gas: 63021)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 6.48s (6.46s CPU time)
Ran 38 tests for tests/contracts/hub/configuration/Hub.Config.t.sol:HubConfigTest
[PASS] test_addAsset_fuzz(address,uint8,address) (runs: 5000, μ: 399470, ~: 399509)
Logs:
Bound result 18
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_feeReceiver(address,uint8,address) (runs: 5000, μ: 50340, ~: 50038)
Logs:
Bound result 12
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_irStrategy(address,uint8,address) (runs: 5000, μ: 50317, ~: 50015)
Logs:
Bound result 12
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_underlying(uint8,address,address) (runs: 5000, μ: 41634, ~: 41634)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals(address,uint8,address,address) (runs: 5000, μ: 50946, ~: 50988)
Logs:
Bound result 28
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals_tooLow(address,uint8,address,address) (runs: 5000, μ: 51047, ~: 51333)
Logs:
Bound result 4
[PASS] test_addAsset_fuzz_reverts_InvalidIrData(address,uint8,address,address) (runs: 5000, μ: 80545823534, ~: 39937)
Logs:
Bound result 9
[PASS] test_addAsset_revertsWith_BlockTimestampDowncastOverflow() (gas: 961606)
[PASS] test_addAsset_revertsWith_DrawnRateDowncastOverflow() (gas: 958639)
[PASS] test_addAsset_reverts_UnderlyingAlreadyListed() (gas: 54353)
[PASS] test_addSpoke_fuzz(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 132572, ~: 132621)
Logs:
Bound result 3
[PASS] test_addSpoke_fuzz_revertsWith_AssetNotListed(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 40664, ~: 40653)
Logs:
Bound result 123
[PASS] test_addSpoke_fuzz_revertsWith_InvalidAddress_spoke(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 39262, ~: 39311)
Logs:
Bound result 3
[PASS] test_addSpoke_revertsWith_SpokeAlreadyListed() (gas: 45260)
[PASS] test_getAssetId() (gas: 80480)
[PASS] test_getAssetId_fuzz_revertsWith_AssetNotListed(address) (runs: 5000, μ: 23521, ~: 23521)
[PASS] test_hub_deploy_reverts_on_InvalidConstructorInput() (gas: 772359)
[PASS] test_hub_max_riskPremium() (gas: 13555)
[PASS] test_isUnderlyingListed() (gas: 1184175)
[PASS] test_updateAssetConfig_NewFeeReceiver_noFees() (gas: 729791)
[PASS] test_updateAssetConfig_NewFeeReceiver_revertsWith_SpokeNotActive_noFees() (gas: 626700)
[PASS] test_updateAssetConfig_UseExistingSpokeAndListedAsFeeReceiver_revertsWith_SpokeAlreadyListed() (gas: 76582)
[PASS] test_updateAssetConfig_fuzz(uint256,(address,uint16,address,address)) (runs: 5000, μ: 280291, ~: 280609)
Logs:
Bound result 1
Bound result 184
[PASS] test_updateAssetConfig_fuzz_FromZeroLiquidityFee(uint256,uint16) (runs: 5000, μ: 844225, ~: 844047)
Logs:
Bound result 3
Bound result 1
Bound result 3
Bound result 0
Bound result 3
Bound result 1
[PASS] test_updateAssetConfig_fuzz_LiquidityFee(uint256,uint16) (runs: 5000, μ: 744804, ~: 744626)
Logs:
Bound result 3
Bound result 1
Bound result 3
Bound result 1
[PASS] test_updateAssetConfig_fuzz_NewDrawnRateStrategy(uint256) (runs: 5000, μ: 715963, ~: 715964)
Logs:
Bound result 3
[PASS] test_updateAssetConfig_fuzz_NewFeeReceiver(uint256) (runs: 5000, μ: 843496, ~: 843497)
Logs:
Bound result 3
Bound result 3
Bound result 1000
[PASS] test_updateAssetConfig_fuzz_ReuseFeeReceiver_revertsWith_SpokeAlreadyListed(uint256) (runs: 5000, μ: 901507, ~: 901508)
Logs:
Bound result 3
Bound result 3
Bound result 3
Bound result 1000
[PASS] test_updateAssetConfig_fuzz_Scenario(uint256) (runs: 5000, μ: 745244, ~: 745297)
Logs:
Bound result 3
Bound result 3
Bound result 1000
Bound result 3
Bound result 1000
Bound result 3
Bound result 0
Bound result 3
Bound result 0
Bound result 3
Bound result 0
Bound result 3
Bound result 0
[PASS] test_updateAssetConfig_fuzz_revertsWith_InvalidInterestRateStrategy(uint256) (runs: 5000, μ: 66930, ~: 66983)
Logs:
Bound result 3
[PASS] test_updateAssetConfig_fuzz_revertsWith_InvalidLiquidityFee(uint256,(address,uint16,address,address)) (runs: 5000, μ: 45585, ~: 45483)
Logs:
Bound result 1
Bound result 184
[PASS] test_updateAssetConfig_fuzz_revertsWith_InvalidReinvestmentController() (gas: 478878)
[PASS] test_updateAssetConfig_fuzz_revertsWith_calculateInterestRateReverts(uint256,(address,uint16,address,address)) (runs: 5000, μ: 204774, ~: 204737)
Logs:
Bound result 4
Bound result 15
[PASS] test_updateAssetConfig_fuzz_revertsWith_setInterestRateDataReverts(uint256,(address,uint16,address,address)) (runs: 5000, μ: 102202, ~: 102162)
Logs:
Bound result 0
Bound result 7500
[PASS] test_updateAssetConfig_oldFeeReceiver_flags() (gas: 929300)
Logs:
Bound result 1
Bound result 500
Bound result 3
Bound result 1000
Bound result 5
Bound result 500
Bound result 3
Bound result 1000
[PASS] test_updateSpokeConfig_fuzz(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 65097, ~: 65156)
Logs:
Bound result 3
[PASS] test_updateSpokeConfig_fuzz_revertsWith_SpokeNotListed(uint256,address,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 45965, ~: 46032)
Logs:
Bound result 1
[PASS] test_updateSpokeConfig_revertsWith_AssetNotListed() (gas: 35036)
Suite result: ok. 38 passed; 0 failed; 0 skipped; finished in 105.08s (105.05s CPU time)
Ran 16 tests for tests/contracts/hub/draw-restore/Hub.Draw.t.sol:HubDrawTest
[PASS] test_draw_DifferentSpokes() (gas: 364759)
[PASS] test_draw_fuzz_IncreasedDrawnRate(uint256,uint256) (runs: 5000, μ: 708524, ~: 708759)
Logs:
Bound result 3
Bound result 100
[PASS] test_draw_fuzz_amounts_same_block(uint256,uint256) (runs: 5000, μ: 304890, ~: 305017)
Logs:
Bound result 3
Bound result 100
[PASS] test_draw_fuzz_revertsWith_DrawCapExceeded(uint40) (runs: 5000, μ: 88902, ~: 88860)
Logs:
Bound result 9
[PASS] test_draw_fuzz_revertsWith_DrawCapExceeded_due_to_interest(uint40,uint256,uint256) (runs: 5000, μ: 293893, ~: 294136)
Logs:
Bound result 1291
Bound result 70309
Bound result 173721804
[PASS] test_draw_fuzz_revertsWith_InsufficientLiquidity(uint256,uint256) (runs: 5000, μ: 40489, ~: 40263)
Logs:
Bound result 3
Bound result 100
[PASS] test_draw_fuzz_revertsWith_InsufficientLiquidity_due_to_draw(uint256) (runs: 5000, μ: 177059, ~: 176768)
Logs:
Bound result 3124043968137
[PASS] test_draw_fuzz_revertsWith_InsufficientLiquidity_due_to_remove(uint256) (runs: 5000, μ: 138010, ~: 137805)
Logs:
Bound result 3124043968137
[PASS] test_draw_fuzz_revertsWith_InvalidAddress(uint256) (runs: 5000, μ: 21086, ~: 21086)
[PASS] test_draw_revertsWith_DrawCapExceeded_due_to_deficit() (gas: 276496)
[PASS] test_draw_revertsWith_InsufficientLiquidity() (gas: 33608)
[PASS] test_draw_revertsWith_InsufficientLiquidity_due_to_draw() (gas: 173401)
[PASS] test_draw_revertsWith_InsufficientLiquidity_due_to_remove() (gas: 135105)
[PASS] test_draw_revertsWith_InvalidAmount() (gas: 21172)
[PASS] test_draw_revertsWith_SpokeHalted() (gas: 67990)
[PASS] test_draw_revertsWith_SpokeNotActive() (gas: 67929)
Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 25.40s (25.36s CPU time)
Ran 8 tests for tests/contracts/hub/deficit/Hub.EliminateDeficit.t.sol:HubEliminateDeficitTest
[PASS] test_eliminateDeficit(uint256) (runs: 5000, μ: 679549, ~: 679549)
[PASS] test_eliminateDeficit_fuzz_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 36483, ~: 36483)
[PASS] test_eliminateDeficit_fuzz_revertsWith_ArithmeticUnderflow_CallerSpokeNoFunds(uint256) (runs: 5000, μ: 360097, ~: 360097)
[PASS] test_eliminateDeficit_revertsWith_InvalidAmount_ZeroAmountNoDeficit() (gas: 41035)
[PASS] test_eliminateDeficit_revertsWith_InvalidAmount_ZeroAmountWithDeficit() (gas: 356186)
[PASS] test_eliminateDeficit_revertsWith_InvalidAmount_on_UnregisteredCoveredSpoke() (gas: 41421)
[PASS] test_eliminateDeficit_revertsWith_SpokeNotActive_on_UnregisteredAsset() (gas: 392804)
[PASS] test_eliminateDeficit_revertsWith_callerSpokeNotActive() (gas: 166526)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 18.77s (18.75s CPU time)
Ran 6 tests for tests/contracts/hub/fees/Hub.MintFeeShares.t.sol:HubMintFeeSharesTest
[PASS] test_mintFeeShares() (gas: 325674)
[PASS] test_mintFeeShares_noFees() (gas: 384713)
[PASS] test_mintFeeShares_noShares() (gas: 301726)
[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 28.87ms (4.09ms CPU time)
Ran 9 tests for tests/gas/Hub.Operations.gas.t.sol:HubOperations_Gas_Tests
[PASS] test_add() (gas: 279985)
[PASS] test_deficit() (gas: 1392056)
[PASS] test_draw() (gas: 433345)
[PASS] test_mintFeeShares() (gas: 519642)
[PASS] test_payFee_transferShares() (gas: 971202)
[PASS] test_refreshPremium() (gas: 672333)
[PASS] test_remove() (gas: 325571)
[PASS] test_restore() (gas: 946828)
[PASS] test_restore_with_transfer() (gas: 947491)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 47.78ms (7.05ms CPU time)
Ran 14 tests for tests/contracts/spoke/withdraw/Spoke.Withdraw.t.sol:SpokeWithdrawTest
[PASS] test_fuzz_withdraw_effect_on_ex_rates(uint256,uint256) (runs: 5000, μ: 748539, ~: 750397)
Logs:
Bound result 100
Bound result 68691281934999
[PASS] test_withdraw_all_liquidity() (gas: 407035)
[PASS] test_withdraw_all_liquidity_with_interest_no_premium() (gas: 1203912)
[PASS] test_withdraw_all_liquidity_with_interest_with_premium() (gas: 1211960)
[PASS] test_withdraw_fuzz_all_elapsed_with_interest(uint256,uint256,uint40) (runs: 5000, μ: 790118, ~: 790035)
Logs:
Bound result 8159
Bound result 3915
Bound result 7741
[PASS] test_withdraw_fuzz_all_greater_than_supplied(uint256) (runs: 5000, μ: 410940, ~: 410647)
Logs:
Bound result 3124043968137
[PASS] test_withdraw_fuzz_all_liquidity_with_interest_no_premium((uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 1323629, ~: 1336608)
Logs:
Bound result 3
Bound result 8792994619245588
Bound result 469278318579570
Bound result 26447
Bound result 711545419
[PASS] test_withdraw_fuzz_all_liquidity_with_interest_with_premium((uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 1323291, ~: 1336131)
Logs:
Bound result 3
Bound result 8792994619245588
Bound result 469278318579570
Bound result 26447
Bound result 711545419
[PASS] test_withdraw_fuzz_all_with_interest(uint256,uint256) (runs: 5000, μ: 804141, ~: 804080)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_withdraw_fuzz_suppliedAmount(uint256) (runs: 5000, μ: 412822, ~: 412529)
Logs:
Bound result 3124043968137
[PASS] test_withdraw_max_greater_than_supplied() (gas: 381530)
[PASS] test_withdraw_revertsWith_ReentrancyGuardReentrantCall_hubRefreshPremium() (gas: 665292)
[PASS] test_withdraw_revertsWith_ReentrancyGuardReentrantCall_hubRemove() (gas: 407535)
[PASS] test_withdraw_same_block() (gas: 322792)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 131.53s (131.51s CPU time)
Ran 16 tests for tests/contracts/spoke/configurator/SpokeConfigurator.GranularAccessControl.t.sol:SpokeConfiguratorGranularAccessControlTest
[PASS] test_fuzz_unauthorized_cannotCall_liquidationConfigManagerMethods(address) (runs: 5000, μ: 117192, ~: 117192)
[PASS] test_fuzz_unauthorized_cannotCall_positionManagerAdminMethods(address) (runs: 5000, μ: 39805, ~: 39805)
[PASS] test_fuzz_unauthorized_cannotCall_reserveManagerMethods(address) (runs: 5000, μ: 458658, ~: 458658)
[PASS] test_liquidationConfigManager_canCall_updateLiquidationConfig() (gas: 62548)
[PASS] test_liquidationConfigManager_canCall_updateLiquidationTargetHealthFactor() (gas: 62133)
[PASS] test_liquidationConfigManager_cannotCall_anyPositionManagerAdminMethod() (gas: 39043)
[PASS] test_liquidationConfigManager_cannotCall_anyReserveMethod() (gas: 461097)
[PASS] test_positionManagerAdmin_canCall_updatePositionManager() (gas: 75207)
[PASS] test_positionManagerAdmin_cannotCall_anyLiquidationConfigMethod() (gas: 117087)
[PASS] test_positionManagerAdmin_cannotCall_anyReserveMethod() (gas: 460879)
[PASS] test_reserveManager_canCall_freezeAllReserves() (gas: 157066)
[PASS] test_reserveManager_canCall_pauseAllReserves() (gas: 157029)
[PASS] test_reserveManager_canCall_updateFrozen() (gas: 65260)
[PASS] test_reserveManager_canCall_updatePaused() (gas: 65207)
[PASS] test_reserveManager_cannotCall_anyLiquidationConfigMethod() (gas: 117064)
[PASS] test_reserveManager_cannotCall_anyPositionManagerAdminMethod() (gas: 39020)
Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 6.34s (6.31s CPU time)
Ran 48 tests for tests/contracts/spoke/configurator/SpokeConfigurator.t.sol:SpokeConfiguratorTest
[PASS] test_addCollateralFactor() (gas: 125701)
[PASS] test_addCollateralFactor_revertsWith_AccessManagedUnauthorized() (gas: 29160)
[PASS] test_addDynamicReserveConfig() (gas: 105440)
[PASS] test_addDynamicReserveConfig_revertsWith_AccessManagedUnauthorized() (gas: 29375)
[PASS] test_addLiquidationBonus_revertsWith_AccessManagedUnauthorized() (gas: 29147)
[PASS] test_addLiquidationFee() (gas: 125688)
[PASS] test_addLiquidationFee_revertsWith_AccessManagedUnauthorized() (gas: 29081)
[PASS] test_addMaxLiquidationBonus() (gas: 125737)
[PASS] test_addReserve() (gas: 407205)
[PASS] test_addReserve_revertsWith_AccessManagedUnauthorized() (gas: 30045)
[PASS] test_freezeAllReserves() (gas: 202923)
[PASS] test_freezeAllReserves_revertsWith_AccessManagedUnauthorized() (gas: 26879)
[PASS] test_freezeReserve() (gas: 72401)
[PASS] test_freezeReserve_revertsWith_AccessManagedUnauthorized() (gas: 29026)
[PASS] test_pauseAllReserves() (gas: 202782)
[PASS] test_pauseAllReserves_revertsWith_AccessManagedUnauthorized() (gas: 26857)
[PASS] test_pauseReserve() (gas: 72328)
[PASS] test_pauseReserve_revertsWith_AccessManagedUnauthorized() (gas: 28959)
[PASS] test_updateBorrowable() (gas: 102957)
[PASS] test_updateBorrowable_revertsWith_AccessManagedUnauthorized() (gas: 29083)
[PASS] test_updateCollateralFactor() (gas: 82803)
[PASS] test_updateCollateralFactor_revertsWith_AccessManagedUnauthorized() (gas: 29202)
[PASS] test_updateCollateralRisk() (gas: 77023)
[PASS] test_updateCollateralRisk_revertsWith_AccessManagedUnauthorized() (gas: 29054)
[PASS] test_updateDynamicReserveConfig() (gas: 201369)
[PASS] test_updateDynamicReserveConfig_revertsWith_AccessManagedUnauthorized() (gas: 29436)
[PASS] test_updateFrozen() (gas: 105722)
[PASS] test_updateFrozen_revertsWith_AccessManagedUnauthorized() (gas: 29104)
[PASS] test_updateHealthFactorForMaxBonus() (gas: 68206)
[PASS] test_updateHealthFactorForMaxBonus_revertsWith_AccessManagedUnauthorized() (gas: 26869)
[PASS] test_updateLiquidationBonusFactor() (gas: 71122)
[PASS] test_updateLiquidationBonusFactor_revertsWith_AccessManagedUnauthorized() (gas: 26892)
[PASS] test_updateLiquidationConfig() (gas: 65776)
[PASS] test_updateLiquidationConfig_revertsWith_AccessManagedUnauthorized() (gas: 27176)
[PASS] test_updateLiquidationFee() (gas: 82864)
[PASS] test_updateLiquidationFee_revertsWith_AccessManagedUnauthorized() (gas: 29199)
[PASS] test_updateLiquidationTargetHealthFactor() (gas: 71084)
[PASS] test_updateLiquidationTargetHealthFactor_revertsWith_AccessManagedUnauthorized() (gas: 26913)
[PASS] test_updateMaxLiquidationBonus() (gas: 82778)
[PASS] test_updateMaxLiquidationBonus_revertsWith_AccessManagedUnauthorized() (gas: 29180)
[PASS] test_updatePaused() (gas: 105637)
[PASS] test_updatePaused_revertsWith_AccessManagedUnauthorized() (gas: 29103)
[PASS] test_updatePositionManager() (gas: 74403)
[PASS] test_updatePositionManager_revertsWith_AccessManagedUnauthorized() (gas: 27045)
[PASS] test_updateReceiveSharesEnabled() (gas: 103009)
[PASS] test_updateReceiveSharesEnabled_revertsWith_AccessManagedUnauthorized() (gas: 29126)
[PASS] test_updateReservePriceSource() (gas: 257997)
[PASS] test_updateReservePriceSource_revertsWith_AccessManagedUnauthorized() (gas: 29078)
Suite result: ok. 48 passed; 0 failed; 0 skipped; finished in 40.88ms (14.32ms CPU time)
Ran 6 tests for tests/contracts/spoke/libraries/SpokeUtils.t.sol:SpokeUtilsTest
[PASS] test_fuzz_toValue(uint256,uint256,uint256) (runs: 5000, μ: 15810, ~: 15867)
Logs:
Bound result 615514462186775432459
Bound result 9
Bound result 9140094126966428
[PASS] test_get() (gas: 180662)
[PASS] test_get_revertsWith_ReserveNotListed() (gas: 167206)
[PASS] test_toValue() (gas: 8851)
[PASS] test_toValue_revertsWith_ArithmeticOverflow() (gas: 8982)
[PASS] test_toValue_revertsWith_ArithmeticUnderflow() (gas: 8757)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 457.07ms (433.19ms CPU time)
Ran 6 tests for tests/contracts/hub/fees/Hub.PayFee.t.sol:HubPayFeeTest
[PASS] test_payFee_fuzz(uint256,uint256) (runs: 5000, μ: 712181, ~: 712339)
Logs:
Bound result 68691281934999
Bound result 0
Bound result 100
[PASS] test_payFee_fuzz_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 712658, ~: 712910)
Logs:
Bound result 615514462186775432459
Bound result 10765498
Bound result 571193127101173104469
[PASS] test_payFee_revertsWith_InvalidShares() (gas: 25275)
[PASS] test_payFee_revertsWith_SpokeNotActive() (gas: 67944)
[PASS] test_payFee_revertsWith_underflow_added_shares_exceeded() (gas: 142706)
[PASS] test_payFee_revertsWith_underflow_added_shares_exceeded_with_interest() (gas: 646829)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 28.00s (27.98s CPU time)
Ran 14 tests for tests/contracts/position-manager/TakerPositionManager/TakerPositionManager.Permit.t.sol:TakerPositionManagerPermitTest
[PASS] test_DOMAIN_SEPARATOR() (gas: 5688)
[PASS] test_approveBorrowWithSig_fuzz(address,uint256,uint256) (runs: 5000, μ: 192219, ~: 191823)
Logs:
Bound result 2
Bound result 633674229709637574468961046058
[PASS] test_approveBorrowWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 155952, ~: 155678)
[PASS] test_approveBorrowWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39837)
[PASS] test_approveBorrowWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37722)
[PASS] test_approveBorrowWithSig_revertsWith_SpokeNotRegistered() (gas: 171897)
[PASS] test_approveWithdrawWithSig_fuzz(address,uint256,uint256) (runs: 5000, μ: 192164, ~: 191768)
Logs:
Bound result 2
Bound result 633674229709637574468961046058
[PASS] test_approveWithdrawWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 155906, ~: 155632)
[PASS] test_approveWithdrawWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39833)
[PASS] test_approveWithdrawWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37689)
[PASS] test_approveWithdrawWithSig_revertsWith_SpokeNotRegistered() (gas: 171831)
[PASS] test_borrowPermit_typeHash() (gas: 9850)
[PASS] test_eip712Domain() (gas: 11029)
[PASS] test_withdrawPermit_typeHash() (gas: 9845)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 25.51s (25.48s CPU time)
Ran 11 tests for tests/contracts/hub/add-remove/Hub.Reclaim.t.sol:HubReclaimTest
[PASS] test_reclaim() (gas: 642168)
Logs:
Bound result 1000000000000000000000
Bound result 500000000000000000000
Bound result 200000000000000000000
[PASS] test_reclaim_fullAmount() (gas: 623288)
[PASS] test_reclaim_fuzz(uint256,uint256,uint256) (runs: 5000, μ: 643900, ~: 643144)
Logs:
Bound result 615514462186775432459
Bound result 571193127101173104469
Bound result 564283877115702805413
[PASS] test_reclaim_multipleSweepsAndReclaims() (gas: 733882)
[PASS] test_reclaim_revertsWith_AssetNotListed() (gas: 18447)
[PASS] test_reclaim_revertsWith_InsufficientTransferred() (gas: 442803)
[PASS] test_reclaim_revertsWith_InsufficientTransferred_noSwept() (gas: 109383)
[PASS] test_reclaim_revertsWith_InvalidAmount_zero() (gas: 99136)
[PASS] test_reclaim_revertsWith_OnlyReinvestmentController(address) (runs: 5000, μ: 98355, ~: 98355)
[PASS] test_reclaim_revertsWith_OnlyReinvestmentController_init() (gas: 46036)
[PASS] test_reclaim_revertsWith_underflow_exceedsSwept_afterSweep() (gas: 606504)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 16.45s (16.42s 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, μ: 503673, ~: 509051)
Logs:
Bound result 999999999910000000000000000001
Bound result 1
Bound result 11520
[PASS] test_refreshPremium_fuzz_withAccrual(uint256,uint256,uint256,uint256) (runs: 5000, μ: 480421, ~: 490442)
Logs:
Bound result 1349
Bound result 45
Bound result 250000000000000000000
Bound result 30275
[PASS] test_refreshPremium_haltedSpokesAllowed() (gas: 129381)
[PASS] test_refreshPremium_maxRiskPremiumThreshold() (gas: 910733)
[PASS] test_refreshPremium_negativeDeltas(uint256) (runs: 5000, μ: 472452, ~: 473015)
Logs:
Bound result 3124043968137
[PASS] test_refreshPremium_negativeDeltas_withAccrual(uint256) (runs: 5000, μ: 544202, ~: 544422)
Logs:
Bound result 3124043968137
[PASS] test_refreshPremium_revertsWith_InvalidPremiumChange_NonZeroRestoredPremiumRay() (gas: 867321)
[PASS] test_refreshPremium_revertsWith_InvalidPremiumChange_RiskPremiumThresholdExceeded_DecreasingPremium() (gas: 886141)
[PASS] test_refreshPremium_revertsWith_SpokeNotActive() (gas: 65397)
[PASS] test_refreshPremium_riskPremiumThreshold() (gas: 933823)
[PASS] test_refreshPremium_spokePremiumUpdateIsContained() (gas: 723261)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 22.44s (22.41s CPU time)
Ran 15 tests for tests/contracts/hub/add-remove/Hub.Remove.t.sol:HubRemoveTest
[PASS] test_remove() (gas: 221513)
Logs:
Bound result 2
Bound result 100000000000000000000
[PASS] test_remove_all_with_interest() (gas: 387820)
[PASS] test_remove_fuzz(uint256,uint256) (runs: 5000, μ: 220334, ~: 220386)
Logs:
Bound result 4
Bound result 100
[PASS] test_remove_fuzz_all_liquidity_with_interest(uint256,uint256) (runs: 5000, μ: 438568, ~: 438795)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_remove_fuzz_multi_spoke(uint256,uint256) (runs: 5000, μ: 304441, ~: 304538)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_remove_fuzz_multi_spoke_with_interest(uint256,uint256,uint256,uint256) (runs: 5000, μ: 439575, ~: 440042)
Logs:
Bound result 1099511627775
Bound result 7237
Bound result 1041086160924
Bound result 143249407
[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: 68420)
[PASS] test_remove_revertsWith_SpokeNotActive() (gas: 68396)
[PASS] test_remove_revertsWith_underflow_exceeding_added_amount() (gas: 186917)
[PASS] test_remove_revertsWtih_underflow_one_extra_wei() (gas: 367430)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 34.11s (34.09s CPU time)
Ran 8 tests for tests/contracts/spoke/repay/Spoke.Repay.Scenario.t.sol:SpokeRepayScenarioTest
[PASS] test_fuzz_repay_borrow_twice_repay_twice((uint256,uint256,uint256,uint40),(uint256,uint256,uint256,uint40)) (runs: 5000, μ: 1566455, ~: 1570871)
Logs:
Bound result 22356
Bound result 18418
Bound result 1500000000000000000
Bound result 16950
Bound result 783019655932542976
Bound result 626
[PASS] test_fuzz_repay_multiple_users_repay_same_reserve((uint256,uint256,uint256,uint256,uint256,uint256,address),(uint256,uint256,uint256,uint256,uint256,uint256,address),(uint256,uint256,uint256,uint256,uint256,uint256,address),uint256) (runs: 5000, μ: 2448671, ~: 2419483)
Logs:
Bound result 1172
Bound result 600
Bound result 10400
Bound result 441
Bound result 111
Bound result 2000000000000000000000
Bound result 505134529
[PASS] test_repay_fuzz_multiple_users_multiple_assets(((uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),address),((uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),address),((uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),address),uint40) (runs: 5000, μ: 7730730, ~: 7698586)
Logs:
Bound result 2327
Bound result 90000000000000000000
Bound result 7860
Bound result 4710
Bound result 2600000000
Bound result 208
Bound result 15238
Bound result 176
Bound result 1075
Bound result 20000
Bound result 26294474059186177
Bound result 16949
Bound result 7500
Bound result 100000000000000000000000000000000000000000
Bound result 19429
Bound result 4019
Bound result 99
Bound result 90498858828761399680434953562
Bound result 47257590356822065
Bound result 101
Bound result 1000000
Bound result 26959946660873538060741835960174461801791452538186943042387869433855
Bound result 20296
Bound result 58295842187128421368902784785846135528097650416799773691871981469083027636225
Bound result 22835
[PASS] test_repay_fuzz_two_users_multiple_assets(((uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),address),((uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256,uint256),address),uint40) (runs: 5000, μ: 5402718, ~: 5358272)
Logs:
Bound result 955
Bound result 16483
Bound result 125000000000000000
Bound result 3871
Bound result 1000001000000000000000000000000
Bound result 900000000000000000
Bound result 750000000000000000000
Bound result 19134
Bound result 9500000000000000000000
Bound result 10
Bound result 2924
Bound result 16387
Bound result 56988696150268759067033853745049141362335364605175666696514897554729450063378
Bound result 10627200
Bound result 11288
Bound result 45000000000000000000
Bound result 1
[PASS] test_repay_partial_then_max() (gas: 993402)
[PASS] test_repay_round_trip_borrow_repay(uint256,uint256,uint40,address,uint256) (runs: 5000, μ: 880588, ~: 884320)
Logs:
Bound result 4
Bound result 102314711
Bound result 170430
Bound result 4454419372094181496958201405
[PASS] test_repay_round_trip_repay_borrow(uint256,uint256,uint256,uint40,address,uint256) (runs: 5000, μ: 966179, ~: 975544)
Logs:
Bound result 0
Bound result 8767
Bound result 20701
Bound result 104292884335243981197522250303
Bound result 10416
[PASS] test_repay_two_users_repay_same_reserve((uint256,uint256,uint256,uint256,uint256,uint256,address),(uint256,uint256,uint256,uint256,uint256,uint256,address),uint256) (runs: 5000, μ: 1749954, ~: 1777967)
Logs:
Bound result 5401549876140600956580819487
Bound result 65251468040295843421393
Bound result 11263328023241632836759
Bound result 7707153379656042561281651440489383780992440
Bound result 681445185
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 478.14s (478.12s CPU time)
Ran 2 tests for tests/contracts/spoke/repay/Spoke.Repay.Validation.t.sol:SpokeRepayValidationTest
[PASS] test_repay_revertsWith_ReserveNotListed() (gas: 23251)
[PASS] test_repay_revertsWith_ReservePaused() (gas: 63929)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 24.64ms (372.34µs CPU time)
Ran 26 tests for tests/contracts/position-manager/TakerPositionManager/TakerPositionManager.t.sol:TakerPositionManagerTest
[PASS] test_approveBorrow_fuzz(address,uint256,uint256) (runs: 5000, μ: 63796, ~: 63570)
Logs:
Bound result 4
Bound result 144506855745494289
[PASS] test_approveBorrow_revertsWith_SpokeNotRegistered() (gas: 17537)
[PASS] test_approveWithdraw_fuzz(address,uint256,uint256) (runs: 5000, μ: 63752, ~: 63526)
Logs:
Bound result 4
Bound result 144506855745494289
[PASS] test_approveWithdraw_revertsWith_SpokeNotRegistered() (gas: 17514)
[PASS] test_borrowOnBehalfOf() (gas: 649822)
Logs:
Bound result 5000000000000000000
Bound result 5000000000000000000
[PASS] test_borrowOnBehalfOf_fuzz(uint256,uint256) (runs: 5000, μ: 670297, ~: 670428)
Logs:
Bound result 68691281934999
Bound result 618221537415092
[PASS] test_borrowOnBehalfOf_fuzz_noAllowanceDecrease(uint256) (runs: 5000, μ: 647825, ~: 647572)
Logs:
Bound result 3124043968137
[PASS] test_borrowOnBehalfOf_fuzz_withInterest(uint256,uint256,uint256) (runs: 5000, μ: 807301, ~: 807294)
Logs:
Bound result 499999999999999999999999999997
Bound result 249999999999999999999999999997
Bound result 3720931007421144222457544
[PASS] test_borrowOnBehalfOf_revertsWith_InsufficientBorrowAllowance(uint256) (runs: 5000, μ: 312895, ~: 313097)
Logs:
Bound result 3124043968137
[PASS] test_borrowOnBehalfOf_revertsWith_ReserveNotListed() (gas: 5...*[Comment body truncated]* |
Forge Build Sizes🔕 Unchanged
|
♻️ Forge Gas Snapshots🔕 Unchanged
|
yan-man
commented
Mar 30, 2026
| # certora/conf/libs/LiquidationLogic.conf --rule collateralToLiquidateValueLessThanDebtToLiquidate | ||
| # certora/conf/HubValidState.conf --rule totalAssetsVsShares_eliminateDeficit | ||
| # certora/conf/LiquidationReportDeficit.conf | ||
| # certora/conf/Liquidation.conf |
Contributor
Author
There was a problem hiding this comment.
note: Liquidation spec is flaky and commented out here (but succeeds on local run)
yan-man
commented
Mar 30, 2026
yan-man
commented
Mar 30, 2026
| 2. Hub added assets amount >= sum of all Spokes' added assets amount (converted from shares) | ||
| 3. Hub added shares == sum of Spoke added shares | ||
| 4. Supply share price and drawn index cannot decrease (remains constant or increases) | ||
| 5. Hub's actual token balance is always >= internally tracked available liquidity |
Contributor
Author
There was a problem hiding this comment.
@miguelmtzinf added this invariant here, from some of the Certora specs
Closed
DhairyaSethi
reviewed
Apr 1, 2026
There was a problem hiding this comment.
Verified Rules
- Group ID: ce42bc38-a297-4349-9056-e5b7a28e550d
- Commit: adba16f
| Job | Result | VERIFIED | Link |
|---|
Successful Jobs
| Job | Result | VERIFIED | Link |
|---|---|---|---|
| SpokeWithHub.conf --rule userSuppliedShareConsistency | ✅ | 2 | Link |
| SpokeWithHub.conf --rule userPremiumShareConsistency | ✅ | 2 | Link |
| SpokeWithHub.conf --rule userPremiumOffsetConsistency | ✅ | 2 | Link |
| SpokeWithHub.conf --rule userDrawnShareConsistency | ✅ | 2 | Link |
| SpokeWithHub.conf --exclude_rule userDrawnShareConsistency userPremiumShareConsistency userPremiumOffsetConsistency userSuppliedShareConsistency | ✅ | 3 | Link |
| SpokeUserIntegrity.conf | ✅ | 1 | Link |
| SpokeIntegrity.conf | ✅ | 10 | Link |
| SpokeHealthFactor.conf --exclude_rule userHealthAboveThreshold userHealthBelowThresholdCanOnlyIncreaseHealthFactor | ✅ | 1 | Link |
| SpokeHealthCheck.conf | ✅ | 2 | Link |
| Spoke.conf --rule realizedPremiumRayConsistency | ✅ | 2 | Link |
| Spoke.conf --rule increaseCollateralOrReduceDebtFunctions | ✅ | 2 | Link |
| Spoke.conf --rule drawnSharesZero | ✅ | 2 | Link |
| Spoke.conf --rule collateralFactorNotZero | ✅ | 2 | Link |
| Spoke.conf --exclude_rule drawnSharesZero noCollateralNoDebt increaseCollateralOrReduceDebtFunctions collateralFactorNotZero realizedPremiumRayConsistency | ✅ | 13 | Link |
| LiquidationUserIntegrity.conf | ✅ | 1 | Link |
| LiquidationIntegrity.conf | ✅ | 2 | Link |
| libs/VerifySymbolicPositionStatus.conf | ✅ | 8 | Link |
| libs/SpokeUtils_toValue.conf | ✅ | 2 | Link |
| libs/SharesMath.conf | ✅ | 10 | Link |
| libs/Premium.conf | ✅ | 2 | Link |
| libs/PositionStatus.conf | ✅ | 9 | Link |
| libs/Math.conf | ✅ | 19 | Link |
| libs/LiquidationLogic_debtToLiquidate.conf | ✅ | 4 | Link |
| libs/LiquidationLogic.conf --exclude_rule collateralToLiquidateValueLessThanDebtToLiquidate collateralToLiquidateValueLessThanDebtToLiquidate_general | ✅ | 5 | Link |
| libs/LiquidationLogic_Bonus.conf | ✅ | 8 | Link |
| libs/LibBit.conf | ✅ | 6 | Link |
| HubValidState.conf --exclude_rule totalAssetsVsShares_eliminateDeficit totalAssetsVsShares | ✅ | 12 | Link |
| HubIntegrity.conf | ✅ | 17 | Link |
| Hub.conf --rule noChangeToOtherSpoke | ✅ | 1 | Link |
| Hub.conf --exclude_rule noChangeToOtherSpoke supplyExchangeRateIsMonotonic supplyExchangeRateIsMonotonic_eliminateDeficit_simplified totalAssetsCompareToSuppliedAmount_noVirtual | ✅ | 3 | Link |
| HubAccrueUnrealizedFee.conf | ✅ | 3 | Link |
| HubAccrueSupplyRate.conf --exclude_rule previewRemoveByShares_withoutAccrue_time_monotonic previewRemoveByAssets_withoutAccrue_time_monotonic | ✅ | 10 | Link |
| HubAccrueIntegrity.conf | ✅ | 9 | Link |
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.
Uh oh!
There was an error while loading. Please reload this page.