{
  "_format": "hh-sol-artifact-1",
  "contractName": "TokenMediatorFacet",
  "sourceName": "contracts/facets/tokens/TokenMediatorFacet.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "remoteToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "messageId",
          "type": "bytes32"
        }
      ],
      "name": "ReceiveTokens",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "remoteToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "messageId",
          "type": "bytes32"
        }
      ],
      "name": "SendTokens",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "remoteToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "receiveTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "sendAndTransferTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "sendTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610f92806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806305ab421d1461004657806398ed0f161461005b578063aa1084ae1461006e575b600080fd5b610059610054366004610bea565b610081565b005b610059610069366004610c16565b610093565b61005961007c366004610c57565b6100a6565b3361008e83828085610138565b505050565b336100a084828585610138565b50505050565b60006100b06103cd565b90506101308686868686866001600160a01b031663669f618b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100f357600080fd5b505afa158015610107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012b9190610cbb565b6104c9565b505050505050565b600061014385610674565b905060006101787f0c100d8dd79bfe0948bda0e69ddbfddb8c6ab01c830f64661d50048540757b38546001600160a01b031690565b6040516323b872dd60e01b81526001600160a01b0387811660048301523060248301526044820186905291925087918216906323b872dd90606401602060405180830381600087803b1580156101cd57600080fd5b505af11580156101e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102059190610cd4565b6102615760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d65646961746f723a207472616e7366657246726f6d206661696c604482015261195960f21b60648201526084015b60405180910390fd5b604080516001600160a01b038981166024830152858116604483015288811660648301528716608482015260a48082018790528251808303909101815260c49091019091526020810180516001600160e01b0316635508425760e11b17905260006102f484836102ef7f0c100d8dd79bfe0948bda0e69ddbfddb8c6ab01c830f64661d50048540757b375490565b610717565b90506102ff89610816565b1561036857604051632770a7eb60e21b81523060048201526024810187905289906001600160a01b03821690639dc29fac90604401600060405180830381600087803b15801561034e57600080fd5b505af1158015610362573d6000803e3d6000fd5b50505050505b604080516001600160a01b038b81168252878116602083015291810188905260608101839052818916918a16907fcfc70cc1969a1d51ef76f238e8cce0f89044512be6806446d931aa3df25344709060800160405180910390a3505050505050505050565b6000806103d8610853565b90506104c4816001600160a01b031663d67bdd256040518163ffffffff1660e01b815260040160206040518083038186803b15801561041657600080fd5b505afa15801561042a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044e9190610cf6565b826001600160a01b0316639e307dff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561048757600080fd5b505afa15801561049b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bf9190610cbb565b6108f0565b919050565b846104d381610816565b15610543576040516340c10f1960e01b81526001600160a01b038581166004830152602482018590528791908216906340c10f1990604401600060405180830381600087803b15801561052557600080fd5b505af1158015610539573d6000803e3d6000fd5b5050505050610611565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905282169063a9059cbb90604401602060405180830381600087803b15801561058d57600080fd5b505af11580156105a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c59190610cd4565b6106115760405162461bcd60e51b815260206004820152601e60248201527f546f6b656e4d65646961746f723a207472616e73666572206661696c656400006044820152606401610258565b604080516001600160a01b038981168252888116602083015291810185905260608101849052818616918716907fd408863de4c34bb160f7183995bf603121209e44bc21112c736fd2c289bbc0a39060800160405180910390a350505050505050565b6000806106b8836001600160a01b0390811660009081527f0c100d8dd79bfe0948bda0e69ddbfddb8c6ab01c830f64661d50048540757b3960205260409020541690565b90506001600160a01b038082161515906106d3908516610953565b6040516020016106e39190610d3f565b604051602081830303815290604052906107105760405162461bcd60e51b81526004016102589190610db0565b5092915050565b60006001600160a01b0384166107855760405162461bcd60e51b815260206004820152602d60248201527f4d65646961746f723a20636f6e74726163742063616e6e6f742062652074686560448201526c207a65726f206164647265737360981b6064820152608401610258565b61078d6109a7565b6001600160a01b031663dc8601b38585856040518463ffffffff1660e01b81526004016107bc93929190610dc3565b602060405180830381600087803b1580156107d657600080fd5b505af11580156107ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080e9190610cbb565b949350505050565b6001600160a01b031660009081527f0c100d8dd79bfe0948bda0e69ddbfddb8c6ab01c830f64661d50048540757b3a602052604090205460ff1690565b6000336108877fcce2d3be2f83196e0e01b6ffe351f97f670aa8c9c4fcd01c48a2d7a85722a912546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146108ad826001600160a01b0316610953565b6040516020016108bd9190610df7565b604051602081830303815290604052906108ea5760405162461bcd60e51b81526004016102589190610db0565b50919050565b6108fa82826109df565b61090c836001600160a01b0316610953565b61091583610953565b604051602001610926929190610e3c565b6040516020818303038152906040529061008e5760405162461bcd60e51b81526004016102589190610db0565b60608161097a5750506040805180820190915260048152630307830360e41b602082015290565b8160005b811561099d578061098e81610ec7565b915050600882901c915061097e565b61080e8482610a36565b60006109da7fcce2d3be2f83196e0e01b6ffe351f97f670aa8c9c4fcd01c48a2d7a85722a912546001600160a01b031690565b905090565b60008181527fcce2d3be2f83196e0e01b6ffe351f97f670aa8c9c4fcd01c48a2d7a85722a91360205260408120610a2f90846001600160a01b038116600090815260018301602052604081205415155b9392505050565b60606000610a45836002610ee2565b610a50906002610f01565b67ffffffffffffffff811115610a6857610a68610f19565b6040519080825280601f01601f191660200182016040528015610a92576020820181803683370190505b509050600360fc1b81600081518110610aad57610aad610f2f565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610adc57610adc610f2f565b60200101906001600160f81b031916908160001a9053506000610b00846002610ee2565b610b0b906001610f01565b90505b6001811115610b83576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610b3f57610b3f610f2f565b1a60f81b828281518110610b5557610b55610f2f565b60200101906001600160f81b031916908160001a90535060049490941c93610b7c81610f45565b9050610b0e565b508315610a2f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610258565b6001600160a01b0381168114610be757600080fd5b50565b60008060408385031215610bfd57600080fd5b8235610c0881610bd2565b946020939093013593505050565b600080600060608486031215610c2b57600080fd5b8335610c3681610bd2565b92506020840135610c4681610bd2565b929592945050506040919091013590565b600080600080600060a08688031215610c6f57600080fd5b8535610c7a81610bd2565b94506020860135610c8a81610bd2565b93506040860135610c9a81610bd2565b92506060860135610caa81610bd2565b949793965091946080013592915050565b600060208284031215610ccd57600080fd5b5051919050565b600060208284031215610ce657600080fd5b81518015158114610a2f57600080fd5b600060208284031215610d0857600080fd5b8151610a2f81610bd2565b60005b83811015610d2e578181015183820152602001610d16565b838111156100a05750506000910152565b7f546f6b656e4d65646961746f723a20746f6b656e206e6f7420666f756e643a20815260008251610d77816020850160208701610d13565b9190910160200192915050565b60008151808452610d9c816020860160208601610d13565b601f01601f19169290920160200192915050565b602081526000610a2f6020830184610d84565b6001600160a01b0384168152606060208201819052600090610de790830185610d84565b9050826040830152949350505050565b7f4d65646961746f723a20627269646765206e6f7420616c6c6f7765643a200000815260008251610e2f81601e850160208701610d13565b91909101601e0192915050565b70026b2b234b0ba37b91d1039b2b73232b91607d1b815260008351610e68816011850160208801610d13565b7f206e6f7420616c6c6f77656420666f7220636861696e200000000000000000006011918401918201528351610ea5816028840160208801610d13565b01602801949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415610edb57610edb610eb1565b5060010190565b6000816000190483118215151615610efc57610efc610eb1565b500290565b60008219821115610f1457610f14610eb1565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081610f5457610f54610eb1565b50600019019056fea26469706673582212204d42a02478da25bfbfba1d7ffcbb03d4418f430b7d19e96c25f660a87a35a10064736f6c63430008090033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806305ab421d1461004657806398ed0f161461005b578063aa1084ae1461006e575b600080fd5b610059610054366004610bea565b610081565b005b610059610069366004610c16565b610093565b61005961007c366004610c57565b6100a6565b3361008e83828085610138565b505050565b336100a084828585610138565b50505050565b60006100b06103cd565b90506101308686868686866001600160a01b031663669f618b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100f357600080fd5b505afa158015610107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012b9190610cbb565b6104c9565b505050505050565b600061014385610674565b905060006101787f0c100d8dd79bfe0948bda0e69ddbfddb8c6ab01c830f64661d50048540757b38546001600160a01b031690565b6040516323b872dd60e01b81526001600160a01b0387811660048301523060248301526044820186905291925087918216906323b872dd90606401602060405180830381600087803b1580156101cd57600080fd5b505af11580156101e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102059190610cd4565b6102615760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d65646961746f723a207472616e7366657246726f6d206661696c604482015261195960f21b60648201526084015b60405180910390fd5b604080516001600160a01b038981166024830152858116604483015288811660648301528716608482015260a48082018790528251808303909101815260c49091019091526020810180516001600160e01b0316635508425760e11b17905260006102f484836102ef7f0c100d8dd79bfe0948bda0e69ddbfddb8c6ab01c830f64661d50048540757b375490565b610717565b90506102ff89610816565b1561036857604051632770a7eb60e21b81523060048201526024810187905289906001600160a01b03821690639dc29fac90604401600060405180830381600087803b15801561034e57600080fd5b505af1158015610362573d6000803e3d6000fd5b50505050505b604080516001600160a01b038b81168252878116602083015291810188905260608101839052818916918a16907fcfc70cc1969a1d51ef76f238e8cce0f89044512be6806446d931aa3df25344709060800160405180910390a3505050505050505050565b6000806103d8610853565b90506104c4816001600160a01b031663d67bdd256040518163ffffffff1660e01b815260040160206040518083038186803b15801561041657600080fd5b505afa15801561042a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044e9190610cf6565b826001600160a01b0316639e307dff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561048757600080fd5b505afa15801561049b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bf9190610cbb565b6108f0565b919050565b846104d381610816565b15610543576040516340c10f1960e01b81526001600160a01b038581166004830152602482018590528791908216906340c10f1990604401600060405180830381600087803b15801561052557600080fd5b505af1158015610539573d6000803e3d6000fd5b5050505050610611565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905282169063a9059cbb90604401602060405180830381600087803b15801561058d57600080fd5b505af11580156105a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c59190610cd4565b6106115760405162461bcd60e51b815260206004820152601e60248201527f546f6b656e4d65646961746f723a207472616e73666572206661696c656400006044820152606401610258565b604080516001600160a01b038981168252888116602083015291810185905260608101849052818616918716907fd408863de4c34bb160f7183995bf603121209e44bc21112c736fd2c289bbc0a39060800160405180910390a350505050505050565b6000806106b8836001600160a01b0390811660009081527f0c100d8dd79bfe0948bda0e69ddbfddb8c6ab01c830f64661d50048540757b3960205260409020541690565b90506001600160a01b038082161515906106d3908516610953565b6040516020016106e39190610d3f565b604051602081830303815290604052906107105760405162461bcd60e51b81526004016102589190610db0565b5092915050565b60006001600160a01b0384166107855760405162461bcd60e51b815260206004820152602d60248201527f4d65646961746f723a20636f6e74726163742063616e6e6f742062652074686560448201526c207a65726f206164647265737360981b6064820152608401610258565b61078d6109a7565b6001600160a01b031663dc8601b38585856040518463ffffffff1660e01b81526004016107bc93929190610dc3565b602060405180830381600087803b1580156107d657600080fd5b505af11580156107ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080e9190610cbb565b949350505050565b6001600160a01b031660009081527f0c100d8dd79bfe0948bda0e69ddbfddb8c6ab01c830f64661d50048540757b3a602052604090205460ff1690565b6000336108877fcce2d3be2f83196e0e01b6ffe351f97f670aa8c9c4fcd01c48a2d7a85722a912546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146108ad826001600160a01b0316610953565b6040516020016108bd9190610df7565b604051602081830303815290604052906108ea5760405162461bcd60e51b81526004016102589190610db0565b50919050565b6108fa82826109df565b61090c836001600160a01b0316610953565b61091583610953565b604051602001610926929190610e3c565b6040516020818303038152906040529061008e5760405162461bcd60e51b81526004016102589190610db0565b60608161097a5750506040805180820190915260048152630307830360e41b602082015290565b8160005b811561099d578061098e81610ec7565b915050600882901c915061097e565b61080e8482610a36565b60006109da7fcce2d3be2f83196e0e01b6ffe351f97f670aa8c9c4fcd01c48a2d7a85722a912546001600160a01b031690565b905090565b60008181527fcce2d3be2f83196e0e01b6ffe351f97f670aa8c9c4fcd01c48a2d7a85722a91360205260408120610a2f90846001600160a01b038116600090815260018301602052604081205415155b9392505050565b60606000610a45836002610ee2565b610a50906002610f01565b67ffffffffffffffff811115610a6857610a68610f19565b6040519080825280601f01601f191660200182016040528015610a92576020820181803683370190505b509050600360fc1b81600081518110610aad57610aad610f2f565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610adc57610adc610f2f565b60200101906001600160f81b031916908160001a9053506000610b00846002610ee2565b610b0b906001610f01565b90505b6001811115610b83576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610b3f57610b3f610f2f565b1a60f81b828281518110610b5557610b55610f2f565b60200101906001600160f81b031916908160001a90535060049490941c93610b7c81610f45565b9050610b0e565b508315610a2f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610258565b6001600160a01b0381168114610be757600080fd5b50565b60008060408385031215610bfd57600080fd5b8235610c0881610bd2565b946020939093013593505050565b600080600060608486031215610c2b57600080fd5b8335610c3681610bd2565b92506020840135610c4681610bd2565b929592945050506040919091013590565b600080600080600060a08688031215610c6f57600080fd5b8535610c7a81610bd2565b94506020860135610c8a81610bd2565b93506040860135610c9a81610bd2565b92506060860135610caa81610bd2565b949793965091946080013592915050565b600060208284031215610ccd57600080fd5b5051919050565b600060208284031215610ce657600080fd5b81518015158114610a2f57600080fd5b600060208284031215610d0857600080fd5b8151610a2f81610bd2565b60005b83811015610d2e578181015183820152602001610d16565b838111156100a05750506000910152565b7f546f6b656e4d65646961746f723a20746f6b656e206e6f7420666f756e643a20815260008251610d77816020850160208701610d13565b9190910160200192915050565b60008151808452610d9c816020860160208601610d13565b601f01601f19169290920160200192915050565b602081526000610a2f6020830184610d84565b6001600160a01b0384168152606060208201819052600090610de790830185610d84565b9050826040830152949350505050565b7f4d65646961746f723a20627269646765206e6f7420616c6c6f7765643a200000815260008251610e2f81601e850160208701610d13565b91909101601e0192915050565b70026b2b234b0ba37b91d1039b2b73232b91607d1b815260008351610e68816011850160208801610d13565b7f206e6f7420616c6c6f77656420666f7220636861696e200000000000000000006011918401918201528351610ea5816028840160208801610d13565b01602801949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415610edb57610edb610eb1565b5060010190565b6000816000190483118215151615610efc57610efc610eb1565b500290565b60008219821115610f1457610f14610eb1565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081610f5457610f54610eb1565b50600019019056fea26469706673582212204d42a02478da25bfbfba1d7ffcbb03d4418f430b7d19e96c25f660a87a35a10064736f6c63430008090033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
