Skip to content

Conversation

@DhairyaSethi
Copy link
Member

No description provided.

certora-run[bot]

This comment was marked as outdated.

@codecov
Copy link

codecov bot commented Oct 14, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (bea7527) to head (cd58742).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #909   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           20        20           
  Lines         1519      1519           
=========================================
  Hits          1519      1519           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link

github-actions bot commented Oct 14, 2025

Forge Build Sizes

🔕 Unchanged
Contract Runtime Size (B) Initcode Size (B) Runtime Margin (B) Initcode Margin (B)
AaveOracle 1,842 2,580 22,734 46,572
AccessManager 10,198 11,423 14,378 37,729
Address 44 94 24,532 49,058
Arrays 44 94 24,532 49,058
AssetInterestRateStrategy 2,349 2,534 22,227 46,618
AssetLogic 44 94 24,532 49,058
AuthorityUtils 44 94 24,532 49,058
Bytes 44 94 24,532 49,058
Comparators 44 94 24,532 49,058
Constants 395 447 24,181 48,705
ECDSA 44 94 24,532 49,058
EIP712Hash 441 493 24,135 48,659
EIP712Types 44 94 24,532 49,058
ERC1967Proxy 122 934 24,454 48,218
ERC1967Utils 44 94 24,532 49,058
EnumerableSet 44 94 24,532 49,058
Errors 44 94 24,532 49,058
GatewayBaseWrapper 1,810 2,085 22,766 47,067
Hub 20,372 20,606 4,204 28,546
HubConfigurator 10,021 10,294 14,555 38,858
JsonBindings 9,244 9,296 15,332 39,856
KeyValueList 44 94 24,532 49,058
KeyValueListWrapper 802 830 23,774 48,322
LibBit 44 94 24,532 49,058
LiquidationLogic 5,551 5,603 19,025 43,549
LiquidationLogicWrapper 9,558 9,693 15,018 39,459
Math 44 94 24,532 49,058
MathUtils 44 94 24,532 49,058
MockERC1271Wallet 599 733 23,977 48,419
MockERC20 1,913 2,379 22,663 46,773
MockPriceFeed 642 1,300 23,934 47,852
MockSpokeInstance 24,203 25,011 373 24,141
NativeTokenGateway 4,929 5,346 19,647 43,806
NoncesKeyed 624 652 23,952 48,500
NoncesKeyedMock 735 763 23,841 48,389
Panic 44 94 24,532 49,058
PercentageMath 44 94 24,532 49,058
PercentageMathWrapper 592 620 23,984 48,532
PositionStatusMap 44 94 24,532 49,058
PositionStatusMapWrapper 2,407 2,435 22,169 46,717
ProxyAdmin 977 1,213 23,599 47,939
RescuableWrapper 770 904 23,806 48,248
Roles 153 203 24,423 48,949
SafeCast 44 94 24,532 49,058
SafeERC20 44 94 24,532 49,058
SafeTransferLib 44 94 24,532 49,058
SharesMath 44 94 24,532 49,058
SignatureChecker 44 94 24,532 49,058
SignatureGateway 10,158 10,669 14,418 38,483
SlotDerivation 44 94 24,532 49,058
SpokeConfigurator 7,259 7,532 17,317 41,620
SpokeInstance 24,141 24,877 435 24,275
StorageSlot 44 94 24,532 49,058
TestnetERC20 2,810 3,686 21,766 45,466
Time 44 94 24,532 49,058
TransientSlot 44 94 24,532 49,058
TransparentUpgradeableProxy 1,073 3,445 23,503 45,707
TreasurySpoke 2,437 2,838 22,139 46,314
UnitPriceFeed 700 1,635 23,876 47,517
Utils 44 94 24,532 49,058
WETH9 1,864 2,330 22,712 46,822
WadRayMath 44 94 24,532 49,058
WadRayMathWrapper 1,252 1,280 23,324 47,872

@github-actions
Copy link

github-actions bot commented Oct 14, 2025

♻️ Forge Gas Snapshots

🔕 Unchanged
Path Value
snapshots/Hub.Operations.json
add 112,957
draw 121,540
eliminateDeficit: full 57,149
eliminateDeficit: partial 66,725
payFee 73,206
refreshPremium 69,468
remove: full 70,663
remove: partial 75,910
reportDeficit 118,680
restore: full 97,070
restore: partial 110,500
transferShares 78,798
snapshots/NativeTokenGateway.Operations.json
borrowNative 225,910
repayNative 241,350
supplyAsCollateralNative 155,117
supplyNative 131,351
withdrawNative: full 121,184
withdrawNative: partial 131,280
snapshots/SignatureGateway.Operations.json
borrowWithSig 214,090
repayWithSig 242,385
setSelfAsUserPositionManagerWithSig 75,492
setUsingAsCollateralWithSig 85,259
supplyWithSig 147,957
updateUserDynamicConfigWithSig 62,980
updateUserRiskPremiumWithSig 61,661
withdrawWithSig 127,209
snapshots/Spoke.Getters.json
getUserAccountData: supplies: 0, borrows: 0 12,142
getUserAccountData: supplies: 1, borrows: 0 46,762
getUserAccountData: supplies: 2, borrows: 0 76,497
getUserAccountData: supplies: 2, borrows: 1 97,194
getUserAccountData: supplies: 2, borrows: 2 116,545
snapshots/Spoke.Operations.ZeroRiskPremium.json
borrow: first 197,591
borrow: second action, same reserve 177,829
liquidationCall (receiveShares): full 261,371
liquidationCall (receiveShares): partial 301,812
liquidationCall: full 285,384
liquidationCall: partial 308,159
permitReserve + repay (multicall) 234,757
permitReserve + supply (multicall) 140,176
permitReserve + supply + enable collateral (multicall) 175,479
repay: full 151,524
repay: partial 175,943
setUserPositionManagerWithSig: disable 44,896
setUserPositionManagerWithSig: enable 68,925
supply + enable collateral (multicall) 153,420
supply: 0 borrows, collateral disabled 114,916
supply: 0 borrows, collateral enabled 119,313
supply: 1 borrow 119,305
supply: second action, same reserve 102,213
updateUserDynamicConfig: 1 collateral 73,827
updateUserDynamicConfig: 2 collaterals 88,687
updateUserRiskPremium: 1 borrow 94,457
updateUserRiskPremium: 2 borrows 109,260
usingAsCollateral: 0 borrows, enable 59,042
usingAsCollateral: 1 borrow, disable 104,792
usingAsCollateral: 1 borrow, enable 32,364
usingAsCollateral: 2 borrows, disable 127,213
usingAsCollateral: 2 borrows, enable 41,942
withdraw: 0 borrows, full 122,628
withdraw: 0 borrows, partial 127,479
withdraw: 1 borrow, partial 156,134
withdraw: 2 borrows, partial 178,543
withdraw: non collateral 120,019
snapshots/Spoke.Operations.json
borrow: first 268,099
borrow: second action, same reserve 211,337
liquidationCall (receiveShares): full 295,096
liquidationCall (receiveShares): partial 335,537
liquidationCall: full 319,109
liquidationCall: partial 341,884
permitReserve + repay (multicall) 268,475
permitReserve + supply (multicall) 140,176
permitReserve + supply + enable collateral (multicall) 175,479
repay: full 146,165
repay: partial 209,661
setUserPositionManagerWithSig: disable 44,896
setUserPositionManagerWithSig: enable 68,925
supply + enable collateral (multicall) 153,420
supply: 0 borrows, collateral disabled 114,916
supply: 0 borrows, collateral enabled 119,313
supply: 1 borrow 119,305
supply: second action, same reserve 102,213
updateUserDynamicConfig: 1 collateral 73,827
updateUserDynamicConfig: 2 collaterals 88,687
updateUserRiskPremium: 1 borrow 176,413
updateUserRiskPremium: 2 borrows 260,358
usingAsCollateral: 0 borrows, enable 59,042
usingAsCollateral: 1 borrow, disable 186,748
usingAsCollateral: 1 borrow, enable 32,364
usingAsCollateral: 2 borrows, disable 286,310
usingAsCollateral: 2 borrows, enable 41,942
withdraw: 0 borrows, full 122,628
withdraw: 0 borrows, partial 127,479
withdraw: 1 borrow, partial 235,590
withdraw: 2 borrows, partial 335,141
withdraw: non collateral 120,019

@github-actions
Copy link

github-actions bot commented Oct 14, 2025

🌈 Test Results
No files changed, compilation skipped

Ran 17 tests for tests/unit/AaveOracle.t.sol:AaveOracleTest
[PASS] test_constructor() (gas: 440456)
[PASS] test_decimals() (gas: 8387)
[PASS] test_deploy_revertsWith_InvalidAddress() (gas: 38089)
[PASS] test_description() (gas: 12094)
[PASS] test_fuzz_constructor(uint8) (runs: 5000, μ: 444410, ~: 444703)
[PASS] test_getReservePrice() (gas: 47409)
[PASS] test_getReservePrice_revertsWith_InvalidPrice() (gas: 46669)
[PASS] test_getReservePrice_revertsWith_InvalidSource() (gas: 10976)
[PASS] test_getReservePrices() (gas: 79551)
[PASS] test_getReservePrices_revertsWith_InvalidSource() (gas: 49352)
[PASS] test_getReserveSource() (gas: 47584)
[PASS] test_setReserveSource() (gas: 44466)
[PASS] test_setReserveSource_revertsWith_InvalidPrice() (gas: 97683)
[PASS] test_setReserveSource_revertsWith_InvalidSource() (gas: 15327)
[PASS] test_setReserveSource_revertsWith_InvalidSourceDecimals() (gas: 15149)
[PASS] test_setReserveSource_revertsWith_OnlySpoke() (gas: 11049)
[PASS] test_spoke() (gas: 10614)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 493.85ms (481.26ms CPU time)

Ran 23 tests for tests/unit/AssetInterestRateStrategy.t.sol:AssetInterestRateStrategyTest
[PASS] test_calculateInterestRate_AtKinkPoint() (gas: 24686)
Logs:
  Bound result 2000
  Bound result 778565440757296803935461404101

[PASS] test_calculateInterestRate_AtMaxUtilization() (gas: 24958)
Logs:
  Bound result 10000
  Bound result 778565440757296803935461404101

[PASS] test_calculateInterestRate_LeftToKinkPoint(uint256) (runs: 5000, μ: 24537, ~: 24690)
[PASS] test_calculateInterestRate_RightToKinkPoint(uint256) (runs: 5000, μ: 25653, ~: 25690)
[PASS] test_calculateInterestRate_ZeroDebtZeroLiquidity() (gas: 18944)
Logs:
  Bound result 0

