{
  "_format": "hh-sol-artifact-1",
  "contractName": "TokenRecoveryFacet",
  "sourceName": "contracts/security/facets/TokenRecoveryFacet.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": [
        {
          "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"
    }
  ],
  "bytecode": "0x60a034606657601f6109cd38819003918201601f19168301916001600160401b03831184841017606b57808492602094604052833981010312606657516001600160a01b038116810360665760805260405161094b90816100828239608051816108180152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c806373c8a95814610501578063c3666c36146102b85763f7ba94bd1461003d57600080fd5b3461025c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025c5760043567ffffffffffffffff811161025c5761008c903690600401610684565b60243567ffffffffffffffff811161025c576100ac903690600401610684565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806100ed610801565b925416911690810361028b57508181036102615760005b81811061010d57005b610118818387610748565b3573ffffffffffffffffffffffffffffffffffffffff811680910361025c57610142828587610748565b359081471061022a57600080809381935af13d15610222573d9067ffffffffffffffff82116101f357604051916101a160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846107a8565b82523d6000602084013e5b156101ba5750600101610104565b8051156101c957602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060906101ac565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461025c576102c6366106b5565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061030b610801565b925416911690810361028b57508082148015906104f7575b6102615760005b82811061033357005b73ffffffffffffffffffffffffffffffffffffffff61035b61035683858a610748565b610787565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115610490576000916104c9575b501561049c575073ffffffffffffffffffffffffffffffffffffffff6103ea61035683858a610748565b16906103fa610356828689610748565b9161040682878b610748565b3592813b1561025c57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af19182156104905760019261047f575b500161032a565b600061048a916107a8565b88610478565b6040513d6000823e3d90fd5b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6104ea915060203d81116104f0575b6104e281836107a8565b8101906107e9565b896103c0565b503d6104d8565b5082821415610323565b3461025c5761050f366106b5565b949293917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610552610801565b925416911690810361028b575080831480159061067a575b6102615760005b83811061057a57005b610585818388610748565b3573ffffffffffffffffffffffffffffffffffffffff81169081810361025c5760006020918a826105c6876105bf610356828f8f90610748565b938b610748565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb0000000000000000000000000000000000000000000000000000000086521660248301526044820152604481526106216064826107a8565b51925af115610490576000513d6106715750803b155b6106445750600101610571565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60011415610637565b508583141561056a565b9181601f8401121561025c5782359167ffffffffffffffff831161025c576020808501948460051b01011161025c57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261025c5760043567ffffffffffffffff811161025c57816106fe91600401610684565b9290929160243567ffffffffffffffff811161025c578161072191600401610684565b929092916044359067ffffffffffffffff821161025c5761074491600401610684565b9091565b91908110156107585760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff8116810361025c5790565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101f357604052565b9081602091031261025c5751801515810361025c5790565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561090657323314801561090b575b610906577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c9080331490811561088c575b5061088957503390565b90565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa908115610490576000916108e7575b503861087f565b610900915060203d6020116104f0576104e281836107a8565b386108e0565b503390565b506018361061084856fea26469706673582212205d09c578a4e8eb7fcb73a4cbe438c52f14c41cbf5740340c595ad0c3cd19af4064736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c806373c8a95814610501578063c3666c36146102b85763f7ba94bd1461003d57600080fd5b3461025c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025c5760043567ffffffffffffffff811161025c5761008c903690600401610684565b60243567ffffffffffffffff811161025c576100ac903690600401610684565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806100ed610801565b925416911690810361028b57508181036102615760005b81811061010d57005b610118818387610748565b3573ffffffffffffffffffffffffffffffffffffffff811680910361025c57610142828587610748565b359081471061022a57600080809381935af13d15610222573d9067ffffffffffffffff82116101f357604051916101a160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846107a8565b82523d6000602084013e5b156101ba5750600101610104565b8051156101c957602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060906101ac565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461025c576102c6366106b5565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061030b610801565b925416911690810361028b57508082148015906104f7575b6102615760005b82811061033357005b73ffffffffffffffffffffffffffffffffffffffff61035b61035683858a610748565b610787565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115610490576000916104c9575b501561049c575073ffffffffffffffffffffffffffffffffffffffff6103ea61035683858a610748565b16906103fa610356828689610748565b9161040682878b610748565b3592813b1561025c57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af19182156104905760019261047f575b500161032a565b600061048a916107a8565b88610478565b6040513d6000823e3d90fd5b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6104ea915060203d81116104f0575b6104e281836107a8565b8101906107e9565b896103c0565b503d6104d8565b5082821415610323565b3461025c5761050f366106b5565b949293917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610552610801565b925416911690810361028b575080831480159061067a575b6102615760005b83811061057a57005b610585818388610748565b3573ffffffffffffffffffffffffffffffffffffffff81169081810361025c5760006020918a826105c6876105bf610356828f8f90610748565b938b610748565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb0000000000000000000000000000000000000000000000000000000086521660248301526044820152604481526106216064826107a8565b51925af115610490576000513d6106715750803b155b6106445750600101610571565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60011415610637565b508583141561056a565b9181601f8401121561025c5782359167ffffffffffffffff831161025c576020808501948460051b01011161025c57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261025c5760043567ffffffffffffffff811161025c57816106fe91600401610684565b9290929160243567ffffffffffffffff811161025c578161072191600401610684565b929092916044359067ffffffffffffffff821161025c5761074491600401610684565b9091565b91908110156107585760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff8116810361025c5790565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101f357604052565b9081602091031261025c5751801515810361025c5790565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561090657323314801561090b575b610906577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c9080331490811561088c575b5061088957503390565b90565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa908115610490576000916108e7575b503861087f565b610900915060203d6020116104f0576104e281836107a8565b386108e0565b503390565b506018361061084856fea26469706673582212205d09c578a4e8eb7fcb73a4cbe438c52f14c41cbf5740340c595ad0c3cd19af4064736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
