diff --git a/contracts/gas-snapshots/ccip.gas-snapshot b/contracts/gas-snapshots/ccip.gas-snapshot index f1f2fa2fe08..cf28cd8d896 100644 --- a/contracts/gas-snapshots/ccip.gas-snapshot +++ b/contracts/gas-snapshots/ccip.gas-snapshot @@ -1,416 +1,419 @@ -ARMProxy_constructor:test_Constructor() (gas: 302031) -ARMProxy_isCursed:test_IsCursed_GlobalCurseSubject() (gas: 89809) -ARMProxy_setARM:test_SetARM() (gas: 16599) -ARMProxy_setARM:test_SetARMzero() (gas: 11275) -BurnFromMintTokenPool_lockOrBurn:test_PoolBurn() (gas: 238950) -BurnFromMintTokenPool_lockOrBurn:test_setup() (gas: 24178) -BurnMintTokenPool_lockOrBurn:test_PoolBurn() (gas: 236872) -BurnMintTokenPool_lockOrBurn:test_Setup() (gas: 17819) -BurnMintTokenPool_releaseOrMint:test_PoolMint() (gas: 102527) -BurnMintWithLockReleaseFlagTokenPool_lockOrBurn:test_LockOrBurn_CorrectReturnData() (gas: 237292) -BurnToAddressMintTokenPool_lockOrBurn:test_LockOrBurn() (gas: 244533) -BurnToAddressMintTokenPool_releaseOrMint:test_releaseOrMint() (gas: 109873) -BurnWithFromMintTokenPool_lockOrBurn:test_PoolBurn() (gas: 239012) -BurnWithFromMintTokenPool_lockOrBurn:test_Setup() (gas: 24169) -CCIPClientExample_sanity:test_ImmutableExamples() (gas: 2072849) -CCIPHome__validateConfig:test__validateConfig() (gas: 300016) -CCIPHome__validateConfig:test__validateConfigLessTransmittersThanSigners() (gas: 332965) -CCIPHome__validateConfig:test__validateConfigSmallerFChain() (gas: 459322) -CCIPHome_applyChainConfigUpdates:test_applyChainConfigUpdates_addChainConfigs() (gas: 350127) -CCIPHome_applyChainConfigUpdates:test_applyChainConfigUpdates_removeChainConfigs() (gas: 282241) -CCIPHome_applyChainConfigUpdates:test_getPaginatedCCIPHomes() (gas: 373692) -CCIPHome_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet() (gas: 1455733) -CCIPHome_constructor:test_constructor() (gas: 3547489) -CCIPHome_getAllConfigs:test_getAllConfigs() (gas: 2772793) -CCIPHome_getCapabilityConfiguration:test_getCapabilityConfiguration() (gas: 9073) -CCIPHome_getConfigDigests:test_getConfigDigests() (gas: 2547587) -CCIPHome_promoteCandidateAndRevokeActive:test_promoteCandidateAndRevokeActive_multiplePlugins() (gas: 5113791) -CCIPHome_revokeCandidate:test_revokeCandidate() (gas: 30647) -CCIPHome_setCandidate:test_setCandidate() (gas: 1365392) -CCIPHome_supportsInterface:test_supportsInterface() (gas: 9885) -DefensiveExampleTest:test_HappyPath() (gas: 200517) -DefensiveExampleTest:test_Recovery() (gas: 424996) -E2E:test_E2E_3MessagesMMultiOffRampSuccess_gas() (gas: 1490237) -ERC165CheckerReverting_supportsInterfaceReverting:test__supportsInterfaceReverting() (gas: 10445) -EtherSenderReceiverTest_ccipReceive:test_ccipReceive_fallbackToWethTransfer() (gas: 96964) -EtherSenderReceiverTest_ccipReceive:test_ccipReceive_happyPath() (gas: 49797) -EtherSenderReceiverTest_ccipReceive:test_ccipReceive_wrongToken() (gas: 17460) -EtherSenderReceiverTest_ccipReceive:test_ccipReceive_wrongTokenAmount() (gas: 15748) -EtherSenderReceiverTest_ccipSend:test_ccipSend_feeToken() (gas: 145087) -EtherSenderReceiverTest_ccipSend:test_ccipSend_native() (gas: 80451) -EtherSenderReceiverTest_ccipSend:test_ccipSend_nativeExcess() (gas: 80616) -EtherSenderReceiverTest_ccipSend:test_ccipSend_weth() (gas: 96167) -EtherSenderReceiverTest_constructor:test_constructor() (gas: 17582) -EtherSenderReceiverTest_getFee:test_getFee() (gas: 27482) -EtherSenderReceiverTest_validateFeeToken:test_validateFeeToken_valid_feeToken() (gas: 16700) -EtherSenderReceiverTest_validateFeeToken:test_validateFeeToken_valid_native() (gas: 16611) -EtherSenderReceiverTest_validatedMessage:test_validatedMessage_dataOverwrittenToMsgSender() (gas: 25455) -EtherSenderReceiverTest_validatedMessage:test_validatedMessage_emptyDataOverwrittenToMsgSender() (gas: 25372) -EtherSenderReceiverTest_validatedMessage:test_validatedMessage_invalidTokenAmounts() (gas: 17955) -EtherSenderReceiverTest_validatedMessage:test_validatedMessage_tokenOverwrittenToWeth() (gas: 25327) -EtherSenderReceiverTest_validatedMessage:test_validatedMessage_validMessage_extraArgs() (gas: 26347) -FactoryBurnMintERC20_approve:test_Approve() (gas: 55786) -FactoryBurnMintERC20_burn:test_BasicBurn() (gas: 172448) -FactoryBurnMintERC20_burnFrom:test_BurnFrom() (gas: 58290) -FactoryBurnMintERC20_burnFromAlias:test_BurnFrom() (gas: 58264) -FactoryBurnMintERC20_constructor:test_Constructor() (gas: 1450297) -FactoryBurnMintERC20_decreaseApproval:test_DecreaseApproval() (gas: 31420) -FactoryBurnMintERC20_getCCIPAdmin:test_getCCIPAdmin() (gas: 12740) -FactoryBurnMintERC20_getCCIPAdmin:test_setCCIPAdmin() (gas: 23852) -FactoryBurnMintERC20_grantMintAndBurnRoles:test_GrantMintAndBurnRoles() (gas: 121216) -FactoryBurnMintERC20_grantRole:test_GrantBurnAccess() (gas: 53386) -FactoryBurnMintERC20_grantRole:test_GrantMany() (gas: 961708) -FactoryBurnMintERC20_grantRole:test_GrantMintAccess() (gas: 94181) -FactoryBurnMintERC20_increaseApproval:test_IncreaseApproval() (gas: 44421) -FactoryBurnMintERC20_mint:test_BasicMint() (gas: 149826) -FactoryBurnMintERC20_supportsInterface:test_SupportsInterface() (gas: 11539) -FactoryBurnMintERC20_transfer:test_Transfer() (gas: 42505) -FeeQuoter_applyDestChainConfigUpdates:test_applyDestChainConfigUpdates() (gas: 141541) -FeeQuoter_applyDestChainConfigUpdates:test_applyDestChainConfigUpdatesZeroInput() (gas: 12536) -FeeQuoter_applyFeeTokensUpdates:test_ApplyFeeTokensUpdates() (gas: 162691) -FeeQuoter_applyPremiumMultiplierWeiPerEthUpdates:test_applyPremiumMultiplierWeiPerEthUpdatesMultipleTokens() (gas: 54793) -FeeQuoter_applyPremiumMultiplierWeiPerEthUpdates:test_applyPremiumMultiplierWeiPerEthUpdatesSingleToken() (gas: 45276) -FeeQuoter_applyPremiumMultiplierWeiPerEthUpdates:test_applyPremiumMultiplierWeiPerEthUpdatesZeroInput() (gas: 12380) -FeeQuoter_applyTokenTransferFeeConfigUpdates:test_ApplyTokenTransferFeeConfig() (gas: 88736) -FeeQuoter_applyTokenTransferFeeConfigUpdates:test_ApplyTokenTransferFeeZeroInput() (gas: 13218) -FeeQuoter_constructor:test_Setup() (gas: 5039899) -FeeQuoter_convertTokenAmount:test_ConvertTokenAmount() (gas: 68417) -FeeQuoter_getDataAvailabilityCost:test_EmptyMessageCalculatesDataAvailabilityCost() (gas: 96377) -FeeQuoter_getDataAvailabilityCost:test_SimpleMessageCalculatesDataAvailabilityCost() (gas: 21075) -FeeQuoter_getDataAvailabilityCost:test_SimpleMessageCalculatesDataAvailabilityCostUnsupportedDestChainSelector() (gas: 14836) -FeeQuoter_getTokenAndGasPrices:test_GetFeeTokenAndGasPrices() (gas: 73123) -FeeQuoter_getTokenAndGasPrices:test_StalenessCheckDisabled() (gas: 111926) -FeeQuoter_getTokenAndGasPrices:test_ZeroGasPrice() (gas: 109013) -FeeQuoter_getTokenPrice:test_GetTokenPriceFromFeed() (gas: 68180) -FeeQuoter_getTokenPrice:test_GetTokenPrice_LocalMoreRecent() (gas: 33568) -FeeQuoter_getTokenPrices:test_GetTokenPrices() (gas: 78534) -FeeQuoter_getTokenTransferCost:test_CustomTokenBpsFee() (gas: 37322) -FeeQuoter_getTokenTransferCost:test_FeeTokenBpsFee() (gas: 35101) -FeeQuoter_getTokenTransferCost:test_LargeTokenTransferChargesMaxFeeAndGas() (gas: 28149) -FeeQuoter_getTokenTransferCost:test_MixedTokenTransferFee() (gas: 96077) -FeeQuoter_getTokenTransferCost:test_NoTokenTransferChargesZeroFee() (gas: 20587) -FeeQuoter_getTokenTransferCost:test_SmallTokenTransferChargesMinFeeAndGas() (gas: 27978) -FeeQuoter_getTokenTransferCost:test_ZeroAmountTokenTransferChargesMinFeeAndGas() (gas: 27979) -FeeQuoter_getTokenTransferCost:test_ZeroFeeConfigChargesMinFee() (gas: 40537) -FeeQuoter_getTokenTransferCost:test_getTokenTransferCost_selfServeUsesDefaults() (gas: 29706) -FeeQuoter_getValidatedFee:test_EmptyMessage() (gas: 83608) -FeeQuoter_getValidatedFee:test_HighGasMessage() (gas: 240058) -FeeQuoter_getValidatedFee:test_MessageWithDataAndTokenTransfer() (gas: 143671) -FeeQuoter_getValidatedFee:test_SingleTokenMessage() (gas: 115178) -FeeQuoter_getValidatedFee:test_ZeroDataAvailabilityMultiplier() (gas: 63919) -FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPrice() (gas: 58905) -FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeed() (gas: 65115) -FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedErc20Above18Decimals() (gas: 1897724) -FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedErc20Below18Decimals() (gas: 1897766) -FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedFeedAt0Decimals() (gas: 1877822) -FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedFeedAt18Decimals() (gas: 1897564) -FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedFlippedDecimals() (gas: 1897700) -FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedMaxInt224Value() (gas: 1897534) -FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedOverStalenessPeriod() (gas: 65233) -FeeQuoter_getValidatedTokenPrice:test_StaleFeeToken() (gas: 61854) -FeeQuoter_onReport:test_OnReport_SkipPriceUpdateWhenStaleUpdateReceived() (gas: 52631) -FeeQuoter_onReport:test_onReport() (gas: 89096) -FeeQuoter_onReport:test_onReport_withKeystoneForwarderContract() (gas: 122724) -FeeQuoter_parseEVMExtraArgsFromBytes:test_EVMExtraArgsDefault() (gas: 17207) -FeeQuoter_parseEVMExtraArgsFromBytes:test_EVMExtraArgsV1() (gas: 18283) -FeeQuoter_parseEVMExtraArgsFromBytes:test_EVMExtraArgsV2() (gas: 18391) -FeeQuoter_processMessageArgs:test_processMessageArgs_WitEVMExtraArgsV2() (gas: 28669) -FeeQuoter_processMessageArgs:test_processMessageArgs_WithConvertedTokenAmount() (gas: 30001) -FeeQuoter_processMessageArgs:test_processMessageArgs_WithCorrectPoolReturnData() (gas: 76624) -FeeQuoter_processMessageArgs:test_processMessageArgs_WithEVMExtraArgsV1() (gas: 28300) -FeeQuoter_processMessageArgs:test_processMessageArgs_WithEmptyEVMExtraArgs() (gas: 26158) -FeeQuoter_processMessageArgs:test_processMessageArgs_WithLinkTokenAmount() (gas: 19641) -FeeQuoter_supportsInterface:test_SupportsInterface() (gas: 13264) -FeeQuoter_updatePrices:test_OnlyGasPrice() (gas: 23912) -FeeQuoter_updatePrices:test_OnlyTokenPrice() (gas: 28761) -FeeQuoter_updatePrices:test_UpdatableByAuthorizedCaller() (gas: 74821) -FeeQuoter_updatePrices:test_UpdateMultiplePrices() (gas: 146024) -FeeQuoter_updateTokenPriceFeeds:test_FeedNotUpdated() (gas: 52517) -FeeQuoter_updateTokenPriceFeeds:test_FeedUnset() (gas: 66506) -FeeQuoter_updateTokenPriceFeeds:test_MultipleFeedUpdate() (gas: 93647) -FeeQuoter_updateTokenPriceFeeds:test_SingleFeedUpdate() (gas: 53215) -FeeQuoter_updateTokenPriceFeeds:test_ZeroFeeds() (gas: 12471) -FeeQuoter_validateDestFamilyAddress:test_ValidEVMAddress() (gas: 6789) -FeeQuoter_validateDestFamilyAddress:test_ValidNonEVMAddress() (gas: 6514) -HybridLockReleaseUSDCTokenPool_TransferLiquidity:test_transferLiquidity() (gas: 167715) -HybridLockReleaseUSDCTokenPool_TransferLiquidity:test_transferLiquidity_MultipleChainsSequentially() (gas: 233095) -HybridLockReleaseUSDCTokenPool_lockOrBurn:test_PrimaryMechanism() (gas: 130356) -HybridLockReleaseUSDCTokenPool_lockOrBurn:test_onLockReleaseMechanism() (gas: 140104) -HybridLockReleaseUSDCTokenPool_lockOrBurn:test_onLockReleaseMechanism_thenSwitchToPrimary() (gas: 202967) -HybridLockReleaseUSDCTokenPool_releaseOrMint:test_OnLockReleaseMechanism() (gas: 206218) -HybridLockReleaseUSDCTokenPool_releaseOrMint:test_incomingMessageWithPrimaryMechanism() (gas: 260387) -LockReleaseTokenPool_canAcceptLiquidity:test_CanAcceptLiquidity() (gas: 3222607) -LockReleaseTokenPool_lockOrBurn:test_LockOrBurnWithAllowList() (gas: 72828) -LockReleaseTokenPool_releaseOrMint:test_ReleaseOrMint() (gas: 217898) -LockReleaseTokenPool_setRebalancer:test_SetRebalancer() (gas: 18183) -LockReleaseTokenPool_supportsInterface:test_SupportsInterface() (gas: 10251) -LockReleaseTokenPool_transferLiquidity:test_transferLiquidity() (gas: 83263) -MerkleMultiProofTest:test_CVE_2023_34459() (gas: 5456) -MerkleMultiProofTest:test_MerkleRoot256() (gas: 396915) -MerkleMultiProofTest:test_MerkleRootSingleLeaf() (gas: 3684) -MerkleMultiProofTest:test_SpecSync_gas() (gas: 34152) -MockRouterTest:test_ccipSendWithEVMExtraArgsV1() (gas: 110081) -MockRouterTest:test_ccipSendWithEVMExtraArgsV2() (gas: 132594) -MockRouterTest:test_ccipSendWithLinkFeeTokenAndValidMsgValue() (gas: 126679) -MockRouterTest:test_ccipSendWithSufficientNativeFeeTokens() (gas: 44038) -MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_MultipleConfigs() (gas: 317373) -MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_MultipleConfigsBothLanes() (gas: 134278) -MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_SingleConfig() (gas: 76755) -MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_SingleConfigOutbound() (gas: 76797) -MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_UpdateExistingConfig() (gas: 54084) -MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_UpdateExistingConfigWithNoDifference() (gas: 38924) -MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_ZeroConfigs() (gas: 12505) -MultiAggregateRateLimiter_constructor:test_Constructor() (gas: 2102740) -MultiAggregateRateLimiter_constructor:test_ConstructorNoAuthorizedCallers() (gas: 1986594) -MultiAggregateRateLimiter_getTokenBucket:test_GetTokenBucket() (gas: 30888) -MultiAggregateRateLimiter_getTokenBucket:test_Refill() (gas: 48378) -MultiAggregateRateLimiter_getTokenValue:test_GetTokenValue() (gas: 17616) -MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithDifferentTokensOnDifferentChains() (gas: 211462) -MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithDisabledRateLimitToken() (gas: 58832) -MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithNoTokens() (gas: 17918) -MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithRateLimitDisabled() (gas: 45460) -MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithRateLimitReset() (gas: 77765) -MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithTokens() (gas: 50967) -MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithTokensOnDifferentChains() (gas: 310077) -MultiAggregateRateLimiter_onOutboundMessage:test_RateLimitValueDifferentLanes() (gas: 51611) -MultiAggregateRateLimiter_onOutboundMessage:test_ValidateMessageWithNoTokens() (gas: 19379) -MultiAggregateRateLimiter_onOutboundMessage:test_onOutboundMessage_ValidateMessageWithDifferentTokensOnDifferentChains() (gas: 211014) -MultiAggregateRateLimiter_onOutboundMessage:test_onOutboundMessage_ValidateMessageWithDisabledRateLimitToken() (gas: 60544) -MultiAggregateRateLimiter_onOutboundMessage:test_onOutboundMessage_ValidateMessageWithRateLimitDisabled() (gas: 47112) -MultiAggregateRateLimiter_onOutboundMessage:test_onOutboundMessage_ValidateMessageWithRateLimitReset() (gas: 78506) -MultiAggregateRateLimiter_onOutboundMessage:test_onOutboundMessage_ValidateMessageWithTokens() (gas: 52677) -MultiAggregateRateLimiter_onOutboundMessage:test_onOutboundMessage_ValidateMessageWithTokensOnDifferentChains() (gas: 309835) -MultiAggregateRateLimiter_setFeeQuoter:test_Owner() (gas: 19146) -MultiAggregateRateLimiter_updateRateLimitTokens:test_UpdateRateLimitTokensMultipleChains() (gas: 281364) -MultiAggregateRateLimiter_updateRateLimitTokens:test_UpdateRateLimitTokensSingleChain() (gas: 255770) -MultiAggregateRateLimiter_updateRateLimitTokens:test_UpdateRateLimitTokens_AddsAndRemoves() (gas: 205543) -MultiAggregateRateLimiter_updateRateLimitTokens:test_UpdateRateLimitTokens_RemoveNonExistentToken() (gas: 29151) -MultiOCR3Base_setOCR3Configs:test_SetConfigIgnoreSigners() (gas: 512335) -MultiOCR3Base_setOCR3Configs:test_SetConfigWithSigners() (gas: 829238) -MultiOCR3Base_setOCR3Configs:test_SetConfigWithSignersMismatchingTransmitters() (gas: 680660) -MultiOCR3Base_setOCR3Configs:test_SetConfigWithoutSigners() (gas: 457485) -MultiOCR3Base_setOCR3Configs:test_SetConfigsZeroInput() (gas: 12437) -MultiOCR3Base_setOCR3Configs:test_SetMultipleConfigs() (gas: 2142785) -MultiOCR3Base_setOCR3Configs:test_UpdateConfigSigners() (gas: 861909) -MultiOCR3Base_setOCR3Configs:test_UpdateConfigTransmittersWithoutSigners() (gas: 476109) -MultiOCR3Base_transmit:test_TransmitSigners_gas() (gas: 33559) -MultiOCR3Base_transmit:test_TransmitWithoutSignatureVerification_gas() (gas: 18638) -NonceManager_applyPreviousRampsUpdates:test_MultipleRampsUpdates() (gas: 123595) -NonceManager_applyPreviousRampsUpdates:test_PreviousRampAlreadySet_overrideAllowed() (gas: 45935) -NonceManager_applyPreviousRampsUpdates:test_SingleRampUpdate() (gas: 66937) -NonceManager_applyPreviousRampsUpdates:test_ZeroInput() (gas: 12145) -NonceManager_getInboundNonce:test_getInboundNonce_NoPrevOffRampForChain() (gas: 178906) -NonceManager_getInboundNonce:test_getInboundNonce_Upgraded() (gas: 146095) -NonceManager_getInboundNonce:test_getInboundNonce_UpgradedNonceNewSenderStartsAtZero() (gas: 182376) -NonceManager_getInboundNonce:test_getInboundNonce_UpgradedNonceStartsAtV1Nonce() (gas: 245089) -NonceManager_getInboundNonce:test_getInboundNonce_UpgradedOffRampNonceSkipsIfMsgInFlight() (gas: 213735) -NonceManager_getInboundNonce:test_getInboundNonce_UpgradedSenderNoncesReadsPreviousRamp() (gas: 60418) -NonceManager_getIncrementedOutboundNonce:test_getIncrementedOutboundNonce() (gas: 37974) -NonceManager_getIncrementedOutboundNonce:test_incrementInboundNonce() (gas: 38746) -NonceManager_getIncrementedOutboundNonce:test_incrementInboundNonce_SkippedIncorrectNonce() (gas: 23739) -NonceManager_getIncrementedOutboundNonce:test_incrementNoncesInboundAndOutbound() (gas: 71886) -NonceManager_getOutboundNonce:test_getOutboundNonce_Upgrade() (gas: 105254) -NonceManager_getOutboundNonce:test_getOutboundNonce_UpgradeNonceNewSenderStartsAtZero() (gas: 166086) -NonceManager_getOutboundNonce:test_getOutboundNonce_UpgradeNonceStartsAtV1Nonce() (gas: 195806) -NonceManager_getOutboundNonce:test_getOutboundNonce_UpgradeSenderNoncesReadsPreviousRamp() (gas: 140101) -OffRamp_applySourceChainConfigUpdates:test_AddMultipleChains() (gas: 626140) -OffRamp_applySourceChainConfigUpdates:test_AddNewChain() (gas: 166441) -OffRamp_applySourceChainConfigUpdates:test_ApplyZeroUpdates() (gas: 16671) -OffRamp_applySourceChainConfigUpdates:test_ReplaceExistingChain() (gas: 180998) -OffRamp_applySourceChainConfigUpdates:test_ReplaceExistingChainOnRamp() (gas: 168513) -OffRamp_applySourceChainConfigUpdates:test_allowNonOnRampUpdateAfterLaneIsUsed() (gas: 284861) -OffRamp_batchExecute:test_MultipleReportsDifferentChains() (gas: 326028) -OffRamp_batchExecute:test_MultipleReportsDifferentChainsSkipCursedChain() (gas: 170852) -OffRamp_batchExecute:test_MultipleReportsSameChain() (gas: 269327) -OffRamp_batchExecute:test_MultipleReportsSkipDuplicate() (gas: 161811) -OffRamp_batchExecute:test_SingleReport() (gas: 149617) -OffRamp_batchExecute:test_Unhealthy() (gas: 533326) -OffRamp_commit:test_OnlyGasPriceUpdates() (gas: 112973) -OffRamp_commit:test_OnlyTokenPriceUpdates() (gas: 112927) -OffRamp_commit:test_PriceSequenceNumberCleared() (gas: 355397) -OffRamp_commit:test_ReportAndPriceUpdate() (gas: 164209) -OffRamp_commit:test_ReportOnlyRootSuccess_gas() (gas: 141051) -OffRamp_commit:test_RootWithRMNDisabled() (gas: 153873) -OffRamp_commit:test_StaleReportWithRoot() (gas: 232101) -OffRamp_commit:test_ValidPriceUpdateThenStaleReportWithRoot() (gas: 206722) -OffRamp_constructor:test_Constructor() (gas: 6269512) -OffRamp_execute:test_LargeBatch() (gas: 3373860) -OffRamp_execute:test_MultipleReports() (gas: 291458) -OffRamp_execute:test_MultipleReportsWithPartialValidationFailures() (gas: 364776) -OffRamp_execute:test_SingleReport() (gas: 168850) -OffRamp_executeSingleMessage:test_executeSingleMessage_NoTokens() (gas: 51610) -OffRamp_executeSingleMessage:test_executeSingleMessage_NonContract() (gas: 20514) -OffRamp_executeSingleMessage:test_executeSingleMessage_NonContractWithTokens() (gas: 230418) -OffRamp_executeSingleMessage:test_executeSingleMessage_WithMessageInterceptor() (gas: 87465) -OffRamp_executeSingleMessage:test_executeSingleMessage_WithTokens() (gas: 259935) -OffRamp_executeSingleReport:test_InvalidSourcePoolAddress() (gas: 455358) -OffRamp_executeSingleReport:test_ReceiverError() (gas: 180797) -OffRamp_executeSingleReport:test_SingleMessageNoTokens() (gas: 205270) -OffRamp_executeSingleReport:test_SingleMessageNoTokensOtherChain() (gas: 241357) -OffRamp_executeSingleReport:test_SingleMessageNoTokensUnordered() (gas: 185263) -OffRamp_executeSingleReport:test_SingleMessageToNonCCIPReceiver() (gas: 243920) -OffRamp_executeSingleReport:test_SingleMessagesNoTokensSuccess_gas() (gas: 134656) -OffRamp_executeSingleReport:test_SkippedIncorrectNonce() (gas: 58298) -OffRamp_executeSingleReport:test_SkippedIncorrectNonceStillExecutes() (gas: 392394) -OffRamp_executeSingleReport:test_TwoMessagesWithTokensAndGE() (gas: 562427) -OffRamp_executeSingleReport:test_TwoMessagesWithTokensSuccess_gas() (gas: 510808) -OffRamp_executeSingleReport:test_Unhealthy() (gas: 528949) -OffRamp_executeSingleReport:test_WithCurseOnAnotherSourceChain() (gas: 439299) -OffRamp_executeSingleReport:test__execute_SkippedAlreadyExecutedMessage() (gas: 158038) -OffRamp_executeSingleReport:test__execute_SkippedAlreadyExecutedMessageUnordered() (gas: 128422) -OffRamp_getExecutionState:test_FillExecutionState() (gas: 3955662) -OffRamp_getExecutionState:test_GetDifferentChainExecutionState() (gas: 121311) -OffRamp_getExecutionState:test_GetExecutionState() (gas: 90102) -OffRamp_manuallyExecute:test_manuallyExecute() (gas: 212368) -OffRamp_manuallyExecute:test_manuallyExecute_DoesNotRevertIfUntouched() (gas: 165742) -OffRamp_manuallyExecute:test_manuallyExecute_LowGasLimit() (gas: 479145) -OffRamp_manuallyExecute:test_manuallyExecute_ReentrancyFails() (gas: 2229662) -OffRamp_manuallyExecute:test_manuallyExecute_WithGasOverride() (gas: 212918) -OffRamp_manuallyExecute:test_manuallyExecute_WithMultiReportGasOverride() (gas: 732218) -OffRamp_manuallyExecute:test_manuallyExecute_WithPartialMessages() (gas: 337015) -OffRamp_releaseOrMintSingleToken:test__releaseOrMintSingleToken() (gas: 94629) -OffRamp_releaseOrMintTokens:test_releaseOrMintTokens() (gas: 161157) -OffRamp_releaseOrMintTokens:test_releaseOrMintTokens_WithGasOverride() (gas: 163023) -OffRamp_releaseOrMintTokens:test_releaseOrMintTokens_destDenominatedDecimals() (gas: 174276) -OffRamp_setDynamicConfig:test_SetDynamicConfig() (gas: 25442) -OffRamp_setDynamicConfig:test_SetDynamicConfigWithInterceptor() (gas: 47493) -OffRamp_trialExecute:test_trialExecute() (gas: 263635) -OffRamp_trialExecute:test_trialExecute_RateLimitError() (gas: 120721) -OffRamp_trialExecute:test_trialExecute_TokenHandlingErrorIsCaught() (gas: 132031) -OffRamp_trialExecute:test_trialExecute_TokenPoolIsNotAContract() (gas: 281380) -OnRampTokenPoolReentrancy:test_OnRampTokenPoolReentrancy() (gas: 244294) -OnRamp_applyAllowlistUpdates:test_applyAllowlistUpdates() (gas: 325979) -OnRamp_applyAllowlistUpdates:test_applyAllowlistUpdates_InvalidAllowListRequestDisabledAllowListWithAdds() (gas: 17190) -OnRamp_applyDestChainConfigUpdates:test_ApplyDestChainConfigUpdates() (gas: 65874) -OnRamp_constructor:test_Constructor() (gas: 2672129) -OnRamp_forwardFromRouter:test_ForwardFromRouter() (gas: 145362) -OnRamp_forwardFromRouter:test_ForwardFromRouterExtraArgsV2() (gas: 146196) -OnRamp_forwardFromRouter:test_ForwardFromRouterExtraArgsV2AllowOutOfOrderTrue() (gas: 115375) -OnRamp_forwardFromRouter:test_ForwardFromRouterSuccessCustomExtraArgs() (gas: 145760) -OnRamp_forwardFromRouter:test_ForwardFromRouterSuccessEmptyExtraArgs() (gas: 144036) -OnRamp_forwardFromRouter:test_ForwardFromRouterSuccessLegacyExtraArgs() (gas: 146001) -OnRamp_forwardFromRouter:test_ForwardFromRouter_ConfigurableSourceRouter() (gas: 140639) -OnRamp_forwardFromRouter:test_ShouldIncrementNonceOnlyOnOrdered() (gas: 186473) -OnRamp_forwardFromRouter:test_ShouldIncrementSeqNumAndNonce() (gas: 212828) -OnRamp_forwardFromRouter:test_ShouldStoreLinkFees() (gas: 147007) -OnRamp_forwardFromRouter:test_forwardFromRouter_WithInterception() (gas: 274726) -OnRamp_getFee:test_EmptyMessage() (gas: 99005) -OnRamp_getFee:test_GetFeeOfZeroForTokenMessage() (gas: 86961) -OnRamp_getFee:test_SingleTokenMessage() (gas: 114125) -OnRamp_getTokenPool:test_GetTokenPool() (gas: 35382) -OnRamp_setDynamicConfig:test_setDynamicConfig() (gas: 56650) -OnRamp_withdrawFeeTokens:test_WithdrawFeeTokens() (gas: 125835) -PingPong_ccipReceive:test_CcipReceive() (gas: 165845) -PingPong_setOutOfOrderExecution:test_OutOfOrderExecution() (gas: 20350) -PingPong_setPaused:test_Pausing() (gas: 17738) -PingPong_startPingPong:test_StartPingPong_With_OOO() (gas: 144996) -PingPong_startPingPong:test_StartPingPong_With_Sequenced_Ordered() (gas: 170649) -RMNHome_getConfigDigests:test_getConfigDigests() (gas: 1081176) -RMNHome_promoteCandidateAndRevokeActive:test_promoteCandidateAndRevokeActive() (gas: 1086556) -RMNHome_revokeCandidate:test_revokeCandidate() (gas: 28085) -RMNHome_setCandidate:test_setCandidate() (gas: 590250) -RMNHome_setDynamicConfig:test_setDynamicConfig() (gas: 105498) -RMNRemote_constructor:test_constructor() (gas: 8410) -RMNRemote_curse:test_curse() (gas: 149422) -RMNRemote_global_curses:test_isCursed_globalCurseSubject() (gas: 71707) -RMNRemote_isBlessed:test_isBlessed() (gas: 17588) -RMNRemote_setConfig:test_setConfig_addSigner_removeSigner() (gas: 994169) -RMNRemote_uncurse:test_uncurse() (gas: 40136) -RMNRemote_verify_withConfigSet:test_verify() (gas: 86470) -RateLimiter_constructor:test_Constructor() (gas: 19820) -RateLimiter_consume:test_ConsumeAggregateValue() (gas: 31633) -RateLimiter_consume:test_ConsumeTokens() (gas: 20369) -RateLimiter_consume:test_ConsumeUnlimited() (gas: 40923) -RateLimiter_consume:test_Refill() (gas: 37562) -RateLimiter_currentTokenBucketState:test_CurrentTokenBucketState() (gas: 39126) -RateLimiter_currentTokenBucketState:test_Refill() (gas: 47182) -RateLimiter_setTokenBucketConfig:test_SetRateLimiterConfig() (gas: 38645) -RegistryModuleOwnerCustom_registerAccessControlDefaultAdmin:test_registerAccessControlDefaultAdmin() (gas: 130641) -RegistryModuleOwnerCustom_registerAdminViaGetCCIPAdmin:test_registerAdminViaGetCCIPAdmin() (gas: 130136) -RegistryModuleOwnerCustom_registerAdminViaOwner:test_registerAdminViaOwner() (gas: 129941) -Router_applyRampUpdates:test_applyRampUpdates_OffRampUpdatesWithRouting() (gas: 10413055) -Router_applyRampUpdates:test_applyRampUpdates_OnRampDisable() (gas: 56445) -Router_ccipSend:test_CCIPSendLinkFeeNoTokenSuccess_gas() (gas: 124459) -Router_ccipSend:test_CCIPSendLinkFeeOneTokenSuccess_gas() (gas: 211890) -Router_ccipSend:test_InvalidMsgValue() (gas: 27856) -Router_ccipSend:test_NativeFeeToken() (gas: 184996) -Router_ccipSend:test_NativeFeeTokenInsufficientValue() (gas: 62458) -Router_ccipSend:test_NativeFeeTokenOverpay() (gas: 186413) -Router_ccipSend:test_NativeFeeTokenZeroValue() (gas: 54550) -Router_ccipSend:test_NonLinkFeeToken() (gas: 219583) -Router_ccipSend:test_WrappedNativeFeeToken() (gas: 187235) -Router_ccipSend:test_ccipSend_nativeFeeNoTokenSuccess_gas() (gas: 133616) -Router_ccipSend:test_ccipSend_nativeFeeOneTokenSuccess_gas() (gas: 221091) -Router_constructor:test_Constructor() (gas: 13148) -Router_getArmProxy:test_getArmProxy() (gas: 10573) -Router_getFee:test_GetFeeSupportedChain() (gas: 52021) -Router_recoverTokens:test_RecoverTokens() (gas: 52668) -Router_routeMessage:test_routeMessage_AutoExec() (gas: 38071) -Router_routeMessage:test_routeMessage_ExecutionEvent() (gas: 153593) -Router_routeMessage:test_routeMessage_ManualExec() (gas: 31120) +ARMProxy_constructor:test_Constructor() (gas: 543472) +ARMProxy_isCursed:test_IsCursed_GlobalCurseSubject() (gas: 91769) +ARMProxy_setARM:test_SetARM() (gas: 18216) +ARMProxy_setARM:test_SetARMzero() (gas: 12144) +BurnFromMintTokenPool_lockOrBurn:test_PoolBurn() (gas: 288114) +BurnFromMintTokenPool_lockOrBurn:test_setup() (gas: 28184) +BurnMintTokenPool_lockOrBurn:test_PoolBurn() (gas: 285652) +BurnMintTokenPool_lockOrBurn:test_Setup() (gas: 20547) +BurnMintTokenPool_releaseOrMint:test_PoolMint() (gas: 110736) +BurnMintWithLockReleaseFlagTokenPool_lockOrBurn:test_LockOrBurn_CorrectReturnData() (gas: 286358) +BurnToAddressMintTokenPool_lockOrBurn:test_LockOrBurn() (gas: 295161) +BurnToAddressMintTokenPool_releaseOrMint:test_releaseOrMint() (gas: 119178) +BurnWithFromMintTokenPool_lockOrBurn:test_PoolBurn() (gas: 288176) +BurnWithFromMintTokenPool_lockOrBurn:test_Setup() (gas: 28196) +CCIPClientExample_sanity:test_ImmutableExamples() (gas: 3188868) +CCIPHome__validateConfig:test__validateConfig() (gas: 340290) +CCIPHome__validateConfig:test__validateConfigLessTransmittersThanSigners() (gas: 380771) +CCIPHome__validateConfig:test__validateConfigSmallerFChain() (gas: 558993) +CCIPHome_applyChainConfigUpdates:test_applyChainConfigUpdates_addChainConfigs() (gas: 371941) +CCIPHome_applyChainConfigUpdates:test_applyChainConfigUpdates_removeChainConfigs() (gas: 299550) +CCIPHome_applyChainConfigUpdates:test_getPaginatedCCIPHomes() (gas: 411216) +CCIPHome_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet() (gas: 1553427) +CCIPHome_constructor:test_constructor() (gas: 5406976) +CCIPHome_getAllConfigs:test_getAllConfigs() (gas: 2917854) +CCIPHome_getCapabilityConfiguration:test_getCapabilityConfiguration() (gas: 10200) +CCIPHome_getConfigDigests:test_getConfigDigests() (gas: 2632317) +CCIPHome_promoteCandidateAndRevokeActive:test_promoteCandidateAndRevokeActive_multiplePlugins() (gas: 5320479) +CCIPHome_revokeCandidate:test_revokeCandidate() (gas: 39076) +CCIPHome_setCandidate:test_setCandidate() (gas: 1435474) +CCIPHome_supportsInterface:test_supportsInterface() (gas: 11363) +DefensiveExampleTest:test_HappyPath() (gas: 247214) +DefensiveExampleTest:test_Recovery() (gas: 483438) +E2E:test_E2E_3MessagesMMultiOffRampSuccess_gas() (gas: 1894122) +ERC165CheckerReverting_supportsInterfaceReverting:test__supportsInterfaceReverting() (gas: 11828) +EtherSenderReceiverTest_ccipReceive:test_ccipReceive_fallbackToWethTransfer() (gas: 103832) +EtherSenderReceiverTest_ccipReceive:test_ccipReceive_happyPath() (gas: 54732) +EtherSenderReceiverTest_ccipReceive:test_ccipReceive_wrongToken() (gas: 21903) +EtherSenderReceiverTest_ccipReceive:test_ccipReceive_wrongTokenAmount() (gas: 20674) +EtherSenderReceiverTest_ccipSend:test_ccipSend_feeToken() (gas: 168015) +EtherSenderReceiverTest_ccipSend:test_ccipSend_native() (gas: 98178) +EtherSenderReceiverTest_ccipSend:test_ccipSend_nativeExcess() (gas: 98619) +EtherSenderReceiverTest_ccipSend:test_ccipSend_weth() (gas: 117925) +EtherSenderReceiverTest_constructor:test_constructor() (gas: 19659) +EtherSenderReceiverTest_getFee:test_getFee() (gas: 41273) +EtherSenderReceiverTest_validateFeeToken:test_validateFeeToken_valid_feeToken() (gas: 18390) +EtherSenderReceiverTest_validateFeeToken:test_validateFeeToken_valid_native() (gas: 18398) +EtherSenderReceiverTest_validatedMessage:test_validatedMessage_dataOverwrittenToMsgSender() (gas: 34950) +EtherSenderReceiverTest_validatedMessage:test_validatedMessage_emptyDataOverwrittenToMsgSender() (gas: 34719) +EtherSenderReceiverTest_validatedMessage:test_validatedMessage_invalidTokenAmounts() (gas: 23796) +EtherSenderReceiverTest_validatedMessage:test_validatedMessage_tokenOverwrittenToWeth() (gas: 34674) +EtherSenderReceiverTest_validatedMessage:test_validatedMessage_validMessage_extraArgs() (gas: 36217) +FactoryBurnMintERC20_approve:test_Approve() (gas: 60082) +FactoryBurnMintERC20_burn:test_BasicBurn() (gas: 185740) +FactoryBurnMintERC20_burnFrom:test_BurnFrom() (gas: 61216) +FactoryBurnMintERC20_burnFromAlias:test_BurnFrom() (gas: 61191) +FactoryBurnMintERC20_constructor:test_Constructor() (gas: 2563761) +FactoryBurnMintERC20_decreaseApproval:test_DecreaseApproval() (gas: 35140) +FactoryBurnMintERC20_getCCIPAdmin:test_getCCIPAdmin() (gas: 13392) +FactoryBurnMintERC20_getCCIPAdmin:test_setCCIPAdmin() (gas: 25726) +FactoryBurnMintERC20_grantMintAndBurnRoles:test_GrantMintAndBurnRoles() (gas: 125800) +FactoryBurnMintERC20_grantRole:test_GrantBurnAccess() (gas: 56798) +FactoryBurnMintERC20_grantRole:test_GrantMany() (gas: 993481) +FactoryBurnMintERC20_grantRole:test_GrantMintAccess() (gas: 97851) +FactoryBurnMintERC20_increaseApproval:test_IncreaseApproval() (gas: 48900) +FactoryBurnMintERC20_mint:test_BasicMint() (gas: 153802) +FactoryBurnMintERC20_supportsInterface:test_SupportsInterface() (gas: 13518) +FactoryBurnMintERC20_transfer:test_Transfer() (gas: 45432) +FeeQuoter_applyDestChainConfigUpdates:test_applyDestChainConfigUpdates() (gas: 172725) +FeeQuoter_applyDestChainConfigUpdates:test_applyDestChainConfigUpdatesZeroInput() (gas: 13352) +FeeQuoter_applyFeeTokensUpdates:test_ApplyFeeTokensUpdates() (gas: 176970) +FeeQuoter_applyPremiumMultiplierWeiPerEthUpdates:test_applyPremiumMultiplierWeiPerEthUpdatesMultipleTokens() (gas: 61103) +FeeQuoter_applyPremiumMultiplierWeiPerEthUpdates:test_applyPremiumMultiplierWeiPerEthUpdatesSingleToken() (gas: 48866) +FeeQuoter_applyPremiumMultiplierWeiPerEthUpdates:test_applyPremiumMultiplierWeiPerEthUpdatesZeroInput() (gas: 13295) +FeeQuoter_applyTokenTransferFeeConfigUpdates:test_ApplyTokenTransferFeeConfig() (gas: 118317) +FeeQuoter_applyTokenTransferFeeConfigUpdates:test_ApplyTokenTransferFeeZeroInput() (gas: 14430) +FeeQuoter_constructor:test_Setup() (gas: 8090031) +FeeQuoter_convertTokenAmount:test_ConvertTokenAmount() (gas: 74885) +FeeQuoter_getDataAvailabilityCost:test_EmptyMessageCalculatesDataAvailabilityCost() (gas: 127541) +FeeQuoter_getDataAvailabilityCost:test_SimpleMessageCalculatesDataAvailabilityCost() (gas: 33926) +FeeQuoter_getDataAvailabilityCost:test_SimpleMessageCalculatesDataAvailabilityCostUnsupportedDestChainSelector() (gas: 20980) +FeeQuoter_getTokenAndGasPrices:test_GetFeeTokenAndGasPrices() (gas: 78523) +FeeQuoter_getTokenAndGasPrices:test_StalenessCheckDisabled() (gas: 121980) +FeeQuoter_getTokenAndGasPrices:test_ZeroGasPrice() (gas: 118589) +FeeQuoter_getTokenPrice:test_GetTokenPriceFromFeed() (gas: 77584) +FeeQuoter_getTokenPrice:test_GetTokenPrice_LocalMoreRecent() (gas: 39676) +FeeQuoter_getTokenPrices:test_GetTokenPrices() (gas: 87893) +FeeQuoter_getTokenTransferCost:test_CustomTokenBpsFee() (gas: 49317) +FeeQuoter_getTokenTransferCost:test_FeeTokenBpsFee() (gas: 46712) +FeeQuoter_getTokenTransferCost:test_LargeTokenTransferChargesMaxFeeAndGas() (gas: 39275) +FeeQuoter_getTokenTransferCost:test_MixedTokenTransferFee() (gas: 159924) +FeeQuoter_getTokenTransferCost:test_NoTokenTransferChargesZeroFee() (gas: 25732) +FeeQuoter_getTokenTransferCost:test_SmallTokenTransferChargesMinFeeAndGas() (gas: 39013) +FeeQuoter_getTokenTransferCost:test_ZeroAmountTokenTransferChargesMinFeeAndGas() (gas: 38947) +FeeQuoter_getTokenTransferCost:test_ZeroFeeConfigChargesMinFee() (gas: 54026) +FeeQuoter_getTokenTransferCost:test_getTokenTransferCost_selfServeUsesDefaults() (gas: 40350) +FeeQuoter_getValidatedFee:test_EmptyMessage() (gas: 129214) +FeeQuoter_getValidatedFee:test_HighGasMessage() (gas: 301258) +FeeQuoter_getValidatedFee:test_MessageWithDataAndTokenTransfer() (gas: 247873) +FeeQuoter_getValidatedFee:test_SingleTokenMessage() (gas: 193368) +FeeQuoter_getValidatedFee:test_ZeroDataAvailabilityMultiplier() (gas: 84674) +FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPrice() (gas: 63516) +FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeed() (gas: 72307) +FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedErc20Above18Decimals() (gas: 3278780) +FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedErc20Below18Decimals() (gas: 3278845) +FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedFeedAt0Decimals() (gas: 3258901) +FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedFeedAt18Decimals() (gas: 3278617) +FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedFlippedDecimals() (gas: 3278739) +FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedMaxInt224Value() (gas: 3278578) +FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedOverStalenessPeriod() (gas: 72538) +FeeQuoter_getValidatedTokenPrice:test_StaleFeeToken() (gas: 67202) +FeeQuoter_onReport:test_OnReport_SkipPriceUpdateWhenStaleUpdateReceived() (gas: 62628) +FeeQuoter_onReport:test_onReport() (gas: 107409) +FeeQuoter_onReport:test_onReport_withKeystoneForwarderContract() (gas: 145051) +FeeQuoter_parseEVMExtraArgsFromBytes:test_EVMExtraArgsDefault() (gas: 24440) +FeeQuoter_parseEVMExtraArgsFromBytes:test_EVMExtraArgsV1() (gas: 25997) +FeeQuoter_parseEVMExtraArgsFromBytes:test_EVMExtraArgsV2() (gas: 26516) +FeeQuoter_processMessageArgs:test_processMessageArgs_WitEVMExtraArgsV2() (gas: 37876) +FeeQuoter_processMessageArgs:test_processMessageArgs_WithConvertedTokenAmount() (gas: 36218) +FeeQuoter_processMessageArgs:test_processMessageArgs_WithCorrectPoolReturnData() (gas: 96868) +FeeQuoter_processMessageArgs:test_processMessageArgs_WithEVMExtraArgsV1() (gas: 36764) +FeeQuoter_processMessageArgs:test_processMessageArgs_WithEmptyEVMExtraArgs() (gas: 33820) +FeeQuoter_processMessageArgs:test_processMessageArgs_WithLinkTokenAmount() (gas: 22717) +FeeQuoter_supportsInterface:test_SupportsInterface() (gas: 15695) +FeeQuoter_updatePrices:test_OnlyGasPrice() (gas: 27654) +FeeQuoter_updatePrices:test_OnlyTokenPrice() (gas: 32826) +FeeQuoter_updatePrices:test_UpdatableByAuthorizedCaller() (gas: 83756) +FeeQuoter_updatePrices:test_UpdateMultiplePrices() (gas: 165726) +FeeQuoter_updateTokenPriceFeeds:test_FeedNotUpdated() (gas: 60696) +FeeQuoter_updateTokenPriceFeeds:test_FeedUnset() (gas: 80836) +FeeQuoter_updateTokenPriceFeeds:test_MultipleFeedUpdate() (gas: 109261) +FeeQuoter_updateTokenPriceFeeds:test_SingleFeedUpdate() (gas: 61274) +FeeQuoter_updateTokenPriceFeeds:test_ZeroFeeds() (gas: 13385) +FeeQuoter_validateDestFamilyAddress:test_ValidEVMAddress() (gas: 7814) +FeeQuoter_validateDestFamilyAddress:test_ValidNonEVMAddress() (gas: 7301) +HybridLockReleaseUSDCTokenPool_TransferLiquidity:test_transferLiquidity() (gas: 178359) +HybridLockReleaseUSDCTokenPool_TransferLiquidity:test_transferLiquidity_MultipleChainsSequentially() (gas: 246886) +HybridLockReleaseUSDCTokenPool_lockOrBurn:test_PrimaryMechanism() (gas: 143002) +HybridLockReleaseUSDCTokenPool_lockOrBurn:test_onLockReleaseMechanism() (gas: 149523) +HybridLockReleaseUSDCTokenPool_lockOrBurn:test_onLockReleaseMechanism_thenSwitchToPrimary() (gas: 227104) +HybridLockReleaseUSDCTokenPool_releaseOrMint:test_OnLockReleaseMechanism() (gas: 223788) +HybridLockReleaseUSDCTokenPool_releaseOrMint:test_incomingMessageWithPrimaryMechanism() (gas: 315027) +LockReleaseTokenPool_canAcceptLiquidity:test_CanAcceptLiquidity() (gas: 5465179) +LockReleaseTokenPool_lockOrBurn:test_LockOrBurnWithAllowList() (gas: 82318) +LockReleaseTokenPool_releaseOrMint:test_ReleaseOrMint() (gas: 265696) +LockReleaseTokenPool_setRebalancer:test_SetRebalancer() (gas: 19809) +LockReleaseTokenPool_supportsInterface:test_SupportsInterface() (gas: 11570) +LockReleaseTokenPool_transferLiquidity:test_transferLiquidity() (gas: 88492) +MerkleMultiProofTest:test_CVE_2023_34459() (gas: 6328) +MerkleMultiProofTest:test_MerkleRoot256() (gas: 668330) +MerkleMultiProofTest:test_MerkleRootSingleLeaf() (gas: 4030) +MerkleMultiProofTest:test_SpecSync_gas() (gas: 49316) +MockRouterTest:test_ccipSendWithEVMExtraArgsV1() (gas: 115244) +MockRouterTest:test_ccipSendWithEVMExtraArgsV2() (gas: 138194) +MockRouterTest:test_ccipSendWithLinkFeeTokenAndValidMsgValue() (gas: 135371) +MockRouterTest:test_ccipSendWithSufficientNativeFeeTokens() (gas: 48475) +MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_MultipleConfigs() (gas: 358392) +MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_MultipleConfigsBothLanes() (gas: 150958) +MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_SingleConfig() (gas: 85580) +MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_SingleConfigOutbound() (gas: 85634) +MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_UpdateExistingConfig() (gas: 68055) +MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_UpdateExistingConfigWithNoDifference() (gas: 49672) +MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_ZeroConfigs() (gas: 13357) +MultiAggregateRateLimiter_constructor:test_Constructor() (gas: 3417270) +MultiAggregateRateLimiter_constructor:test_ConstructorNoAuthorizedCallers() (gas: 3299885) +MultiAggregateRateLimiter_getTokenBucket:test_GetTokenBucket() (gas: 38652) +MultiAggregateRateLimiter_getTokenBucket:test_Refill() (gas: 63870) +MultiAggregateRateLimiter_getTokenValue:test_GetTokenValue() (gas: 20884) +MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithDifferentTokensOnDifferentChains() (gas: 243082) +MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithDisabledRateLimitToken() (gas: 68589) +MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithNoTokens() (gas: 21078) +MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithRateLimitDisabled() (gas: 54014) +MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithRateLimitReset() (gas: 108768) +MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithTokens() (gas: 60254) +MultiAggregateRateLimiter_onInboundMessage:test_ValidateMessageWithTokensOnDifferentChains() (gas: 345816) +MultiAggregateRateLimiter_onOutboundMessage:test_RateLimitValueDifferentLanes() (gas: 63493) +MultiAggregateRateLimiter_onOutboundMessage:test_ValidateMessageWithNoTokens() (gas: 21585) +MultiAggregateRateLimiter_onOutboundMessage:test_onOutboundMessage_ValidateMessageWithDifferentTokensOnDifferentChains() (gas: 240893) +MultiAggregateRateLimiter_onOutboundMessage:test_onOutboundMessage_ValidateMessageWithDisabledRateLimitToken() (gas: 69340) +MultiAggregateRateLimiter_onOutboundMessage:test_onOutboundMessage_ValidateMessageWithRateLimitDisabled() (gas: 54739) +MultiAggregateRateLimiter_onOutboundMessage:test_onOutboundMessage_ValidateMessageWithRateLimitReset() (gas: 105977) +MultiAggregateRateLimiter_onOutboundMessage:test_onOutboundMessage_ValidateMessageWithTokens() (gas: 61047) +MultiAggregateRateLimiter_onOutboundMessage:test_onOutboundMessage_ValidateMessageWithTokensOnDifferentChains() (gas: 343831) +MultiAggregateRateLimiter_setFeeQuoter:test_Owner() (gas: 20465) +MultiAggregateRateLimiter_updateRateLimitTokens:test_UpdateRateLimitTokensMultipleChains() (gas: 293639) +MultiAggregateRateLimiter_updateRateLimitTokens:test_UpdateRateLimitTokensSingleChain() (gas: 266617) +MultiAggregateRateLimiter_updateRateLimitTokens:test_UpdateRateLimitTokens_AddsAndRemoves() (gas: 215572) +MultiAggregateRateLimiter_updateRateLimitTokens:test_UpdateRateLimitTokens_RemoveNonExistentToken() (gas: 32653) +MultiOCR3Base_setOCR3Configs:test_SetConfigIgnoreSigners() (gas: 557004) +MultiOCR3Base_setOCR3Configs:test_SetConfigWithSigners() (gas: 874807) +MultiOCR3Base_setOCR3Configs:test_SetConfigWithSignersMismatchingTransmitters() (gas: 719735) +MultiOCR3Base_setOCR3Configs:test_SetConfigWithoutSigners() (gas: 486337) +MultiOCR3Base_setOCR3Configs:test_SetConfigsZeroInput() (gas: 13354) +MultiOCR3Base_setOCR3Configs:test_SetMultipleConfigs() (gas: 2266855) +MultiOCR3Base_setOCR3Configs:test_UpdateConfigSigners() (gas: 930616) +MultiOCR3Base_setOCR3Configs:test_UpdateConfigTransmittersWithoutSigners() (gas: 516816) +MultiOCR3Base_transmit:test_TransmitSigners_gas() (gas: 39565) +MultiOCR3Base_transmit:test_TransmitWithoutSignatureVerification_gas() (gas: 20769) +NonceManager_applyPreviousRampsUpdates:test_MultipleRampsUpdates() (gas: 134793) +NonceManager_applyPreviousRampsUpdates:test_PreviousRampAlreadySet_overrideAllowed() (gas: 51272) +NonceManager_applyPreviousRampsUpdates:test_SingleRampUpdate() (gas: 72572) +NonceManager_applyPreviousRampsUpdates:test_ZeroInput() (gas: 12895) +NonceManager_getInboundNonce:test_getInboundNonce_NoPrevOffRampForChain() (gas: 211545) +NonceManager_getInboundNonce:test_getInboundNonce_Upgraded() (gas: 175386) +NonceManager_getInboundNonce:test_getInboundNonce_UpgradedNonceNewSenderStartsAtZero() (gas: 217549) +NonceManager_getInboundNonce:test_getInboundNonce_UpgradedNonceStartsAtV1Nonce() (gas: 310808) +NonceManager_getInboundNonce:test_getInboundNonce_UpgradedOffRampNonceSkipsIfMsgInFlight() (gas: 264974) +NonceManager_getInboundNonce:test_getInboundNonce_UpgradedSenderNoncesReadsPreviousRamp() (gas: 71664) +NonceManager_getIncrementedOutboundNonce:test_getIncrementedOutboundNonce() (gas: 40493) +NonceManager_getIncrementedOutboundNonce:test_incrementInboundNonce() (gas: 41857) +NonceManager_getIncrementedOutboundNonce:test_incrementInboundNonce_SkippedIncorrectNonce() (gas: 27445) +NonceManager_getIncrementedOutboundNonce:test_incrementNoncesInboundAndOutbound() (gas: 79896) +NonceManager_getOutboundNonce:test_getOutboundNonce_Upgrade() (gas: 123165) +NonceManager_getOutboundNonce:test_getOutboundNonce_UpgradeNonceNewSenderStartsAtZero() (gas: 194169) +NonceManager_getOutboundNonce:test_getOutboundNonce_UpgradeNonceStartsAtV1Nonce() (gas: 245389) +NonceManager_getOutboundNonce:test_getOutboundNonce_UpgradeSenderNoncesReadsPreviousRamp() (gas: 175541) +OffRamp_applySourceChainConfigUpdates:test_AddMultipleChains() (gas: 652124) +OffRamp_applySourceChainConfigUpdates:test_AddNewChain() (gas: 174705) +OffRamp_applySourceChainConfigUpdates:test_ApplyZeroUpdates() (gas: 18117) +OffRamp_applySourceChainConfigUpdates:test_ReplaceExistingChain() (gas: 195498) +OffRamp_applySourceChainConfigUpdates:test_ReplaceExistingChainOnRamp() (gas: 177845) +OffRamp_applySourceChainConfigUpdates:test_allowNonOnRampUpdateAfterLaneIsUsed() (gas: 314479) +OffRamp_batchExecute:test_MultipleReportsDifferentChains() (gas: 414788) +OffRamp_batchExecute:test_MultipleReportsDifferentChainsSkipCursedChain() (gas: 216301) +OffRamp_batchExecute:test_MultipleReportsSameChain() (gas: 357788) +OffRamp_batchExecute:test_MultipleReportsSkipDuplicate() (gas: 200173) +OffRamp_batchExecute:test_SingleReport() (gas: 180866) +OffRamp_batchExecute:test_Unhealthy() (gas: 688582) +OffRamp_commit:test_OnlyGasPriceUpdates() (gas: 129865) +OffRamp_commit:test_OnlyTokenPriceUpdates() (gas: 129819) +OffRamp_commit:test_PriceSequenceNumberCleared() (gas: 422859) +OffRamp_commit:test_ReportAndPriceUpdate() (gas: 188951) +OffRamp_commit:test_ReportOnlyRootSuccess_gas() (gas: 162786) +OffRamp_commit:test_RootWithRMNDisabled() (gas: 177436) +OffRamp_commit:test_StaleReportWithRoot() (gas: 279828) +OffRamp_commit:test_ValidPriceUpdateThenStaleReportWithRoot() (gas: 248962) +OffRamp_constructor:test_Constructor() (gas: 9651836) +OffRamp_execute:test_LargeBatch() (gas: 4728140) +OffRamp_execute:test_MultipleReports() (gas: 380778) +OffRamp_execute:test_MultipleReportsWithPartialValidationFailures() (gas: 453413) +OffRamp_execute:test_SingleReport() (gas: 201011) +OffRamp_executeSingleMessage:test_executeSingleMessage_NoTokens() (gas: 63928) +OffRamp_executeSingleMessage:test_executeSingleMessage_NonContract() (gas: 25994) +OffRamp_executeSingleMessage:test_executeSingleMessage_NonContractWithTokens() (gas: 260794) +OffRamp_executeSingleMessage:test_executeSingleMessage_WithMessageInterceptor() (gas: 104668) +OffRamp_executeSingleMessage:test_executeSingleMessage_WithTokens() (gas: 302931) +OffRamp_executeSingleReport:test_InvalidSourcePoolAddress() (gas: 563526) +OffRamp_executeSingleReport:test_ReceiverError() (gas: 214042) +OffRamp_executeSingleReport:test_SingleMessageNoTokens() (gas: 262613) +OffRamp_executeSingleReport:test_SingleMessageNoTokensOtherChain() (gas: 288664) +OffRamp_executeSingleReport:test_SingleMessageNoTokensUnordered() (gas: 243633) +OffRamp_executeSingleReport:test_SingleMessageToNonCCIPReceiver() (gas: 306767) +OffRamp_executeSingleReport:test_SingleMessagesNoTokensSuccess_gas() (gas: 160384) +OffRamp_executeSingleReport:test_SkippedIncorrectNonce() (gas: 71877) +OffRamp_executeSingleReport:test_SkippedIncorrectNonceStillExecutes() (gas: 481097) +OffRamp_executeSingleReport:test_TwoMessagesWithTokensAndGE() (gas: 704926) +OffRamp_executeSingleReport:test_TwoMessagesWithTokensSuccess_gas() (gas: 637568) +OffRamp_executeSingleReport:test_Unhealthy() (gas: 681802) +OffRamp_executeSingleReport:test_WithCurseOnAnotherSourceChain() (gas: 545364) +OffRamp_executeSingleReport:test__execute_SkippedAlreadyExecutedMessage() (gas: 194264) +OffRamp_executeSingleReport:test__execute_SkippedAlreadyExecutedMessageUnordered() (gas: 164783) +OffRamp_getExecutionState:test_FillExecutionState() (gas: 5737068) +OffRamp_getExecutionState:test_GetDifferentChainExecutionState() (gas: 148137) +OffRamp_getExecutionState:test_GetExecutionState() (gas: 111807) +OffRamp_manuallyExecute:test_manuallyExecute() (gas: 264274) +OffRamp_manuallyExecute:test_manuallyExecute_DoesNotRevertIfUntouched() (gas: 200491) +OffRamp_manuallyExecute:test_manuallyExecute_LowGasLimit() (gas: 726733) +OffRamp_manuallyExecute:test_manuallyExecute_ReentrancyFails() (gas: 3558669) +OffRamp_manuallyExecute:test_manuallyExecute_WithGasOverride() (gas: 264969) +OffRamp_manuallyExecute:test_manuallyExecute_WithMultiReportGasOverride() (gas: 977435) +OffRamp_manuallyExecute:test_manuallyExecute_WithPartialMessages() (gas: 448783) +OffRamp_releaseOrMintSingleToken:test__releaseOrMintSingleToken() (gas: 110617) +OffRamp_releaseOrMintTokens:test_releaseOrMintTokens() (gas: 190450) +OffRamp_releaseOrMintTokens:test_releaseOrMintTokens_WithGasOverride() (gas: 193251) +OffRamp_releaseOrMintTokens:test_releaseOrMintTokens_destDenominatedDecimals() (gas: 201070) +OffRamp_setDynamicConfig:test_SetDynamicConfig() (gas: 30589) +OffRamp_setDynamicConfig:test_SetDynamicConfigWithInterceptor() (gas: 52647) +OffRamp_trialExecute:test_trialExecute() (gas: 311900) +OffRamp_trialExecute:test_trialExecute_RateLimitError() (gas: 143393) +OffRamp_trialExecute:test_trialExecute_TokenHandlingErrorIsCaught() (gas: 156111) +OffRamp_trialExecute:test_trialExecute_TokenPoolIsNotAContract() (gas: 368967) +OnRampTokenPoolReentrancy:test_OnRampTokenPoolReentrancy() (gas: 314746) +OnRamp_applyAllowlistUpdates:test_applyAllowlistUpdates() (gas: 355512) +OnRamp_applyAllowlistUpdates:test_applyAllowlistUpdates_InvalidAllowListRequestDisabledAllowListWithAdds() (gas: 20254) +OnRamp_applyDestChainConfigUpdates:test_ApplyDestChainConfigUpdates() (gas: 80771) +OnRamp_constructor:test_Constructor() (gas: 4240484) +OnRamp_forwardFromRouter:test_ForwardFromRouter() (gas: 164481) +OnRamp_forwardFromRouter:test_ForwardFromRouterExtraArgsV2() (gas: 166314) +OnRamp_forwardFromRouter:test_ForwardFromRouterExtraArgsV2AllowOutOfOrderTrue() (gas: 134406) +OnRamp_forwardFromRouter:test_ForwardFromRouterSuccessCustomExtraArgs() (gas: 165200) +OnRamp_forwardFromRouter:test_ForwardFromRouterSuccessEmptyExtraArgs() (gas: 162475) +OnRamp_forwardFromRouter:test_ForwardFromRouterSuccessLegacyExtraArgs() (gas: 165485) +OnRamp_forwardFromRouter:test_ForwardFromRouter_ConfigurableSourceRouter() (gas: 158683) +OnRamp_forwardFromRouter:test_ShouldIncrementNonceOnlyOnOrdered() (gas: 248669) +OnRamp_forwardFromRouter:test_ShouldIncrementSeqNumAndNonce() (gas: 275817) +OnRamp_forwardFromRouter:test_ShouldStoreLinkFees() (gas: 167020) +OnRamp_forwardFromRouter:test_forwardFromRouter_WithInterception() (gas: 322895) +OnRamp_getFee:test_EmptyMessage() (gas: 139333) +OnRamp_getFee:test_GetFeeOfZeroForTokenMessage() (gas: 114472) +OnRamp_getFee:test_SingleTokenMessage() (gas: 169041) +OnRamp_getTokenPool:test_GetTokenPool() (gas: 41909) +OnRamp_setDynamicConfig:test_setDynamicConfig() (gas: 65082) +OnRamp_withdrawFeeTokens:test_WithdrawFeeTokens() (gas: 136012) +PingPong_ccipReceive:test_CcipReceive() (gas: 195357) +PingPong_setOutOfOrderExecution:test_OutOfOrderExecution() (gas: 21896) +PingPong_setPaused:test_Pausing() (gas: 19036) +PingPong_startPingPong:test_StartPingPong_With_OOO() (gas: 172901) +PingPong_startPingPong:test_StartPingPong_With_Sequenced_Ordered() (gas: 199118) +RMNHome_getConfigDigests:test_getConfigDigests() (gas: 1141178) +RMNHome_promoteCandidateAndRevokeActive:test_promoteCandidateAndRevokeActive() (gas: 1155644) +RMNHome_revokeCandidate:test_revokeCandidate() (gas: 34859) +RMNHome_setCandidate:test_setCandidate() (gas: 634707) +RMNHome_setDynamicConfig:test_setDynamicConfig() (gas: 130208) +RMNRemote_constructor:test_constructor() (gas: 8917) +RMNRemote_curse:test_curse() (gas: 157280) +RMNRemote_global_curses:test_isCursed_globalCurseSubject() (gas: 76181) +RMNRemote_isBlessed:test_isBlessed() (gas: 23687) +RMNRemote_setConfig:test_setConfig_addSigner_removeSigner() (gas: 1110316) +RMNRemote_uncurse:test_uncurse() (gas: 44250) +RMNRemote_verify_withConfigSet:test_verify() (gas: 97464) +RateLimiter_constructor:test_Constructor() (gas: 22920) +RateLimiter_consume:test_ConsumeAggregateValue() (gas: 39404) +RateLimiter_consume:test_ConsumeTokens() (gas: 21918) +RateLimiter_consume:test_ConsumeUnlimited() (gas: 57382) +RateLimiter_consume:test_Refill() (gas: 48236) +RateLimiter_currentTokenBucketState:test_CurrentTokenBucketState() (gas: 49725) +RateLimiter_currentTokenBucketState:test_Refill() (gas: 63816) +RateLimiter_setTokenBucketConfig:test_SetRateLimiterConfig() (gas: 48145) +RegistryModuleOwnerCustom_registerAccessControlDefaultAdmin:test_registerAccessControlDefaultAdmin() (gas: 139023) +RegistryModuleOwnerCustom_registerAdminViaGetCCIPAdmin:test_registerAdminViaGetCCIPAdmin() (gas: 137363) +RegistryModuleOwnerCustom_registerAdminViaOwner:test_registerAdminViaOwner() (gas: 137205) +Router_applyRampUpdates:test_applyRampUpdates_OffRampUpdatesWithRouting() (gas: 11892230) +Router_applyRampUpdates:test_applyRampUpdates_OnRampDisable() (gas: 65129) +Router_ccipSend:test_CCIPSendLinkFeeNoTokenSuccess_gas() (gas: 149069) +Router_ccipSend:test_CCIPSendLinkFeeOneTokenSuccess_gas() (gas: 256025) +Router_ccipSend:test_InvalidMsgValue() (gas: 31177) +Router_ccipSend:test_NativeFeeToken() (gas: 224421) +Router_ccipSend:test_NativeFeeTokenInsufficientValue() (gas: 76287) +Router_ccipSend:test_NativeFeeTokenOverpay() (gas: 226576) +Router_ccipSend:test_NativeFeeTokenZeroValue() (gas: 67886) +Router_ccipSend:test_NonLinkFeeToken() (gas: 248256) +Router_ccipSend:test_WrappedNativeFeeToken() (gas: 228854) +Router_ccipSend:test_ccipSend_nativeFeeNoTokenSuccess_gas() (gas: 159244) +Router_ccipSend:test_ccipSend_nativeFeeOneTokenSuccess_gas() (gas: 266244) +Router_constructor:test_Constructor() (gas: 14516) +Router_getArmProxy:test_getArmProxy() (gas: 11284) +Router_getFee:test_GetFeeSupportedChain() (gas: 65608) +Router_recoverTokens:test_RecoverTokens() (gas: 59822) +Router_routeMessage:test_routeMessage_AutoExec() (gas: 47048) +Router_routeMessage:test_routeMessage_ExecutionEvent() (gas: 176876) +Router_routeMessage:test_routeMessage_ManualExec() (gas: 36899) SiloedLockReleaseTokenPool_lockOrBurn:testLockOrBurn_NonSiloedFunds_Success(uint256) (runs: 256, μ: 54330, ~: 54330) SiloedLockReleaseTokenPool_lockOrBurn:test_LockOrBurn_SiloedFunds_Success(uint256) (runs: 256, μ: 75057, ~: 75057) SiloedLockReleaseTokenPool_provideLiqudity:test_ProvideLiquidity_ChainNotSiloed_Success() (gas: 60201) SiloedLockReleaseTokenPool_provideLiqudity:test_ProvideLiquidity_ChainSiloed_Success() (gas: 80899) SiloedLockReleaseTokenPool_releaseOrMint:test_ReleaseOrMint_SiloedFunds_Success() (gas: 261601) SiloedLockReleaseTokenPool_setRebalancer:test_setRebalancer_Success() (gas: 29682) +SiloedLockReleaseTokenPool_transferLiquidity:test_transferLiquidity_MultipleTransfers_Success() (gas: 3650435) +SiloedLockReleaseTokenPool_transferLiquidity:test_transferLiquidity_Success() (gas: 3627117) +SiloedLockReleaseTokenPool_updateChainSelectorMechanism:test_updateChainSelectorMechanism_Success() (gas: 76302) SiloedLockReleaseTokenPool_withdrawLiqudity:test_withdrawLiquidity_Success() (gas: 69484) -TokenAdminRegistry_acceptAdminRole:test_acceptAdminRole() (gas: 44236) -TokenAdminRegistry_addRegistryModule:test_addRegistryModule() (gas: 67093) -TokenAdminRegistry_getAllConfiguredTokens:test_getAllConfiguredTokens_outOfBounds() (gas: 11363) -TokenAdminRegistry_getPool:test_getPool() (gas: 17679) -TokenAdminRegistry_getPools:test_getPools() (gas: 40271) -TokenAdminRegistry_isAdministrator:test_isAdministrator() (gas: 106335) -TokenAdminRegistry_proposeAdministrator:test_proposeAdministrator_module() (gas: 113043) -TokenAdminRegistry_proposeAdministrator:test_proposeAdministrator_owner() (gas: 107992) -TokenAdminRegistry_proposeAdministrator:test_proposeAdministrator_reRegisterWhileUnclaimed() (gas: 116200) -TokenAdminRegistry_removeRegistryModule:test_removeRegistryModule() (gas: 54757) -TokenAdminRegistry_setPool:test_setPool() (gas: 36207) -TokenAdminRegistry_setPool:test_setPool_ZeroAddressRemovesPool() (gas: 30852) -TokenAdminRegistry_transferAdminRole:test_transferAdminRole() (gas: 49558) -TokenPoolFactory_createTokenPool:test_createTokenPoolLockRelease_ExistingToken_predict() (gas: 12646379) -TokenPoolFactory_createTokenPool:test_createTokenPool_BurnFromMintTokenPool() (gas: 6526762) -TokenPoolFactory_createTokenPool:test_createTokenPool_ExistingRemoteToken_AndPredictPool() (gas: 13480657) -TokenPoolFactory_createTokenPool:test_createTokenPool_RemoteTokenHasDifferentDecimals() (gas: 13488141) -TokenPoolFactory_createTokenPool:test_createTokenPool_WithNoExistingRemoteContracts_predict() (gas: 13819502) -TokenPoolFactory_createTokenPool:test_createTokenPool_WithNoExistingTokenOnRemoteChain() (gas: 6315855) -TokenPoolFactory_createTokenPool:test_createTokenPool_WithRemoteTokenAndRemotePool() (gas: 6523352) -TokenPoolWithAllowList_applyAllowListUpdates:test_SetAllowList() (gas: 178482) -TokenPoolWithAllowList_applyAllowListUpdates:test_SetAllowListSkipsZero() (gas: 23580) -TokenPoolWithAllowList_getAllowList:test_GetAllowList() (gas: 23908) -TokenPoolWithAllowList_getAllowListEnabled:test_GetAllowListEnabled() (gas: 8386) -TokenPoolWithAllowList_setRouter:test_SetRouter() (gas: 24994) -TokenPool_addRemotePool:test_addRemotePool() (gas: 157121) -TokenPool_addRemotePool:test_addRemotePool_MultipleActive() (gas: 453937) -TokenPool_applyChainUpdates:test_applyChainUpdates() (gas: 592354) -TokenPool_applyChainUpdates:test_applyChainUpdates_UpdatesRemotePoolHashes() (gas: 1077690) -TokenPool_calculateLocalAmount:test_calculateLocalAmount() (gas: 93680) -TokenPool_constructor:test_constructor() (gas: 21930) -TokenPool_constructor:test_constructor_DecimalCallFails() (gas: 2836717) -TokenPool_getRemotePool:test_getRemotePools() (gas: 330476) -TokenPool_onlyOffRamp:test_onlyOffRamp() (gas: 94348) -TokenPool_onlyOnRamp:test_onlyOnRamp() (gas: 49257) -TokenPool_parseRemoteDecimals:test_parseRemoteDecimals() (gas: 14030) -TokenPool_parseRemoteDecimals:test_parseRemoteDecimals_NoDecimalsDefaultsToLocalDecimals() (gas: 9705) -TokenPool_removeRemotePool:test_removeRemotePool() (gas: 188402) -TokenPool_setRateLimitAdmin:test_SetRateLimitAdmin() (gas: 37630) -USDCBridgeMigrator_BurnLockedUSDC:test_PrimaryMechanism() (gas: 130520) -USDCBridgeMigrator_BurnLockedUSDC:test_lockOrBurn_then_BurnInCCTPMigration() (gas: 303986) -USDCBridgeMigrator_BurnLockedUSDC:test_onLockReleaseMechanism() (gas: 140171) -USDCBridgeMigrator_BurnLockedUSDC:test_onLockReleaseMechanism_thenSwitchToPrimary() (gas: 203330) -USDCBridgeMigrator_cancelMigrationProposal:test_cancelExistingCCTPMigrationProposal() (gas: 56117) -USDCBridgeMigrator_provideLiquidity:test_PrimaryMechanism() (gas: 130538) -USDCBridgeMigrator_provideLiquidity:test_lockOrBurn_then_BurnInCCTPMigration() (gas: 303986) -USDCBridgeMigrator_provideLiquidity:test_onLockReleaseMechanism() (gas: 140260) -USDCBridgeMigrator_provideLiquidity:test_onLockReleaseMechanism_thenSwitchToPrimary() (gas: 203331) -USDCBridgeMigrator_releaseOrMint:test_OnLockReleaseMechanism() (gas: 206251) -USDCBridgeMigrator_releaseOrMint:test_incomingMessageWithPrimaryMechanism() (gas: 260440) -USDCBridgeMigrator_releaseOrMint:test_unstickManualTxAfterMigration_destChain() (gas: 142763) -USDCBridgeMigrator_releaseOrMint:test_unstickManualTxAfterMigration_homeChain() (gas: 505520) -USDCBridgeMigrator_updateChainSelectorMechanism:test_PrimaryMechanism() (gas: 130520) -USDCBridgeMigrator_updateChainSelectorMechanism:test_lockOrBurn_then_BurnInCCTPMigration() (gas: 303968) -USDCBridgeMigrator_updateChainSelectorMechanism:test_onLockReleaseMechanism() (gas: 140260) -USDCBridgeMigrator_updateChainSelectorMechanism:test_onLockReleaseMechanism_thenSwitchToPrimary() (gas: 203312) -USDCTokenPool_lockOrBurn:test_LockOrBurn() (gas: 128094) -USDCTokenPool_releaseOrMint:test_ReleaseOrMintRealTx() (gas: 260189) -USDCTokenPool_supportsInterface:test_SupportsInterface() (gas: 10108) \ No newline at end of file +TokenAdminRegistry_acceptAdminRole:test_acceptAdminRole() (gas: 50567) +TokenAdminRegistry_addRegistryModule:test_addRegistryModule() (gas: 70254) +TokenAdminRegistry_getAllConfiguredTokens:test_getAllConfiguredTokens_outOfBounds() (gas: 12658) +TokenAdminRegistry_getPool:test_getPool() (gas: 18693) +TokenAdminRegistry_getPools:test_getPools() (gas: 48227) +TokenAdminRegistry_isAdministrator:test_isAdministrator() (gas: 113838) +TokenAdminRegistry_proposeAdministrator:test_proposeAdministrator_module() (gas: 123171) +TokenAdminRegistry_proposeAdministrator:test_proposeAdministrator_owner() (gas: 114161) +TokenAdminRegistry_proposeAdministrator:test_proposeAdministrator_reRegisterWhileUnclaimed() (gas: 123890) +TokenAdminRegistry_removeRegistryModule:test_removeRegistryModule() (gas: 58269) +TokenAdminRegistry_setPool:test_setPool() (gas: 41004) +TokenAdminRegistry_setPool:test_setPool_ZeroAddressRemovesPool() (gas: 35772) +TokenAdminRegistry_transferAdminRole:test_transferAdminRole() (gas: 54699) +TokenPoolFactory_createTokenPool:test_createTokenPoolLockRelease_ExistingToken_predict() (gas: 21571324) +TokenPoolFactory_createTokenPool:test_createTokenPool_BurnFromMintTokenPool() (gas: 10978652) +TokenPoolFactory_createTokenPool:test_createTokenPool_ExistingRemoteToken_AndPredictPool() (gas: 22743781) +TokenPoolFactory_createTokenPool:test_createTokenPool_RemoteTokenHasDifferentDecimals() (gas: 22754460) +TokenPoolFactory_createTokenPool:test_createTokenPool_WithNoExistingRemoteContracts_predict() (gas: 23190667) +TokenPoolFactory_createTokenPool:test_createTokenPool_WithNoExistingTokenOnRemoteChain() (gas: 10818960) +TokenPoolFactory_createTokenPool:test_createTokenPool_WithRemoteTokenAndRemotePool() (gas: 10970806) +TokenPoolWithAllowList_applyAllowListUpdates:test_SetAllowList() (gas: 189562) +TokenPoolWithAllowList_applyAllowListUpdates:test_SetAllowListSkipsZero() (gas: 26790) +TokenPoolWithAllowList_getAllowList:test_GetAllowList() (gas: 25785) +TokenPoolWithAllowList_getAllowListEnabled:test_GetAllowListEnabled() (gas: 8789) +TokenPoolWithAllowList_setRouter:test_SetRouter() (gas: 28103) +TokenPool_addRemotePool:test_addRemotePool() (gas: 163155) +TokenPool_addRemotePool:test_addRemotePool_MultipleActive() (gas: 517107) +TokenPool_applyChainUpdates:test_applyChainUpdates() (gas: 643924) +TokenPool_applyChainUpdates:test_applyChainUpdates_UpdatesRemotePoolHashes() (gas: 1115301) +TokenPool_calculateLocalAmount:test_calculateLocalAmount() (gas: 155686) +TokenPool_constructor:test_constructor() (gas: 24865) +TokenPool_constructor:test_constructor_DecimalCallFails() (gas: 4798259) +TokenPool_getRemotePool:test_getRemotePools() (gas: 342823) +TokenPool_onlyOffRamp:test_onlyOffRamp() (gas: 98116) +TokenPool_onlyOnRamp:test_onlyOnRamp() (gas: 52636) +TokenPool_parseRemoteDecimals:test_parseRemoteDecimals() (gas: 17471) +TokenPool_parseRemoteDecimals:test_parseRemoteDecimals_NoDecimalsDefaultsToLocalDecimals() (gas: 10975) +TokenPool_removeRemotePool:test_removeRemotePool() (gas: 201703) +TokenPool_setRateLimitAdmin:test_SetRateLimitAdmin() (gas: 39590) +USDCBridgeMigrator_BurnLockedUSDC:test_PrimaryMechanism() (gas: 143002) +USDCBridgeMigrator_BurnLockedUSDC:test_lockOrBurn_then_BurnInCCTPMigration() (gas: 330176) +USDCBridgeMigrator_BurnLockedUSDC:test_onLockReleaseMechanism() (gas: 149456) +USDCBridgeMigrator_BurnLockedUSDC:test_onLockReleaseMechanism_thenSwitchToPrimary() (gas: 227121) +USDCBridgeMigrator_cancelMigrationProposal:test_cancelExistingCCTPMigrationProposal() (gas: 59353) +USDCBridgeMigrator_provideLiquidity:test_PrimaryMechanism() (gas: 143002) +USDCBridgeMigrator_provideLiquidity:test_lockOrBurn_then_BurnInCCTPMigration() (gas: 330176) +USDCBridgeMigrator_provideLiquidity:test_onLockReleaseMechanism() (gas: 149545) +USDCBridgeMigrator_provideLiquidity:test_onLockReleaseMechanism_thenSwitchToPrimary() (gas: 227104) +USDCBridgeMigrator_releaseOrMint:test_OnLockReleaseMechanism() (gas: 223788) +USDCBridgeMigrator_releaseOrMint:test_incomingMessageWithPrimaryMechanism() (gas: 315027) +USDCBridgeMigrator_releaseOrMint:test_unstickManualTxAfterMigration_destChain() (gas: 162154) +USDCBridgeMigrator_releaseOrMint:test_unstickManualTxAfterMigration_homeChain() (gas: 577819) +USDCBridgeMigrator_updateChainSelectorMechanism:test_PrimaryMechanism() (gas: 143002) +USDCBridgeMigrator_updateChainSelectorMechanism:test_lockOrBurn_then_BurnInCCTPMigration() (gas: 330158) +USDCBridgeMigrator_updateChainSelectorMechanism:test_onLockReleaseMechanism() (gas: 149545) +USDCBridgeMigrator_updateChainSelectorMechanism:test_onLockReleaseMechanism_thenSwitchToPrimary() (gas: 227104) +USDCTokenPool_lockOrBurn:test_LockOrBurn() (gas: 139623) +USDCTokenPool_releaseOrMint:test_ReleaseOrMintRealTx() (gas: 314395) +USDCTokenPool_supportsInterface:test_SupportsInterface() (gas: 11436) \ No newline at end of file diff --git a/contracts/src/v0.8/ccip/pools/SiloedLockReleaseTokenPool.sol b/contracts/src/v0.8/ccip/pools/SiloedLockReleaseTokenPool.sol index 3daeb4e8db9..ecde0993663 100644 --- a/contracts/src/v0.8/ccip/pools/SiloedLockReleaseTokenPool.sol +++ b/contracts/src/v0.8/ccip/pools/SiloedLockReleaseTokenPool.sol @@ -11,9 +11,8 @@ import {IERC20} from "../../vendor/openzeppelin-solidity/v4.8.3/contracts/token/ import {SafeERC20} from "../../vendor/openzeppelin-solidity/v4.8.3/contracts/token/ERC20/utils/SafeERC20.sol"; import {EnumerableSet} from "../../vendor/openzeppelin-solidity/v4.8.3/contracts/utils/structs/EnumerableSet.sol"; -/// @notice Token pool used for tokens on their native chain. This uses a lock and release mechanism. -/// Because of lock/unlock requiring liquidity, this pool contract also has function to add and remove -/// liquidity. This allows for proper bookkeeping for both user and liquidity provider balances. +/// @notice A variation on Lock Release token pools where liquidity is shared among some chains, and stored independently +/// for others. Chains which do not share liquidity are known as siloed chains. /// @dev One token per LockReleaseTokenPool. contract SiloedLockReleaseTokenPool is TokenPool, ITypeAndVersion { using SafeERC20 for IERC20; @@ -29,12 +28,12 @@ contract SiloedLockReleaseTokenPool is TokenPool, ITypeAndVersion { event RebalancerSet(uint64 indexed remoteChainSelector, address oldRebalancer, address newRebalancer); - string public constant override typeAndVersion = "SiloedLockReleaseTokenPool 1.5.1"; + string public constant override typeAndVersion = "SiloedLockReleaseTokenPool 1.5.10-dev"; mapping(uint64 chainSelector => uint256 lockedBalance) internal s_lockedTokensByChainSelector; mapping(uint64 remoteChainSelector => address rebalancer) internal s_rebalancerByChain; - mapping(uint64 remoteChainSelector => bool shouldSiloFunds) internal s_siloedChainSelectors; + EnumerableSet.UintSet internal s_siloedChains; constructor( @@ -127,10 +126,10 @@ contract SiloedLockReleaseTokenPool is TokenPool, ITypeAndVersion { emit ChainSiloeDesignationUpdated(adds[i], true); } } + /// @notice Gets the rebalancer able to provide liquidity for a remote chain selector /// @param remoteChainSelector The CCIP specific selector for the remote chain being interacted with. /// @return The current liquidity manager, owner if the chain's funds are not siloed. - function getRebalancerByChain( uint64 remoteChainSelector ) external view returns (address) { @@ -140,6 +139,8 @@ contract SiloedLockReleaseTokenPool is TokenPool, ITypeAndVersion { /// @notice Sets the LiquidityManager address. /// @dev Only callable by the owner. + /// @param remoteChainSelector the remote chain to set. + /// @param rebalancer the address allowed to add liquidity for the given siloed chain. function setRebalancer(uint64 remoteChainSelector, address rebalancer) external onlyOwner { address oldRebalancer = s_rebalancerByChain[remoteChainSelector]; @@ -149,6 +150,7 @@ contract SiloedLockReleaseTokenPool is TokenPool, ITypeAndVersion { } /// @notice Adds liquidity to the pool. The tokens should be approved first. + /// @param remoteChainSelector the remote chain to set. /// @param amount The amount of liquidity to provide. function provideLiquidity(uint64 remoteChainSelector, uint256 amount) external { // Save gas by performing the enumerable set query once for both authorization and internal accounting @@ -165,6 +167,8 @@ contract SiloedLockReleaseTokenPool is TokenPool, ITypeAndVersion { } /// @notice Removed liquidity to the pool. The tokens will be sent to msg.sender. + /// @param remoteChainSelector the remote chain to set. If the chain is not siloed, then no accounting will be updated, + /// which can be considered the liquidity for all non-siloed chains sharing liquidity. /// @param amount The amount of liquidity to remove. function withdrawLiquidity(uint64 remoteChainSelector, uint256 amount) external onlyOwner { // If funds are siloed by chain, prevent more than has been locked from being removed from the token pool. @@ -185,6 +189,8 @@ contract SiloedLockReleaseTokenPool is TokenPool, ITypeAndVersion { /// changing which pool CCIP uses, to ensure both pools can operate. Then the pool should be changed in the /// TokenAdminRegistry, which will activate the new pool. All new transactions will use the new pool and its /// liquidity. Finally, the remaining liquidity can be transferred to the new pool using this function one more time. + /// @param remoteChainSelector the remote chain to set. If the chain is not siloed, then no accounting will be updated, + /// which can be considered the liquidity for all non-siloed chains sharing liquidity. /// @param from The address of the old pool. /// @param amount The amount of liquidity to transfer. function transferLiquidity(uint64 remoteChainSelector, address from, uint256 amount) external onlyOwner { @@ -193,6 +199,8 @@ contract SiloedLockReleaseTokenPool is TokenPool, ITypeAndVersion { SiloedLockReleaseTokenPool(from).withdrawLiquidity(remoteChainSelector, amount); + // Since both siloed and non-siloed token liquidity can be transferred, allow transfers from both, but only + // update internal accounting for siloed chains. if (s_siloedChainSelectors[remoteChainSelector]) { s_lockedTokensByChainSelector[remoteChainSelector] += amount; } diff --git a/contracts/src/v0.8/ccip/test/pools/SiloedLockReleaseTokenPool/SiloedLockReleaseTokenPool.transferLiquidity.t.sol b/contracts/src/v0.8/ccip/test/pools/SiloedLockReleaseTokenPool/SiloedLockReleaseTokenPool.transferLiquidity.t.sol new file mode 100644 index 00000000000..4e394be7a63 --- /dev/null +++ b/contracts/src/v0.8/ccip/test/pools/SiloedLockReleaseTokenPool/SiloedLockReleaseTokenPool.transferLiquidity.t.sol @@ -0,0 +1,89 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.24; + +import {SiloedLockReleaseTokenPool} from "../../../pools/SiloedLockReleaseTokenPool.sol"; +import {SiloedLockReleaseTokenPoolSetup} from "./SiloedLockReleaseTokenPoolSetup.t.sol"; + +import {Ownable2Step} from "../../../../shared/access/Ownable2Step.sol"; + +contract SiloedLockReleaseTokenPool_transferLiquidity is SiloedLockReleaseTokenPoolSetup { + function test_transferLiquidity_Success() public { + uint256 amount = 10e24; + + // Set rebalancer and provide some liquidity that can be transferred + s_siloedLockReleaseTokenPool.setRebalancer(SILOED_CHAIN_SELECTOR, OWNER); + s_siloedLockReleaseTokenPool.provideLiquidity(SILOED_CHAIN_SELECTOR, amount); + + SiloedLockReleaseTokenPool newTokenPool = new SiloedLockReleaseTokenPool( + s_token, DEFAULT_TOKEN_DECIMALS, new address[](0), address(s_mockRMNRemote), address(s_sourceRouter) + ); + + // Mark the chain on the new token pool as siloed. + uint64[] memory chainSelectors = new uint64[](1); + chainSelectors[0] = SILOED_CHAIN_SELECTOR; + newTokenPool.updateChainSelectorMechanisms(new uint64[](0), chainSelectors); + + // Begin transferring ownership + s_siloedLockReleaseTokenPool.transferOwnership(address(newTokenPool)); + + vm.expectEmit(); + emit SiloedLockReleaseTokenPool.LiquidityTransferred( + SILOED_CHAIN_SELECTOR, address(s_siloedLockReleaseTokenPool), amount + ); + + newTokenPool.transferLiquidity(SILOED_CHAIN_SELECTOR, address(s_siloedLockReleaseTokenPool), amount); + + assertEq(s_siloedLockReleaseTokenPool.owner(), address(newTokenPool)); + assertEq(newTokenPool.getLockedTokensByChain(SILOED_CHAIN_SELECTOR), amount); + assertEq(s_siloedLockReleaseTokenPool.getLockedTokensByChain(SILOED_CHAIN_SELECTOR), 0); + assertEq(s_token.balanceOf(address(newTokenPool)), amount); + assertEq(s_token.balanceOf(address(s_siloedLockReleaseTokenPool)), 0); + } + + function test_transferLiquidity_MultipleTransfers_Success() public { + uint256 amount = 10e24; + + // Set rebalancer and provide some liquidity that can be transferred + s_siloedLockReleaseTokenPool.setRebalancer(SILOED_CHAIN_SELECTOR, OWNER); + s_siloedLockReleaseTokenPool.provideLiquidity(SILOED_CHAIN_SELECTOR, amount); + + SiloedLockReleaseTokenPool newTokenPool = new SiloedLockReleaseTokenPool( + s_token, DEFAULT_TOKEN_DECIMALS, new address[](0), address(s_mockRMNRemote), address(s_sourceRouter) + ); + + // Mark the chain on the new token pool as siloed. + uint64[] memory chainSelectors = new uint64[](1); + chainSelectors[0] = SILOED_CHAIN_SELECTOR; + newTokenPool.updateChainSelectorMechanisms(new uint64[](0), chainSelectors); + + // Begin transferring ownership + s_siloedLockReleaseTokenPool.transferOwnership(address(newTokenPool)); + + vm.expectEmit(); + emit SiloedLockReleaseTokenPool.LiquidityTransferred( + SILOED_CHAIN_SELECTOR, address(s_siloedLockReleaseTokenPool), amount / 2 + ); + + // Do the first transfer which should accept ownership + newTokenPool.transferLiquidity(SILOED_CHAIN_SELECTOR, address(s_siloedLockReleaseTokenPool), amount / 2); + + assertEq(s_siloedLockReleaseTokenPool.owner(), address(newTokenPool)); + assertEq(newTokenPool.getLockedTokensByChain(SILOED_CHAIN_SELECTOR), amount / 2); + assertEq(s_siloedLockReleaseTokenPool.getLockedTokensByChain(SILOED_CHAIN_SELECTOR), amount / 2); + assertEq(s_token.balanceOf(address(newTokenPool)), amount / 2); + assertEq(s_token.balanceOf(address(s_siloedLockReleaseTokenPool)), amount / 2); + + vm.expectEmit(); + emit SiloedLockReleaseTokenPool.LiquidityTransferred( + SILOED_CHAIN_SELECTOR, address(s_siloedLockReleaseTokenPool), amount / 2 + ); + + newTokenPool.transferLiquidity(SILOED_CHAIN_SELECTOR, address(s_siloedLockReleaseTokenPool), amount / 2); + + assertEq(s_siloedLockReleaseTokenPool.owner(), address(newTokenPool)); + assertEq(newTokenPool.getLockedTokensByChain(SILOED_CHAIN_SELECTOR), amount); + assertEq(s_siloedLockReleaseTokenPool.getLockedTokensByChain(SILOED_CHAIN_SELECTOR), 0); + assertEq(s_token.balanceOf(address(newTokenPool)), amount); + assertEq(s_token.balanceOf(address(s_siloedLockReleaseTokenPool)), 0); + } +} diff --git a/contracts/src/v0.8/ccip/test/pools/SiloedLockReleaseTokenPool/SiloedLockReleaseTokenPool.updateChainSelectorMechanism.t.sol b/contracts/src/v0.8/ccip/test/pools/SiloedLockReleaseTokenPool/SiloedLockReleaseTokenPool.updateChainSelectorMechanism.t.sol new file mode 100644 index 00000000000..70dd58530c1 --- /dev/null +++ b/contracts/src/v0.8/ccip/test/pools/SiloedLockReleaseTokenPool/SiloedLockReleaseTokenPool.updateChainSelectorMechanism.t.sol @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.24; + +import {SiloedLockReleaseTokenPool} from "../../../pools/SiloedLockReleaseTokenPool.sol"; +import {SiloedLockReleaseTokenPoolSetup} from "./SiloedLockReleaseTokenPoolSetup.t.sol"; + +contract SiloedLockReleaseTokenPool_updateChainSelectorMechanism is SiloedLockReleaseTokenPoolSetup { + function test_updateChainSelectorMechanism_Success() public { + uint256 amount = 1e18; + uint64[] memory chainSelectors = new uint64[](1); + + chainSelectors[0] = SILOED_CHAIN_SELECTOR; + + vm.expectEmit(); + emit SiloedLockReleaseTokenPool.ChainSiloeDesignationUpdated(SILOED_CHAIN_SELECTOR, true); + + s_siloedLockReleaseTokenPool.updateChainSelectorMechanisms(new uint64[](0), chainSelectors); + + // Assert that the funds are siloed correctly + assertTrue(s_siloedLockReleaseTokenPool.chainFundsAreSiloed(SILOED_CHAIN_SELECTOR)); + + // Provide some Liquidity so that we can then check that it gets removed. + s_siloedLockReleaseTokenPool.setRebalancer(SILOED_CHAIN_SELECTOR, OWNER); + s_siloedLockReleaseTokenPool.provideLiquidity(SILOED_CHAIN_SELECTOR, amount); + assertEq(s_siloedLockReleaseTokenPool.getLockedTokensByChain(SILOED_CHAIN_SELECTOR), amount); + + vm.expectEmit(); + emit SiloedLockReleaseTokenPool.ChainSiloeDesignationUpdated(SILOED_CHAIN_SELECTOR, false); + + s_siloedLockReleaseTokenPool.updateChainSelectorMechanisms(chainSelectors, new uint64[](0)); + + // Check that the locked funds accounting was cleared when the funds were un-siloed. + assertFalse(s_siloedLockReleaseTokenPool.chainFundsAreSiloed(SILOED_CHAIN_SELECTOR)); + assertEq(s_siloedLockReleaseTokenPool.getLockedTokensByChain(SILOED_CHAIN_SELECTOR), 0); + } +}