[PASS] test_calculateInterestRate_fuzz_ZeroDebt(uint256) (runs: 5000, μ: 19168, ~: 18950)
[PASS] test_calculateInterestRate_revertsWith_InterestRateDataNotSet() (gas: 11361)
[PASS] test_deploy_revertsWith_InvalidAddress() (gas: 36318)
[PASS] test_getBaseVariableBorrowRate() (gas: 14864)
[PASS] test_getInterestRateData() (gas: 19653)
[PASS] test_getMaxVariableBorrowRate() (gas: 15312)
[PASS] test_getOptimalUsageRatio() (gas: 14735)
[PASS] test_getVariableRateSlope1() (gas: 14810)
[PASS] test_getVariableRateSlope2() (gas: 14877)
[PASS] test_maxBorrowRate() (gas: 8431)
[PASS] test_maxOptimalRatio() (gas: 8431)
[PASS] test_minOptimalRatio() (gas: 8440)
[PASS] test_setInterestRateData() (gas: 69812)
[PASS] test_setInterestRateData_revertsWith_InvalidMaxRate() (gas: 42072)
[PASS] test_setInterestRateData_revertsWith_InvalidOptimalUsageRatio() (gas: 43120)
[PASS] test_setInterestRateData_revertsWith_InvalidRateData() (gas: 35395)
[PASS] test_setInterestRateData_revertsWith_OnlyHub() (gas: 23786)
[PASS] test_setInterestRateData_revertsWith_Slope2MustBeGteSlope1() (gas: 37980)
Suite result: ok. 23 passed; 0 failed; 0 skipped; finished in 984.18ms (977.99ms CPU time)

Ran 8 tests for tests/unit/misc/EIP712Hash.t.sol:EIP712HashTest
[PASS] test_constants() (gas: 5450)
[PASS] test_hash_borrow_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 4659, ~: 4659)
[PASS] test_hash_repay_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 4615, ~: 4615)
[PASS] test_hash_setUsingAsCollateral_fuzz((address,uint256,bool,address,uint256,uint256)) (runs: 5000, μ: 4902, ~: 4902)
[PASS] test_hash_supply_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 4703, ~: 4703)
[PASS] test_hash_updateUserDynamicConfig_fuzz((address,address,uint256,uint256)) (runs: 5000, μ: 4441, ~: 4441)
[PASS] test_hash_updateUserRiskPremium_fuzz((address,address,uint256,uint256)) (runs: 5000, μ: 4462, ~: 4462)
[PASS] test_hash_withdraw_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 4681, ~: 4681)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 891.70ms (891.48ms CPU time)

Ran 8 tests for tests/unit/misc/GatewayBase.t.sol:GatewayBaseTest
[PASS] test_constructor() (gas: 430174)
[PASS] test_registerSpoke_fuzz(address) (runs: 5000, μ: 42033, ~: 42033)
[PASS] test_registerSpoke_revertsWith_InvalidAddress() (gas: 13345)
[PASS] test_registerSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 14077)
[PASS] test_registerSpoke_unregister() (gas: 36599)
[PASS] test_renouncePositionManagerRole() (gas: 65377)
[PASS] test_renouncePositionManagerRole_revertsWith_InvalidAddress() (gas: 76673)
[PASS] test_renouncePositionManagerRole_revertsWith_OwnableUnauthorizedAccount() (gas: 76834)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 341.24ms (324.59ms CPU time)

Ran 5 tests for tests/gas/Gateways.Operations.gas.t.sol:NativeTokenGateway_Gas_Tests
[PASS] test_borrowNative() (gas: 913992)
[PASS] test_repayNative() (gas: 1135379)
[PASS] test_supplyAndCollateralNative() (gas: 293572)
[PASS] test_supplyNative() (gas: 275755)
[PASS] test_withdrawNative() (gas: 487386)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 32.68ms (4.87ms CPU time)

Ran 8 tests for tests/gas/Gateways.Operations.gas.t.sol:SignatureGateway_Gas_Tests
[PASS] test_borrowWithSig() (gas: 752310)
[PASS] test_repayWithSig() (gas: 1093534)
[PASS] test_setSelfAsUserPositionManagerWithSig() (gas: 201454)
[PASS] test_setUsingAsCollateralWithSig() (gas: 279941)
[PASS] test_supplyWithSig() (gas: 447071)
[PASS] test_updateUserDynamicConfigWithSig() (gas: 138565)
[PASS] test_updateUserRiskPremiumWithSig() (gas: 135956)
[PASS] test_withdrawWithSig() (gas: 392608)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 32.61ms (8.95ms CPU time)

Ran 6 tests for tests/unit/Hub/Hub.Access.t.sol:HubAccessTest
[PASS] test_change_authority() (gas: 2314519)
[PASS] test_change_role_responsibility() (gas: 102145)
[PASS] test_hub_access_manager_exposure() (gas: 12706)
[PASS] test_hub_admin_access() (gas: 1135155)
[PASS] test_migrate_role_responsibility() (gas: 395195)
[PASS] test_setInterestRateData_access() (gas: 100913)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 20.30ms (3.75ms CPU time)

Ran 21 tests for tests/unit/Hub/Hub.Add.t.sol:HubAddTest
[PASS] test_add_AddCapReachedButNotExceeded_rounding() (gas: 646527)
[PASS] test_add_fuzz_AddCapReachedButNotExceeded(uint40) (runs: 5000, μ: 155327, ~: 155295)
[PASS] test_add_fuzz_multi_asset_multi_spoke(uint256,uint256,uint256) (runs: 5000, μ: 305042, ~: 305176)
[PASS] test_add_fuzz_revertsWith_AddCapExceeded(uint40) (runs: 5000, μ: 78655, ~: 78623)
[PASS] test_add_fuzz_revertsWith_AddCapExceeded_due_to_interest(uint40,uint256,uint256) (runs: 5000, μ: 276901, ~: 279381)
[PASS] test_add_fuzz_revertsWith_InvalidShares_due_to_index(uint256,uint256,uint256) (runs: 5000, μ: 212658, ~: 212838)
[PASS] test_add_fuzz_revertsWith_TransferFromFailed(uint256) (runs: 5000, μ: 77682, ~: 77410)
[PASS] test_add_fuzz_single_asset(uint256,address,uint256) (runs: 5000, μ: 335233, ~: 335151)
[PASS] test_add_fuzz_single_spoke_multi_add(uint256,uint256) (runs: 5000, μ: 779001, ~: 781211)
[PASS] test_add_multi_add_minimal_shares() (gas: 332600)
[PASS] test_add_revertsWith_AmountDowncastOverflow() (gas: 202174)
[PASS] test_add_revertsWith_InvalidAddress() (gas: 15832)
[PASS] test_add_revertsWith_InvalidAmount() (gas: 15877)
[PASS] test_add_revertsWith_InvalidShares() (gas: 214551)
[PASS] test_add_revertsWith_SharesDowncastOverflow() (gas: 35767)
[PASS] test_add_revertsWith_SpokeNotActive() (gas: 59869)
[PASS] test_add_revertsWith_SpokePaused() (gas: 59986)
[PASS] test_add_revertsWith_TransferFromFailed() (gas: 73984)
[PASS] test_add_single_asset() (gas: 323137)
Logs:
  Bound result 2
  Bound result 100000000000000000000

[PASS] test_add_with_increased_index() (gas: 315648)
[PASS] test_add_with_increased_index_with_premium() (gas: 668184)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 47.28s (47.27s CPU time)

Ran 32 tests for tests/unit/Hub/Hub.Config.t.sol:HubConfigTest
[PASS] test_addAsset_fuzz(address,uint8,address) (runs: 5000, μ: 843497, ~: 843530)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_feeReceiver(address,uint8,address) (runs: 5000, μ: 46622, ~: 46926)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_irStrategy(address,uint8,address) (runs: 5000, μ: 46698, ~: 47002)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_underlying(uint8,address,address) (runs: 5000, μ: 37733, ~: 37733)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals(address,uint8,address,address) (runs: 5000, μ: 47164, ~: 46982)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals_tooLow(address,uint8,address,address) (runs: 5000, μ: 47444, ~: 47681)
[PASS] test_addAsset_fuzz_reverts_InvalidIrData(address,uint8,address,address) (runs: 5000, μ: 39863, ~: 36252)
[PASS] test_addAsset_revertsWith_BlockTimestampDowncastOverflow() (gas: 81114)
[PASS] test_addAsset_revertsWith_DrawnRateDowncastOverflow() (gas: 78043)
[PASS] test_addSpoke_fuzz(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 125818, ~: 125874)
[PASS] test_addSpoke_fuzz_revertsWith_AssetNotListed(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 34721, ~: 34709)
[PASS] test_addSpoke_fuzz_revertsWith_InvalidAddress_spoke(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 33309, ~: 33365)
[PASS] test_addSpoke_revertsWith_SpokeAlreadyListed() (gas: 38920)
[PASS] test_hub_deploy_revertsWith_InvalidAddress() (gas: 47165)
[PASS] test_hub_max_riskPremium() (gas: 8569)
[PASS] test_updateAssetConfig_UseExistingSpokeAndListedAsFeeReceiver_revertsWith_SpokeAlreadyListed() (gas: 60522)
[PASS] test_updateAssetConfig_fuzz(uint256,(address,uint16,address,address)) (runs: 5000, μ: 243332, ~: 243218)
[PASS] test_updateAssetConfig_fuzz_FromZeroLiquidityFee(uint256,uint16) (runs: 5000, μ: 757022, ~: 756947)
[PASS] test_updateAssetConfig_fuzz_LiquidityFee(uint256,uint16) (runs: 5000, μ: 654934, ~: 654859)
[PASS] test_updateAssetConfig_fuzz_NewFeeReceiver(uint256) (runs: 5000, μ: 726076, ~: 726133)
[PASS] test_updateAssetConfig_fuzz_NewInterestRateStrategy(uint256) (runs: 5000, μ: 1126633, ~: 1126738)
[PASS] test_updateAssetConfig_fuzz_ReuseFeeReceiver_revertsWith_SpokeAlreadyListed(uint256) (runs: 5000, μ: 764038, ~: 764095)
[PASS] test_updateAssetConfig_fuzz_Scenario(uint256) (runs: 5000, μ: 606537, ~: 606591)
[PASS] test_updateAssetConfig_fuzz_UseExistingSpokeAsFeeReceiver_revertsWith_SpokeAlreadyListed(uint256) (runs: 5000, μ: 60150, ~: 60150)
[PASS] test_updateAssetConfig_fuzz_revertsWith_InvalidInterestRateStrategy(uint256) (runs: 5000, μ: 57824, ~: 57878)
[PASS] test_updateAssetConfig_fuzz_revertsWith_InvalidLiquidityFee(uint256,(address,uint16,address,address)) (runs: 5000, μ: 41041, ~: 40891)
[PASS] test_updateAssetConfig_fuzz_revertsWith_InvalidReinvestmentController() (gas: 494041)
[PASS] test_updateAssetConfig_fuzz_revertsWith_calculateInterestRateReverts(uint256,(address,uint16,address,address)) (runs: 5000, μ: 192105, ~: 191957)
[PASS] test_updateAssetConfig_fuzz_revertsWith_setInterestRateDataReverts(uint256,(address,uint16,address,address)) (runs: 5000, μ: 65153, ~: 65005)
[PASS] test_updateSpokeConfig_fuzz(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 58382, ~: 58449)
[PASS] test_updateSpokeConfig_fuzz_revertsWith_SpokeNotListed(uint256,address,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 40374, ~: 40438)
[PASS] test_updateSpokeConfig_revertsWith_AssetNotListed() (gas: 29268)
Suite result: ok. 32 passed; 0 failed; 0 skipped; finished in 98.15s (98.13s CPU time)

