{
  "_format": "hh-sol-artifact-1",
  "contractName": "TokenRecoveryFacetMock",
  "sourceName": "contracts/mocks/security/facets/TokenRecoveryFacetMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InconsistentArrayLengths",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "IncorrectTokenContractType",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotContractOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "__msgData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC20[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC20s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC721[]",
          "name": "contracts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC721s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60a034606d57601f610bc338819003918201601f19168301916001600160401b03831184841017607257808492602094604052833981010312606d57516001600160a01b0381168103606d57608052604051610b3a908161008982396080518181816108aa01526109f00152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806331e66e1e1461069357806373c8a95814610510578063c3666c36146102c75763f7ba94bd0361000e573461026b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026b5760043567ffffffffffffffff811161026b5761009b903690600401610716565b60243567ffffffffffffffff811161026b576100bb903690600401610716565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806100fc6109d9565b925416911690810361029a57508181036102705760005b81811061011c57005b6101278183876107da565b3573ffffffffffffffffffffffffffffffffffffffff811680910361026b576101518285876107da565b359081471061023957600080809381935af13d15610231573d9067ffffffffffffffff821161020257604051916101b060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461083a565b82523d6000602084013e5b156101c95750600101610113565b8051156101d857602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060906101bb565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461026b576102d536610747565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061031a6109d9565b925416911690810361029a5750808214801590610506575b6102705760005b82811061034257005b73ffffffffffffffffffffffffffffffffffffffff61036a61036583858a6107da565b610819565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa90811561049f576000916104d8575b50156104ab575073ffffffffffffffffffffffffffffffffffffffff6103f961036583858a6107da565b16906104096103658286896107da565b9161041582878b6107da565b3592813b1561026b57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af191821561049f5760019261048e575b5001610339565b60006104999161083a565b88610487565b6040513d6000823e3d90fd5b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6104f9915060203d81116104ff575b6104f1818361083a565b81019061087b565b896103cf565b503d6104e7565b5082821415610332565b3461026b5761051e36610747565b949293917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806105616109d9565b925416911690810361029a5750808314801590610689575b6102705760005b83811061058957005b6105948183886107da565b3573ffffffffffffffffffffffffffffffffffffffff81169081810361026b5760006020918a826105d5876105ce610365828f8f906107da565b938b6107da565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb00000000000000000000000000000000000000000000000000000000865216602483015260448201526044815261063060648261083a565b51925af11561049f576000513d6106805750803b155b6106535750600101610580565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60011415610646565b5085831415610579565b3461026b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026b5760406106cc610893565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b9181601f8401121561026b5782359167ffffffffffffffff831161026b576020808501948460051b01011161026b57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261026b5760043567ffffffffffffffff811161026b578161079091600401610716565b9290929160243567ffffffffffffffff811161026b57816107b391600401610716565b929092916044359067ffffffffffffffff821161026b576107d691600401610716565b9091565b91908110156107ea5760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff8116810361026b5790565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761020257604052565b9081602091031261026b5751801515810361026b5790565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156109c75732331480156109cf575b6109c757803314908115610926575b506108f5576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36019036821161026b5760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa90811561049f576000916109a8575b50386108e9565b6109c1915060203d6020116104ff576104f1818361083a565b386109a1565b506000903690565b50601836106108da565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015610af5573233148015610afa575b610af5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115610a64575b50610a6157503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa90811561049f57600091610ad6575b5038610a57565b610aef915060203d6020116104ff576104f1818361083a565b38610acf565b503390565b5060183610610a2056fea26469706673582212201abacd751407436578ed191b4966fc805f99916317541ee3ac56e5860de36b8e64736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806331e66e1e1461069357806373c8a95814610510578063c3666c36146102c75763f7ba94bd0361000e573461026b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026b5760043567ffffffffffffffff811161026b5761009b903690600401610716565b60243567ffffffffffffffff811161026b576100bb903690600401610716565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806100fc6109d9565b925416911690810361029a57508181036102705760005b81811061011c57005b6101278183876107da565b3573ffffffffffffffffffffffffffffffffffffffff811680910361026b576101518285876107da565b359081471061023957600080809381935af13d15610231573d9067ffffffffffffffff821161020257604051916101b060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461083a565b82523d6000602084013e5b156101c95750600101610113565b8051156101d857602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060906101bb565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461026b576102d536610747565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061031a6109d9565b925416911690810361029a5750808214801590610506575b6102705760005b82811061034257005b73ffffffffffffffffffffffffffffffffffffffff61036a61036583858a6107da565b610819565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa90811561049f576000916104d8575b50156104ab575073ffffffffffffffffffffffffffffffffffffffff6103f961036583858a6107da565b16906104096103658286896107da565b9161041582878b6107da565b3592813b1561026b57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af191821561049f5760019261048e575b5001610339565b60006104999161083a565b88610487565b6040513d6000823e3d90fd5b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6104f9915060203d81116104ff575b6104f1818361083a565b81019061087b565b896103cf565b503d6104e7565b5082821415610332565b3461026b5761051e36610747565b949293917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806105616109d9565b925416911690810361029a5750808314801590610689575b6102705760005b83811061058957005b6105948183886107da565b3573ffffffffffffffffffffffffffffffffffffffff81169081810361026b5760006020918a826105d5876105ce610365828f8f906107da565b938b6107da565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb00000000000000000000000000000000000000000000000000000000865216602483015260448201526044815261063060648261083a565b51925af11561049f576000513d6106805750803b155b6106535750600101610580565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60011415610646565b5085831415610579565b3461026b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026b5760406106cc610893565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b9181601f8401121561026b5782359167ffffffffffffffff831161026b576020808501948460051b01011161026b57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261026b5760043567ffffffffffffffff811161026b578161079091600401610716565b9290929160243567ffffffffffffffff811161026b57816107b391600401610716565b929092916044359067ffffffffffffffff821161026b576107d691600401610716565b9091565b91908110156107ea5760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff8116810361026b5790565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761020257604052565b9081602091031261026b5751801515810361026b5790565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156109c75732331480156109cf575b6109c757803314908115610926575b506108f5576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36019036821161026b5760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa90811561049f576000916109a8575b50386108e9565b6109c1915060203d6020116104ff576104f1818361083a565b386109a1565b506000903690565b50601836106108da565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015610af5573233148015610afa575b610af5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115610a64575b50610a6157503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa90811561049f57600091610ad6575b5038610a57565b610aef915060203d6020116104ff576104f1818361083a565b38610acf565b503390565b5060183610610a2056fea26469706673582212201abacd751407436578ed191b4966fc805f99916317541ee3ac56e5860de36b8e64736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
