[{"type":"constructor","inputs":[{"name":"tokenAdminRegistry","type":"address","internalType":"contract ITokenAdminRegistry"},{"name":"tokenAdminModule","type":"address","internalType":"contract RegistryModuleOwnerCustom"},{"name":"rmnProxy","type":"address","internalType":"address"},{"name":"ccipRouter","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployTokenAndTokenPool","inputs":[{"name":"remoteTokenPools","type":"tuple[]","internalType":"struct TokenPoolFactory.RemoteTokenPoolInfo[]","components":[{"name":"remoteChainSelector","type":"uint64","internalType":"uint64"},{"name":"remotePoolAddress","type":"bytes","internalType":"bytes"},{"name":"remotePoolInitCode","type":"bytes","internalType":"bytes"},{"name":"remoteChainConfig","type":"tuple","internalType":"struct TokenPoolFactory.RemoteChainConfig","components":[{"name":"remotePoolFactory","type":"address","internalType":"address"},{"name":"remoteRouter","type":"address","internalType":"address"},{"name":"remoteRMNProxy","type":"address","internalType":"address"},{"name":"remoteTokenDecimals","type":"uint8","internalType":"uint8"}]},{"name":"poolType","type":"uint8","internalType":"enum TokenPoolFactory.PoolType"},{"name":"remoteTokenAddress","type":"bytes","internalType":"bytes"},{"name":"remoteTokenInitCode","type":"bytes","internalType":"bytes"},{"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"}]}]},{"name":"localTokenDecimals","type":"uint8","internalType":"uint8"},{"name":"tokenInitCode","type":"bytes","internalType":"bytes"},{"name":"tokenPoolInitCode","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployTokenPoolWithExistingToken","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"localTokenDecimals","type":"uint8","internalType":"uint8"},{"name":"remoteTokenPools","type":"tuple[]","internalType":"struct TokenPoolFactory.RemoteTokenPoolInfo[]","components":[{"name":"remoteChainSelector","type":"uint64","internalType":"uint64"},{"name":"remotePoolAddress","type":"bytes","internalType":"bytes"},{"name":"remotePoolInitCode","type":"bytes","internalType":"bytes"},{"name":"remoteChainConfig","type":"tuple","internalType":"struct TokenPoolFactory.RemoteChainConfig","components":[{"name":"remotePoolFactory","type":"address","internalType":"address"},{"name":"remoteRouter","type":"address","internalType":"address"},{"name":"remoteRMNProxy","type":"address","internalType":"address"},{"name":"remoteTokenDecimals","type":"uint8","internalType":"uint8"}]},{"name":"poolType","type":"uint8","internalType":"enum TokenPoolFactory.PoolType"},{"name":"remoteTokenAddress","type":"bytes","internalType":"bytes"},{"name":"remoteTokenInitCode","type":"bytes","internalType":"bytes"},{"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"}]}]},{"name":"tokenPoolInitCode","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"poolType","type":"uint8","internalType":"enum TokenPoolFactory.PoolType"}],"outputs":[{"name":"poolAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"typeAndVersion","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"RemoteChainConfigUpdated","inputs":[{"name":"remoteChainSelector","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"remoteChainConfig","type":"tuple","indexed":false,"internalType":"struct TokenPoolFactory.RemoteChainConfig","components":[{"name":"remotePoolFactory","type":"address","internalType":"address"},{"name":"remoteRouter","type":"address","internalType":"address"},{"name":"remoteRMNProxy","type":"address","internalType":"address"},{"name":"remoteTokenDecimals","type":"uint8","internalType":"uint8"}]}],"anonymous":false},{"type":"error","name":"Create2EmptyBytecode","inputs":[]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidZeroAddress","inputs":[]}]