Ran 16 tests for tests/unit/Hub/Hub.Draw.t.sol:HubDrawTest
[PASS] test_draw_DifferentSpokes() (gas: 363507)
[PASS] test_draw_fuzz_IncreasedBorrowRate(uint256,uint256) (runs: 5000, μ: 680823, ~: 681252)
[PASS] test_draw_fuzz_amounts_same_block(uint256,uint256) (runs: 5000, μ: 283719, ~: 283581)
[PASS] test_draw_fuzz_revertsWith_DrawCapExceeded(uint40) (runs: 5000, μ: 81246, ~: 81214)
[PASS] test_draw_fuzz_revertsWith_DrawCapExceeded_due_to_interest(uint40,uint256,uint256) (runs: 5000, μ: 298381, ~: 298496)
[PASS] test_draw_fuzz_revertsWith_InsufficientLiquidity(uint256,uint256) (runs: 5000, μ: 33878, ~: 33678)
[PASS] test_draw_fuzz_revertsWith_InsufficientLiquidity_due_to_draw(uint256) (runs: 5000, μ: 181592, ~: 181321)
[PASS] test_draw_fuzz_revertsWith_InsufficientLiquidity_due_to_remove(uint256) (runs: 5000, μ: 125276, ~: 125083)
[PASS] test_draw_fuzz_revertsWith_InvalidAddress(uint256) (runs: 5000, μ: 15760, ~: 15760)
[PASS] test_draw_revertsWith_DrawCapExceeded_due_to_deficit() (gas: 254507)
[PASS] test_draw_revertsWith_InsufficientLiquidity() (gas: 27956)
[PASS] test_draw_revertsWith_InsufficientLiquidity_due_to_draw() (gas: 177896)
[PASS] test_draw_revertsWith_InsufficientLiquidity_due_to_remove() (gas: 122392)
[PASS] test_draw_revertsWith_InvalidAmount() (gas: 15880)
[PASS] test_draw_revertsWith_SpokeNotActive() (gas: 59693)
[PASS] test_draw_revertsWith_SpokePaused() (gas: 59766)
Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 25.10s (25.08s CPU time)

Ran 6 tests for tests/unit/Hub/Hub.EliminateDeficit.t.sol:HubEliminateDeficitTest
[PASS] test_eliminateDeficit(uint256) (runs: 5000, μ: 495092, ~: 495092)
[PASS] test_eliminateDeficit_allowSpokePaused() (gas: 337136)
[PASS] test_eliminateDeficit_fuzz_revertsWith_InvalidAmount_Excess(uint256) (runs: 5000, μ: 249383, ~: 249383)
[PASS] test_eliminateDeficit_fuzz_revertsWith_callerSpokeNotActive(address) (runs: 5000, μ: 29096, ~: 29096)
[PASS] test_eliminateDeficit_revertsWith_InvalidAmount_ZeroAmountNoDeficit() (gas: 20023)
[PASS] test_eliminateDeficit_revertsWith_InvalidAmount_ZeroAmountWithDeficit() (gas: 250527)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 12.58s (12.56s CPU time)

Ran 7 tests for tests/gas/Hub.Operations.gas.t.sol:HubOperations_Gas_Tests
[PASS] test_add() (gas: 127997)
[PASS] test_deficit() (gas: 1043112)
[PASS] test_draw() (gas: 369875)
[PASS] test_payFee_transferShares() (gas: 919747)
[PASS] test_refreshPremium() (gas: 617928)
[PASS] test_remove() (gas: 268388)
[PASS] test_restore() (gas: 721918)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 27.10ms (4.91ms CPU time)

Ran 6 tests for tests/unit/Hub/Hub.PayFee.t.sol:HubPayFeeTest
[PASS] test_payFee_fuzz(uint256,uint256) (runs: 5000, μ: 664868, ~: 664953)
[PASS] test_payFee_fuzz_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 665143, ~: 665173)
[PASS] test_payFee_revertsWith_InvalidShares() (gas: 20213)
[PASS] test_payFee_revertsWith_SpokeNotActive() (gas: 59732)
[PASS] test_payFee_revertsWith_underflow_added_shares_exceeded() (gas: 131440)
[PASS] test_payFee_revertsWith_underflow_added_shares_exceeded_with_interest() (gas: 631021)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 23.60s (23.58s CPU time)

Ran 7 tests for tests/unit/Spoke/Spoke.AccrueInterest.t.sol:SpokeAccrueInterestTest
[PASS] test_accrueInterest_NoActionTaken() (gas: 134821)
[PASS] test_accrueInterest_NoInterest_NoDebt(uint32) (runs: 5000, μ: 641630, ~: 641543)
[PASS] test_accrueInterest_NoInterest_OnlySupply(uint32) (runs: 5000, μ: 251971, ~: 252192)
[PASS] test_accrueInterest_TenPercentRp(uint256,uint32) (runs: 5000, μ: 585258, ~: 586074)
[PASS] test_accrueInterest_fuzz_BorrowAmountAndSkipTime(uint256,uint32) (runs: 5000, μ: 545575, ~: 545964)
[PASS] test_accrueInterest_fuzz_RPBorrowAndSkipTime((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256),uint32) (runs: 5000, μ: 3872155, ~: 3886308)
[PASS] test_accrueInterest_fuzz_RatesRPBorrowAndSkipTime((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256),(uint96,uint96,uint96,uint96),uint32) (runs: 5000, μ: 3933517, ~: 3945360)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 210.70s (210.68s CPU time)

Ran 10 tests for tests/unit/Hub/Hub.Reclaim.t.sol:HubReclaimTest
[PASS] test_reclaim() (gas: 677135)
Logs:
  Bound result 1000000000000000000000
  Bound result 500000000000000000000
  Bound result 200000000000000000000

[PASS] test_reclaim_fullAmount() (gas: 657934)
[PASS] test_reclaim_fuzz(uint256,uint256,uint256) (runs: 5000, μ: 678586, ~: 678135)
[PASS] test_reclaim_multipleSweepsAndReclaims() (gas: 784778)
[PASS] test_reclaim_revertsWith_AssetNotListed() (gas: 12461)
[PASS] test_reclaim_revertsWith_InvalidAmount_zero() (gas: 90354)
[PASS] test_reclaim_revertsWith_OnlyReinvestmentController(address) (runs: 5000, μ: 91219, ~: 91219)
[PASS] test_reclaim_revertsWith_OnlyReinvestmentController_init() (gas: 38018)
[PASS] test_reclaim_revertsWith_underflow_exceedsSwept() (gas: 112918)
[PASS] test_reclaim_revertsWith_underflow_exceedsSwept_afterSweep() (gas: 466010)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 14.56s (14.55s CPU time)

Ran 5 tests for tests/unit/Spoke/Spoke.AccrueLiquidityFee.EdgeCases.t.sol:SpokeAccrueLiquidityFeeEdgeCasesTest
[PASS] test_accrueLiquidityFee_fuzz_maxLiquidityFee_with_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 549113, ~: 549278)
[PASS] test_accrueLiquidityFee_fuzz_maxLiquidityFee_with_premium_multiple_users(uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 791499, ~: 791496)
[PASS] test_accrueLiquidityFee_maxLiquidityFee_multi_spoke() (gas: 587982900)
[PASS] test_accrueLiquidityFee_maxLiquidityFee_multi_user() (gas: 248830980)
[PASS] test_accrueLiquidityFee_maxLiquidityFee_with_premium() (gas: 549597)
Logs:
  Bound result 500000000000000000000
  Bound result 5000
  Bound result 34560000
  Bound result 2

Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 20.32s (20.30s CPU time)

Ran 10 tests for tests/unit/Hub/Hub.RefreshPremium.t.sol:HubRefreshPremiumTest
[PASS] test_refreshPremium_emitsEvent() (gas: 265392)
[PASS] test_refreshPremium_fuzz_positiveDeltas(uint256,int256,int256,int256,bool) (runs: 5000, μ: 476547, ~: 480177)
[PASS] test_refreshPremium_fuzz_withAccrual(uint256,uint256,uint256,uint256) (runs: 5000, μ: 554009, ~: 559969)
[PASS] test_refreshPremium_maxRiskPremiumCap() (gas: 903089)
[PASS] test_refreshPremium_negativeDeltas(int256,int256) (runs: 5000, μ: 471847, ~: 472333)
[PASS] test_refreshPremium_negativeDeltas_withAccrual(uint256,uint256) (runs: 5000, μ: 541484, ~: 550479)
[PASS] test_refreshPremium_pausedSpokesAllowed() (gas: 111525)
[PASS] test_refreshPremium_revertsWith_SpokeNotActive() (gas: 57662)
[PASS] test_refreshPremium_riskPremiumCap() (gas: 929296)
[PASS] test_refreshPremium_spokePremiumUpdateIsContained() (gas: 734706)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 23.32s (23.29s CPU time)

Ran 7 tests for tests/unit/Spoke/Spoke.AccrueLiquidityFee.t.sol:SpokeAccrueLiquidityFeeTest
[PASS] test_accrueLiquidityFee() (gas: 822258)
[PASS] test_accrueLiquidityFee_NoActionTaken() (gas: 97373)
[PASS] test_accrueLiquidityFee_NoInterest_OnlySupply(uint32) (runs: 5000, μ: 233591, ~: 233723)
[PASS] test_accrueLiquidityFee_exact() (gas: 811150)
[PASS] test_accrueLiquidityFee_fuzz_BorrowAmountAndSkipTime(uint256,uint32) (runs: 5000, μ: 813883, ~: 839237)
[PASS] test_accrueLiquidityFee_maxLiquidityFee() (gas: 544259)
[PASS] test_accrueLiquidityFee_setUsingAsCollateral() (gas: 876286)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 18.46s (18.44s CPU time)

Ran 15 tests for tests/unit/Hub/Hub.Remove.t.sol:HubRemoveTest
[PASS] test_remove() (gas: 192256)
Logs:
  Bound result 2
  Bound result 100000000000000000000

[PASS] test_remove_all_with_interest() (gas: 387739)
[PASS] test_remove_fuzz(uint256,uint256) (runs: 5000, μ: 190818, ~: 190625)
[PASS] test_remove_fuzz_all_liquidity_with_interest(uint256,uint256) (runs: 5000, μ: 423506, ~: 426155)
[PASS] test_remove_fuzz_multi_spoke(uint256,uint256) (runs: 5000, μ: 267308, ~: 267467)
[PASS] test_remove_fuzz_multi_spoke_with_interest(uint256,uint256,uint256,uint256) (runs: 5000, μ: 433663, ~: 436742)
[PASS] test_remove_revertsWith_InsufficientLiquidity() (gas: 166728)
[PASS] test_remove_revertsWith_InsufficientLiquidity_exceeding_added_amount() (gas: 134739)
[PASS] test_remove_revertsWith_InsufficientLiquidity_zero_added() (gas: 20709)
[PASS] test_remove_revertsWith_InvalidAddress() (gas: 15680)
[PASS] test_remove_revertsWith_InvalidAmount() (gas: 17781)
[PASS] test_remove_revertsWith_SpokeNotActive() (gas: 59835)
[PASS] test_remove_revertsWith_SpokePaused() (gas: 59941)
[PASS] test_remove_revertsWith_underflow_exceeding_added_amount() (gas: 167339)
[PASS] test_remove_revertsWtih_underflow_one_extra_wei() (gas: 343509)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 29.95s (29.93s CPU time)

