{
  "_format": "hh-sol-artifact-1",
  "contractName": "CustomSmartWalletDeployVerifier",
  "sourceName": "contracts/verifier/CustomSmartWalletDeployVerifier.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "walletFactory",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "acceptToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "acceptedTokens",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "acceptsToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAcceptedTokens",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "removeToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "tokens",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "relayHub",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenContract",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recoverer",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenGas",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "validUntilTime",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "internalType": "struct IForwarder.DeployRequest",
              "name": "request",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "gasPrice",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "feesReceiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "callForwarder",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "callVerifier",
                  "type": "address"
                }
              ],
              "internalType": "struct EnvelopingTypes.RelayData",
              "name": "relayData",
              "type": "tuple"
            }
          ],
          "internalType": "struct EnvelopingTypes.DeployRequest",
          "name": "relayRequest",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "verifyRelayedCall",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "context",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "versionVerifier",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561001057600080fd5b50604051610fbf380380610fbf83398101604081905261002f9161008d565b600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360601b6001600160601b0319166080526100bb565b60006020828403121561009e578081fd5b81516001600160a01b03811681146100b4578182fd5b9392505050565b60805160601c610ee76100d8600039806104445250610ee76000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063868399a5116100765780638da5cb5b1161005b5780638da5cb5b14610171578063e486033914610179578063f2fde38b1461018c576100be565b8063868399a51461013e5780638cd3f0641461015e576100be565b80632f757006116100a75780632f757006146100f657806336c877541461010b5780633739d4561461012b576100be565b806313baf1e6146100c35780631dac0746146100d8575b600080fd5b6100d66100d1366004610988565b61019f565b005b6100e0610337565b6040516100ed9190610b99565b60405180910390f35b6100fe610357565b6040516100ed9190610b41565b61011e610119366004610a4b565b6103b9565b6040516100ed9190610ad6565b6100e06101393660046109b3565b6103e0565b61015161014c366004610949565b610724565b6040516100ed9190610b8e565b6100d661016c366004610949565b610742565b61011e610861565b610151610187366004610949565b610870565b6100d661019a366004610949565b610885565b6000546001600160a01b031633146101d25760405162461bcd60e51b81526004016101c990610bac565b60405180910390fd5b6001600160a01b0382166101f85760405162461bcd60e51b81526004016101c990610d2d565b6001600160a01b03821660009081526001602052604090205460ff166102305760405162461bcd60e51b81526004016101c990610c51565b6002818154811061023d57fe5b6000918252602090912001546001600160a01b038381169116146102735760405162461bcd60e51b81526004016101c990610c88565b6001600160a01b0382166000908152600160205260409020805460ff191690556002805460001981019081106102a557fe5b600091825260209091200154600280546001600160a01b0390921691839081106102cb57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600280548061030457fe5b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b6060604051806060016040528060248152602001610e8e60249139905090565b606060028054806020026020016040519081016040528092919081815260200182805480156103af57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610391575b5050505050905090565b600281815481106103c657fe5b6000918252602090912001546001600160a01b0316905081565b6060600160006103f08680610e55565b610401906080810190606001610949565b6001600160a01b0316815260208101919091526040016000205460ff1661043a5760405162461bcd60e51b81526004016101c990610be3565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166104746080860160608701610949565b6001600160a01b03161461049a5760405162461bcd60e51b81526004016101c990610d64565b60006104ac6080860160608701610949565b6001600160a01b031663c63ae75b6104c48780610e55565b6104d5906040810190602001610949565b6104df8880610e55565b6104f09060a0810190608001610949565b6104fa8980610e55565b61050b906060810190604001610949565b6105158a80610e55565b61052490610160810190610e09565b604051610532929190610ac6565b6040519081900390206105458b80610e55565b61014001356040518663ffffffff1660e01b815260040161056a959493929190610aea565b60206040518083038186803b15801561058257600080fd5b505afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba919061096c565b90506105c58161093d565b156105e25760405162461bcd60e51b81526004016101c990610cf6565b60006105ee8680610e55565b6105ff906080810190606001610949565b6001600160a01b0316146106cf576106178580610e55565b610628906080810190606001610949565b6001600160a01b03166370a08231826040518263ffffffff1660e01b81526004016106539190610ad6565b60206040518083038186803b15801561066b57600080fd5b505afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190610a63565b6106ad8680610e55565b60e0013511156106cf5760405162461bcd60e51b81526004016101c990610c1a565b806106da8680610e55565b60e001356106e88780610e55565b6106f9906080810190606001610949565b60405160200161070b93929190610b1e565b6040516020818303038152906040529150509392505050565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b0316331461076c5760405162461bcd60e51b81526004016101c990610bac565b6001600160a01b0381166107925760405162461bcd60e51b81526004016101c990610d2d565b61079b8161093d565b6107b75760405162461bcd60e51b81526004016101c990610d9b565b6001600160a01b03811660009081526001602052604090205460ff16156107f05760405162461bcd60e51b81526004016101c990610dd2565b6001600160a01b031660008181526001602081905260408220805460ff1916821790556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6000546001600160a01b031690565b60016020526000908152604090205460ff1681565b6000546001600160a01b031633146108af5760405162461bcd60e51b81526004016101c990610bac565b6001600160a01b0381166108d55760405162461bcd60e51b81526004016101c990610cbf565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3b63ffffffff16151590565b60006020828403121561095a578081fd5b813561096581610e75565b9392505050565b60006020828403121561097d578081fd5b815161096581610e75565b6000806040838503121561099a578081fd5b82356109a581610e75565b946020939093013593505050565b6000806000604084860312156109c7578081fd5b833567ffffffffffffffff808211156109de578283fd5b9085019060a082880312156109f1578283fd5b90935060208501359080821115610a06578283fd5b818601915086601f830112610a19578283fd5b813581811115610a27578384fd5b876020828501011115610a38578384fd5b6020830194508093505050509250925092565b600060208284031215610a5c578081fd5b5035919050565b600060208284031215610a74578081fd5b5051919050565b60008151808452815b81811015610aa057602081850181015186830182015201610a84565b81811115610ab15782602083870101525b50601f01601f19169290920160200192915050565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6020808252825182820181905260009190848201906040850190845b81811015610b825783516001600160a01b031683529284019291840191600101610b5d565b50909695505050505050565b901515815260200190565b6000602082526109656020830184610a7b565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b6020808252601a908201527f546f6b656e20636f6e7472616374206e6f7420616c6c6f776564000000000000604082015260600190565b6020808252600f908201527f62616c616e636520746f6f206c6f770000000000000000000000000000000000604082015260600190565b60208082526015908201527f546f6b656e206973206e6f742061636365707465640000000000000000000000604082015260600190565b60208082526011908201527f57726f6e6720746f6b656e20696e646578000000000000000000000000000000604082015260600190565b60208082526019908201527f4f776e657220697320746865207a65726f206164647265737300000000000000604082015260600190565b60208082526017908201527f4164647265737320616c72656164792063726561746564000000000000000000604082015260600190565b6020808252601c908201527f546f6b656e2063616e6e6f74206265207a65726f206164647265737300000000604082015260600190565b6020808252600f908201527f496e76616c696420666163746f72790000000000000000000000000000000000604082015260600190565b60208082526019908201527f41646472657373206973206e6f74206120636f6e747261637400000000000000604082015260600190565b60208082526019908201527f546f6b656e20697320616c726561647920616363657074656400000000000000604082015260600190565b6000808335601e19843603018112610e1f578283fd5b83018035915067ffffffffffffffff821115610e39578283fd5b602001915036819003821315610e4e57600080fd5b9250929050565b6000823561017e19833603018112610e6b578182fd5b9190910192915050565b6001600160a01b0381168114610e8a57600080fd5b5056fe7269662e656e76656c6f70696e672e746f6b656e2e69766572696669657240322e302e31a26469706673582212209a8b7d406453a478552ccb84520b28162dee210a2328ede7d66eab76656002e664736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c8063868399a5116100765780638da5cb5b1161005b5780638da5cb5b14610171578063e486033914610179578063f2fde38b1461018c576100be565b8063868399a51461013e5780638cd3f0641461015e576100be565b80632f757006116100a75780632f757006146100f657806336c877541461010b5780633739d4561461012b576100be565b806313baf1e6146100c35780631dac0746146100d8575b600080fd5b6100d66100d1366004610988565b61019f565b005b6100e0610337565b6040516100ed9190610b99565b60405180910390f35b6100fe610357565b6040516100ed9190610b41565b61011e610119366004610a4b565b6103b9565b6040516100ed9190610ad6565b6100e06101393660046109b3565b6103e0565b61015161014c366004610949565b610724565b6040516100ed9190610b8e565b6100d661016c366004610949565b610742565b61011e610861565b610151610187366004610949565b610870565b6100d661019a366004610949565b610885565b6000546001600160a01b031633146101d25760405162461bcd60e51b81526004016101c990610bac565b60405180910390fd5b6001600160a01b0382166101f85760405162461bcd60e51b81526004016101c990610d2d565b6001600160a01b03821660009081526001602052604090205460ff166102305760405162461bcd60e51b81526004016101c990610c51565b6002818154811061023d57fe5b6000918252602090912001546001600160a01b038381169116146102735760405162461bcd60e51b81526004016101c990610c88565b6001600160a01b0382166000908152600160205260409020805460ff191690556002805460001981019081106102a557fe5b600091825260209091200154600280546001600160a01b0390921691839081106102cb57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600280548061030457fe5b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b6060604051806060016040528060248152602001610e8e60249139905090565b606060028054806020026020016040519081016040528092919081815260200182805480156103af57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610391575b5050505050905090565b600281815481106103c657fe5b6000918252602090912001546001600160a01b0316905081565b6060600160006103f08680610e55565b610401906080810190606001610949565b6001600160a01b0316815260208101919091526040016000205460ff1661043a5760405162461bcd60e51b81526004016101c990610be3565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166104746080860160608701610949565b6001600160a01b03161461049a5760405162461bcd60e51b81526004016101c990610d64565b60006104ac6080860160608701610949565b6001600160a01b031663c63ae75b6104c48780610e55565b6104d5906040810190602001610949565b6104df8880610e55565b6104f09060a0810190608001610949565b6104fa8980610e55565b61050b906060810190604001610949565b6105158a80610e55565b61052490610160810190610e09565b604051610532929190610ac6565b6040519081900390206105458b80610e55565b61014001356040518663ffffffff1660e01b815260040161056a959493929190610aea565b60206040518083038186803b15801561058257600080fd5b505afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba919061096c565b90506105c58161093d565b156105e25760405162461bcd60e51b81526004016101c990610cf6565b60006105ee8680610e55565b6105ff906080810190606001610949565b6001600160a01b0316146106cf576106178580610e55565b610628906080810190606001610949565b6001600160a01b03166370a08231826040518263ffffffff1660e01b81526004016106539190610ad6565b60206040518083038186803b15801561066b57600080fd5b505afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190610a63565b6106ad8680610e55565b60e0013511156106cf5760405162461bcd60e51b81526004016101c990610c1a565b806106da8680610e55565b60e001356106e88780610e55565b6106f9906080810190606001610949565b60405160200161070b93929190610b1e565b6040516020818303038152906040529150509392505050565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b0316331461076c5760405162461bcd60e51b81526004016101c990610bac565b6001600160a01b0381166107925760405162461bcd60e51b81526004016101c990610d2d565b61079b8161093d565b6107b75760405162461bcd60e51b81526004016101c990610d9b565b6001600160a01b03811660009081526001602052604090205460ff16156107f05760405162461bcd60e51b81526004016101c990610dd2565b6001600160a01b031660008181526001602081905260408220805460ff1916821790556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6000546001600160a01b031690565b60016020526000908152604090205460ff1681565b6000546001600160a01b031633146108af5760405162461bcd60e51b81526004016101c990610bac565b6001600160a01b0381166108d55760405162461bcd60e51b81526004016101c990610cbf565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3b63ffffffff16151590565b60006020828403121561095a578081fd5b813561096581610e75565b9392505050565b60006020828403121561097d578081fd5b815161096581610e75565b6000806040838503121561099a578081fd5b82356109a581610e75565b946020939093013593505050565b6000806000604084860312156109c7578081fd5b833567ffffffffffffffff808211156109de578283fd5b9085019060a082880312156109f1578283fd5b90935060208501359080821115610a06578283fd5b818601915086601f830112610a19578283fd5b813581811115610a27578384fd5b876020828501011115610a38578384fd5b6020830194508093505050509250925092565b600060208284031215610a5c578081fd5b5035919050565b600060208284031215610a74578081fd5b5051919050565b60008151808452815b81811015610aa057602081850181015186830182015201610a84565b81811115610ab15782602083870101525b50601f01601f19169290920160200192915050565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6020808252825182820181905260009190848201906040850190845b81811015610b825783516001600160a01b031683529284019291840191600101610b5d565b50909695505050505050565b901515815260200190565b6000602082526109656020830184610a7b565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b6020808252601a908201527f546f6b656e20636f6e7472616374206e6f7420616c6c6f776564000000000000604082015260600190565b6020808252600f908201527f62616c616e636520746f6f206c6f770000000000000000000000000000000000604082015260600190565b60208082526015908201527f546f6b656e206973206e6f742061636365707465640000000000000000000000604082015260600190565b60208082526011908201527f57726f6e6720746f6b656e20696e646578000000000000000000000000000000604082015260600190565b60208082526019908201527f4f776e657220697320746865207a65726f206164647265737300000000000000604082015260600190565b60208082526017908201527f4164647265737320616c72656164792063726561746564000000000000000000604082015260600190565b6020808252601c908201527f546f6b656e2063616e6e6f74206265207a65726f206164647265737300000000604082015260600190565b6020808252600f908201527f496e76616c696420666163746f72790000000000000000000000000000000000604082015260600190565b60208082526019908201527f41646472657373206973206e6f74206120636f6e747261637400000000000000604082015260600190565b60208082526019908201527f546f6b656e20697320616c726561647920616363657074656400000000000000604082015260600190565b6000808335601e19843603018112610e1f578283fd5b83018035915067ffffffffffffffff821115610e39578283fd5b602001915036819003821315610e4e57600080fd5b9250929050565b6000823561017e19833603018112610e6b578182fd5b9190910192915050565b6001600160a01b0381168114610e8a57600080fd5b5056fe7269662e656e76656c6f70696e672e746f6b656e2e69766572696669657240322e302e31a26469706673582212209a8b7d406453a478552ccb84520b28162dee210a2328ede7d66eab76656002e664736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
