{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"name":"ERC20CallFailed","type":"error","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"success","type":"bool","internalType":"bool"},{"name":"data","type":"bytes","internalType":"bytes"}]},{"name":"IXERC20_NotHighEnoughLimits","type":"error","inputs":[]},{"name":"IllegalArgument","type":"error","inputs":[]},{"name":"IllegalState","type":"error","inputs":[]},{"name":"Unauthorized","type":"error","inputs":[]},{"name":"Approval","type":"event","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"BridgeLimitsSet","type":"event","inputs":[{"name":"_mintingLimit","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_burningLimit","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_bridge","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"BridgeTokenAdded","type":"event","inputs":[{"name":"bridgeTokenAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"BridgeTokenSet","type":"event","inputs":[{"name":"bridgeTokenAddress","type":"address","indexed":true,"internalType":"address"},{"name":"state","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"name":"Initialized","type":"event","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"name":"OwnershipTransferred","type":"event","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"Paused","type":"event","inputs":[{"name":"minter","type":"address","indexed":false,"internalType":"address"},{"name":"state","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"name":"RoleAdminChanged","type":"event","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"name":"RoleGranted","type":"event","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"RoleRevoked","type":"event","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"SetFlashMintFee","type":"event","inputs":[{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"SetMaxFlashLoan","type":"event","inputs":[{"name":"maxFlashLoan","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"SwapFeeSet","type":"event","inputs":[{"name":"bridgeTokenAddress","type":"address","indexed":true,"internalType":"address"},{"name":"bridgeToCanonical","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"canonicalToOld","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Transfer","type":"event","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"ADMIN_ROLE","type":"function","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"name":"BPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"CALLBACK_SUCCESS","type":"function","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"name":"DEFAULT_ADMIN_ROLE","type":"function","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"name":"DOMAIN_SEPARATOR","type":"function","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"name":"SENTINEL_ROLE","type":"function","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"name":"addBridgeToken","type":"function","inputs":[{"name":"bridgeTokenAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"allBridgeTokens","type":"function","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"name":"allowance","type":"function","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"approve","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"balanceOf","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"bridgeTokenEnabled","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"bridgeTokensArray","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"burn","type":"function","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"burnFrom","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"burningCurrentLimitOf","type":"function","inputs":[{"name":"_bridge","type":"address","internalType":"address"}],"outputs":[{"name":"_limit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"burningMaxLimitOf","type":"function","inputs":[{"name":"_bridge","type":"address","internalType":"address"}],"outputs":[{"name":"_limit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"decimals","type":"function","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"name":"decreaseAllowance","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"exchangeCanonicalForOld","type":"function","inputs":[{"name":"bridgeTokenAddress","type":"address","internalType":"address"},{"name":"tokenAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"bridgeTokensOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"name":"exchangeOldForCanonical","type":"function","inputs":[{"name":"bridgeTokenAddress","type":"address","internalType":"address"},{"name":"tokenAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"canonicalTokensOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"name":"exchangesPaused","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"feeExempt","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"flashFee","type":"function","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"flashLoan","type":"function","inputs":[{"name":"receiver","type":"address","internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"flashMintFee","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"getRoleAdmin","type":"function","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"name":"grantRole","type":"function","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"hasRole","type":"function","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"increaseAllowance","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"initialize","type":"function","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"},{"name":"_bridgeTokens","type":"address[]","internalType":"address[]"},{"name":"_mintCeilings","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"maxFlashLoan","type":"function","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"maxFlashLoanAmount","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"mint","type":"function","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"mintCeiling","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"mintingCurrentLimitOf","type":"function","inputs":[{"name":"_bridge","type":"address","internalType":"address"}],"outputs":[{"name":"_limit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"mintingMaxLimitOf","type":"function","inputs":[{"name":"_bridge","type":"address","internalType":"address"}],"outputs":[{"name":"_limit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"name","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"nonces","type":"function","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"owner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"pauseMinter","type":"function","inputs":[{"name":"minter","type":"address","internalType":"address"},{"name":"state","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"paused","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"permit","type":"function","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"recoverERC20","type":"function","inputs":[{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"tokenAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"renounceOwnership","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"renounceRole","type":"function","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"revokeRole","type":"function","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setBridgeToken","type":"function","inputs":[{"name":"bridgeTokenAddress","type":"address","internalType":"address"},{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setCeiling","type":"function","inputs":[{"name":"minter","type":"address","internalType":"address"},{"name":"maximum","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setFlashFee","type":"function","inputs":[{"name":"newFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setLimits","type":"function","inputs":[{"name":"_bridge","type":"address","internalType":"address"},{"name":"_mintingLimit","type":"uint256","internalType":"uint256"},{"name":"_burningLimit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setMaxFlashLoan","type":"function","inputs":[{"name":"_maxFlashLoanAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setSentinel","type":"function","inputs":[{"name":"sentinel","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setSwapFees","type":"function","inputs":[{"name":"bridgeTokenAddress","type":"address","internalType":"address"},{"name":"_bridgeToCanonical","type":"uint256","internalType":"uint256"},{"name":"_canonicalToOld","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setWhitelist","type":"function","inputs":[{"name":"minter","type":"address","internalType":"address"},{"name":"state","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"supportsInterface","type":"function","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"swapFees","type":"function","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"symbol","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"toggleExchanges","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"toggleFeesForAddress","type":"function","inputs":[{"name":"targetAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"totalMinted","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalSupply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"transfer","type":"function","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferFrom","type":"function","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferOwnership","type":"function","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"whitelisted","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"xBridges","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"minterParams","type":"tuple","components":[{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ratePerSecond","type":"uint256","internalType":"uint256"},{"name":"maxLimit","type":"uint256","internalType":"uint256"},{"name":"currentLimit","type":"uint256","internalType":"uint256"}],"internalType":"struct IXERC20.BridgeParameters"},{"name":"burnerParams","type":"tuple","components":[{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ratePerSecond","type":"uint256","internalType":"uint256"},{"name":"maxLimit","type":"uint256","internalType":"uint256"},{"name":"currentLimit","type":"uint256","internalType":"uint256"}],"internalType":"struct IXERC20.BridgeParameters"}],"stateMutability":"view"}],"metadata":{"compiler":{"version":"0.8.13+commit.abaa5c0e"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"ERC20CallFailed","type":"error"},{"inputs":[],"name":"IXERC20_NotHighEnoughLimits","type":"error"},{"inputs":[],"name":"IllegalArgument","type":"error"},{"inputs":[],"name":"IllegalState","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_mintingLimit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_burningLimit","type":"uint256"},{"indexed":true,"internalType":"address","name":"_bridge","type":"address"}],"name":"BridgeLimitsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bridgeTokenAddress","type":"address"}],"name":"BridgeTokenAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bridgeTokenAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"state","type":"bool"}],"name":"BridgeTokenSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"bool","name":"state","type":"bool"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"SetFlashMintFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxFlashLoan","type":"uint256"}],"name":"SetMaxFlashLoan","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bridgeTokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"bridgeToCanonical","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"canonicalToOld","type":"uint256"}],"name":"SwapFeeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CALLBACK_SUCCESS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SENTINEL_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bridgeTokenAddress","type":"address"}],"name":"addBridgeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allBridgeTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bridgeTokenEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bridgeTokensArray","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridge","type":"address"}],"name":"burningCurrentLimitOf","outputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_bridge","type":"address"}],"name":"burningMaxLimitOf","outputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bridgeTokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"exchangeCanonicalForOld","outputs":[{"internalType":"uint256","name":"bridgeTokensOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bridgeTokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"exchangeOldForCanonical","outputs":[{"internalType":"uint256","name":"canonicalTokensOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exchangesPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"feeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flashMintFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address[]","name":"_bridgeTokens","type":"address[]"},{"internalType":"uint256[]","name":"_mintCeilings","type":"uint256[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFlashLoanAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintCeiling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_bridge","type":"address"}],"name":"mintingCurrentLimitOf","outputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_bridge","type":"address"}],"name":"mintingMaxLimitOf","outputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"pauseMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bridgeTokenAddress","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBridgeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"setCeiling","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setFlashFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridge","type":"address"},{"internalType":"uint256","name":"_mintingLimit","type":"uint256"},{"internalType":"uint256","name":"_burningLimit","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxFlashLoanAmount","type":"uint256"}],"name":"setMaxFlashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sentinel","type":"address"}],"name":"setSentinel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bridgeTokenAddress","type":"address"},{"internalType":"uint256","name":"_bridgeToCanonical","type":"uint256"},{"internalType":"uint256","name":"_canonicalToOld","type":"uint256"}],"name":"setSwapFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"swapFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleExchanges","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"targetAddress","type":"address"}],"name":"toggleFeesForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"xBridges","outputs":[{"components":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"ratePerSecond","type":"uint256"},{"internalType":"uint256","name":"maxLimit","type":"uint256"},{"internalType":"uint256","name":"currentLimit","type":"uint256"}],"internalType":"struct IXERC20.BridgeParameters","name":"minterParams","type":"tuple"},{"components":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"ratePerSecond","type":"uint256"},{"internalType":"uint256","name":"maxLimit","type":"uint256"},{"internalType":"uint256","name":"currentLimit","type":"uint256"}],"internalType":"struct IXERC20.BridgeParameters","name":"burnerParams","type":"tuple"}],"stateMutability":"view","type":"function"}],"devdoc":{"errors":{"ERC20CallFailed(address,bool,bytes)":[{"params":{"data":"The resulting data from the call. This is error data when the call was not a success. Otherwise,                this is malformed data when the call was a success.","success":"If the call to the token was a success.","target":"The target address."}}]},"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"See {IERC20Permit-DOMAIN_SEPARATOR}."},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burn(uint256)":{"params":{"amount":"The amount of tokens to be burned."}},"burnFrom(address,uint256)":{"details":"Destroys `amount` tokens from `account`, deducting from the caller's allowance.","params":{"account":"The address the burn tokens from.","amount":"The amount of tokens to burn."}},"burningCurrentLimitOf(address)":{"params":{"_bridge":"the bridge we are viewing the limits of"},"returns":{"_limit":"The limit the bridge has"}},"burningMaxLimitOf(address)":{"params":{"_bridge":"the bridge we are viewing the limits of"},"returns":{"_limit":"The limit the bridge has"}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"flashFee(address,uint256)":{"params":{"amount":"The amount of `token` to flash mint.","token":"The address of the token.`"},"returns":{"_0":"The flash loan fee."}},"flashLoan(address,address,uint256,bytes)":{"params":{"amount":"How much to flash mint.","data":"ABI encoded data to pass to the receiver.","receiver":"The address which will receive the flash minted tokens.","token":"The address of the token to flash mint."},"returns":{"_0":"If the flash loan was successful."}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"maxFlashLoan(address)":{"params":{"token":"The address of the token."},"returns":{"_0":"The maximum amount of `token` that can be flashed loaned."}},"mint(address,uint256)":{"params":{"amount":"The amount of tokens to mint.","recipient":"The address to mint the tokens to."}},"mintingCurrentLimitOf(address)":{"params":{"_bridge":"the bridge we are viewing the limits of"},"returns":{"_limit":"The limit the bridge has"}},"mintingMaxLimitOf(address)":{"params":{"_bridge":"the bridge we are viewing the limits of"},"returns":{"_limit":"The limit the bridge has"}},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"See {IERC20Permit-nonces}."},"owner()":{"details":"Returns the address of the current owner."},"pauseMinter(address,bool)":{"params":{"minter":"The address to set as paused or unpaused.","state":"A flag indicating if the minter should be paused or unpaused."}},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"See {IERC20Permit-permit}."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setCeiling(address,uint256)":{"params":{"maximum":"The maximum amount of tokens that the minter is allowed to mint.","minter":"The address of the minter."}},"setFlashFee(uint256)":{"params":{"newFee":"The new flash mint fee."}},"setLimits(address,uint256,uint256)":{"details":"Can only be called by the owner","params":{"_bridge":"The address of the bridge we are setting the limits too","_burningLimit":"The updated burning limit we are setting to the bridge","_mintingLimit":"The updated minting limit we are setting to the bridge"}},"setMaxFlashLoan(uint256)":{"params":{"_maxFlashLoanAmount":"The maximum flashloan amount."}},"setSentinel(address)":{"params":{"sentinel":"The address to set as a sentinel."}},"setWhitelist(address,bool)":{"params":{"minter":"The account to permit to mint.","state":"A flag indicating if the minter should be able to mint."}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"errors":{"ERC20CallFailed(address,bool,bytes)":[{"notice":"An error used to indicate that a call to an ERC20 contract failed."}],"IXERC20_NotHighEnoughLimits()":[{"notice":"Reverts when a user with too low of a limit tries to call mint/burn"}],"IllegalArgument()":[{"notice":"An error used to indicate that an action could not be completed because of an illegal argument was passed         to the function."}],"IllegalState()":[{"notice":"An error used to indicate that an action could not be completed because the contract either already existed         or entered an illegal condition which is not recoverable from."}],"Unauthorized()":[{"notice":"An error used to indicate that an action could not be completed because either the `msg.sender` or         `msg.origin` is not authorized."}]},"events":{"BridgeLimitsSet(uint256,uint256,address)":{"notice":"Emits when a limit is set"},"Paused(address,bool)":{"notice":"An event which is emitted when a minter is paused from minting."},"SetFlashMintFee(uint256)":{"notice":"An event which is emitted when the flash mint fee is updated."},"SetMaxFlashLoan(uint256)":{"notice":"An event which is emitted when the max flash loan is updated."}},"kind":"user","methods":{"ADMIN_ROLE()":{"notice":"The identifier of the role which maintains other roles."},"BPS()":{"notice":"The maximum number of basis points needed to represent 100%."},"CALLBACK_SUCCESS()":{"notice":"The expected return value from a flash mint receiver"},"SENTINEL_ROLE()":{"notice":"The identifier of the role which allows accounts to mint tokens."},"burn(uint256)":{"notice":"Burns `amount` tokens from `msg.sender`."},"burningCurrentLimitOf(address)":{"notice":"Returns the current limit of a bridge"},"burningMaxLimitOf(address)":{"notice":"Returns the max limit of a bridge"},"flashFee(address,uint256)":{"notice":"Gets the flash loan fee of `amount` of `token`."},"flashLoan(address,address,uint256,bytes)":{"notice":"Performs a flash mint (called flash loan to confirm with ERC3156 standard)."},"flashMintFee()":{"notice":"Fee for flash minting"},"maxFlashLoan(address)":{"notice":"Gets the maximum amount to be flash loaned of a token."},"maxFlashLoanAmount()":{"notice":"Max flash mint amount"},"mint(address,uint256)":{"notice":"Mints tokens to `a recipient.`This function reverts if `msg.sender` is not whitelisted.This function reverts if `msg.sender` is paused."},"mintCeiling(address)":{"notice":"The amount that each bridge is permitted to mint."},"mintingCurrentLimitOf(address)":{"notice":"Returns the current limit of a bridge"},"mintingMaxLimitOf(address)":{"notice":"Returns the max limit of a bridge"},"pauseMinter(address,bool)":{"notice":"Pauses `minter` from minting tokens.This function reverts if `msg.sender` is not a sentinel."},"paused(address)":{"notice":"A set of addresses which are paused from minting new tokens."},"setCeiling(address,uint256)":{"notice":"Sets the maximum amount of tokens that `minter` is allowed to mint.This function reverts if `msg.sender` is not an admin."},"setFlashFee(uint256)":{"notice":"Sets the flash minting fee.This function reverts if `msg.sender` is not an admin."},"setLimits(address,uint256,uint256)":{"notice":"Updates the limits of any bridge"},"setMaxFlashLoan(uint256)":{"notice":"Adjusts the maximum flashloan amount."},"setSentinel(address)":{"notice":"Sets `sentinel` as a sentinel.This function reverts if `msg.sender` is not an admin."},"setWhitelist(address,bool)":{"notice":"Sets `minter` as whitelisted to mint.This function reverts if `msg.sender` is not an admin."},"totalMinted(address)":{"notice":"The amount of tokens that each bridge has already minted."},"whitelisted(address)":{"notice":"A set of addresses which are whitelisted for minting new tokens."},"xBridges(address)":{"notice":"Maps bridge address to bridge configurations. Used for xERC20 compatability."}},"version":1}},"settings":{"compilationTarget":{"src/CrossChainCanonicalAlchemicTokenV2.sol":"CrossChainCanonicalAlchemicTokenV2"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[":\"ds-test/=\"../lib/ds-test/src/",":\"forge-std/=\"lib/forge-std/src/",":ds-test/=lib/forge-std/lib/ds-test/src/",":forge-std/=lib/forge-std/src/",":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",":solmate/=lib/solmate/src/"]},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x42261ad9d6311ea9da15239f020761c5666274e984f1bc2559d7e91971b80ff0","license":"MIT","urls":["bzz-raw://6fece750c4f8854dbb00202048ab269a6a9b239b37153388b1f918f66ace4681","dweb:/ipfs/QmYBMoGKKDWxNDDsbutVanJuNmpbT7j157dd66trc9CoMM"]},"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol":{"keccak256":"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa","license":"MIT","urls":["bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c","dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b"]},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","license":"MIT","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"]},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x6c2b54ec184943843041ab77f61988b5060f6f03acbfe92cdc125f95f00891da","license":"MIT","urls":["bzz-raw://efc212a7612f6ea70f7aa1f68b9c26e7ceaa412333e23dcf66740f9d51fa689b","dweb:/ipfs/QmTkcTYoF14eN12FxyX2GQRc9KwdhYfjoJ3XJt1yvJWcaB"]},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xefe5b03cf4147c27e7e38a1b8ddb3e0dc7f0ba8f6be71627d962fa91c98943dd","license":"MIT","urls":["bzz-raw://d41b6359e78c5a2ce4c9d7697a876bcb307f05ddd9f4695831d70efcd425eebc","dweb:/ipfs/QmbmbxDte15Thu4pWG4dNYRHVSbXZZEDRSWfg8haKNjNJp"]},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x17aff86be546601617585e91fd98aad74cf39f1be65d8eb6f93b7f3c30181275","license":"MIT","urls":["bzz-raw://e75109e30d04e3fe6e31e0294ca357a695911b3599582be39e89b1207273773a","dweb:/ipfs/QmRRgRNTjXRjn7aqyaSfm8rDiCEDyoVhHnENXj6TZbrnGR"]},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol":{"keccak256":"0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff","license":"MIT","urls":["bzz-raw://75b47c3aeca7b66ea6752f8be020ec5c1c502de6ec9065272dae23d3a52196e2","dweb:/ipfs/QmUebPMHv16tYKFh5BmBQkMfRFb5b8UZ2RgVwdjxCeufVF"]},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol":{"keccak256":"0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb","license":"MIT","urls":["bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d","dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ"]},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-ERC20PermitUpgradeable.sol":{"keccak256":"0xea49d64cd4c5556e61f1edc117cc74f2e69f14b524386ef6a336a58794191b34","license":"MIT","urls":["bzz-raw://2a3e700c25793a01bb63bb38f10b6dd4d0569280fd393d9b95a142ecfa247838","dweb:/ipfs/QmX1FPaRMbMo22EudVK2xQsdcVcbNk3XKkcrzuQfQQEtMH"]},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol":{"keccak256":"0xcc70d8e2281fb3ff69e8ab242500f10142cd0a7fa8dd9e45882be270d4d09024","license":"MIT","urls":["bzz-raw://17a4063bc918df0f7bb9cbf04c6f0bb4977afab3f2fc212bc138a178312a221d","dweb:/ipfs/QmZMdvsHP5mDEAAdrK4bNeNh47TfmSFgN9qEBFTbie7zmm"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x0a3b4afc301241e2629ad192fa02e0f8626e3cf38ab6f45342bfd7afbde16ee0","license":"MIT","urls":["bzz-raw://b189423f1102ff4487e9c59a65ec400b98cc4aeef478dac8272b482e9f5ad7de","dweb:/ipfs/QmdpYHrzD8wPe5DMuEiWkXiVLsTkqD7C4tbBjWwkBQwJi2"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","license":"MIT","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/CountersUpgradeable.sol":{"keccak256":"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d","license":"MIT","urls":["bzz-raw://c41e8a7a906b8f362c8b760a44edadc61782008ea2ecf377ac5b5325bf6c3912","dweb:/ipfs/QmcXr19zuH3YLzD6RZNE6UTzvsKSckdxZQnagPoDGkCHu2"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol":{"keccak256":"0x0c2ac2e8ea31517e8a807e6fe8a3cf6de47ae76a5e8ed8ca60a209efa12aab69","license":"MIT","urls":["bzz-raw://88334f7a744ce234f624320e485c23ecdcc1a1cbb62d3251d495c0776cf465f3","dweb:/ipfs/QmX15xCk4dLM6dL3JVzQZ3t47H3nahccWaSZosEN8vKzQw"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/ECDSAUpgradeable.sol":{"keccak256":"0xba55137b57f58e805ab97462fbfc7e4b66c093a6813e29cc3f5d1569d39c27cf","license":"MIT","urls":["bzz-raw://c4bb6347403c2f3b1cf02b6108cc659730a564b0c5e629762dde8f5efe1e2a84","dweb:/ipfs/QmTndaLNN7gioSQHg6Zu55Ysj7wUNCq11MV7JE7zt9nsGz"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x5c04e814be62473d494fb8884c56327d98237df4d77668a4ab979ace139ff204","license":"MIT","urls":["bzz-raw://a17916be90701e95b591bf18797c7e64bb614fa7bd3824533dde8594922e3979","dweb:/ipfs/QmSRhaSy3g2Mp7MGxT6Ttfy7jiBeXr6iMVh2WNLRCzpZAF"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","license":"MIT","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","license":"MIT","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol":{"keccak256":"0xf6fc9552edefce9c1c324064496374107ab29105e57595b484decb35cb257e3c","license":"MIT","urls":["bzz-raw://0f83bee401a62601a0a493b6a2479b00420db2b228e4e86b6f9e26444aa9f9b9","dweb:/ipfs/QmewK7VcdumysxsHyVb6FYjTryn5qJKcfCY1Cmvmqxvn1Q"]},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x294520bb88c710bb1d3c21285f9b531acb5cb9950d77eaeef5598c7328afedb4","license":"MIT","urls":["bzz-raw://d6ea5de496f90e56940f98692c4869e78e8fc6952a416318e3986674d0aef27d","dweb:/ipfs/QmeDAgZDoMBBdEYB8LTgAy7DLc1footigkkmLuT1qwvxQv"]},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x0d9159aa6c1a0d8006fb152b0aee46a0f9b8938575ede1a0d7e186b3bc79c8d7","license":"MIT","urls":["bzz-raw://ccbfca0b4091d2f0caa762a3da47b56613d3ad06d1ce2a78dc2660be4febe49a","dweb:/ipfs/QmeV9wZXFgdeUptik1GBzGn9NQfQQdXqRZF1m52jz9tdCY"]},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","license":"MIT","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"]},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","license":"MIT","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"]},"src/AlchemicTokenV2Base.sol":{"keccak256":"0xfd660e34286ebbe3cb8b6bdb4a5a05ec48484a6535aef3e2cc41c3663da93f54","license":"GPL-3.0-or-later","urls":["bzz-raw://9336c5b71f7a8499fdbad14ed03f82440d9475c458d0eed6a6fbe4165ce04a5f","dweb:/ipfs/QmQCnucd1H5nUMjpqQksXdYdwdBRbjJo2ZbRtTySMmegbo"]},"src/CrossChainCanonicalAlchemicTokenV2.sol":{"keccak256":"0x5ec9c1742739666c066e1fefc3fa72dbdfcb77cdaa29e3e53461307ef1befcc4","license":"GPL-3.0-or-later","urls":["bzz-raw://c2692b460538c96f5aa3cd8a2ec0af79087e21fbbb2766412404ff04bf001f7f","dweb:/ipfs/QmPy33tEs9CXC4TJkdJob7JLeKhv1oZQ2UrezggVH4gXZp"]},"src/CrossChainCanonicalBase.sol":{"keccak256":"0x7651568f21b5207a699ee2cf9ae7b4ea21193e54586a77884b61da1f82974bf1","license":"MIT","urls":["bzz-raw://db0a677b830766d207ceefc6616a2dc4d0763bb0b5fa96910d412fbccf54787a","dweb:/ipfs/QmVgoDTccPcX8wWHfXFp4ifEkg7XLS9oNrfwwg6hagJdPR"]},"src/base/Errors.sol":{"keccak256":"0x58701ccc9e168980b4177b18f902461ce61d3b8ad3aae29e55a1797f35949687","urls":["bzz-raw://5c829c8840da490d42802ac94d31e3c7d9fd34d35a4ecc612069285282f5caa3","dweb:/ipfs/QmeupLTjxcJqBa2ibu7YN4qA7swfsG7i7dmow1TEhDasEe"]},"src/interfaces/IERC20Burnable.sol":{"keccak256":"0xf8c3f358b6a695111bd50bb55f5a3b15fcc64f9d4bd06eb431c1971f9f06efa0","urls":["bzz-raw://284a1f3432a769e2d1acf0a1a4332f363df2d5c8ba3805450972537e37922d3a","dweb:/ipfs/Qme67qhZwqzLrAKYctet2pUxDkSVBGwYwfjzsHyY6JkTQk"]},"src/interfaces/IERC20Mintable.sol":{"keccak256":"0x072e557e7eff54ba828d410d96e7782931a634813bccc817dc8988979a435aeb","urls":["bzz-raw://46989478564cdd6ee6a28a2ba937a46f0b75e7ebc7491b8e1097705e016676d6","dweb:/ipfs/QmdtPocBf4FQ2rPxCNEWJj5pFPEgJVnP62oKNNV831mtHj"]},"src/interfaces/external/connext/IXERC20.sol":{"keccak256":"0x6f611362c478f935e778ea63ef9b8155a11efa1ba1c69690197f9d782cfceaba","license":"UNLICENSED","urls":["bzz-raw://9d55dc095b26708e70cfb6a49d8d8b997c41182a518b93ca426a03aabfac18c3","dweb:/ipfs/QmVKxxCsLK3dXVvBT2xv33DGkyJw1AsWFDjmqNMmaJx7vB"]},"src/libraries/TokenUtils.sol":{"keccak256":"0xd5547610732254d063adf3b3fdb3adc54662cb686a30fb7b0bf41e80f7659a5d","urls":["bzz-raw://bf8dd469bf29406bbba92f86dd81d3a826a59beb2174a8b3a0069fc3e8e453fb","dweb:/ipfs/QmRehvxGEiaGvBrdf1FiGExENRdiPzDb4KYw211oD8WcnD"]}},"version":1},"matchId":"28050909","creationMatch":"exact_match","runtimeMatch":"exact_match","verifiedAt":"2026-04-18T01:36:15Z","match":"exact_match","chainId":"10","address":"0x29ef9f2fA6f636EAfE74e5FbA057c7949A37FfA6"}