Ran 6 tests for tests/unit/Hub/Hub.ReportDeficit.t.sol:HubReportDeficitTest
[PASS] test_reportDeficit_fuzz_revertsWith_SurplusDeficitReported(uint256,uint256,uint256,uint256) (runs: 5000, μ: 159908, ~: 159930)
[PASS] test_reportDeficit_fuzz_with_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 666692, ~: 669228)
[PASS] test_reportDeficit_revertsWith_InvalidAmount() (gas: 18215)
[PASS] test_reportDeficit_revertsWith_SpokeNotActive(address) (runs: 5000, μ: 26660, ~: 26660)
[PASS] test_reportDeficit_surplus_drawn_revertsWith_SurplusDeficitReported() (gas: 199053)
[PASS] test_reportDeficit_with_premium() (gas: 667825)
Logs:
  Bound result 10000000000
  Bound result 31536000
  Bound result 5000000000
  Bound result 0

Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 14.73s (14.71s CPU time)

Ran 21 tests for tests/unit/Hub/Hub.Restore.t.sol:HubRestoreTest
[PASS] test_restore_full_amount_with_interest() (gas: 354305)
Logs:
  Bound result 1000000000000000000000
  Bound result 500000000000000000000
  Bound result 31536000

[PASS] test_restore_full_amount_with_interest_and_premium() (gas: 657032)
Logs:
  Bound result 100000000000000000000
  Bound result 50000000000000000000
  Bound result 31536000
  Bound result 1

[PASS] test_restore_fuzz_full_amount_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 353010, ~: 355522)
[PASS] test_restore_fuzz_full_amount_with_interest_and_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 640730, ~: 658391)
[PASS] test_restore_fuzz_revertsWith_SurplusAmountRestored_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 249157, ~: 252938)
[PASS] test_restore_fuzz_revertsWith_SurplusAmountRestored_with_interest_and_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 627953, ~: 631610)
[PASS] test_restore_one_share_delta_increase_revertsWith_InvalidPremiumChange() (gas: 237978)
[PASS] test_restore_partial_drawn() (gas: 327677)
[PASS] test_restore_partial_same_block() (gas: 309144)
[PASS] test_restore_premiumDeltas_twoWeiIncrease_realizedDelta() (gas: 252218)
[PASS] test_restore_revertsWith_InvalidAmount_zero() (gas: 46939)
[PASS] test_restore_revertsWith_InvalidPremiumChange_premiumIncrease() (gas: 194608)
[PASS] test_restore_revertsWith_InvalidPremiumChange_premiumSharesIncrease() (gas: 194606)
[PASS] test_restore_revertsWith_SpokeNotActive_whenPaused() (gas: 159473)
[PASS] test_restore_revertsWith_SpokePaused() (gas: 86911)
[PASS] test_restore_revertsWith_SurplusAmountRestored() (gas: 338627)
[PASS] test_restore_revertsWith_SurplusAmountRestored_with_interest() (gas: 251996)
Logs:
  Bound result 100000000000000000000
  Bound result 50000000000000000000
  Bound result 15768000

[PASS] test_restore_revertsWith_SurplusAmountRestored_with_interest_and_premium() (gas: 630292)
Logs:
  Bound result 100000000000000000000
  Bound result 50000000000000000000
  Bound result 31536000
  Bound result 1

[PASS] test_restore_revertsWith_underflow_offsetIncrease() (gas: 194617)
[PASS] test_restore_tooMuchDrawn_revertsWith_SurplusAmountRestored() (gas: 233633)
[PASS] test_restore_when_asset_frozen() (gas: 413171)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 18.53s (18.51s CPU time)

Ran 5 tests for tests/unit/Spoke/Spoke.Borrow.EdgeCases.t.sol:SpokeBorrowEdgeCasesTest
[PASS] test_borrow_fuzz_rounding_effect(uint256,uint256) (runs: 5000, μ: 1059814, ~: 1059966)
[PASS] test_borrow_fuzz_rounding_effect_inflated_ex_rate(uint256,uint256,uint256) (runs: 5000, μ: 1439531, ~: 1439673)
[PASS] test_borrow_fuzz_rounding_effect_shares(uint256,uint256) (runs: 5000, μ: 1106279, ~: 1106051)
[PASS] test_borrow_rounding_effect_multiple_actions() (gas: 1164656)
[PASS] test_borrow_rounding_effect_shares() (gas: 1105266)
Logs:
  Bound result 5000000000000000000
  Bound result 94608000

Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 63.46s (63.45s CPU time)

Ran 1 test for tests/unit/Hub/Hub.Rounding.t.sol:HubRoundingTest
[PASS] test_sharePriceWithMultipleDonations() (gas: 653078358)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.25s (3.23s CPU time)

Ran 8 tests for tests/unit/Hub/Hub.Sweep.t.sol:HubSweepTest
[PASS] test_sweep() (gas: 483532)
Logs:
  Bound result 1000000000000000000000
  Bound result 1000000000000000000000

[PASS] test_sweep_does_not_impact_utilization(uint256,uint256) (runs: 5000, μ: 646810, ~: 647964)
[PASS] test_sweep_fuzz(uint256,uint256) (runs: 5000, μ: 484046, ~: 484056)
[PASS] test_sweep_revertsWith_AssetNotListed() (gas: 12340)
[PASS] test_sweep_revertsWith_InsufficientLiquidity() (gas: 229570)
[PASS] test_sweep_revertsWith_InvalidAmount() (gas: 101299)
[PASS] test_sweep_revertsWith_OnlyReinvestmentController(address) (runs: 5000, μ: 91853, ~: 91853)
[PASS] test_sweep_revertsWith_OnlyReinvestmentController_init() (gas: 37943)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 17.72s (17.69s CPU time)

Ran 7 tests for tests/unit/Hub/Hub.TransferShares.t.sol:HubTransferSharesTest
[PASS] test_transferShares() (gas: 169358)
Logs:
  Bound result 1000000000000000000000
  Bound result 1000000000000000000000

[PASS] test_transferShares_fuzz(uint256,uint256) (runs: 5000, μ: 172786, ~: 172943)
[PASS] test_transferShares_fuzz_revertsWith_underflow_spoke_added_shares_exceeded(uint256) (runs: 5000, μ: 139473, ~: 139198)
[PASS] test_transferShares_revertsWith_AddCapExceeded() (gas: 182644)
[PASS] test_transferShares_revertsWith_SpokeNotActive() (gas: 164299)
[PASS] test_transferShares_revertsWith_SpokePaused() (gas: 166658)
[PASS] test_transferShares_zeroShares_revertsWith_InvalidShares() (gas: 22486)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 6.55s (6.53s CPU time)

Ran 6 tests for tests/unit/Hub/HubAccrueInterest.t.sol:HubAccrueInterestTest
[PASS] test_accrueInterest_NoActionTaken() (gas: 40872)
[PASS] test_accrueInterest_NoInterest_NoDebt(uint32) (runs: 5000, μ: 325366, ~: 325291)
[PASS] test_accrueInterest_NoInterest_OnlyAdd(uint32) (runs: 5000, μ: 185143, ~: 185068)
[PASS] test_accrueInterest_fuzz_BorrowAmountAndElapsed(uint256,uint32) (runs: 5000, μ: 259549, ~: 261915)
[PASS] test_accrueInterest_fuzz_BorrowAmountRateAndElapsed(uint256,uint256,uint32) (runs: 5000, μ: 357306, ~: 360811)
[PASS] test_accrueInterest_fuzz_BorrowAndWait(uint32) (runs: 5000, μ: 260946, ~: 260871)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 20.49s (20.47s CPU time)

Ran 60 tests for tests/unit/HubConfigurator.t.sol:HubConfiguratorTest
[PASS] test_addAsset_fuzz(bool,address,uint8,address,uint256,uint16,uint32,uint32,uint32) (runs: 5000, μ: 875893, ~: 876211)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals(bool,address,uint8,address,uint256,address) (runs: 5000, μ: 57687, ~: 57658)
[PASS] test_addAsset_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 31196, ~: 31197)
[PASS] test_addAsset_revertsWith_InvalidAddress_irStrategy() (gas: 50828)
[PASS] test_addAsset_revertsWith_InvalidAddress_underlying() (gas: 50815)
[PASS] test_addAsset_revertsWith_InvalidLiquidityFee() (gas: 800347)
[PASS] test_addAsset_reverts_invalidIrData() (gas: 44616)
[PASS] test_addSpoke() (gas: 126251)
[PASS] test_addSpokeToAssets() (gas: 222893)
[PASS] test_addSpokeToAssets_revertsWith_MismatchedConfigs() (gas: 24824)
[PASS] test_addSpokeToAssets_revertsWith_OwnableUnauthorizedAccount() (gas: 17215)
[PASS] test_addSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 16882)
[PASS] test_deactivateAsset() (gas: 158830)
[PASS] test_deactivateAsset_revertsWith_OwnableUnauthorizedAccount() (gas: 17899)
[PASS] test_deactivateSpoke() (gas: 155692)
[PASS] test_deactivateSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 18060)
[PASS] test_freezeAsset() (gas: 233441)
[PASS] test_freezeAsset_revertsWith_OwnableUnauthorizedAccount() (gas: 18007)
[PASS] test_freezeSpoke() (gas: 249062)
[PASS] test_freezeSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 18038)
[PASS] test_pauseAsset() (gas: 158818)
[PASS] test_pauseAsset_revertsWith_OwnableUnauthorizedAccount() (gas: 17921)
[PASS] test_pauseSpoke() (gas: 155836)
[PASS] test_pauseSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 18103)
[PASS] test_updateFeeConfig_Scenario() (gas: 323791)
Logs:
  Bound result 0
  Bound result 1800
  Bound result 0
  Bound result 400
  Bound result 0
  Bound result 0

