{
  "_format": "hh-sol-artifact-1",
  "contractName": "TokenResolver",
  "sourceName": "contracts/resolver/examples/TokenResolver.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IEAS",
          "name": "eas",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "targetToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "targetAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AccessDenied",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InsufficientValue",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidAllowance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidEAS",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidLength",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotPayable",
      "type": "error"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "uid",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "schema",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "time",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "expirationTime",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "revocationTime",
              "type": "uint64"
            },
            {
              "internalType": "bytes32",
              "name": "refUID",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "attester",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "revocable",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct Attestation",
          "name": "attestation",
          "type": "tuple"
        }
      ],
      "name": "attest",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isPayable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "uid",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "schema",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "time",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "expirationTime",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "revocationTime",
              "type": "uint64"
            },
            {
              "internalType": "bytes32",
              "name": "refUID",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "attester",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "revocable",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct Attestation[]",
          "name": "attestations",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "multiAttest",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "uid",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "schema",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "time",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "expirationTime",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "revocationTime",
              "type": "uint64"
            },
            {
              "internalType": "bytes32",
              "name": "refUID",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "attester",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "revocable",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct Attestation[]",
          "name": "attestations",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "multiRevoke",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "uid",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "schema",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "time",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "expirationTime",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "revocationTime",
              "type": "uint64"
            },
            {
              "internalType": "bytes32",
              "name": "refUID",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "attester",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "revocable",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct Attestation",
          "name": "attestation",
          "type": "tuple"
        }
      ],
      "name": "revoke",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x61014060405234801561001157600080fd5b50604051610b86380380610b868339810160408190526100309161009f565b6001608052600460a052600060c052826001600160a01b038116610067576040516341bc07ff60e11b815260040160405180910390fd5b6001600160a01b0390811660e052919091166101005261012052506100e2565b6001600160a01b038116811461009c57600080fd5b50565b6000806000606084860312156100b457600080fd5b83516100bf81610087565b60208501519093506100d081610087565b80925050604084015190509250925092565b60805160a05160c05160e0516101005161012051610a55610131600039600061052f01526000610565015260006104d20152600061019901526000610170015260006101470152610a556000f3fe6080604052600436106100695760003560e01c8063ce46e04611610043578063ce46e04614610106578063e49617e11461011a578063e60c35051461012d57600080fd5b806354fd4d50146100a557806388e5b2d9146100d057806391db0b7e146100f357600080fd5b366100a0576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b3480156100b157600080fd5b506100ba610140565b6040516100c79190610775565b60405180910390f35b6100e36100de366004610812565b6101e3565b60405190151581526020016100c7565b6100e3610101366004610812565b6102e4565b34801561011257600080fd5b5060006100e3565b6100e3610128366004610883565b6103d5565b6100e361013b366004610883565b6103e8565b606061016b7f00000000000000000000000000000000000000000000000000000000000000006103fc565b6101947f00000000000000000000000000000000000000000000000000000000000000006103fc565b6101bd7f00000000000000000000000000000000000000000000000000000000000000006103fc565b6040516020016101cf939291906108c6565b604051602081830303815290604052905090565b60006101ed6104ba565b83828114610227576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3460005b828110156102d45760008686838181106102475761024761095d565b9050602002013590508281111561028a576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b789898481811061029f5761029f61095d565b90506020028101906102b1919061098c565b50600190565b6102c85760009450505050506102dc565b9091039060010161022b565b506001925050505b949350505050565b60006102ee6104ba565b83828114610328576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3460005b828110156102d45760008686838181106103485761034861095d565b9050602002013590508281111561038b576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103b88989848181106103a0576103a061095d565b90506020028101906103b2919061098c565b8261052b565b6103c95760009450505050506102dc565b9091039060010161032c565b60006103df6104ba565b60015b92915050565b60006103f26104ba565b6103e2823461052b565b606060006104098361066f565b600101905060008167ffffffffffffffff811115610429576104296109ca565b6040519080825280601f01601f191660200182016040528015610453576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461045d57509392505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610529576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663dd62ed3e61059b610100870160e088016109f9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152306024820152604401602060405180830381865afa15801561060a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062e9190610a2f565b1015610666576040517f65ba6fc300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600192915050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106106b8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106106e4576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061070257662386f26fc10000830492506010015b6305f5e100831061071a576305f5e100830492506008015b612710831061072e57612710830492506004015b60648310610740576064830492506002015b600a83106103e25760010192915050565b60005b8381101561076c578181015183820152602001610754565b50506000910152565b6020815260008251806020840152610794816040850160208701610751565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008083601f8401126107d857600080fd5b50813567ffffffffffffffff8111156107f057600080fd5b6020830191508360208260051b850101111561080b57600080fd5b9250929050565b6000806000806040858703121561082857600080fd5b843567ffffffffffffffff81111561083f57600080fd5b61084b878288016107c6565b909550935050602085013567ffffffffffffffff81111561086b57600080fd5b610877878288016107c6565b95989497509550505050565b60006020828403121561089557600080fd5b813567ffffffffffffffff8111156108ac57600080fd5b820161014081850312156108bf57600080fd5b9392505050565b600084516108d8818460208901610751565b7f2e000000000000000000000000000000000000000000000000000000000000009083019081528451610912816001840160208901610751565b7f2e00000000000000000000000000000000000000000000000000000000000000600192909101918201528351610950816002840160208801610751565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18336030181126109c057600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215610a0b57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108bf57600080fd5b600060208284031215610a4157600080fd5b505191905056fea164736f6c634300081d000a",
  "deployedBytecode": "0x6080604052600436106100695760003560e01c8063ce46e04611610043578063ce46e04614610106578063e49617e11461011a578063e60c35051461012d57600080fd5b806354fd4d50146100a557806388e5b2d9146100d057806391db0b7e146100f357600080fd5b366100a0576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b3480156100b157600080fd5b506100ba610140565b6040516100c79190610775565b60405180910390f35b6100e36100de366004610812565b6101e3565b60405190151581526020016100c7565b6100e3610101366004610812565b6102e4565b34801561011257600080fd5b5060006100e3565b6100e3610128366004610883565b6103d5565b6100e361013b366004610883565b6103e8565b606061016b7f00000000000000000000000000000000000000000000000000000000000000006103fc565b6101947f00000000000000000000000000000000000000000000000000000000000000006103fc565b6101bd7f00000000000000000000000000000000000000000000000000000000000000006103fc565b6040516020016101cf939291906108c6565b604051602081830303815290604052905090565b60006101ed6104ba565b83828114610227576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3460005b828110156102d45760008686838181106102475761024761095d565b9050602002013590508281111561028a576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b789898481811061029f5761029f61095d565b90506020028101906102b1919061098c565b50600190565b6102c85760009450505050506102dc565b9091039060010161022b565b506001925050505b949350505050565b60006102ee6104ba565b83828114610328576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3460005b828110156102d45760008686838181106103485761034861095d565b9050602002013590508281111561038b576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103b88989848181106103a0576103a061095d565b90506020028101906103b2919061098c565b8261052b565b6103c95760009450505050506102dc565b9091039060010161032c565b60006103df6104ba565b60015b92915050565b60006103f26104ba565b6103e2823461052b565b606060006104098361066f565b600101905060008167ffffffffffffffff811115610429576104296109ca565b6040519080825280601f01601f191660200182016040528015610453576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461045d57509392505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610529576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663dd62ed3e61059b610100870160e088016109f9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152306024820152604401602060405180830381865afa15801561060a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062e9190610a2f565b1015610666576040517f65ba6fc300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600192915050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106106b8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106106e4576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061070257662386f26fc10000830492506010015b6305f5e100831061071a576305f5e100830492506008015b612710831061072e57612710830492506004015b60648310610740576064830492506002015b600a83106103e25760010192915050565b60005b8381101561076c578181015183820152602001610754565b50506000910152565b6020815260008251806020840152610794816040850160208701610751565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008083601f8401126107d857600080fd5b50813567ffffffffffffffff8111156107f057600080fd5b6020830191508360208260051b850101111561080b57600080fd5b9250929050565b6000806000806040858703121561082857600080fd5b843567ffffffffffffffff81111561083f57600080fd5b61084b878288016107c6565b909550935050602085013567ffffffffffffffff81111561086b57600080fd5b610877878288016107c6565b95989497509550505050565b60006020828403121561089557600080fd5b813567ffffffffffffffff8111156108ac57600080fd5b820161014081850312156108bf57600080fd5b9392505050565b600084516108d8818460208901610751565b7f2e000000000000000000000000000000000000000000000000000000000000009083019081528451610912816001840160208901610751565b7f2e00000000000000000000000000000000000000000000000000000000000000600192909101918201528351610950816002840160208801610751565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18336030181126109c057600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215610a0b57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108bf57600080fd5b600060208284031215610a4157600080fd5b505191905056fea164736f6c634300081d000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
