{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC20PermitFacet",
  "sourceName": "contracts/token/ERC20/facets/ERC20PermitFacet.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": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "ERC20PermitExpired",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20PermitFromAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20PermitInvalidSignature",
      "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"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initERC20PermitStorage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a034606657601f61098938819003918201601f19168301916001600160401b03831184841017606b57808492602094604052833981010312606657516001600160a01b038116810360665760805260405161090790816100828239608051816107b10152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c80631de5d844146103f95780633644e515146103b85780637ecebe00146103335763d505accf1461004857600080fd5b3461032e5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032e5761007f610533565b6024359073ffffffffffffffffffffffffffffffffffffffff821680920361032e576044356064356084359060ff821680920361032e5773ffffffffffffffffffffffffffffffffffffffff7f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d9416938415610304578142116102d6576020926000926080928785528552604084209081549160018301905560405190868201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528960408401528a6060840152888684015260a083015260c082015260c0815261016d60e082610556565b5190206101786105c6565b9060405190868201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526101bd606282610556565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156102ca578173ffffffffffffffffffffffffffffffffffffffff60005116036102a05782156102725760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591836000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef8252604060002085600052825280604060002055604051908152a3005b507ff7e1ac0f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f822a64c80000000000000000000000000000000000000000000000000000000060005260046000fd5b6040513d6000823e3d90fd5b507fea2b6f580000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7fa97469760000000000000000000000000000000000000000000000000000000060005260046000fd5b600080fd5b3461032e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032e5761036a610533565b73ffffffffffffffffffffffffffffffffffffffff7f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d91166000526020526020604060002054604051908152f35b3461032e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032e5760206103f16105c6565b604051908152f35b3461032e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032e5761043061079a565b73ffffffffffffffffffffffffffffffffffffffff807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354169116908103610506577f9d8ff7da000000000000000000000000000000000000000000000000000000006000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527fe136d7b577e24834119bec976c568a497f54cf7b8bef8b9534f1ac7a342834a080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b7f673a31a10000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361032e57565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761059757604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516000907f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a8154918260011c9060018416938415610790575b602083108514610763578284526020840194849291811561072957506001146106aa575b61063092500382610556565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a081526106a460c082610556565b51902090565b507f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a81600090815290917fce6c9d9c5887233b79e8966827dc87013a092e23a7d6c4dfeb06be71659aa4285b81831061070d57505090602061063092820101610624565b60209193508060019154838588010152019101909183926106f5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686525061063092151560051b82016020019050610624565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b91607f1691610600565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156108c25732331480156108c7575b6108c2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115610825575b5061082257503390565b90565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa9081156102ca57600091610880575b5038610818565b6020813d6020116108ba575b8161089960209383610556565b810103126108b657519081151582036108b3575038610879565b80fd5b5080fd5b3d915061088c565b503390565b50601836106107e156fea26469706673582212209da5e6085c2fc4bfe69803c024564429d61da2a18094ddb730953d4e7344d9e364736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c80631de5d844146103f95780633644e515146103b85780637ecebe00146103335763d505accf1461004857600080fd5b3461032e5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032e5761007f610533565b6024359073ffffffffffffffffffffffffffffffffffffffff821680920361032e576044356064356084359060ff821680920361032e5773ffffffffffffffffffffffffffffffffffffffff7f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d9416938415610304578142116102d6576020926000926080928785528552604084209081549160018301905560405190868201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528960408401528a6060840152888684015260a083015260c082015260c0815261016d60e082610556565b5190206101786105c6565b9060405190868201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526101bd606282610556565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156102ca578173ffffffffffffffffffffffffffffffffffffffff60005116036102a05782156102725760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591836000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef8252604060002085600052825280604060002055604051908152a3005b507ff7e1ac0f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f822a64c80000000000000000000000000000000000000000000000000000000060005260046000fd5b6040513d6000823e3d90fd5b507fea2b6f580000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7fa97469760000000000000000000000000000000000000000000000000000000060005260046000fd5b600080fd5b3461032e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032e5761036a610533565b73ffffffffffffffffffffffffffffffffffffffff7f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d91166000526020526020604060002054604051908152f35b3461032e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032e5760206103f16105c6565b604051908152f35b3461032e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032e5761043061079a565b73ffffffffffffffffffffffffffffffffffffffff807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354169116908103610506577f9d8ff7da000000000000000000000000000000000000000000000000000000006000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527fe136d7b577e24834119bec976c568a497f54cf7b8bef8b9534f1ac7a342834a080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b7f673a31a10000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361032e57565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761059757604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516000907f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a8154918260011c9060018416938415610790575b602083108514610763578284526020840194849291811561072957506001146106aa575b61063092500382610556565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a081526106a460c082610556565b51902090565b507f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a81600090815290917fce6c9d9c5887233b79e8966827dc87013a092e23a7d6c4dfeb06be71659aa4285b81831061070d57505090602061063092820101610624565b60209193508060019154838588010152019101909183926106f5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686525061063092151560051b82016020019050610624565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b91607f1691610600565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156108c25732331480156108c7575b6108c2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115610825575b5061082257503390565b90565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa9081156102ca57600091610880575b5038610818565b6020813d6020116108ba575b8161089960209383610556565b810103126108b657519081151582036108b3575038610879565b80fd5b5080fd5b3d915061088c565b503390565b50601836106107e156fea26469706673582212209da5e6085c2fc4bfe69803c024564429d61da2a18094ddb730953d4e7344d9e364736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