[PASS] test_updateFeeConfig_fuzz(uint256,uint16,address) (runs: 5000, μ: 175058, ~: 174920)
[PASS] test_updateFeeConfig_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 17682, ~: 17683)
[PASS] test_updateFeeConfig_revertsWith_InvalidAddress_spoke() (gas: 48059)
[PASS] test_updateFeeConfig_revertsWith_InvalidLiquidityFee() (gas: 50026)
[PASS] test_updateFeeReceiver_Scenario() (gas: 205028)
[PASS] test_updateFeeReceiver_WithdrawFromOldSpoke() (gas: 974228)
[PASS] test_updateFeeReceiver_correctAccruals() (gas: 998950)
[PASS] test_updateFeeReceiver_fuzz(address) (runs: 5000, μ: 171387, ~: 171406)
[PASS] test_updateFeeReceiver_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 17246, ~: 17247)
[PASS] test_updateFeeReceiver_revertsWith_InvalidAddress_spoke() (gas: 52684)
[PASS] test_updateFeeReceiver_revertsWith_SpokeAlreadyListed() (gas: 74613)
[PASS] test_updateInterestRateData() (gas: 71332)
[PASS] test_updateInterestRateData_revertsWith_OwnableUnauthorizedAccount() (gas: 19152)
[PASS] test_updateInterestRateStrategy() (gas: 90932)
[PASS] test_updateInterestRateStrategy_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 28658, ~: 28659)
[PASS] test_updateInterestRateStrategy_revertsWith_InterestRateStrategyReverts() (gas: 74562)
[PASS] test_updateInterestRateStrategy_revertsWith_InvalidAddress_irStrategy() (gas: 64287)
[PASS] test_updateInterestRateStrategy_revertsWith_InvalidInterestRateStrategy() (gas: 64781)
[PASS] test_updateLiquidityFee_fuzz(uint256,uint16) (runs: 5000, μ: 84128, ~: 83987)
[PASS] test_updateLiquidityFee_revertsWith_InvalidLiquidityFee() (gas: 52671)
[PASS] test_updateLiquidityFee_revertsWith_OwnableUnauthorizedAccount() (gas: 16655)
[PASS] test_updateReinvestmentController() (gas: 98816)
[PASS] test_updateReinvestmentController_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 17248, ~: 17249)
[PASS] test_updateSpokeActive() (gas: 84278)
[PASS] test_updateSpokeActive_revertsWith_OwnableUnauthorizedAccount() (gas: 20285)
[PASS] test_updateSpokeCaps() (gas: 64641)
[PASS] test_updateSpokeCaps_revertsWith_OwnableUnauthorizedAccount() (gas: 20262)
[PASS] test_updateSpokeDrawCap() (gas: 64199)
[PASS] test_updateSpokeDrawCap_revertsWith_OwnableUnauthorizedAccount() (gas: 20223)
[PASS] test_updateSpokePaused() (gas: 87258)
[PASS] test_updateSpokePaused_revertsWith_OwnableUnauthorizedAccount() (gas: 20330)
[PASS] test_updateSpokeRiskPremiumCap() (gas: 64263)
[PASS] test_updateSpokeRiskPremiumCap_revertsWith_OwnableUnauthorizedAccount() (gas: 20236)
[PASS] test_updateSpokeSupplyCap() (gas: 64245)
[PASS] test_updateSpokeSupplyCap_revertsWith_OwnableUnauthorizedAccount() (gas: 20182)
Suite result: ok. 60 passed; 0 failed; 0 skipped; finished in 10.05s (10.03s CPU time)

Ran 2 tests for tests/invariant/HubInvariant.t.sol:HubInvariant
[SKIP] invariant_exchangeRateMonotonicallyIncreasing() (runs: 1, calls: 1, reverts: 1)
[SKIP] invariant_reserveTotalAssets() (runs: 1, calls: 1, reverts: 1)
Suite result: ok. 0 passed; 0 failed; 2 skipped; finished in 4.82ms (604.90µs CPU time)

Ran 9 tests for tests/unit/KeyValueList.t.sol:KeyValueListTest
[PASS] test_add_unique() (gas: 325391)
[PASS] test_fuzz_add(uint256,uint256) (runs: 5000, μ: 200011, ~: 201361)
[PASS] test_fuzz_add_unique(uint256,uint256) (runs: 5000, μ: 234671, ~: 235413)
[PASS] test_fuzz_get(uint256[]) (runs: 5000, μ: 413030, ~: 411058)
[PASS] test_fuzz_get_uninitialized(uint256[]) (runs: 5000, μ: 263153, ~: 252829)
[PASS] test_fuzz_get_uninitialized_sorted(uint256[]) (runs: 5000, μ: 204973, ~: 184967)
[PASS] test_fuzz_sortByKey(uint256[]) (runs: 5000, μ: 463630, ~: 454602)
[PASS] test_fuzz_sortByKey_length(uint256) (runs: 5000, μ: 201174, ~: 203742)
[PASS] test_fuzz_sortByKey_with_collision(uint256[]) (runs: 5000, μ: 547897, ~: 538224)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 74.23s (74.23s CPU time)

Ran 17 tests for tests/unit/Spoke/Spoke.Borrow.HealthFactor.t.sol:SpokeBorrowHealthFactorTest
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_collateral_price_drop(uint256,uint256) (runs: 5000, μ: 891410, ~: 891479)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls(uint256,uint256) (runs: 5000, μ: 849916, ~: 850860)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 893556, ~: 890834)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts(uint256,uint256) (runs: 5000, μ: 1109542, ~: 1109664)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 1170246, ~: 1171647)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_with_interest(uint256,uint256) (runs: 5000, μ: 685689, ~: 686244)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold() (gas: 643175)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_collateral_price_drop_weth() (gas: 885561)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls() (gas: 844460)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_dai() (gas: 1097130)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_weth() (gas: 1097174)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_with_interest() (gas: 894201)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_debts() (gas: 1102708)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_debts_with_interest() (gas: 1164422)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_with_interest() (gas: 681516)
[PASS] test_fuzz_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_dai(uint256,uint256,uint256) (runs: 5000, μ: 1100828, ~: 1101886)
[PASS] test_fuzz_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_weth(uint256,uint256,uint256) (runs: 5000, μ: 1101443, ~: 1101908)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 130.23s (130.21s CPU time)

Ran 3 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.DebtToLiquidate.t.sol:LiquidationLogicDebtToLiquidateTest
[PASS] test_calculateDebtToLiquidate_fuzz((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 30503, ~: 30445)
[PASS] test_calculateDebtToLiquidate_fuzz_AmountAdjustedDueToDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 32242, ~: 32333)
[PASS] test_calculateDebtToLiquidate_fuzz_ImpossibleToAdjustForDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 34394, ~: 34372)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.33s (3.31s CPU time)

