{"compiler":{"version":"0.7.5+commit.eb77ed08"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_suffix","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"DailyLimitChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"ExecutionDailyLimitChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"FailedMessageFixed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"}],"name":"FeeDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"FeeDistributionFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nativeToken","type":"address"},{"indexed":true,"internalType":"address","name":"bridgedToken","type":"address"}],"name":"NewTokenRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"}],"name":"TokensBridged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"}],"name":"TokensBridgingInitiated","type":"event"},{"inputs":[],"name":"bridgeContract","outputs":[{"internalType":"contract IAMB","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_nativeToken","type":"address"}],"name":"bridgedTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgedToken","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"claimTokensFromTokenContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"dailyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"deployAndHandleBridgedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"deployAndHandleBridgedTokensAndCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"executionDailyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"executionMaxPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeManager","outputs":[{"internalType":"contract OmnibridgeFeeManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"fixFailedMessage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"fixMediatorBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_homeToken","type":"address"}],"name":"foreignTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forwardingRulesManager","outputs":[{"internalType":"contract MultiTokenForwardingRulesManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasLimitManager","outputs":[{"internalType":"contract SelectorTokenGasLimitManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBridgeInterfacesVersion","outputs":[{"internalType":"uint64","name":"major","type":"uint64"},{"internalType":"uint64","name":"minor","type":"uint64"},{"internalType":"uint64","name":"patch","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getBridgeMode","outputs":[{"internalType":"bytes4","name":"_data","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCurrentDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"handleBridgedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"handleBridgedTokensAndCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"handleNativeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"handleNativeTokensAndCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_foreignToken","type":"address"}],"name":"homeTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgeContract","type":"address"},{"internalType":"address","name":"_mediatorContract","type":"address"},{"internalType":"uint256[3]","name":"_dailyLimitMaxPerTxMinPerTxArray","type":"uint256[3]"},{"internalType":"uint256[2]","name":"_executionDailyLimitExecutionMaxPerTxArray","type":"uint256[2]"},{"internalType":"address","name":"_gasLimitManager","type":"address"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_tokenFactory","type":"address"},{"internalType":"address","name":"_feeManager","type":"address"},{"internalType":"address","name":"_forwardingRulesManager","type":"address"}],"name":"initialize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"isBridgedTokenDeployAcknowledged","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"isRegisteredAsNativeToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"isTokenRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"maxAvailablePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"maxPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"mediatorBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mediatorContractOnOtherSide","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"messageFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"minPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgedToken","type":"address"}],"name":"nativeTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onTokenTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC677","name":"token","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"relayTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC677","name":"token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"relayTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC677","name":"token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"relayTokensAndCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"requestFailedMessageFix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgeContract","type":"address"}],"name":"setBridgeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nativeToken","type":"address"},{"internalType":"address","name":"_bridgedToken","type":"address"}],"name":"setCustomTokenAddressPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_dailyLimit","type":"uint256"}],"name":"setDailyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_dailyLimit","type":"uint256"}],"name":"setExecutionDailyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_maxPerTx","type":"uint256"}],"name":"setExecutionMaxPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeManager","type":"address"}],"name":"setFeeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"setForwardingRulesManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"setGasLimitManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_maxPerTx","type":"uint256"}],"name":"setMaxPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mediatorContract","type":"address"}],"name":"setMediatorContractOnOtherSide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_minPerTx","type":"uint256"}],"name":"setMinPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenFactory","type":"address"}],"name":"setTokenFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenFactory","outputs":[{"internalType":"contract TokenFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_day","type":"uint256"}],"name":"totalExecutedPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_day","type":"uint256"}],"name":"totalSpentPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenFactory","type":"address"},{"internalType":"address","name":"_forwardingRulesManager","type":"address"},{"internalType":"address","name":"_gasLimitManager","type":"address"},{"internalType":"uint256","name":"_dailyLimit","type":"uint256"}],"name":"upgradeToReverseMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withinExecutionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withinLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Home side implementation for multi-token mediator intended to work on top of AMB bridge. It is designed to be used as an implementation contract of EternalStorageProxy contract.","kind":"dev","methods":{"bridgeContract()":{"details":"Get the AMB interface for the bridge contract address","returns":{"_0":"AMB interface for the bridge contract address"}},"bridgedTokenAddress(address)":{"details":"Retrieves address of the bridged token contract associated with a specific native token contract on the other side.","params":{"_nativeToken":"address of the native token contract on the other side."},"returns":{"_0":"address of the deployed bridged token contract."}},"claimTokens(address,address)":{"details":"Claims stuck tokens. Only unsupported tokens can be claimed. When dealing with already supported tokens, fixMediatorBalance can be used instead.","params":{"_to":"address of tokens receiver","_token":"address of claimed token, address(0) for native"}},"claimTokensFromTokenContract(address,address,address)":{"details":"Withdraws erc20 tokens or native coins from the bridged token contract. Only the proxy owner is allowed to call this method.","params":{"_bridgedToken":"address of the bridged token contract.","_to":"address of the tokens/coins receiver.","_token":"address of the claimed token or address(0) for native coins."}},"dailyLimit(address)":{"details":"Retrieves current daily limit for a particular token contract.","params":{"_token":"address of the token contract."},"returns":{"_0":"daily limit on tokens that can be sent through the bridge per day."}},"deployAndHandleBridgedTokens(address,string,string,uint8,address,uint256)":{"details":"Handles the bridged tokens for the first time, includes deployment of new TokenProxy contract. Checks that the value is inside the execution limits and invokes the Mint or Unlock accordingly.","params":{"_decimals":"decimals of the bridge foreign token.","_name":"name of the native token, name suffix will be appended, if empty, symbol will be used instead.","_recipient":"address that will receive the tokens.","_symbol":"symbol of the bridged token, if empty, name will be used instead.","_token":"address of the native ERC20/ERC677 token on the other side.","_value":"amount of tokens to be received."}},"deployAndHandleBridgedTokensAndCall(address,string,string,uint8,address,uint256,bytes)":{"details":"Handles the bridged tokens for the first time, includes deployment of new TokenProxy contract. Executes a callback on the receiver. Checks that the value is inside the execution limits and invokes the Mint accordingly.","params":{"_data":"additional data passed from the other chain.","_decimals":"decimals of the bridge foreign token.","_name":"name of the native token, name suffix will be appended, if empty, symbol will be used instead.","_recipient":"address that will receive the tokens.","_symbol":"symbol of the bridged token, if empty, name will be used instead.","_token":"address of the native ERC20/ERC677 token on the other side.","_value":"amount of tokens to be received."}},"executionDailyLimit(address)":{"details":"Retrieves current execution daily limit for a particular token contract.","params":{"_token":"address of the token contract."},"returns":{"_0":"daily limit on tokens that can be received from the bridge on the other side per day."}},"executionMaxPerTx(address)":{"details":"Retrieves current maximum execution amount of tokens per one transfer for a particular token contract.","params":{"_token":"address of the token contract."},"returns":{"_0":"maximum amount on tokens that can received from the bridge on the other side in one transaction."}},"feeManager()":{"details":"Retrieves an address of the fee manager contract.","returns":{"_0":"address of the fee manager contract."}},"fixFailedMessage(bytes32)":{"details":"Handles the request to fix transferred assets which bridged message execution failed on the other network. It uses the information stored by passMessage method when the assets were initially transferred","params":{"_messageId":"id of the message which execution failed on the other network."}},"fixMediatorBalance(address,address)":{"details":"Allows to send to the other network the amount of locked tokens that can be forced into the contract without the invocation of the required methods. (e. g. regular transfer without a call to onTokenTransfer)","params":{"_receiver":"the address that will receive the tokens on the other network.","_token":"address of the token contract. Before calling this method, it must be carefully investigated how imbalance happened in order to avoid an attempt to steal the funds from a token with double addresses (e.g. TUSD is accessible at both 0x8dd5fbCe2F6a956C3022bA3663759011Dd51e73E and 0x0000000000085d4780B73119b644AE5ecd22b376)"}},"foreignTokenAddress(address)":{"details":"Alias for nativeTokenAddress for interface compatibility with the prior version of the Home mediator.","params":{"_homeToken":"address of the created bridged token contract on this side."},"returns":{"_0":"address of the native token contract on the other side of the bridge."}},"forwardingRulesManager()":{"details":"Retrieves an address of the forwarding rules manager contract.","returns":{"_0":"address of the forwarding rules manager contract."}},"gasLimitManager()":{"details":"Retrieves an address of the gas limit manager contract.","returns":{"_0":"address of the gas limit manager contract."}},"getBridgeInterfacesVersion()":{"details":"Tells the bridge interface version that this contract supports.","returns":{"major":"value of the version","minor":"value of the version","patch":"value of the version"}},"getBridgeMode()":{"details":"Tells the bridge mode that this contract supports.","returns":{"_data":"4 bytes representing the bridge mode"}},"getCurrentDay()":{"details":"Returns current day number.","returns":{"_0":"day number."}},"handleBridgedTokens(address,address,uint256)":{"details":"Handles the bridged tokens for the already registered token pair. Checks that the value is inside the execution limits and invokes the Mint accordingly.","params":{"_recipient":"address that will receive the tokens.","_token":"address of the native ERC20/ERC677 token on the other side.","_value":"amount of tokens to be received."}},"handleBridgedTokensAndCall(address,address,uint256,bytes)":{"details":"Handles the bridged tokens for the already registered token pair. Checks that the value is inside the execution limits and invokes the Unlock accordingly. Executes a callback on the receiver.","params":{"_data":"additional transfer data passed from the other side.","_recipient":"address that will receive the tokens.","_token":"address of the native ERC20/ERC677 token on the other side.","_value":"amount of tokens to be received."}},"handleNativeTokens(address,address,uint256)":{"details":"Handles the bridged tokens that are native to this chain. Checks that the value is inside the execution limits and invokes the Unlock accordingly.","params":{"_recipient":"address that will receive the tokens.","_token":"native ERC20 token.","_value":"amount of tokens to be received."}},"handleNativeTokensAndCall(address,address,uint256,bytes)":{"details":"Handles the bridged tokens that are native to this chain. Checks that the value is inside the execution limits and invokes the Unlock accordingly. Executes a callback on the receiver.","params":{"_data":"additional transfer data passed from the other side.","_recipient":"address that will receive the tokens.","_token":"native ERC20 token.","_value":"amount of tokens to be received."}},"homeTokenAddress(address)":{"details":"Alias for bridgedTokenAddress for interface compatibility with the prior version of the Home mediator.","params":{"_foreignToken":"address of the native token contract on the other side."},"returns":{"_0":"address of the deployed bridged token contract."}},"initialize(address,address,uint256[3],uint256[2],address,address,address,address,address)":{"details":"Stores the initial parameters of the mediator.","params":{"_bridgeContract":"the address of the AMB bridge contract.","_dailyLimitMaxPerTxMinPerTxArray":"array with limit values for the assets to be bridged to the other network.   [ 0 = dailyLimit, 1 = maxPerTx, 2 = minPerTx ]","_executionDailyLimitExecutionMaxPerTxArray":"array with limit values for the assets bridged from the other network.   [ 0 = executionDailyLimit, 1 = executionMaxPerTx ]","_feeManager":"address of the OmnibridgeFeeManager contract that will be used for fee distribution.","_forwardingRulesManager":"address of the MultiTokenForwardingRulesManager contract that will be used for managing lane permissions.","_gasLimitManager":"the gas limit manager contract address.","_mediatorContract":"the address of the mediator contract on the other network.","_owner":"address of the owner of the mediator contract.","_tokenFactory":"address of the TokenFactory contract that will be used for the deployment of new tokens."}},"isBridgedTokenDeployAcknowledged(address)":{"details":"Checks if for a given native token, the deployment of its bridged alternative was already acknowledged.","params":{"_token":"address of native token contract."},"returns":{"_0":"true, if bridged token was already deployed."}},"isRegisteredAsNativeToken(address)":{"details":"Checks if a given token is a bridged token that is native to this side of the bridge.","params":{"_token":"address of token contract."},"returns":{"_0":"message id of the send message."}},"isTokenRegistered(address)":{"details":"Checks if specified token was already bridged at least once.","params":{"_token":"address of the token contract."},"returns":{"_0":"true, if token address is address(0) or token was already bridged."}},"maxAvailablePerTx(address)":{"details":"Retrieves maximum available bridge amount per one transaction taking into account maxPerTx() and dailyLimit() parameters.","params":{"_token":"address of the token contract, or address(0) for the default limit."},"returns":{"_0":"minimum of maxPerTx parameter and remaining daily quota."}},"maxPerTx(address)":{"details":"Retrieves current maximum amount of tokens per one transfer for a particular token contract.","params":{"_token":"address of the token contract."},"returns":{"_0":"maximum amount on tokens that can be sent through the bridge in one transfer."}},"mediatorBalance(address)":{"details":"Tells the expected token balance of the contract.","params":{"_token":"address of token contract."},"returns":{"_0":"the current tracked token balance of the contract."}},"mediatorContractOnOtherSide()":{"details":"Tells the mediator contract address from the other network.","returns":{"_0":"the address of the mediator contract."}},"messageFixed(bytes32)":{"details":"Tells if a message sent to the AMB bridge has been fixed.","returns":{"_0":"bool indicating the status of the message."}},"minPerTx(address)":{"details":"Retrieves current minimum amount of tokens per one transfer for a particular token contract.","params":{"_token":"address of the token contract."},"returns":{"_0":"minimum amount on tokens that can be sent through the bridge in one transfer."}},"nativeTokenAddress(address)":{"details":"Retrieves address of the native token contract associated with a specific bridged token contract.","params":{"_bridgedToken":"address of the created bridged token contract on this side."},"returns":{"_0":"address of the native token contract on the other side of the bridge."}},"onTokenTransfer(address,uint256,bytes)":{"details":"ERC677 transfer callback function.","params":{"_data":"additional transfer data, can be used for passing alternative receiver address.","_from":"address of tokens sender.","_value":"amount of transferred tokens."}},"owner()":{"details":"Tells the address of the owner","returns":{"_0":"the address of the owner"}},"relayTokens(address,address,uint256)":{"details":"Initiate the bridge operation for some amount of tokens from msg.sender. The user should first call Approve method of the ERC677 token.","params":{"_receiver":"address that will receive the native tokens on the other network.","_value":"amount of tokens to be transferred to the other network.","token":"bridged token contract address."}},"relayTokens(address,uint256)":{"details":"Initiate the bridge operation for some amount of tokens from msg.sender to msg.sender on the other side. The user should first call Approve method of the ERC677 token.","params":{"_value":"amount of tokens to be transferred to the other network.","token":"bridged token contract address."}},"relayTokensAndCall(address,address,uint256,bytes)":{"details":"Initiate the bridge operation for some amount of tokens from msg.sender. The user should first call Approve method of the ERC677 token.","params":{"_data":"additional transfer data to be used on the other side.","_receiver":"address that will receive the native tokens on the other network.","_value":"amount of tokens to be transferred to the other network.","token":"bridged token contract address."}},"requestFailedMessageFix(bytes32)":{"details":"Method to be called when a bridged message execution failed. It will generate a new message requesting to fix/roll back the transferred assets on the other network.","params":{"_messageId":"id of the message which execution failed."}},"setBridgeContract(address)":{"details":"Sets the AMB bridge contract address. Only the owner can call this method.","params":{"_bridgeContract":"the address of the bridge contract."}},"setCustomTokenAddressPair(address,address)":{"details":"Allows to pre-set the bridged token contract for not-yet bridged token. Only the owner can call this method.","params":{"_bridgedToken":"address of the bridged token contract.","_nativeToken":"address of the token contract on the other side that was not yet bridged."}},"setDailyLimit(address,uint256)":{"details":"Updates daily limit for the particular token. Only owner can call this method.","params":{"_dailyLimit":"daily allowed amount of bridged tokens, should be greater than maxPerTx. 0 value is also allowed, will stop the bridge operations in outgoing direction.","_token":"address of the token contract, or address(0) for configuring the efault limit."}},"setExecutionDailyLimit(address,uint256)":{"details":"Updates execution daily limit for the particular token. Only owner can call this method.","params":{"_dailyLimit":"daily allowed amount of executed tokens, should be greater than executionMaxPerTx. 0 value is also allowed, will stop the bridge operations in incoming direction.","_token":"address of the token contract, or address(0) for configuring the default limit."}},"setExecutionMaxPerTx(address,uint256)":{"details":"Updates execution maximum per transaction for the particular token. Only owner can call this method.","params":{"_maxPerTx":"maximum amount of executed tokens per one transaction, should be less than executionDailyLimit. 0 value is also allowed, will stop the bridge operations in incoming direction.","_token":"address of the token contract, or address(0) for configuring the default limit."}},"setFeeManager(address)":{"details":"Updates an address of the used fee manager contract used for calculating and distributing fees.","params":{"_feeManager":"address of fee manager contract."}},"setForwardingRulesManager(address)":{"details":"Updates an address of the used forwarding rules manager contract.","params":{"_manager":"address of forwarding rules manager contract."}},"setGasLimitManager(address)":{"details":"Updates an address of the used gas limit manager contract.","params":{"_manager":"address of gas limit manager contract."}},"setMaxPerTx(address,uint256)":{"details":"Updates maximum per transaction for the particular token. Only owner can call this method.","params":{"_maxPerTx":"maximum amount of tokens per one transaction, should be less than dailyLimit, greater than minPerTx. 0 value is also allowed, will stop the bridge operations in outgoing direction.","_token":"address of the token contract, or address(0) for configuring the default limit."}},"setMediatorContractOnOtherSide(address)":{"details":"Sets the mediator contract address from the other network. Only the owner can call this method.","params":{"_mediatorContract":"the address of the mediator contract."}},"setMinPerTx(address,uint256)":{"details":"Updates minimum per transaction for the particular token. Only owner can call this method.","params":{"_minPerTx":"minimum amount of tokens per one transaction, should be less than maxPerTx and dailyLimit.","_token":"address of the token contract, or address(0) for configuring the default limit."}},"setTokenFactory(address)":{"details":"Updates an address of the used TokenFactory contract used for creating new tokens.","params":{"_tokenFactory":"address of TokenFactory contract."}},"tokenFactory()":{"details":"Retrieves an address of the token factory contract.","returns":{"_0":"address of the TokenFactory contract."}},"totalExecutedPerDay(address,uint256)":{"details":"Retrieves the total executed amount for particular token during specific day.","params":{"_day":"day number for which spent amount if requested.","_token":"address of the token contract."},"returns":{"_0":"amount of tokens received from the bridge from the other side."}},"totalSpentPerDay(address,uint256)":{"details":"Retrieves the total spent amount for particular token during specific day.","params":{"_day":"day number for which spent amount if requested.","_token":"address of the token contract."},"returns":{"_0":"amount of tokens sent through the bridge to the other side."}},"transferOwnership(address)":{"details":"Allows the current owner to transfer control of the contract to a newOwner.","params":{"newOwner":"the address to transfer ownership to."}},"upgradeToReverseMode(address,address,address,uint256)":{"params":{"_dailyLimit":"default daily limits used before stopping the bridge operation.","_forwardingRulesManager":"address of the deployed MultiTokenForwardingRulesManager contract.","_gasLimitManager":"address of the deployed SelectorTokenGasLimitManager contract.","_tokenFactory":"address of the deployed TokenFactory contract."}},"withinExecutionLimit(address,uint256)":{"details":"Checks that bridged amount of tokens conforms to the configured execution limits.","params":{"_amount":"amount of bridge tokens.","_token":"address of the token contract."},"returns":{"_0":"true, if specified amount can be processed and executed."}},"withinLimit(address,uint256)":{"details":"Checks that bridged amount of tokens conforms to the configured limits.","params":{"_amount":"amount of bridge tokens.","_token":"address of the token contract."},"returns":{"_0":"true, if specified amount can be bridged."}}},"title":"HomeOmnibridge","version":1},"userdoc":{"kind":"user","methods":{"upgradeToReverseMode(address,address,address,uint256)":{"notice":"One-time function to be used together with upgradeToAndCall method. Sets the token factory contract. Resumes token bridging in the home to foreign direction."}},"version":1}},"settings":{"compilationTarget":{"Contract.sol":"HomeOmnibridge"},"evmVersion":"istanbul","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[]},"sources":{"Contract.sol":{"keccak256":"0xa19f6453cf82b0d69fecb76ae1bd63771ab32f61631e83b94e2f43f987b9fe4e","urls":["bzz-raw://f246c63ec5ad71d55bedd5fbd36fd841a5107cdb4d9bfe0e5fca7059cd7c9bf6","dweb:/ipfs/QmQPt2mv4L9xrDG26Yep43m9ZwnX3hAxyUHVZA2ng3NxS9"]}},"version":1}