[{"type":"constructor","inputs":[{"name":"feeQuoter","type":"address","internalType":"address"},{"name":"authorizedCallers","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"applyAuthorizedCallerUpdates","inputs":[{"name":"authorizedCallerArgs","type":"tuple","internalType":"struct AuthorizedCallers.AuthorizedCallerArgs","components":[{"name":"addedCallers","type":"address[]","internalType":"address[]"},{"name":"removedCallers","type":"address[]","internalType":"address[]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"applyRateLimiterConfigUpdates","inputs":[{"name":"rateLimiterUpdates","type":"tuple[]","internalType":"struct MultiAggregateRateLimiter.RateLimiterConfigArgs[]","components":[{"name":"remoteChainSelector","type":"uint64","internalType":"uint64"},{"name":"isOutboundLane","type":"bool","internalType":"bool"},{"name":"rateLimiterConfig","type":"tuple","internalType":"struct RateLimiter.Config","components":[{"name":"isEnabled","type":"bool","internalType":"bool"},{"name":"capacity","type":"uint128","internalType":"uint128"},{"name":"rate","type":"uint128","internalType":"uint128"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRateLimiterState","inputs":[{"name":"remoteChainSelector","type":"uint64","internalType":"uint64"},{"name":"isOutboundLane","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"tuple","internalType":"struct RateLimiter.TokenBucket","components":[{"name":"tokens","type":"uint128","internalType":"uint128"},{"name":"lastUpdated","type":"uint32","internalType":"uint32"},{"name":"isEnabled","type":"bool","internalType":"bool"},{"name":"capacity","type":"uint128","internalType":"uint128"},{"name":"rate","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"getAllAuthorizedCallers","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getAllRateLimitTokens","inputs":[{"name":"remoteChainSelector","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"localTokens","type":"address[]","internalType":"address[]"},{"name":"remoteTokens","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"getFeeQuoter","inputs":[],"outputs":[{"name":"feeQuoter","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"onInboundMessage","inputs":[{"name":"message","type":"tuple","internalType":"struct Client.Any2EVMMessage","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"sourceChainSelector","type":"uint64","internalType":"uint64"},{"name":"sender","type":"bytes","internalType":"bytes"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"destTokenAmounts","type":"tuple[]","internalType":"struct Client.EVMTokenAmount[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onOutboundMessage","inputs":[{"name":"destChainSelector","type":"uint64","internalType":"uint64"},{"name":"message","type":"tuple","internalType":"struct Client.EVM2AnyMessage","components":[{"name":"receiver","type":"bytes","internalType":"bytes"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"tokenAmounts","type":"tuple[]","internalType":"struct Client.EVMTokenAmount[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"feeToken","type":"address","internalType":"address"},{"name":"extraArgs","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setFeeQuoter","inputs":[{"name":"newFeeQuoter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"typeAndVersion","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"updateRateLimitTokens","inputs":[{"name":"removes","type":"tuple[]","internalType":"struct MultiAggregateRateLimiter.LocalRateLimitToken[]","components":[{"name":"remoteChainSelector","type":"uint64","internalType":"uint64"},{"name":"localToken","type":"address","internalType":"address"}]},{"name":"adds","type":"tuple[]","internalType":"struct MultiAggregateRateLimiter.RateLimitTokenArgs[]","components":[{"name":"localTokenArgs","type":"tuple","internalType":"struct MultiAggregateRateLimiter.LocalRateLimitToken","components":[{"name":"remoteChainSelector","type":"uint64","internalType":"uint64"},{"name":"localToken","type":"address","internalType":"address"}]},{"name":"remoteToken","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AuthorizedCallerAdded","inputs":[{"name":"caller","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AuthorizedCallerRemoved","inputs":[{"name":"caller","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ConfigChanged","inputs":[{"name":"config","type":"tuple","indexed":false,"internalType":"struct RateLimiter.Config","components":[{"name":"isEnabled","type":"bool","internalType":"bool"},{"name":"capacity","type":"uint128","internalType":"uint128"},{"name":"rate","type":"uint128","internalType":"uint128"}]}],"anonymous":false},{"type":"event","name":"FeeQuoterSet","inputs":[{"name":"newFeeQuoter","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferRequested","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RateLimiterConfigUpdated","inputs":[{"name":"remoteChainSelector","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"isOutboundLane","type":"bool","indexed":false,"internalType":"bool"},{"name":"config","type":"tuple","indexed":false,"internalType":"struct RateLimiter.Config","components":[{"name":"isEnabled","type":"bool","internalType":"bool"},{"name":"capacity","type":"uint128","internalType":"uint128"},{"name":"rate","type":"uint128","internalType":"uint128"}]}],"anonymous":false},{"type":"event","name":"TokenAggregateRateLimitAdded","inputs":[{"name":"remoteChainSelector","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"remoteToken","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"localToken","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokenAggregateRateLimitRemoved","inputs":[{"name":"remoteChainSelector","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"localToken","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokensConsumed","inputs":[{"name":"tokens","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AggregateValueMaxCapacityExceeded","inputs":[{"name":"capacity","type":"uint256","internalType":"uint256"},{"name":"requested","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"AggregateValueRateLimitReached","inputs":[{"name":"minWaitInSeconds","type":"uint256","internalType":"uint256"},{"name":"available","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"BucketOverfilled","inputs":[]},{"type":"error","name":"CannotTransferToSelf","inputs":[]},{"type":"error","name":"DisabledNonZeroRateLimit","inputs":[{"name":"config","type":"tuple","internalType":"struct RateLimiter.Config","components":[{"name":"isEnabled","type":"bool","internalType":"bool"},{"name":"capacity","type":"uint128","internalType":"uint128"},{"name":"rate","type":"uint128","internalType":"uint128"}]}]},{"type":"error","name":"InvalidRateLimitRate","inputs":[{"name":"rateLimiterConfig","type":"tuple","internalType":"struct RateLimiter.Config","components":[{"name":"isEnabled","type":"bool","internalType":"bool"},{"name":"capacity","type":"uint128","internalType":"uint128"},{"name":"rate","type":"uint128","internalType":"uint128"}]}]},{"type":"error","name":"MessageValidationError","inputs":[{"name":"errorReason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"MustBeProposedOwner","inputs":[]},{"type":"error","name":"OnlyCallableByOwner","inputs":[]},{"type":"error","name":"OwnerCannotBeZero","inputs":[]},{"type":"error","name":"PriceNotFoundForToken","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"RateLimitMustBeDisabled","inputs":[]},{"type":"error","name":"TokenMaxCapacityExceeded","inputs":[{"name":"capacity","type":"uint256","internalType":"uint256"},{"name":"requested","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"}]},{"type":"error","name":"TokenRateLimitReached","inputs":[{"name":"minWaitInSeconds","type":"uint256","internalType":"uint256"},{"name":"available","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"}]},{"type":"error","name":"UnauthorizedCaller","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"ZeroAddressNotAllowed","inputs":[]},{"type":"error","name":"ZeroChainSelectorNotAllowed","inputs":[]}]