Ran 7 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.DebtToTargetHealthFactor.t.sol:LiquidationLogicDebtToTargetHealthFactorTest
[PASS] test_calculateDebtToTargetHealthFactor_HealthFactorEqualsTargetHealthFactor((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 22969, ~: 23027)
[PASS] test_calculateDebtToTargetHealthFactor_NoPrecisionLoss() (gas: 25301)
[PASS] test_calculateDebtToTargetHealthFactor_PrecisionLoss() (gas: 15275)
[PASS] test_calculateDebtToTargetHealthFactor_UnitPrice() (gas: 25234)
[PASS] test_calculateDebtToTargetHealthFactor_fuzz_NoRevert((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 20027, ~: 20085)
[PASS] test_calculateDebtToTargetHealthFactor_fuzz_revertsWith_DivisionByZero_ZeroAssetPrice((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 22726, ~: 22784)
[PASS] test_calculateDebtToTargetHealthFactor_revertsWith_ArithmeticError_TargetHealthFactorLessThanHealthFactor((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 22809, ~: 22867)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 2.73s (2.71s CPU time)

Ran 16 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.EvaluateDeficit.t.sol:LiquidationLogicEvaluateDeficitTest
[PASS] test_evaluateDeficit_CRE_SCCM_DRE_BRCM() (gas: 8970)
[PASS] test_evaluateDeficit_CRE_SCCM_DRE_BRCO() (gas: 8938)
[PASS] test_evaluateDeficit_CRE_SCCM_DRN_BRCM() (gas: 8959)
[PASS] test_evaluateDeficit_CRE_SCCM_DRN_BRCO() (gas: 8926)
[PASS] test_evaluateDeficit_CRE_SCCO_DRE_BRCM() (gas: 8952)
[PASS] test_evaluateDeficit_CRE_SCCO_DRE_BRCO() (gas: 9019)
[PASS] test_evaluateDeficit_CRE_SCCO_DRN_BRCM() (gas: 8984)
[PASS] test_evaluateDeficit_CRE_SCCO_DRN_BRCO() (gas: 8972)
[PASS] test_evaluateDeficit_CRN_SCCM_DRE_BRCM() (gas: 8972)
[PASS] test_evaluateDeficit_CRN_SCCM_DRE_BRCO() (gas: 8961)
[PASS] test_evaluateDeficit_CRN_SCCM_DRN_BRCM() (gas: 8895)
[PASS] test_evaluateDeficit_CRN_SCCM_DRN_BRCO() (gas: 8928)
[PASS] test_evaluateDeficit_CRN_SCCO_DRE_BRCM() (gas: 8905)
[PASS] test_evaluateDeficit_CRN_SCCO_DRE_BRCO() (gas: 8962)
[PASS] test_evaluateDeficit_CRN_SCCO_DRN_BRCM() (gas: 8913)
[PASS] test_evaluateDeficit_CRN_SCCO_DRN_BRCO() (gas: 8991)
Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 25.09ms (965.32µs CPU time)

Ran 3 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidateCollateral.t.sol:LiquidationLogicLiquidateCollateralTest
[PASS] test_liquidateCollateral_fuzz(uint256,uint256) (runs: 5000, μ: 266330, ~: 266809)
[PASS] test_liquidateCollateral_fuzz_revertsWith_ArithmeticUnderflow(uint256,uint256) (runs: 5000, μ: 98385, ~: 98186)
[PASS] test_liquidateCollateral_fuzz_revertsWith_InvalidAmount(uint256) (runs: 5000, μ: 102990, ~: 102910)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.84s (3.82s CPU time)

Ran 4 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidateDebt.t.sol:LiquidationLogicLiquidateDebtTest
[PASS] test_liquidateDebt_fuzz(uint256) (runs: 5000, μ: 186544, ~: 186544)
[PASS] test_liquidateDebt_revertsWith_ArithmeticUnderflow() (gas: 151305)
[PASS] test_liquidateDebt_revertsWith_InsufficientAllowance() (gas: 155423)
[PASS] test_liquidateDebt_revertsWith_InsufficientBalance() (gas: 202482)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.33s (2.32s CPU time)

Ran 4 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidateUser.t.sol:LiquidationLogicLiquidateUserTest
[PASS] test_liquidateUser() (gas: 352360)
[PASS] test_liquidateUser_revertsWith_InvalidDebtToCover() (gas: 74815)
[PASS] test_liquidateUser_revertsWith_MustNotLeaveDust_Collateral() (gas: 108652)
[PASS] test_liquidateUser_revertsWith_MustNotLeaveDust_Debt() (gas: 118013)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 22.85ms (1.34ms CPU time)

Ran 8 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidationAmounts.t.sol:LiquidationLogicLiquidationAmountsTest
[PASS] test_calculateLiquidationAmounts_EnoughCollateral() (gas: 15304)
[PASS] test_calculateLiquidationAmounts_InsufficientCollateral() (gas: 15595)
[PASS] test_calculateLiquidationAmounts_fuzz_EnoughCollateral_CollateralDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 57515, ~: 56990)
[PASS] test_calculateLiquidationAmounts_fuzz_EnoughCollateral_NoCollateralDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 56382, ~: 56455)
[PASS] test_calculateLiquidationAmounts_fuzz_EnoughCollateral_NoDebtLeft((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 74915, ~: 74817)
[PASS] test_calculateLiquidationAmounts_fuzz_InsufficientCollateral((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 60246, ~: 60147)
[PASS] test_calculateLiquidationAmounts_fuzz_revertsWith_MustNotLeaveDust_Collateral((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 56822, ~: 56794)
[PASS] test_calculateLiquidationAmounts_fuzz_revertsWith_MustNotLeaveDust_Debt((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 70355, ~: 70279)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 18.00s (17.99s CPU time)

Ran 4 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidationBonus.t.sol:LiquidationLogicLiquidationBonusTest
[PASS] test_calculateLiquidationBonus_MinBonusDueToRounding() (gas: 9360)
[PASS] test_calculateLiquidationBonus_PartialBonus() (gas: 9381)
[PASS] test_calculateLiquidationBonus_fuzz_ConstantBonus(uint256,uint256,uint256,uint256) (runs: 5000, μ: 17246, ~: 17178)
[PASS] test_calculateLiquidationBonus_fuzz_MaxBonus(uint256,uint256,uint256,uint256) (runs: 5000, μ: 19584, ~: 19506)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 971.05ms (951.41ms CPU time)

Ran 13 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.ValidateLiquidationCall.t.sol:LiquidationLogicValidateLiquidationCallTest
[PASS] test_validateLiquidationCall() (gas: 31018)
[PASS] test_validateLiquidationCall_revertsWith_CannotReceiveShares_CollateralFrozen() (gas: 63008)
[PASS] test_validateLiquidationCall_revertsWith_CollateralCannotBeLiquidated_NotUsingAsCollateral() (gas: 32027)
[PASS] test_validateLiquidationCall_revertsWith_CollateralCannotBeLiquidated_ZeroCollateralFactor() (gas: 32054)
[PASS] test_validateLiquidationCall_revertsWith_HealthFactorNotBelowThreshold() (gas: 36791)
[PASS] test_validateLiquidationCall_revertsWith_InvalidDebtToCover() (gas: 31762)
[PASS] test_validateLiquidationCall_revertsWith_ReserveNotBorrowed() (gas: 32074)
[PASS] test_validateLiquidationCall_revertsWith_ReserveNotListed_ZeroCollateralHub() (gas: 31837)
[PASS] test_validateLiquidationCall_revertsWith_ReserveNotListed_ZeroDebtHub() (gas: 31894)
[PASS] test_validateLiquidationCall_revertsWith_ReserveNotSupplied() (gas: 32041)
[PASS] test_validateLiquidationCall_revertsWith_ReservePaused_CollateralPaused() (gas: 36728)
[PASS] test_validateLiquidationCall_revertsWith_ReservePaused_DebtPaused() (gas: 36811)
[PASS] test_validateLiquidationCall_revertsWith_SelfLiquidation() (gas: 38718)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 18.12ms (1.13ms CPU time)

Ran 26 tests for tests/unit/MathUtils.t.sol:MathUtilsTest
[PASS] test_add_edge_cases() (gas: 4788)
[PASS] test_add_negative_operand(uint256,int256) (runs: 5000, μ: 9323, ~: 9561)
[PASS] test_add_positive_operand(uint256,int256) (runs: 5000, μ: 4013, ~: 4010)
[PASS] test_calculateLinearInterest() (gas: 4511)
[PASS] test_calculateLinearInterest_add_edge() (gas: 5087)
[PASS] test_calculateLinearInterest_edge_cases() (gas: 16870)
Logs:
  Bound result 0
  Bound result 1
  Bound result 864000000
  Bound result 864000000

[PASS] test_calculateLinearInterest_reverts_on_past_timestamp(uint32) (runs: 5000, μ: 7586, ~: 7508)
[PASS] test_constants() (gas: 3211)
[PASS] test_fuzz_calculateLinearInterest(uint96,uint32,uint256) (runs: 5000, μ: 8698, ~: 8997)
[PASS] test_fuzz_mulDivDown(uint256,uint256,uint256) (runs: 5000, μ: 3491, ~: 3545)
[PASS] test_fuzz_mulDivUp(uint256,uint256,uint256) (runs: 5000, μ: 3666, ~: 3781)
[PASS] test_min(uint256,uint256) (runs: 5000, μ: 3338, ~: 3338)
[PASS] test_mulDivDown_NoRemainder() (gas: 3324)
[PASS] test_mulDivDown_RevertOnDivByZero() (gas: 3191)
[PASS] test_mulDivDown_RevertOnOverflow() (gas: 3203)
[PASS] test_mulDivDown_WithRemainder() (gas: 3236)
[PASS] test_mulDivDown_ZeroAOrB() (gas: 3768)
[PASS] test_mulDivUp_NoRemainder() (gas: 3350)
[PASS] test_mulDivUp_RevertOnDivByZero() (gas: 3146)
[PASS] test_mulDivUp_RevertOnOverflow() (gas: 3204)
[PASS] test_mulDivUp_WithRemainder() (gas: 3349)
[PASS] test_mulDivUp_ZeroAOrB() (gas: 3818)
[PASS] test_signedSub(uint256,uint256) (runs: 5000, μ: 8637, ~: 8594)
[PASS] test_uncheckedAdd(uint256,uint256) (runs: 5000, μ: 3460, ~: 3452)
[PASS] test_uncheckedExp(uint256,uint256) (runs: 5000, μ: 11358, ~: 7090)
[PASS] test_uncheckedSub(uint256,uint256) (runs: 5000, μ: 3455, ~: 3374)
Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 1.47s (1.46s CPU time)

Ran 32 tests for tests/unit/misc/NativeTokenGateway.t.sol:NativeTokenGatewayTest
[PASS] test_borrowNative() (gas: 624557)
Logs:
  Bound result 5000000000000000000

[PASS] test_borrowNative_fuzz(uint256) (runs: 5000, μ: 624783, ~: 624586)
[PASS] test_borrowNative_revertsWith_InvalidAmount() (gas: 32814)
[PASS] test_borrowNative_revertsWith_NotNativeWrappedAsset() (gas: 32889)
[PASS] test_borrowNative_revertsWith_SpokeNotRegistered() (gas: 25320)
[PASS] test_constructor() (gas: 1059124)
[PASS] test_constructor_revertsWith_InvalidAddress() (gas: 65422)
[PASS] test_fallback_revertsWith_UnsupportedAction() (gas: 17427)
[PASS] test_receive_revertsWith_UnsupportedAction() (gas: 17212)
[PASS] test_repayNative() (gas: 749688)
Logs:
  Bound result 5000000000000000000

[PASS] test_repayNative_excessAmount() (gas: 640115)
[PASS] test_repayNative_fuzz(uint256) (runs: 5000, μ: 749186, ~: 750323)
[PASS] test_repayNative_fuzz_withInterest(uint256,uint256) (runs: 5000, μ: 650544, ~: 644913)
[PASS] test_repayNative_revertsWith_InvalidAmount() (gas: 33177)
[PASS] test_repayNative_revertsWith_NativeAmountMismatch() (gas: 30659)
[PASS] test_repayNative_revertsWith_NotNativeWrappedAsset() (gas: 39866)
[PASS] test_repayNative_revertsWith_SpokeNotRegistered() (gas: 39286)
[PASS] test_supplyAndCollateralNative() (gas: 274570)
Logs:
  Bound result 100000000000000000000

[PASS] test_supplyAndCollateralNative_fuzz(uint256) (runs: 5000, μ: 274782, ~: 274509)
[PASS] test_supplyNative() (gas: 246786)
Logs:
  Bound result 100000000000000000000

[PASS] test_supplyNative_fuzz(uint256) (runs: 5000, μ: 247131, ~: 246858)
[PASS] test_supplyNative_revertsWith_InvalidAmount() (gas: 33142)
[PASS] test_supplyNative_revertsWith_NativeAmountMismatch() (gas: 30390)
[PASS] test_supplyNative_revertsWith_NotNativeWrappedAsset() (gas: 39829)
[PASS] test_supplyNative_revertsWith_SpokeNotRegistered() (gas: 39197)
[PASS] test_withdrawNative() (gas: 274319)
Logs:
  Bound result 100000000000000000000

[PASS] test_withdrawNative_fuzz(uint256) (runs: 5000, μ: 274302, ~: 274369)
[PASS] test_withdrawNative_fuzz_allBalance(uint256) (runs: 5000, μ: 227012, ~: 226817)
[PASS] test_withdrawNative_fuzz_allBalanceWithInterest(uint256,uint256) (runs: 5000, μ: 604812, ~: 605911)
[PASS] test_withdrawNative_revertsWith_InvalidAmount() (gas: 32900)
[PASS] test_withdrawNative_revertsWith_NotNativeWrappedAsset() (gas: 32844)
[PASS] test_withdrawNative_revertsWith_SpokeNotRegistered() (gas: 25408)
Suite result: ok. 32 passed; 0 failed; 0 skipped; finished in 64.34s (64.33s CPU time)

Ran 4 tests for tests/unit/NoncesKeyed.t.sol:NoncesKeyedTest
[PASS] test_useCheckedNonce_monotonic(bytes32) (runs: 5000, μ: 16229, ~: 16229)
[PASS] test_useCheckedNonce_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 107533, ~: 107533)
[PASS] test_useNonce_monotonic(bytes32) (runs: 5000, μ: 17035, ~: 17035)
[PASS] test_useNonce_zeroKey_monotonic(bytes32) (runs: 5000, μ: 16983, ~: 16983)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.61s (4.61s CPU time)

Ran 10 tests for tests/unit/PercentageMath.t.sol:PercentageMathTests
[PASS] test_constants() (gas: 8664)
[PASS] test_fromBpsDown() (gas: 9678)
[PASS] test_percentDiv() (gas: 15222)
[PASS] test_percentDivUp_ge_value(uint256,uint256) (runs: 5000, μ: 15286, ~: 15509)
[PASS] test_percentDivUp_le_value(uint256,uint256) (runs: 5000, μ: 15668, ~: 15662)
[PASS] test_percentDiv_fuzz(uint256,uint256) (runs: 5000, μ: 12885, ~: 13012)
[PASS] test_percentMul() (gas: 15116)
[PASS] test_percentMulUp_ge_value(uint256,uint256) (runs: 5000, μ: 15651, ~: 15645)
[PASS] test_percentMulUp_le_value(uint256,uint256) (runs: 5000, μ: 15289, ~: 15512)
[PASS] test_percentMul_fuzz(uint256,uint256) (runs: 5000, μ: 11767, ~: 12247)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 1.44s (1.44s CPU time)

Ran 6 tests for tests/unit/Spoke/Spoke.Borrow.Scenario.t.sol:SpokeBorrowScenarioTest
[PASS] test_borrow_fuzz_multi_spoke_multi_reserves(uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 2173308, ~: 2183395)
[PASS] test_borrow_fuzz_single_spoke_multi_reserves(uint256,uint256,uint256,uint256) (runs: 5000, μ: 2320923, ~: 2329739)
[PASS] test_borrow_fuzz_single_spoke_multi_reserves_multi_user(uint256,uint256,uint256,uint256) (runs: 5000, μ: 2724148, ~: 2732395)
[PASS] test_borrow_fuzz_skip_borrow(uint256,uint256,uint256) (runs: 5000, μ: 1077789, ~: 1080103)
[PASS] test_borrow_skip_borrow() (gas: 1079288)
Logs:
  Bound result 10000000000000000000
  Bound result 20000000000000000000
  Bound result 31536000

[PASS] test_userAccountData_does_not_include_zero_cf_collateral() (gas: 1153479)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 177.50s (177.48s CPU time)

Ran 14 tests for tests/unit/Spoke/Spoke.Borrow.Validation.t.sol:SpokeBorrowValidationTest
[PASS] test_borrow_fuzz_revertsWith_DrawCapExceeded(uint256,uint40) (runs: 5000, μ: 108006, ~: 108030)
[PASS] test_borrow_fuzz_revertsWith_DrawCapExceeded_due_to_interest(uint256) (runs: 5000, μ: 694605, ~: 694890)
[PASS] test_borrow_fuzz_revertsWith_InsufficientLiquidity(uint256,uint256) (runs: 5000, μ: 279313, ~: 279089)
[PASS] test_borrow_fuzz_revertsWith_InvalidAmount(uint256) (runs: 5000, μ: 32641, ~: 32697)
[PASS] test_borrow_fuzz_revertsWith_ReserveFrozen(uint256,uint256) (runs: 5000, μ: 69403, ~: 69200)
[PASS] test_borrow_fuzz_revertsWith_ReserveNotBorrowable(uint256,uint256) (runs: 5000, μ: 69616, ~: 69413)
[PASS] test_borrow_fuzz_revertsWith_ReserveNotListed(uint256,uint256) (runs: 5000, μ: 26063, ~: 25806)
[PASS] test_borrow_fuzz_revertsWith_ReservePaused(uint256,uint256) (runs: 5000, μ: 69238, ~: 69035)
[PASS] test_borrow_revertsWith_InsufficientLiquidity() (gas: 278956)
Logs:
  Bound result 10000000000000000000

[PASS] test_borrow_revertsWith_InvalidAmount() (gas: 34330)
Logs:
  Bound result 2

[PASS] test_borrow_revertsWith_ReserveFrozen() (gas: 70806)
Logs:
  Bound result 2
  Bound result 1

[PASS] test_borrow_revertsWith_ReserveNotBorrowable() (gas: 70995)
Logs:
  Bound result 2
  Bound result 1

[PASS] test_borrow_revertsWith_ReserveNotListed() (gas: 27068)
Logs:
  Bound result 1

[PASS] test_borrow_revertsWith_ReservePaused() (gas: 70683)
Logs:
  Bound result 2
  Bound result 1

Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 14.72s (14.70s CPU time)

Ran 29 tests for tests/unit/libraries/PositionStatusMap.t.sol:PositionStatusMapTest
[PASS] test_bucketId() (gas: 8971)
[PASS] test_collateralCount() (gas: 110158)
[PASS] test_collateralCount(uint256) (runs: 5000, μ: 2073702, ~: 1895419)
[PASS] test_collateralCount_ignoresInvalidBits() (gas: 124482)
[PASS] test_constants() (gas: 44966)
[PASS] test_fls() (gas: 545261)
[PASS] test_fromBitId(uint256,uint256) (runs: 5000, μ: 14105, ~: 14336)
[PASS] test_fuzz_setBorrowing(uint256,bool) (runs: 5000, μ: 22353, ~: 32140)
[PASS] test_fuzz_setUseAsCollateral(uint256,bool) (runs: 5000, μ: 22449, ~: 32236)
[PASS] test_getBucketWord(uint256) (runs: 5000, μ: 14489, ~: 14489)
[PASS] test_isUsingAsCollateralOrBorrowing_slot0() (gas: 108801)
[PASS] test_isUsingAsCollateralOrBorrowing_slot1() (gas: 44065)
[PASS] test_isolateBorrowing(uint256) (runs: 5000, μ: 162282, ~: 162282)
[PASS] test_isolateBorrowingUntil(uint256,uint256) (runs: 5000, μ: 154820, ~: 154843)
[PASS] test_isolateCollateral(uint256) (runs: 5000, μ: 162044, ~: 162044)
[PASS] test_isolateCollateralUntil(uint256,uint256) (runs: 5000, μ: 154799, ~: 154822)
[PASS] test_isolateUntil(uint256,uint256) (runs: 5000, μ: 143622, ~: 143623)
[PASS] test_next(uint256) (runs: 5000, μ: 20432, ~: 20328)
[PASS] test_nextBorrowing(uint256) (runs: 5000, μ: 18216, ~: 18289)
[PASS] test_nextBorrowing_continuous() (gas: 63845326)
[PASS] test_nextCollateral(uint256) (runs: 5000, μ: 18117, ~: 17716)
[PASS] test_nextCollateral_continuous() (gas: 64381718)
[PASS] test_next_continuous() (gas: 91795620)
[PASS] test_popCount(bytes32) (runs: 5000, μ: 38133, ~: 38133)
[PASS] test_setBorrowing_slot0() (gas: 44129)
[PASS] test_setBorrowing_slot1() (gas: 44166)
[PASS] test_setUseAsCollateral_slot0() (gas: 44203)
[PASS] test_setUseAsCollateral_slot1() (gas: 44185)
[PASS] test_setters_use_correct_slot(uint256) (runs: 5000, μ: 22195, ~: 22195)
Suite result: ok. 29 passed; 0 failed; 0 skipped; finished in 101.58s (101.58s CPU time)

Ran 5 tests for tests/unit/Rescuable.t.sol:RescuableTest
[PASS] test_constructor() (gas: 12654)
[PASS] test_rescueNative_fuzz(uint256) (runs: 5000, μ: 33693, ~: 33370)
[PASS] test_rescueNative_revertsWith_OnlyRescueGuardian() (gas: 11400)
[PASS] test_rescueToken_fuzz(uint256) (runs: 5000, μ: 209619, ~: 209387)
[PASS] test_rescueToken_revertsWith_OnlyRescueGuardian() (gas: 183212)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 3.37s (3.35s CPU time)

Ran 10 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Constants.t.sol:SignatureGatewayConstantsTest
[PASS] test_DOMAIN_SEPARATOR() (gas: 2102520)
[PASS] test_borrow_typeHash() (gas: 9874)
[PASS] test_constructor() (gas: 53857)
[PASS] test_eip712Domain() (gas: 2108085)
[PASS] test_repay_typeHash() (gas: 9975)
[PASS] test_setUsingAsCollateral_typeHash() (gas: 9943)
[PASS] test_supply_typeHash() (gas: 9945)
[PASS] test_updateUserDynamicConfig_typeHash() (gas: 10045)
[PASS] test_updateUserRiskPremium_typeHash() (gas: 9876)
[PASS] test_withdraw_typeHash() (gas: 9919)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 18.80ms (1.94ms CPU time)

Ran 5 tests for tests/unit/misc/SignatureGateway/SignatureGateway.PermitReserve.t.sol:SignatureGatewayPermitReserveTest
[PASS] test_permitReserve() (gas: 104990)
[PASS] test_permitReserve_forwards_correct_call() (gas: 52113)
[PASS] test_permitReserve_ignores_permit_reverts() (gas: 40969)
[PASS] test_permitReserve_revertsWith_ReserveNotListed() (gas: 30890)
[PASS] test_permitReserve_revertsWith_SpokeNotRegistered() (gas: 29451)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 18.96ms (1.41ms CPU time)

Ran 2 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.InsufficientAllowance.t.sol:SignatureGateway_InsufficientAllowance_Test
[PASS] test_repayWithSig_revertsWith_TransferFromFailed_on_InsufficientAllowance() (gas: 464303)
[PASS] test_supplyWithSig_revertsWith_TransferFromFailed_on_InsufficientAllowance() (gas: 84603)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 19.00ms (1.79ms CPU time)

Ran 2 tests for tests/unit/Spoke/Spoke.Borrow.t.sol:SpokeBorrowTest
[PASS] test_borrow() (gas: 1066455)
[PASS] test_borrow_fuzz_amounts(uint256,uint256) (runs: 5000, μ: 1058523, ~: 1058570)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 26.43s (26.41s CPU time)

Ran 24 tests for tests/unit/Spoke/Spoke.Config.t.sol:SpokeConfigTest
[PASS] test_addReserve() (gas: 390148)
[PASS] test_addReserve_fuzz_revertsWith_AssetNotListed() (gas: 245588)
[PASS] test_addReserve_revertsWith_InvalidAddress_hub() (gas: 5973962)
[PASS] test_addReserve_revertsWith_InvalidAddress_oracle() (gas: 6011020)
[PASS] test_addReserve_revertsWith_InvalidAssetId() (gas: 33171)
[PASS] test_addReserve_revertsWith_ReserveExists() (gas: 374701)
[PASS] test_spoke_deploy() (gas: 4908141)
[PASS] test_spoke_deploy_revertsWith_InvalidOracleDecimals() (gas: 46391)
[PASS] test_spoke_deploy_reverts_on_InvalidConstructorInput() (gas: 43792)
[PASS] test_updateLiquidationConfig_fuzz_liqBonusConfig((uint128,uint64,uint16)) (runs: 5000, μ: 52156, ~: 52143)
[PASS] test_updateLiquidationConfig_fuzz_revertsWith_InvalidLiquidationConfig_healthFactorForMaxBonus((uint128,uint64,uint16)) (runs: 5000, μ: 37816, ~: 37949)
[PASS] test_updateLiquidationConfig_fuzz_revertsWith_InvalidLiquidationConfig_liquidationBonusFactor((uint128,uint64,uint16)) (runs: 5000, μ: 37376, ~: 37159)
[PASS] test_updateLiquidationConfig_fuzz_targetHealthFactor(uint128) (runs: 5000, μ: 46860, ~: 47159)
[PASS] test_updateLiquidationConfig_liqBonusConfig() (gas: 51102)
Logs:
  Bound result 900000000000000000
  Bound result 1000
  Bound result 1000000000000000000

[PASS] test_updateLiquidationConfig_revertsWith_InvalidLiquidationConfig_healthFactorForMaxBonus() (gas: 36462)
Logs:
  Bound result 1000000000000000000
  Bound result 1000
  Bound result 1000000000000000000

[PASS] test_updateLiquidationConfig_revertsWith_InvalidLiquidationConfig_liquidationBonusFactor() (gas: 36256)
Logs:
  Bound result 900000000000000000
  Bound result 10001
  Bound result 1000000000000000000

[PASS] test_updateLiquidationConfig_targetHealthFactor() (gas: 46442)
Logs:
  Bound result 1000000000000000001

[PASS] test_updateReserveConfig() (gas: 53882)
[PASS] test_updateReserveConfig_fuzz((bool,bool,bool,uint24)) (runs: 5000, μ: 55296, ~: 55127)
[PASS] test_updateReserveConfig_revertsWith_InvalidCollateralRisk() (gas: 39603)
[PASS] test_updateReserveConfig_revertsWith_ReserveNotListed() (gas: 36252)
[PASS] test_updateReservePriceSource() (gas: 240092)
[PASS] test_updateReservePriceSource_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 31102, ~: 31103)
[PASS] test_updateReservePriceSource_revertsWith_ReserveNotListed() (gas: 34277)
Suite result: ok. 24 passed; 0 failed; 0 skipped; finished in 3.89s (3.87s CPU time)

Ran 10 tests for tests/unit/Spoke/Spoke.DynamicConfig.Triggers.t.sol:SpokeDynamicConfigTriggersTest
[PASS] test_borrow_triggers_dynamicConfigUpdate() (gas: 1323742)
[PASS] test_liquidate_does_not_trigger_dynamicConfigUpdate() (gas: 1601391)
[PASS] test_repay_does_not_trigger_dynamicConfigUpdate() (gas: 909452)
[PASS] test_supply_does_not_trigger_dynamicConfigUpdate() (gas: 1067113)
[PASS] test_updateUserDynamicConfig_doesHFCheck() (gas: 798835)
[PASS] test_updateUserDynamicConfig_reverts_when_not_authorized(address) (runs: 5000, μ: 1191609, ~: 1191610)
[PASS] test_updateUserDynamicConfig_triggers_dynamicConfigUpdate() (gas: 675164)
[PASS] test_updateUserDynamicConfig_updatesRP() (gas: 1290262)
[PASS] test_usingAsCollateral_triggers_dynamicConfigUpdate() (gas: 1340651)
[PASS] test_withdraw_triggers_dynamicConfigUpdate() (gas: 1352161)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 27.33s (27.31s CPU time)

Ran 21 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.InvalidSignature.t.sol:SignatureGatewayInvalidSignatureTest
[PASS] test_borrowWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 190113, ~: 190113)
[PASS] test_borrowWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 38516)
[PASS] test_borrowWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 36958)
[PASS] test_repayWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 190069, ~: 190069)
[PASS] test_repayWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 38449)
[PASS] test_repayWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37024)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 233692, ~: 233692)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 38477)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37073)
[PASS] test_supplyWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 190132, ~: 190132)
[PASS] test_supplyWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 38494)
[PASS] test_supplyWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 36989)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 67897, ~: 67897)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidSignatureDueTo_InvalidSigner() (gas: 25626)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 27058)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 67940, ~: 67940)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidSignatureDueTo_InvalidSigner() (gas: 25631)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 27146)
[PASS] test_withdrawWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 190066, ~: 190066)
[PASS] test_withdrawWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 38536)
[PASS] test_withdrawWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37022)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 43.96s (43.94s CPU time)

