{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC20SafeTransfersFacetMock",
  "sourceName": "contracts/mocks/token/ERC20/facets/ERC20SafeTransfersFacetMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC20ApprovalToAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "decrement",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientAllowance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "ERC20SafeTransferRejected",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC20TransferToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IllegalInterfaceId",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotProxyAdmin",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "__msgData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initERC20SafeTransfersStorage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a034606d57601f610d9638819003918201601f19168301916001600160401b03831184841017607257808492602094604052833981010312606d57516001600160a01b0381168103606d57608052604051610d0d908161008982396080518181816106ed015261084f0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c806331e66e1e14610515578063b88d4fde1461024c578063d294f8eb146101125763eb7955491461004857600080fd5b3461010d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010d5761007f610598565b60243560443567ffffffffffffffff811161010d576100a29036906004016105bb565b9190927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee926100db83836100d4610838565b8097610b36565b813b6100ed575b602060405160018152f35b610103946100fc913691610659565b9280610963565b38808080806100e2565b600080fd5b3461010d5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010d57610149610838565b73ffffffffffffffffffffffffffffffffffffffff807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035416911690810361021f577f53f41a97000000000000000000000000000000000000000000000000000000006000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527f56711464edcafe4e82a7e7542dffa87959622899ee5b1c678e1763c8a0b334a980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b7f673a31a10000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461010d5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010d57610283610598565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361010d5760443560643567ffffffffffffffff811161010d576102c69036906004016105bb565b9290937f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee936102f3610838565b9484848473ffffffffffffffffffffffffffffffffffffffff89169373ffffffffffffffffffffffffffffffffffffffff82169480860361036b575b5061033a9450610b36565b823b61034b57602060405160018152f35b6103609561035a913691610659565b93610963565b8080808080806100e2565b925092505080156104e7578487928792856000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef602052604060002081600052602052604060002054957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff871415806104de575b610419575b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602061033a98604051908152a38b61032f565b935093909480925003908082101561049b575061033a93889388937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560208a95836000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef8252604060002085600052825280604060002055985050506103e5565b889150608493604051937f137ad6ab0000000000000000000000000000000000000000000000000000000085526004850152602484015260448301526064820152fd5b508515156103e0565b827ff7e1ac0f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461010d5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010d57604061054e6106d6565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361010d57565b9181601f8401121561010d5782359167ffffffffffffffff831161010d576020838186019501011161010d57565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761062a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b92919267ffffffffffffffff821161062a57604051916106a160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846105e9565b82948184528183011161010d578281602093846000960137010152565b9081602091031261010d5751801515810361010d5790565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561082657323314801561082e575b61082657803314908115610769575b50610738576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36019036821161010d5760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa90811561081a576000916107eb575b503861072c565b61080d915060203d602011610813575b61080581836105e9565b8101906106be565b386107e4565b503d6107fb565b6040513d6000823e3d90fd5b506000903690565b506018361061071d565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015610954573233148015610959575b610954577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c908033149081156108c3575b506108c057503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa90811561081a57600091610935575b50386108b6565b61094e915060203d6020116108135761080581836105e9565b3861092e565b503390565b506018361061087f565b9290939173ffffffffffffffffffffffffffffffffffffffff8091169481604051957f4fc358590000000000000000000000000000000000000000000000000000000087521660048601521660248401526044830152608060648301528181519182608483015260005b838110610b1e57505060a4817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8560008560209886010152011681010301816000865af190811561081a57600091610a9c575b507fffffffff000000000000000000000000000000000000000000000000000000007f4fc3585900000000000000000000000000000000000000000000000000000000911603610a6f5750565b7f6d4497360000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6020813d602011610b16575b81610ab5602093836105e9565b81010312610b125751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610b0f57507fffffffff00000000000000000000000000000000000000000000000000000000610a22565b80fd5b5080fd5b3d9150610aa8565b602082820181015160a48784010152859350016109cd565b929173ffffffffffffffffffffffffffffffffffffffff16928315610c935782610ba0575b50602073ffffffffffffffffffffffffffffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff8216600052806020526040600020548381039080821015610c4757508260209273ffffffffffffffffffffffffffffffffffffffff9287847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef971603610c20575b5050925050610b5b565b83831660005281855260406000205586600052835260406000208581540190553880610c16565b849073ffffffffffffffffffffffffffffffffffffffff857fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff827f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fdfea2646970667358221220a684e5a464bb0aa5a2bf17e47ec30c0c052c1b8f153c4945f26048370d8a6a8464736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c806331e66e1e14610515578063b88d4fde1461024c578063d294f8eb146101125763eb7955491461004857600080fd5b3461010d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010d5761007f610598565b60243560443567ffffffffffffffff811161010d576100a29036906004016105bb565b9190927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee926100db83836100d4610838565b8097610b36565b813b6100ed575b602060405160018152f35b610103946100fc913691610659565b9280610963565b38808080806100e2565b600080fd5b3461010d5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010d57610149610838565b73ffffffffffffffffffffffffffffffffffffffff807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035416911690810361021f577f53f41a97000000000000000000000000000000000000000000000000000000006000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527f56711464edcafe4e82a7e7542dffa87959622899ee5b1c678e1763c8a0b334a980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b7f673a31a10000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461010d5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010d57610283610598565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361010d5760443560643567ffffffffffffffff811161010d576102c69036906004016105bb565b9290937f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee936102f3610838565b9484848473ffffffffffffffffffffffffffffffffffffffff89169373ffffffffffffffffffffffffffffffffffffffff82169480860361036b575b5061033a9450610b36565b823b61034b57602060405160018152f35b6103609561035a913691610659565b93610963565b8080808080806100e2565b925092505080156104e7578487928792856000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef602052604060002081600052602052604060002054957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff871415806104de575b610419575b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602061033a98604051908152a38b61032f565b935093909480925003908082101561049b575061033a93889388937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560208a95836000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef8252604060002085600052825280604060002055985050506103e5565b889150608493604051937f137ad6ab0000000000000000000000000000000000000000000000000000000085526004850152602484015260448301526064820152fd5b508515156103e0565b827ff7e1ac0f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461010d5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010d57604061054e6106d6565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361010d57565b9181601f8401121561010d5782359167ffffffffffffffff831161010d576020838186019501011161010d57565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761062a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b92919267ffffffffffffffff821161062a57604051916106a160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846105e9565b82948184528183011161010d578281602093846000960137010152565b9081602091031261010d5751801515810361010d5790565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561082657323314801561082e575b61082657803314908115610769575b50610738576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36019036821161010d5760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa90811561081a576000916107eb575b503861072c565b61080d915060203d602011610813575b61080581836105e9565b8101906106be565b386107e4565b503d6107fb565b6040513d6000823e3d90fd5b506000903690565b506018361061071d565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015610954573233148015610959575b610954577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c908033149081156108c3575b506108c057503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa90811561081a57600091610935575b50386108b6565b61094e915060203d6020116108135761080581836105e9565b3861092e565b503390565b506018361061087f565b9290939173ffffffffffffffffffffffffffffffffffffffff8091169481604051957f4fc358590000000000000000000000000000000000000000000000000000000087521660048601521660248401526044830152608060648301528181519182608483015260005b838110610b1e57505060a4817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8560008560209886010152011681010301816000865af190811561081a57600091610a9c575b507fffffffff000000000000000000000000000000000000000000000000000000007f4fc3585900000000000000000000000000000000000000000000000000000000911603610a6f5750565b7f6d4497360000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6020813d602011610b16575b81610ab5602093836105e9565b81010312610b125751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610b0f57507fffffffff00000000000000000000000000000000000000000000000000000000610a22565b80fd5b5080fd5b3d9150610aa8565b602082820181015160a48784010152859350016109cd565b929173ffffffffffffffffffffffffffffffffffffffff16928315610c935782610ba0575b50602073ffffffffffffffffffffffffffffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff8216600052806020526040600020548381039080821015610c4757508260209273ffffffffffffffffffffffffffffffffffffffff9287847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef971603610c20575b5050925050610b5b565b83831660005281855260406000205586600052835260406000208581540190553880610c16565b849073ffffffffffffffffffffffffffffffffffffffff857fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff827f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fdfea2646970667358221220a684e5a464bb0aa5a2bf17e47ec30c0c052c1b8f153c4945f26048370d8a6a8464736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
