docs: consolidated tech docs - #1297
Open
yan-man wants to merge 21 commits into
Open
Conversation
Co-authored-by: Cheyenne Atapour <cheyenneatapour@gmail.com>
Co-authored-by: CheyenneAtapour <CheyenneAtapour@gmail.com>
Co-authored-by: CheyenneAtapour <CheyenneAtapour@gmail.com>
Co-authored-by: CheyenneAtapour <CheyenneAtapour@gmail.com>
Co-authored-by: CheyenneAtapour <CheyenneAtapour@gmail.com>
yan-man
commented
Apr 3, 2026
🌈 Test ResultsNo files changed, compilation skipped
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 32.94ms (4.07ms 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.45s (1.40s 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 5.99ms (99.28µ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 5.85ms (571.03µ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.01ms (1.98ms 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 6.51ms (1.03ms 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 43.21s (43.18s 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 16.92s (16.89s 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 34.02ms (4.53ms 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 33.78ms (4.48ms 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 31.35ms (1.21ms 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 538.47ms (508.70ms 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 31.57ms (2.92ms 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, μ: 6659308, ~: 6506820)
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 160.55s (160.52s 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, μ: 2360992, ~: 2410922)
Logs:
Bound result 999999999999999999999998
Bound result 11269
Bound result 4256
Bound result 45000000000000000000
Bound result 22281
[PASS] test_getUserRiskPremium_fuzz_applyingInterest(uint256,uint256,uint256,uint256) (runs: 5000, μ: 1673610, ~: 1730549)
Logs:
Bound result 160990532950455040192167397585
Bound result 872
Bound result 277777774222222222
Bound result 28195891046972191868
[PASS] test_getUserRiskPremium_fuzz_four_reserves_change_cr(uint256,uint256,uint256,uint256,uint256,uint24) (runs: 5000, μ: 2090634, ~: 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, μ: 2268757, ~: 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, μ: 1988135, ~: 1996265)
Logs:
Bound result 6437
Bound result 6325
Bound result 3199
Bound result 6461905220641469020
Bound result 1411
Bound result 1337
Bound result 1097
Bound result 15722
Bound result 8752
Bound result 15163
Bound result 10000000000000000
Bound result 10000000000000000
Bound result 10387
Bound result 20533
Bound result 44329
Bound result 18146
[PASS] test_getUserRiskPremium_fuzz_four_reserves_supply_and_borrow(uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 1584930, ~: 1579543)
Logs:
Bound result 999999999999999999999998
Bound result 4256
Bound result 11269
Bound result 45000000000000000000
Bound result 22281
[PASS] test_getUserRiskPremium_fuzz_single_reserve_collateral_borrowed_amount(uint256) (runs: 5000, μ: 427677, ~: 427177)
Logs:
Bound result 3124043968137
[PASS] test_getUserRiskPremium_fuzz_supply_does_not_impact(uint256,uint256) (runs: 5000, μ: 607020, ~: 606905)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_getUserRiskPremium_fuzz_three_reserves_supply_and_borrow(uint256,uint256,uint256,uint256) (runs: 5000, μ: 1255120, ~: 1295105)
Logs:
Bound result 160990532950455040192167397585
Bound result 1777777777777777777777777777
Bound result 872
Bound result 28195891046972191868
[PASS] test_getUserRiskPremium_fuzz_two_reserves_supply_and_borrow(uint256,uint256,uint256) (runs: 5000, μ: 1049547, ~: 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 246.12s (246.07s 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, μ: 2443443, ~: 2408147)
[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 59.88s (59.85s 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 44.52ms (11.62ms 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, μ: 711054, ~: 710886)
Logs:
Bound result 9
[PASS] test_accrueInterest_NoInterest_OnlySupply(uint40) (runs: 5000, μ: 273089, ~: 273088)
Logs:
Bound result 9
[PASS] test_accrueInterest_TenPercentRp(uint256,uint40) (runs: 5000, μ: 613281, ~: 613715)
Logs:
Bound result 68691281934999
Bound result 0
[PASS] test_accrueInterest_fuzz_BorrowAmountAndSkipTime(uint256,uint40) (runs: 5000, μ: 572540, ~: 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, μ: 4871836, ~: 4892338)
Logs:
Bound result 410886848
Bound result 7600
Bound result 6714
Bound result 8357
Bound result 11908
Bound result 811749079544293631087761720463
Bound result 45000000
Bound result 282574488339931
Bound result 6284
Bound result 6610
Bound result 20001
Bound result 3805
Bound result 1035
Bound result 11908
Bound result 920749545124571
Bound result 51668
Bound result 25
Suite result: ok. 6 passed; 0 failed; 1 skipped; finished in 141.18s (141.15s 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, μ: 558034, ~: 558106)
Logs:
Bound result 19892
Bound result 337777777
Bound result 0
Bound result 9784
[PASS] test_accrueLiquidityFee_fuzz_maxLiquidityFee_with_premium_multiple_users(uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 818989, ~: 819002)
Logs:
Bound result 14405
Bound result 288000000
Bound result 0
Bound result 5470
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.01s (17.98s CPU time)
Ran 15 tests for tests/contracts/spoke/supply/Spoke.Supply.t.sol:SpokeSupplyTest
[PASS] test_fuzz_supply_effect_on_ex_rates(uint256,uint256) (runs: 5000, μ: 716919, ~: 717825)
Logs:
Bound result 100
Bound result 68691281934999
[PASS] test_supply() (gas: 379017)
[PASS] test_supply_does_not_update_risk_premium() (gas: 2096070)
[PASS] test_supply_fuzz_amounts(uint256) (runs: 5000, μ: 503453, ~: 503121)
Logs:
Bound result 3124043968137
[PASS] test_supply_fuzz_index_increase_no_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 1263703, ~: 1271668)
Logs:
Bound result 829158376550
Bound result 88379
Bound result 2
Bound result 228553423
[PASS] test_supply_fuzz_index_increase_with_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 1456036, ~: 1464045)
Logs:
Bound result 829158376550
Bound result 88379
Bound result 2
Bound result 228553423
[PASS] test_supply_fuzz_revertsWith_ERC20InsufficientBalance(uint256) (runs: 5000, μ: 62087, ~: 61801)
Logs:
Bound result 3124043968137
[PASS] test_supply_index_increase_no_premium() (gas: 1347847)
[PASS] test_supply_index_increase_with_premium() (gas: 1406237)
[PASS] test_supply_revertsWith_ERC20InsufficientAllowance() (gas: 39662)
[PASS] test_supply_revertsWith_InvalidSupplyAmount() (gas: 47318)
[PASS] test_supply_revertsWith_ReentrancyGuardReentrantCall() (gas: 278566)
[PASS] test_supply_revertsWith_ReserveFrozen() (gas: 63609)
[PASS] test_supply_revertsWith_ReserveNotListed() (gas: 22912)
[PASS] test_supply_revertsWith_ReservePaused() (gas: 63538)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 91.23s (91.20s CPU time)
Ran 1 test for tests/contracts/spoke/configuration/Spoke.UpdateUserDynamicConfig.t.sol:SpokeUpdateUserDynamicConfigTest
[PASS] test_updateUserDynamicConfig_revertsWith_ReentrancyGuardReentrantCall() (gas: 641500)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 30.64ms (849.55µs CPU time)
Ran 1 test for tests/contracts/spoke/risk-premium/Spoke.UpdateUserRiskPremium.t.sol:SpokeUpdateUserRiskPremiumTest
[PASS] test_updateUserRiskPremium_revertsWith_ReentrancyGuardReentrantCall() (gas: 640502)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 30.61ms (953.35µs 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, μ: 261785, ~: 261744)
Logs:
Bound result 9
[PASS] test_accrueLiquidityFee_exact() (gas: 929328)
[PASS] test_accrueLiquidityFee_fuzz_BorrowAmountAndSkipTime(uint256,uint40) (runs: 5000, μ: 1006694, ~: 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 21.12s (21.09s CPU time)
Ran 10 tests for tests/contracts/spoke/misc/Spoke.Upgradeable.t.sol:SpokeUpgradeableTest
[PASS] test_implementation_constructor_fuzz(uint64) (runs: 5000, μ: 6787198, ~: 6787198)
[PASS] test_proxy_constructor_fuzz(uint64) (runs: 5000, μ: 6815820, ~: 6815812)
Logs:
Bound result 649
[PASS] test_proxy_constructor_fuzz_revertsWith_InvalidInitialization(uint64) (runs: 5000, μ: 13565313, ~: 13565305)
Logs:
Bound result 649
[PASS] test_proxy_constructor_revertsWith_InvalidAddress() (gas: 5010664)
[PASS] test_proxy_constructor_revertsWith_InvalidInitialization_ZeroRevision() (gas: 6784571)
[PASS] test_proxy_reinitialization_fuzz(uint64) (runs: 5000, μ: 14842007, ~: 14841990)
Logs:
Bound result 649
[PASS] test_proxy_reinitialization_revertsWith_CallerNotProxyAdmin() (gas: 11790763)
[PASS] test_proxy_reinitialization_revertsWith_InvalidAddress() (gas: 11791497)
[PASS] test_proxy_storage_persists_across_upgrade() (gas: 14830499)
[PASS] test_spoke_revision_accessible() (gas: 5015138)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 25.06s (25.03s CPU time)
Ran 6 tests for tests/contracts/spoke/misc/Spoke.UserAccountData.t.sol:SpokeUserAccountDataTest
[PASS] test_userAccountData_scenario1() (gas: 512094)
[PASS] test_userAccountData_scenario2() (gas: 573068)
[PASS] test_userAccountData_scenario3() (gas: 573269)
[PASS] test_userAccountData_scenario4() (gas: 851337)
[PASS] test_userAccountData_scenario5() (gas: 734661)
[PASS] test_userAccountData_scenario6() (gas: 703086)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 35.26ms (4.33ms CPU time)
Ran 5 tests for tests/contracts/spoke/borrow/Spoke.Borrow.EdgeCases.t.sol:SpokeBorrowEdgeCasesTest
[PASS] test_borrow_fuzz_rounding_effect(uint256,uint256) (runs: 5000, μ: 1630637, ~: 1630742)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_borrow_fuzz_rounding_effect_inflated_ex_rate(uint256,uint256,uint256) (runs: 5000, μ: 2402410, ~: 2402492)
Logs:
Bound result 19131
Bound result 990000000000000000
Bound result 462550270
[PASS] test_borrow_fuzz_rounding_effect_shares(uint256,uint256) (runs: 5000, μ: 1779848, ~: 1779600)
Logs:
Bound result 68691281934999
Bound result 832464101
[PASS] test_borrow_rounding_effect_multiple_actions() (gas: 1975581)
[PASS] test_borrow_rounding_effect_shares() (gas: 1778817)
Logs:
Bound result 5000000000000000000
Bound result 94608000
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 146.86s (146.83s 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, μ: 917787, ~: 917399)
Logs:
Bound result 3124043968137
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_interest_increase(uint256,uint256) (runs: 5000, μ: 666468, ~: 666865)
Logs:
Bound result 946
Bound result 664947059
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls(uint256,uint256) (runs: 5000, μ: 897501, ~: 897598)
Logs:
Bound result 25000000000000000
Bound result 10096
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls_price_drop_dai(uint256,uint256,uint256) (runs: 5000, μ: 1161031, ~: 1161321)
Logs:
Bound result 184
Bound result 846358950
Bound result 9837
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls_price_drop_weth(uint256,uint256,uint256) (runs: 5000, μ: 1161464, ~: 1161337)
Logs:
Bound result 184
Bound result 846358950
Bound result 9837
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls_with_interest(uint256,uint256) (runs: 5000, μ: 952510, ~: 953065)
Logs:
Bound result 25000000000000000
Bound result 10096
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts(uint256,uint256) (runs: 5000, μ: 1020827, ~: 1020301)
Logs:
Bound result 243566643229693896170601593502
Bound result 21653304
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts_price_drop(uint256,uint256,uint256) (runs: 5000, μ: 1270794, ~: 1270525)
Logs:
Bound result 4025
Bound result 4294967295
Bound result 271
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 1058500, ~: 1058134)
Logs:
Bound result 4025
Bound result 4294967295
Bound result 271
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_price_drop(uint256,uint256) (runs: 5000, μ: 879497, ~: 879738)
Logs:
Bound result 17820
Bound result 4654
[PASS] test_withdraw_fuzz_revertsWith_HealthFactorBelowThreshold_singleBorrow(uint256) (runs: 5000, μ: 631166, ~: 631136)
Logs:
Bound result 422056457348955450402177305176
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_interest_increase() (gas: 661596)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_colls() (gas: 892973)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_colls_price_drop_dai() (gas: 1155174)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_colls_price_drop_weth() (gas: 1155177)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_colls_with_interest() (gas: 948087)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_debts() (gas: 1015421)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_debts_price_drop() (gas: 1264002)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_multiple_debts_with_interest() (gas: 1051871)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_price_drop() (gas: 874342)
[PASS] test_withdraw_revertsWith_HealthFactorBelowThreshold_singleBorrow() (gas: 632654)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 158.24s (158.21s 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, μ: 1128807, ~: 1152984)
Logs:
Bound result 0
Bound result 219914860
Bound result 393503056918434871754798181699
Bound result 272755692
Bound result 464077857
Bound result 26814693655084276391245140455
Bound result 92257
[PASS] test_withdraw_fuzz_partial_full_with_interest(uint256,uint256,uint256,uint40) (runs: 5000, μ: 964498, ~: 964496)
Logs:
Bound result 3920
Bound result 1640
Bound result 1002
Bound result 24044
[PASS] test_withdraw_round_trip_deposit_withdraw(uint256,uint256,address,uint256) (runs: 5000, μ: 417524, ~: 417513)
Logs:
Bound result 4
Bound result 18446462603027742720
Bound result 500000000000000000000000000
[PASS] test_withdraw_round_trip_withdraw_deposit(uint256,uint256,uint256,address,uint256) (runs: 5000, μ: 438611, ~: 437931)
Logs:
Bound result 1
Bound result 999999999999999999999999999998
Bound result 1
Bound result 2
[PASS] test_withdraw_underwater_reserve_not_collateral() (gas: 974201)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 77.32s (77.29s 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, μ: 445296, ~: 445388)
Logs:
Bound result 1
Bound result 10577
Bound result 2146
Bound result 240
Bound result 704000000
[PASS] test_withdraw_fuzz_revertsWith_InsufficientSupply_zero_supplied(uint256) (runs: 5000, μ: 60950, ~: 60661)
Logs:
Bound result 3124043968137
[PASS] test_withdraw_revertsWith_InsufficientLiquidity_with_debt() (gas: 437887)
[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.33s (6.30s CPU time)
Ran 17 tests for tests/contracts/spoke/borrow/Spoke.Borrow.HealthFactor.t.sol:SpokeBorrowHealthFactorTest
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_collateral_price_drop(uint256,uint256) (runs: 5000, μ: 898556, ~: 898540)
Logs:
Bound result 100
Bound result 68691281934999
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls(uint256,uint256) (runs: 5000, μ: 870479, ~: 870824)
Logs:
Bound result 9501
Bound result 3630907520
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 909767, ~: 909776)
Logs:
Bound result 20044800
Bound result 2172
Bound result 44
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts(uint256,uint256) (runs: 5000, μ: 1114251, ~: 1114477)
Logs:
Bound result 99999999999068691281935000
Bound result 99999999999000000000000101
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 1153965, ~: 1154086)
Logs:
Bound result 100
Bound result 1100000000000000000000000000
Bound result 373
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_with_interest(uint256,uint256) (runs: 5000, μ: 683821, ~: 684012)
Logs:
Bound result 2
Bound result 595590744
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold() (gas: 651179)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_collateral_price_drop_weth() (gas: 892821)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls() (gas: 864648)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_dai() (gas: 1116105)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_weth() (gas: 1116104)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_with_interest() (gas: 902326)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_debts() (gas: 1106709)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_debts_with_interest() (gas: 1145633)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_with_interest() (gas: 678719)
[PASS] test_fuzz_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_dai(uint256,uint256,uint256) (runs: 5000, μ: 1120046, ~: 1120264)
Logs:
Bound result 164622246243
Bound result 746835
Bound result 12939
[PASS] test_fuzz_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_weth(uint256,uint256,uint256) (runs: 5000, μ: 1120402, ~: 1120263)
Logs:
Bound result 164622246243
Bound result 746835
Bound result 12939
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 119.56s (119.53s 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, μ: 748255, ~: 750424)
Logs:
Bound result 100
Bound result 68691281934999
[PASS] test_withdraw_all_liquidity() (gas: 407013)
[PASS] test_withdraw_all_liquidity_with_interest_no_premium() (gas: 1203912)
[PASS] test_withdraw_all_liquidity_with_interest_with_premium() (gas: 1211938)
[PASS] test_withdraw_fuzz_all_elapsed_with_interest(uint256,uint256,uint40) (runs: 5000, μ: 790159, ~: 790078)
Logs:
Bound result 999999999999999999999999999997
Bound result 499999999999999999999999999997
Bound result 7880
[PASS] test_withdraw_fuzz_all_greater_than_supplied(uint256) (runs: 5000, μ: 410914, ~: 410625)
Logs:
Bound result 3124043968137
[PASS] test_withdraw_fuzz_all_liquidity_with_interest_no_premium((uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 1323128, ~: 1336665)
Logs:
Bound result 3
Bound result 1000000000000000000
Bound result 6085491225525
Bound result 3087
Bound result 502205933
[PASS] test_withdraw_fuzz_all_liquidity_with_interest_with_premium((uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 1322793, ~: 1336188)
Logs:
Bound result 3
Bound result 1000000000000000000
Bound result 6085491225525
Bound result 3087
Bound result 502205933
[PASS] test_withdraw_fuzz_all_with_interest(uint256,uint256) (runs: 5000, μ: 804179, ~: 804126)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_withdraw_fuzz_suppliedAmount(uint256) (runs: 5000, μ: 412862, ~: 412573)
Logs:
Bound result 3124043968137
[PASS] test_withdraw_max_greater_than_supplied() (gas: 381530)
[PASS] test_withdraw_revertsWith_ReentrancyGuardReentrantCall_hubRefreshPremium() (gas: 665334)
[PASS] test_withdraw_revertsWith_ReentrancyGuardReentrantCall_hubRemove() (gas: 407513)
[PASS] test_withdraw_same_block() (gas: 322837)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 122.72s (122.69s CPU time)
Ran 16 tests for tests/contracts/spoke/configurator/SpokeConfigurator.GranularAccessControl.t.sol:SpokeConfiguratorGranularAccessControlTest
[PASS] test_fuzz_unauthorized_cannotCall_liquidationConfigManagerMethods(address) (runs: 5000, μ: 119635, ~: 119635)
[PASS] test_fuzz_unauthorized_cannotCall_positionManagerAdminMethods(address) (runs: 5000, μ: 42270, ~: 42270)
[PASS] test_fuzz_unauthorized_cannotCall_reserveManagerMethods(address) (runs: 5000, μ: 461123, ~: 461123)
[PASS] test_liquidationConfigManager_canCall_updateLiquidationConfig() (gas: 62598)
[PASS] test_liquidationConfigManager_canCall_updateLiquidationTargetHealthFactor() (gas: 62173)
[PASS] test_liquidationConfigManager_cannotCall_anyPositionManagerAdminMethod() (gas: 39043)
[PASS] test_liquidationConfigManager_cannotCall_anyReserveMethod() (gas: 461075)
[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.15s (6.12s 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: 29201)
[PASS] test_addDynamicReserveConfig() (gas: 105484)
[PASS] test_addDynamicReserveConfig_revertsWith_AccessManagedUnauthorized() (gas: 29375)
[PASS] test_addLiquidationBonus_revertsWith_AccessManagedUnauthorized() (gas: 29125)
[PASS] test_addLiquidationFee() (gas: 125688)
[PASS] test_addLiquidationFee_revertsWith_AccessManagedUnauthorized() (gas: 29081)
[PASS] test_addMaxLiquidationBonus() (gas: 125715)
[PASS] test_addReserve() (gas: 407227)
[PASS] test_addReserve_revertsWith_AccessManagedUnauthorized() (gas: 30056)
[PASS] test_freezeAllReserves() (gas: 202923)
[PASS] test_freezeAllReserves_revertsWith_AccessManagedUnauthorized() (gas: 26902)
[PASS] test_freezeReserve() (gas: 72379)
[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: 29002)
[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: 2899200)
[PASS] test_updateDynamicReserveConfig_revertsWith_AccessManagedUnauthorized() (gas: 29414)
[PASS] test_updateFrozen() (gas: 105722)
[PASS] test_updateFrozen_revertsWith_AccessManagedUnauthorized() (gas: 29082)
[PASS] test_updateHealthFactorForMaxBonus() (gas: 68276)
[PASS] test_updateHealthFactorForMaxBonus_revertsWith_AccessManagedUnauthorized() (gas: 26869)
[PASS] test_updateLiquidationBonusFactor() (gas: 71236)
[PASS] test_updateLiquidationBonusFactor_revertsWith_AccessManagedUnauthorized() (gas: 26892)
[PASS] test_updateLiquidationConfig() (gas: 65834)
[PASS] test_updateLiquidationConfig_revertsWith_AccessManagedUnauthorized() (gas: 27176)
[PASS] test_updateLiquidationFee() (gas: 82864)
[PASS] test_updateLiquidationFee_revertsWith_AccessManagedUnauthorized() (gas: 29199)
[PASS] test_updateLiquidationTargetHealthFactor() (gas: 71154)
[PASS] test_updateLiquidationTargetHealthFactor_revertsWith_AccessManagedUnauthorized() (gas: 26913)
[PASS] test_updateMaxLiquidationBonus() (gas: 82801)
[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: 257998)
[PASS] test_updateReservePriceSource_revertsWith_AccessManagedUnauthorized() (gas: 29078)
Suite result: ok. 48 passed; 0 failed; 0 skipped; finished in 54.12ms (24.34ms CPU time)
Ran 31 tests for tests/config-engine/SpokeEngine.t.sol:SpokeEngineTest
[PASS] test_executeSpokeDynamicReserveConfigAdditions() (gas: 119357)
[PASS] test_executeSpokeDynamicReserveConfigAdditions_revert_invalidCollateralFactorAndMaxLiquidationBonus() (gas: 83675)
[PASS] test_executeSpokeDynamicReserveConfigUpdates_allKeepCurrent() (gas: 67907)
[PASS] test_executeSpokeDynamicReserveConfigUpdates_allUpdated() (gas: 108208)
[PASS] test_executeSpokeDynamicReserveConfigUpdates_multipleReserves() (gas: 159310)
[PASS] test_executeSpokeDynamicReserveConfigUpdates_partialUpdate() (gas: 107146)
[PASS] test_executeSpokeLiquidationConfigUpdates_allSet() (gas: 70929)
[PASS] test_executeSpokeLiquidationConfigUpdates_bonusFactorOnly() (gas: 73756)
[PASS] test_executeSpokeLiquidationConfigUpdates_maxBonusOnly() (gas: 73668)
[PASS] test_executeSpokeLiquidationConfigUpdates_multipleSpokes() (gas: 108925)
[PASS] test_executeSpokeLiquidationConfigUpdates_noneSet() (gas: 35612)
[PASS] test_executeSpokeLiquidationConfigUpdates_targetOnly() (gas: 73707)
[PASS] test_executeSpokePositionManagerUpdates() (gas: 85961)
[PASS] test_executeSpokePositionManagerUpdates_deactivate() (gas: 79957)
[PASS] test_executeSpokePositionManagerUpdates_multipleUpdates() (gas: 1200178)
[PASS] test_executeSpokeReserveConfigUpdates_allKeepCurrent() (gas: 60887)
[PASS] test_executeSpokeReserveConfigUpdates_allSet() (gas: 208328)
[PASS] test_executeSpokeReserveConfigUpdates_crossSpoke_differentFields() (gas: 176269)
[PASS] test_executeSpokeReserveConfigUpdates_multipleSpokes() (gas: 148826)
[PASS] test_executeSpokeReserveConfigUpdates_onlyCollateralRisk() (gas: 101833)
[PASS] test_executeSpokeReserveConfigUpdates_onlyPriceSource() (gas: 290543)
[PASS] test_executeSpokeReserveListings() (gas: 617585)
[PASS] test_executeSpokeReserveListings_multipleReserves() (gas: 3194266)
[PASS] test_fuzz_executeSpokeDynamicReserveConfigUpdates_collateralFactor(uint256) (runs: 5000, μ: 111134, ~: 111271)
Logs:
Bound result 1671
[PASS] test_fuzz_executeSpokeDynamicReserveConfigUpdates_liquidationFee(uint256) (runs: 5000, μ: 111000, ~: 111152)
Logs:
Bound result 4978
[PASS] test_fuzz_executeSpokeDynamicReserveConfigUpdates_maxLiquidationBonus(uint256) (runs: 5000, μ: 111285, ~: 111323)
Logs:
Bound result 10767
[PASS] test_fuzz_executeSpokeLiquidationConfigUpdates_allSet(uint256,uint256,uint256) (runs: 5000, μ: 73756, ~: 73691)
Logs:
Bound result 615514462186775432459
Bound result 498141543913148729
Bound result 5827
[PASS] test_fuzz_executeSpokeLiquidationConfigUpdates_bonusFactorOnly(uint256) (runs: 5000, μ: 76667, ~: 76839)
Logs:
Bound result 4978
[PASS] test_fuzz_executeSpokeLiquidationConfigUpdates_maxBonusOnly(uint256) (runs: 5000, μ: 76482, ~: 76786)
Logs:
Bound result 3124043968137
[PASS] test_fuzz_executeSpokeLiquidationConfigUpdates_targetOnly(uint256) (runs: 5000, μ: 76714, ~: 76868)
Logs:
Bound result 340282366920938463462374610555812179593
[PASS] test_fuzz_executeSpokeReserveConfigUpdates_onlyCollateralRisk(uint256) (runs: 5000, μ: 104695, ~: 104899)
Logs:
Bound result 28010
Suite result: ok. 31 passed; 0 failed; 0 skipped; finished in 9.41s (9.39s CPU time)
Ran 6 tests for tests/contracts/spoke/libraries/SpokeUtils.t.sol:SpokeUtilsTest
[PASS] test_fuzz_toValue(uint256,uint256,uint256) (runs: 5000, μ: 15803, ~: 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 497.73ms (468.04ms CPU time)
Ran 6 tests for tests/contracts/spoke/borrow/Spoke.Borrow.Scenario.t.sol:SpokeBorrowScenarioTest
[PASS] test_borrow_fuzz_multi_spoke_multi_reserves(uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 2051944, ~: 2061310)
Logs:
Bound result 999999999999999999999996
Bound result 4081
Bound result 1313373042
Bound result 45000000000000000000
Bound result 13675
[PASS] test_borrow_fuzz_single_spoke_multi_reserves(uint256,uint256,uint256,uint256) (runs: 5000, μ: 2025666, ~: 2035319)
Logs:
Bound result 3173
Bound result 153494200
Bound result 27777770666666666
Bound result 18210846105896266062
[PASS] test_borrow_fuzz_single_spoke_multi_reserves_multi_user(uint256,uint256,uint256,uint256) (runs: 5000, μ: 2875316, ~: 2884973)
Logs:
Bound result 3173
Bound result 153494200
Bound result 1777777777777777777777777777
Bound result 117826625249700349
[PASS] test_borrow_fuzz_skip_borrow(uint256,uint256,uint256) (runs: 5000, μ: 1202356, ~: 1202610)
Logs:
Bound result 615514462186775432459
Bound result 218470873395738003579119570309
Bound result 10765498
[PASS] test_borrow_skip_borrow() (gas: 1201331)
Logs:
Bound result 10000000000000000000
Bound result 20000000000000000000
Bound result 31536000
[PASS] test_userAccountData_does_not_include_zero_cf_collateral() (gas: 1456971)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 151.18s (151.14s CPU time)
Ran 14 tests for tests/contracts/position-manager/TakerPositionManager/TakerPositionManager.Permit.t.sol:TakerPositionManagerPermitTest
[PASS] test_DOMAIN_SEPARATOR() (gas: 5674)
[PASS] test_approveBorrowWithSig_fuzz(address,uint256,uint256) (runs: 5000, μ: 192193, ~: 191675)
Logs:
Bound result 4
Bound result 144506855745494289
[PASS] test_approveBorrowWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 155930, ~: 155656)
[PASS] test_approveBorrowWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39837)
[PASS] test_approveBorrowWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37722)
[PASS] test_approveBorrowWithSig_revertsWith_SpokeNotRegistered() (gas: 191331)
[PASS] test_approveWithdrawWithSig_fuzz(address,uint256,uint256) (runs: 5000, μ: 192138, ~: 191620)
Logs:
Bound result 4
Bound result 144506855745494289
[PASS] test_approveWithdrawWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 155906, ~: 155632)
[PASS] test_approveWithdrawWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39811)
[PASS] test_approveWithdrawWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37689)
[PASS] test_approveWithdrawWithSig_revertsWith_SpokeNotRegistered() (gas: 191265)
[PASS] test_borrowPermit_typeHash() (gas: 9850)
[PASS] test_eip712Domain() (gas: 11015)
[PASS] test_withdrawPermit_typeHash() (gas: 9845)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 25.46s (25.43s CPU time)
Ran 17 tests for tests/contracts/spoke/borrow/Spoke.Borrow.Validation.t.sol:SpokeBorrowValidationTest
[PASS] test_borrow_fuzz_revertsWith_DrawCapExceeded(uint256,uint40) (runs: 5000, μ: 117650, ~: 117664)
Logs:
Bound result 4
Bound result 1
[PASS] test_borrow_fuzz_revertsWith_DrawCapExceeded_due_to_interest(uint256) (runs: 5000, μ: 698167, ~: 698395)
Logs:
Bound result 683968137
[PASS] test_borrow_fuzz_revertsWith_InsufficientLiquidity(uint256,uint256) (runs: 5000, μ: 301134, ~: 300891)
Logs:
Bound result 100
[PASS] test_borrow_fuzz_revertsWith_InvalidAmount(uint256) (runs: 5000, μ: 39348, ~: 39404)
Logs:
Bound result 2
[PASS] test_borrow_fuzz_revertsWith_ReserveFrozen(uint256,uint256) (runs: 5000, μ: 71108, ~: 70883)
Logs:
Bound result 4
Bound result 100
[PASS] test_borrow_fuzz_revertsWith_ReserveNotBorrowable(uint256,uint256) (runs: 5000, μ: 71186, ~: 70961)
Logs:
Bound result 4
Bound result 100
[PASS] test_borrow_fuzz_revertsWith_ReserveNotListed(uint256,uint256) (runs: 5000, μ: 27461, ~: 27183)
Logs:
Bound result 1000100000000000000
[PASS] test_borrow_fuzz_revertsWith_ReservePaused(uint256,uint256) (runs: 5000, μ: 71027, ~: 70802)
Logs:
Bound result 4
Bound result 100
[PASS] test_borrow_revertsWith_InsufficientLiquidity() (gas: 300846)
Logs:
Bound result 10000000000000000000
[PASS] test_borrow_revertsWith_InvalidAmount() (gas: 40979)
Logs:
Bound result 2
[PASS] test_borrow_revertsWith_MaximumUserReservesExceeded() (gas: 6874786)
[PASS] test_borrow_revertsWith_ReserveFrozen() (gas: 72399)
Logs:
Bound result 2
Bound result 1
[PASS] test_borrow_revertsWith_ReserveNotBorrowable() (gas: 72476)
Logs:
Bound result 2
Bound result 1
[PASS] test_borrow_revertsWith_ReserveNotListed() (gas: 28963)
Logs:
Bound result 1
[PASS] test_borrow_revertsWith_ReservePaused() (gas: 72360)
Logs:
Bound result 2
Bound result 1
[PASS] test_borrow_to_limit_repay_borrow_again() (gas: 7150365)
[PASS] test_borrow_unlimited_whenLimitIsMax() (gas: 2130717)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 15.27s (15.24s CPU time)
Ran 4 tests for tests/contracts/spoke/borrow/Spoke.Borrow.t.sol:SpokeBorrowTest
[PASS] test_borrow() (gas: 1114253)
[PASS] test_borrow_fuzz_amounts(uint256,uint256) (runs: 5000, μ: 1123624, ~: 1123475)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_borrow_revertsWith_ReentrancyGuardReentrantCall_hubDraw() (gas: 405220)
[PASS] test_borrow_revertsWith_ReentrancyGuardReentrantCall_hubRefreshPremium() (gas: 535003)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 27.31s (27.28s CPU time)
Ran 29 tests for tests/contracts/spoke/configuration/Spoke.Config.t.sol:SpokeConfigTest
[PASS] test_addReserve() (gas: 406355)
[PASS] test_addReserve_fuzz_revertsWith_AssetNotListed() (gas: 271465)
[PASS] test_addReserve_revertsWith_InvalidAddress_hub() (gas: 5056065)
[PASS] test_addReserve_revertsWith_InvalidAddress_oracle() (gas: 5101739)
[PASS] test_addReserve_revertsWith_InvalidAssetId() (gas: 32875)
[PASS] test_addReserve_revertsWith_InvalidUnderlyingDecimals() (gas: 259381)
[PASS] test_addReserve_revertsWith_ReserveExists() (gas: 382361)
[PASS] test_getReserveId_fuzz(uint256) (runs: 5000, μ: 55513, ~: 58208)
Logs:
Bound result 2
[PASS] test_getReserveId_fuzz_multipleHubs(uint256) (runs: 5000, μ: 20595773, ~: 20598503)
Logs:
Bound result 1
[PASS] test_getReserveId_fuzz_revertsWith_ReserveNotListed(uint256) (runs: 5000, μ: 34507, ~: 34495)
Logs:
Bound result 3124043968137
[PASS] test_spoke_deploy() (gas: 5009443)
[PASS] test_spoke_deploy_reverts_on_InvalidConstructorInput() (gas: 747272)
[PASS] test_spoke_deploy_reverts_on_InvalidMaxUserReservesLimit() (gas: 749515)
[PASS] test_spoke_deploy_reverts_on_InvalidOracleDecimals() (gas: 749554)
[PASS] test_updateLiquidationConfig_fuzz_liqBonusConfig((uint128,uint64,uint16)) (runs: 5000, μ: 53202, ~: 53281)
Logs:
Bound result 1708126567894405
Bound result 12
Bound result 340282366920938463462374607436975099147
[PASS] test_updateLiquidationConfig_fuzz_revertsWith_InvalidLiquidationConfig_healthFactorForMaxBonus((uint128,uint64,uint16)) (runs: 5000, μ: 37040, ~: 37285)
Logs:
Bound result 17448452200277446021
Bound result 12
Bound result 340282366920938463462374607436975099147
[PASS] test_updateLiquidationConfig_fuzz_revertsWith_InvalidLiquidationConfig_liquidationBonusFactor((uint128,uint64,uint16)) (runs: 5000, μ: 36784, ~: 36823)
Logs:
Bound result 1708126567894405
Bound result 55547
Bound result 340282366920938463462374607436975099147
[PASS] test_updateLiquidationConfig_fuzz_targetHealthFactor(uint128) (runs: 5000, μ: 47094, ~: 47392)
Logs:
Bound result 340282366920938463462374607431768731273
[PASS] test_updateLiquidationConfig_liqBonusConfig() (gas: 52256)
Logs:
Bound result 900000000000000000
Bound result 1000
Bound result 1000000000000000000
[PASS] test_updateLiquidationConfig_revertsWith_InvalidLiquidationConfig_healthFactorForMaxBonus() (gas: 35581)
Logs:
Bound result 1000000000000000000
Bound result 1000
Bound result 1000000000000000000
[PASS] test_updateLiquidationConfig_revertsWith_InvalidLiquidationConfig_liquidationBonusFactor() (gas: 35678)
Logs:
Bound result 900000000000000000
Bound result 10001
Bound result 1000000000000000000
[PASS] test_updateLiquidationConfig_targetHealthFactor() (gas: 46705)
Logs:
Bound result 1000000000000000001
[PASS] test_updateReserveConfig() (gas: 54681)
[PASS] test_updateReserveConfig_fuzz((uint24,bool,bool,bool,bool)) (runs: 5000, μ: 55940, ~: 55776)
Logs:
Bound result 818
[PASS] test_updateReserveConfig_revertsWith_InvalidCollateralRisk() (gas: 40213)
[PASS] test_updateReserveConfig_revertsWith_ReserveNotListed() (gas: 36811)
[PASS] test_updateReservePriceSource() (gas: 239202)
[PASS] test_updateReservePriceSource_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 35334, ~: 35334)
[PASS] test_updateReservePriceSource_revertsWith_ReserveNotListed() (gas: 34875)
Suite result: ok. 29 passed; 0 failed; 0 skipped; finished in 37.18s (37.15s CPU time)
Ran 26 tests for tests/contracts/position-manager/TakerPositionManager/TakerPositionManager.t.sol:TakerPositionManagerTest
[PASS] test_approveBorrow_fuzz(address,uint256,uint256) (runs: 5000, μ: 63791, ~: 63570)
Logs:
Bound result 0
Bound result 2596000000000000000
[PASS] test_approveBorrow_revertsWith_SpokeNotRegistered() (gas: 17537)
[PASS] test_approveWithdraw_fuzz(address,uint256,uint256) (runs: 5000, μ: 63813, ~: 63592)
Logs:
Bound result 0
Bound result 2596000000000000000
[PASS] test_approveWithdraw_revertsWith_SpokeNotRegistered() (gas: 17492)
[PASS] test_borrowOnBehalfOf() (gas: 649822)
Logs:
Bound result 5000000000000000000
Bound result 5000000000000000000
[PASS] test_borrowOnBehalfOf_fuzz(uint256,uint256) (runs: 5000, μ: 670300, ~: 670428)
Logs:
Bound result 68691281934999
Bound result 618221537415092
[PASS] test_borrowOnBehalfOf_fuzz_noAllowanceDecrease(uint256) (runs: 5000, μ: 647820, ~: 647572)
Logs:
Bound result 3124043968137
[PASS] test_borrowOnBehalfOf_fuzz_withInterest(uint256,uint256,uint256) (runs: 5000, μ: 807348, ~: 807339)
Logs:
Bound result 11179
Bound result 301
Bound result 253
[PASS] test_borrowOnBehalfOf_revertsWith_InsufficientBorrowAllowance(uint256) (runs: 5000, μ: 312888, ~: 313097)
Logs:
Bound result 3124043968137
[PASS] test_borrowOnBehalfOf_revertsWith_ReserveNotListed() (gas: 59187)
[PASS] test_borrowOnBehalfOf_revertsWith_SpokeNotRegistered() (gas: 17468)
[PASS] test_multicall() (gas: 81468)
[PASS] test_renounceBorrowAllowance_fuzz(uint256) (runs: 5000, μ: 51494, ~: 51292)
Logs:
Bound result 3124043968137
[PASS] test_renounceBorrowAllowance_noop_alreadyRenounced() (gas: 45520)
[PASS] test_renounceBorrowAllowance_revertsWith_SpokeNotRegistered() (gas: 17416)
[PASS] test_renounceWithdrawAllowance_fuzz(uint256) (runs: 5000, μ: 51580, ~: 51378)
Logs:
Bound result 3124043968137
[PASS] test_renounceWithdrawAllowance_noop_alreadyRenounced() (gas: 45613)
[PASS] test_renounceWithdrawAllowance_revertsWith_SpokeNotRegistered() (gas: 17458)
[PASS] test_withdrawOnBehalfOf() (gas: 349363)
Logs:
Bound result 100000000000000000000
[PASS] test_withdrawOnBehalfOf_fuzz(uint256) (runs: 5000, μ: 349086, ~: 349433)
Logs:
Bound result 3124043968137
[PASS] test_withdrawOnBehalfOf_fuzz_allBalance(uint256) (runs: 5000, μ: 302609, ~: 302407)
Logs:
Bound result 3124043968137
[PASS] test_withdrawOnBehalfOf_fuzz_allBalanceWithInterest(uint256,uint256) (runs: 5000, μ: 804728, ~: 804675)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_withdrawOnBehalfOf_fuzz_allBalance_noAllowanceDecreased(uint256) (runs: 5000, μ: 291700, ~: 291498)
Logs:
Bound result 3124043968137
[PASS] test_withdrawOnBehalfOf_revertsWith_InsufficientWithdrawAllowance(uint256) (runs: 5000, μ: 196202, ~: 196411)
Logs:
Bound result 3124043968137
[PASS] test_withdrawOnBehalfOf_revertsWith_ReserveNotListed() (gas: 59273)
[PASS] test_withdrawOnBehalfOf_revertsWith_SpokeNotRegistered() (gas: 17528)
Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 83.60s (83.57s CPU time)
Ran 4 tests for tests/contracts/tokenization-spoke/TokenizationSpoke.Config.t.sol:TokenizationSpokeConfigTest
[PASS] test_configuration() (gas: 22860)
[PASS] test_constructor_asset_correctly_set() (gas: 58228)
[PASS] test_constructor_reverts_when_invalid_setup() (gas: 18939)
[PASS] test_setUp() (gas: 74802)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 31.32ms (1.17ms CPU time)
Ran 7 tests for tests/contracts/tokenization-spoke/TokenizationSpoke.Constants.t.sol:TokenizationSpokeConstantsTest
[PASS] test_DOMAIN_SEPARATOR() (gas: 14504)
[PASS] test_deposit_typeHash() (gas: 15206)
[PASS] test_eip712Domain() (gas: 19697)
[PASS] test_mint_typeHash() (gas: 15232)
[PASS] test_permit_typeHash() (gas: 15171)
[PASS] test_redeem_typeHash() (gas: 15126)
[PASS] test_withdraw_typeHash() (gas: 15129)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 32.43ms (2.32ms CPU time)
Ran 4 tests for tests/contracts/tokenization-spoke/TokenizationSpoke.DepositWithPermit.t.sol:TokenizationSpokeDepositWithPermitTest
[PASS] test_depositWithPermit() (gas: 244484)
[PASS] test_depositWithPermit_forwards_correct_call() (gas: 200254)
[PASS] test_depositWithPermit_ignores_permit_reverts() (gas: 189443)
[PASS] test_depositWithPermit_works_with_existing_allowance() (gas: 210030)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 33.41ms (3.15ms CPU time)
Ran 10 tests for tests/contracts/spoke/configuration/Spoke.DynamicConfig.Triggers.t.sol:SpokeDynamicConfigTriggersTest
[PASS] test_borrow_triggers_dynamicConfigUpdate() (gas: 1507027)
[PASS] test_liquidate_does_not_trigger_dynamicConfigUpdate() (gas: 1791484)
[PASS] test_repay_does_not_trigger_dynamicConfigUpdate() (gas: 1059510)
[PASS] test_supply_does_not_trigger_dynamicConfigUpdate() (gas: 1278177)
[PASS] test_updateUserDynamicConfig_doesHFCheck() (gas: 946006)
[PASS] test_updateUserDynamicConfig_reverts_when_not_authorized(address) (runs: 5000, μ: 1128564, ~: 1128564)
[PASS] test_updateUserDynamicConfig_triggers_dynamicConfigUpdate() (gas: 733635)
[PASS] test_updateUserDynamicConfig_updatesRP() (gas: 1455628)
[PASS] test_usingAsCollateral_triggers_dynamicConfigUpdate() (gas: 1532949)
[PASS] test_withdraw_triggers_dynamicConfigUpdate() (gas: 1537580)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 21.67s (21.64s CPU time)
Ran 21 tests for tests/contracts/spoke/configuration/Spoke.DynamicConfig.t.sol:SpokeDynamicConfigTest
[PASS] test_addDynamicReserveConfig() (gas: 79207)
[PASS] test_addDynamicReserveConfig_fuzz_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_incompatible(uint16,uint32) (runs: 5000, μ: 46187, ~: 46353)
Logs:
Bound result 9010
Bound result 11100
[PASS] test_addDynamicReserveConfig_once() (gas: 509156)
[PASS] test_addDynamicReserveConfig_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 47779, ~: 47779)
[PASS] test_addDynamicReserveConfig_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_collateralFactor() (gas: 57244)
[PASS] test_addDynamicReserveConfig_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_liquidationBonus() (gas: 40398)
[PASS] test_addDynamicReserveConfig_revertsWith_InvalidLiquidationFee() (gas: 40861)
[PASS] test_addDynamicReserveConfig_revertsWith_MaximumDynamicConfigKeyReached() (gas: 43388)
[PASS] test_addDynamicReserveConfig_revertsWith_ReserveNotListed() (gas: 28264)
[PASS] test_fuzz_addDynamicReserveConfig_spaced_dup_updates(bytes32) (runs: 5000, μ: 415634, ~: 446143)
[PASS] test_fuzz_addDynamicReserveConfig_trailing_order(bytes32) (runs: 5000, μ: 396756, ~: 430120)
[PASS] test_offboardReserve_existing_borrows_remain_unaffected() (gas: 1263471)
[PASS] test_updateDynamicReserveConfig() (gas: 1135624)
[PASS] test_updateDynamicReserveConfig_fuzz_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus(uint16,uint32) (runs: 5000, μ: 56905, ~: 57071)
Logs:
Bound result 9010
Bound result 11100
[PASS] test_updateDynamicReserveConfig_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 47780, ~: 47780)
[PASS] test_updateDynamicReserveConfig_revertsWith_DynamicConfigKeyUninitialized() (gas: 49027)
[PASS] test_updateDynamicReserveConfig_revertsWith_InvalidCollateralFactor() (gas: 50058)
[PASS] test_updateDynamicReserveConfig_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_collateralFactor() (gas: 50837)
[PASS] test_updateDynamicReserveConfig_revertsWith_InvalidCollateralFactorAndMaxLiquidationBonus_liquidationBonus() (gas: 51029)
[PASS] test_updateDynamicReserveConfig_revertsWith_InvalidLiquidationFee() (gas: 51533)
[PASS] test_updateDynamicReserveConfig_revertsWith_ReserveNotListed() (gas: 28679)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 21.17s (21.14s 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 50.28ms (4.48ms CPU time)
Ran 6 tests for tests/contracts/spoke/misc/Spoke.Getters.t.sol:SpokeGettersTest
[PASS] test_getLiquidationBonus_configured() (gas: 100942)
Logs:
Bound result 2
Bound result 1000000000000000000
Bound result 4000
Bound result 900000000000000000
[PASS] test_getLiquidationBonus_fuzz_configured(uint256,uint256,uint16,uint64) (runs: 5000, μ: 99712, ~: 100072)
Logs:
Bound result 2
Bound result 12010
Bound result 9998
Bound result 11792
[PASS] test_getLiquidationBonus_fuzz_notConfigured(uint256,uint256) (runs: 5000, μ: 77697, ~: 77926)
Logs:
Bound result 4
Bound result 100
[PASS] test_getLiquidationBonus_notConfigured() (gas: 78914)
Logs:
Bound result 2
Bound result 1000000000000000000
[PASS] test_premiumRayGetters() (gas: 1712901)
[PASS] test_protocol_getters() (gas: 303394)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 2.54s (2.50s CPU time)
Ran 4 tests for tests/contracts/spoke/liquidation/Spoke.LiquidationCall.Dust.t.sol:SpokeLiquidationCallDustTest
[PASS] test_collateralDust_min_debtToTarget() (gas: 18141762)
[PASS] test_debtToCover_exceeds_collateralValue() (gas: 18130095)
[PASS] test_dustColl_allowed() (gas: 17989115)
[PASS] test_dustDebt_allowed() (gas: 18120483)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 66.31ms (28.84ms CPU time)
Ran 14 tests for tests/contracts/spoke/liquidation/Spoke.LiquidationCall.Scenarios.t.sol:SpokeLiquidationCallScenariosTest
[PASS] test_liquidationCall_revertsWith_ReentrancyGuardReentrantCall_hubRefreshPremium() (gas: 26375654)
[PASS] test_liquidationCall_revertsWith_ReentrancyGuardReentrantCall_hubRemove() (gas: 26245287)
[PASS] test_liquidationCall_revertsWith_ReentrancyGuardReentrantCall_hubReportDeficit() (gas: 26358207)
[PASS] test_liquidationCall_revertsWith_ReentrancyGuardReentrantCall_hubRestore() (gas: 26321642)
[PASS] test_liquidationCall_scenario1() (gas: 4734080)
[PASS] test_liquidationCall_scenario2() (gas: 4742449)
[PASS] test_liquidationCall_scenario3() (gas: 3801221)
[PASS] test_liquidationCall_scenario4() (gas: 28133182)
[PASS] test_liquidationCall_scenario5() (gas: 3946715)
[PASS] test_liquidationCall_scenario6() (gas: 2711758)
[PASS] test_liquidationCall_scenario7() (gas: 3777633)
[PASS] test_liquidationCall_scenario8() (gas: 2540440)
[PASS] test_scenario_halted_asset() (gas: 27308236)
[PASS] test_scenario_halted_asset_with_deficit() (gas: 27151134)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 212.96ms (176.77ms CPU time)
Ran 26 tests for tests/contracts/tokenization-spoke/TokenizationSpoke.ERC4626Compliance.t.sol:TokenizationSpokeERC4626ComplianceTest
[PASS] test_RT_deposit_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 5000, μ: 664136, ~: 600795)
Logs:
Bound result 69
Bound result 6305654
[PASS] test_RT_deposit_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 5000, μ: 664496, ~: 601229)
Logs:
Bound result 69
Bound result 6305654
[PASS] test_RT_mint_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 5000, μ: 669970, ~: 60...*[Comment body truncated]* |
♻️ Forge Gas Snapshots🔕 Unchanged
|
Forge Build Sizes🔕 Unchanged
|
yan-man
commented
Apr 6, 2026
Contributor
Author
There was a problem hiding this comment.
confirmation on terminology for "standard spokes"
Contributor
There was a problem hiding this comment.
if we agee that "Standard Spoke" is the the official name for the standard Spoke. I'll update all docs to have both words capitalized on the first letter
Contributor
Author
There was a problem hiding this comment.
dont feel too strongly, works for me as long as we're consistent
Contributor
There was a problem hiding this comment.
He says Canonical is good, I like it too
yan-man
commented
Apr 6, 2026
yan-man
commented
Apr 6, 2026
Contributor
Author
There was a problem hiding this comment.
Documentation should justify why multiple Hub assets for the same underlying token are allowed and how to reason about them
note from before (audit report)
…t but receiving 0 collateral (LiquidationEngine.md)
Co-authored-by: CheyenneAtapour <CheyenneAtapour@gmail.com>
Co-authored-by: CheyenneAtapour <CheyenneAtapour@gmail.com>
Co-authored-by: CheyenneAtapour <CheyenneAtapour@gmail.com>
Co-authored-by: YBM <31329384+yan-man@users.noreply.github.com> Co-authored-by: CheyenneAtapour <CheyenneAtapour@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
yan-man
commented
Apr 10, 2026
yan-man
commented
Apr 10, 2026
yan-man
commented
Apr 10, 2026
yan-man
commented
Apr 10, 2026
yan-man
commented
Apr 10, 2026
yan-man
commented
Apr 10, 2026
yan-man
commented
Apr 10, 2026
CanonicalJP
requested review from
CanonicalJP,
DhairyaSethi,
Kogaroshi,
avniculae and
miguelmtzinf
April 22, 2026 12:13
avniculae
previously requested changes
May 19, 2026
Kogaroshi
previously approved these changes
Jun 8, 2026
defispartan
previously approved these changes
Jul 30, 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.
Uh oh!
There was an error while loading. Please reload this page.