Ran 7 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.SpokeNotRegistered.t.sol:SignatureGateway_SpokeNotRegistered_Test
[PASS] test_borrowWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13902, ~: 13902)
[PASS] test_repayWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13902, ~: 13902)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_SpokeNotRegistered((address,uint256,bool,address,uint256,uint256)) (runs: 5000, μ: 13903, ~: 13903)
[PASS] test_supplyWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13900, ~: 13900)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_SpokeNotRegistered((address,address,uint256,uint256)) (runs: 5000, μ: 14114, ~: 14114)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_SpokeNotRegistered((address,address,uint256,uint256)) (runs: 5000, μ: 14114, ~: 14114)
[PASS] test_withdrawWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13967, ~: 13967)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 7.13s (7.11s CPU time)

Ran 7 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.Unauthorized.t.sol:SignatureGateway_Unauthorized_PositionManagerActive_Test
[PASS] test_borrowWithSig_revertsWith_Unauthorized() (gas: 80480)
[PASS] test_repayWithSig_revertsWith_Unauthorized() (gas: 116465)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_Unauthorized() (gas: 73090)
[PASS] test_supplyWithSig_revertsWith_Unauthorized() (gas: 140887)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_Unauthorized() (gas: 82686)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_Unauthorized() (gas: 82561)
[PASS] test_withdrawWithSig_revertsWith_Unauthorized() (gas: 80603)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 21.78ms (4.13ms CPU time)

Ran 7 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.Unauthorized.t.sol:SignatureGateway_Unauthorized_PositionManagerNotActive_Test
[PASS] test_borrowWithSig_revertsWith_Unauthorized() (gas: 78279)
[PASS] test_repayWithSig_revertsWith_Unauthorized() (gas: 114264)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_Unauthorized() (gas: 70889)
[PASS] test_supplyWithSig_revertsWith_Unauthorized() (gas: 138686)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_Unauthorized() (gas: 80485)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_Unauthorized() (gas: 80360)
[PASS] test_withdrawWithSig_revertsWith_Unauthorized() (gas: 78402)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 21.61ms (4.06ms CPU time)

Ran 11 tests for tests/unit/misc/SignatureGateway/SignatureGateway.t.sol:SignatureGatewayTest
[PASS] test_borrowWithSig() (gas: 818038)
[PASS] test_renouncePositionManagerRole() (gas: 26829)
[PASS] test_renouncePositionManagerRole_revertsWith_OnlyOwner() (gas: 18352)
[PASS] test_repayWithSig() (gas: 795695)
[PASS] test_setSelfAsUserPositionManagerWithSig() (gas: 311213)
[PASS] test_setUsingAsCollateralWithSig() (gas: 621241)
[PASS] test_supplyWithSig() (gas: 593427)
[PASS] test_updateUserDynamicConfigWithSig() (gas: 324069)
[PASS] test_updateUserRiskPremiumWithSig() (gas: 908572)
[PASS] test_useNonce_monotonic(bytes32) (runs: 5000, μ: 16886, ~: 16886)
[PASS] test_withdrawWithSig() (gas: 591764)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 452.62ms (435.01ms CPU time)

Ran 3 tests for tests/unit/Spoke/Spoke.Access.t.sol:SpokeAccessTest
[PASS] testAccess_change_authority() (gas: 2612612)
[PASS] testAccess_hub_functions_callable_by_spokes() (gas: 598376)
[PASS] testAccess_spoke_admin_config_access() (gas: 490316)
Suite result:...*[Comment body truncated]*

@aave aave deleted a comment from github-actions bot Oct 14, 2025
@aave aave deleted a comment from github-actions bot Oct 14, 2025
@aave aave deleted a comment from github-actions bot Oct 14, 2025
certora-run[bot]

This comment was marked as outdated.

Copy link

@certora-run certora-run bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification Results

  • Group ID: 999416bb-6baf-4199-b221-ee675ed4357b
Job Result VERIFIED Link
libs/SharesMath.conf 10 Link
libs/Math.conf 9 Link
libs/LibBit.conf 5 Link
HubValidState.conf 14 Link
HubIntegrity.conf 5 Link
Hub.conf 3 Link
HubAdditivity.conf 13 Link
HubAccrueUnrealizedFee.conf 3 Link
HubAccrueIntegrity.conf 7 Link

Copy link

@certora-run certora-run bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification Results

  • Group ID: 55be0622-1938-43f9-a32b-c26261a1eafe
Job Result VERIFIED Link
libs/SharesMath.conf 10 Link
libs/Math.conf 9 Link
libs/LibBit.conf 5 Link
HubValidState.conf 14 Link
HubIntegrity.conf 5 Link
Hub.conf 3 Link
HubAdditivity.conf 13 Link
HubAccrueUnrealizedFee.conf 3 Link
HubAccrueIntegrity.conf 7 Link

Copy link

@certora-run certora-run bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification Results

  • Group ID: dc196941-21cf-4106-bd6e-eb757d39ad9e
Job Result VERIFIED Link
libs/SharesMath.conf 10 Link
libs/Math.conf 9 Link
libs/LibBit.conf 5 Link
HubValidState.conf 14 Link
HubIntegrity.conf 5 Link
Hub.conf 3 Link
HubAdditivity.conf 13 Link
HubAccrueUnrealizedFee.conf 3 Link
HubAccrueIntegrity.conf 7 Link

@github-actions
Copy link

Certora Run Started (Verified Rules)

  • Group ID: 6a50fccf-1112-4dd0-bff5-af6ed6c1ce60
Config Status Link Log File
Hub.conf Compiled - certora/conf/Hub.conf-e59ba03c1ccf.log
HubAccrueIntegrity.conf Failed (1) - certora/conf/HubAccrueIntegrity.conf-4cc904895d78.log
HubAccrueUnrealizedFee.conf Compiled - certora/conf/HubAccrueUnrealizedFee.conf-114dcd43b028.log
HubAdditivity.conf Compiled - certora/conf/HubAdditivity.conf-2ebf051a0ae2.log
HubIntegrity.conf Compiled - certora/conf/HubIntegrity.conf-e966cb9975cc.log
HubValidState.conf Compiled - certora/conf/HubValidState.conf-151ebdf30553.log
libs/LibBit.conf Compiled - certora/conf/libs/LibBit.conf-cad8415108d1.log
libs/Math.conf Compiled - certora/conf/libs/Math.conf-879f228ae159.log
libs/SharesMath.conf Compiled - certora/conf/libs/SharesMath.conf-d67f6cb37ec7.log

Certora Run Summary

  • Started 0 jobs
  • 1 jobs failed

Download Logs

Copy link

@certora-run certora-run bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification Results

  • Group ID: 4ba9c9ef-1705-45c2-b0cd-8aad06c2b161
Job Result TIMEOUT VERIFIED Link
libs/SharesMath.conf 0 10 Link
libs/Math.conf 0 9 Link
libs/LibBit.conf 0 5 Link
HubValidState.conf 1 13 Link
HubIntegrity.conf 0 5 Link
Hub.conf 0 3 Link
HubAdditivity.conf 0 13 Link
HubAccrueUnrealizedFee.conf 0 3 Link
HubAccrueIntegrity.conf 0 7 Link

Copy link

@certora-run certora-run bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification Results

  • Group ID: d97f913a-b980-4644-8730-6c7ddf41c31c
Job Result VERIFIED VIOLATED Link
libs/SharesMath.conf 10 0 Link
libs/Math.conf 9 0 Link
libs/LibBit.conf 5 0 Link
HubValidState.conf 3 11 Link
HubIntegrity.conf 2 3 Link
Hub.conf 2 1 Link
HubAdditivity.conf 11 2 Link
HubAccrueUnrealizedFee.conf 3 0 Link
HubAccrueIntegrity.conf 6 1 Link

Copy link

@certora-run certora-run bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification Results

  • Group ID: 17443a10-41dc-40e1-a83d-3c541d358af6
Job Result VERIFIED VIOLATED Link
libs/SharesMath.conf 10 0 Link
libs/Math.conf 9 0 Link
libs/LibBit.conf 5 0 Link
HubValidState.conf 3 11 Link
HubIntegrity.conf 2 3 Link
Hub.conf 2 1 Link
HubAdditivity.conf 11 2 Link
HubAccrueUnrealizedFee.conf 3 0 Link
HubAccrueIntegrity.conf 6 1 Link

Copy link

@certora-run certora-run bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification Results

  • Group ID: c61f31fb-0cc8-45e8-8352-2fa5e4f70d8a
Job Result TIMEOUT VERIFIED VIOLATED Link
libs/SharesMath.conf 0 10 0 Link
libs/Math.conf 0 9 0 Link
libs/LibBit.conf 0 5 0 Link
HubValidState.conf 1 13 0 Link
HubIntegrity.conf 0 5 0 Link
Hub.conf 0 3 0 Link
HubAdditivity.conf 0 13 0 Link
HubAccrueUnrealizedFee.conf 0 3 0 Link
HubAccrueIntegrity.conf 0 6 1 Link

Copy link

@certora-run certora-run bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification Results

  • Group ID: 740c25bb-7923-4dad-a21a-80c3c553a2d0
Job Result VERIFIED Link
libs/SharesMath.conf 10 Link
libs/Math.conf 9 Link
libs/LibBit.conf 5 Link
HubValidState.conf 14 Link
HubIntegrity.conf 5 Link
Hub.conf 3 Link
HubAdditivity.conf 13 Link
HubAccrueUnrealizedFee.conf 3 Link
HubAccrueIntegrity.conf 7 Link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants