{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC721AssetVault",
  "sourceName": "contracts/asset/ERC721/v1-controller/ERC721AssetVault.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "acl",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AssetDepositIsNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetNotFound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AssetReturnIsNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "VaultIsInRecoveryMode",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "RecoveryModeActivated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "assetClass",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isRecovery",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "metahub",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "returnToOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "switchToRecoveryMode",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawERC20Tokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50604051610dae380380610dae83398101604081905261002f91610086565b600080546001600160b01b031916620100006001600160a01b0394851602179055600180546001600160a01b031916919092161790556100b9565b80516001600160a01b038116811461008157600080fd5b919050565b6000806040838503121561009957600080fd5b6100a28361006a565b91506100b06020840161006a565b90509250929050565b610ce6806100c86000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063790317e111610071578063790317e1146101415780637f63fe95146101495780638456cb591461015957806386c9de0514610161578063bcdd1e1314610187578063be2b9a791461019a57600080fd5b806301ffc9a7146100ae578063150b7a02146100d6578063183a7a05146101025780633f4ba83a1461012c5780635c975abb14610136575b600080fd5b6100c16100bc366004610ac1565b6101ad565b60405190151581526020015b60405180910390f35b6100e96100e4366004610b03565b6101d8565b6040516001600160e01b031990911681526020016100cd565b6000546201000090046001600160a01b03166040516001600160a01b0390911681526020016100cd565b61013461027f565b005b60005460ff166100c1565b61013461034d565b600054610100900460ff166100c1565b610134610446565b7f73ad2146b3d3a286642c794379d750360a2d53a3459a11b3e5d6cc900f55f44a6100e9565b610134610195366004610ba2565b610512565b6101346101a8366004610be3565b6105a6565b60006001600160e01b0319821663be2b9a7960e01b14806101d257506101d2826106db565b92915050565b6000805486906001600160a01b038083166201000090920416148015610201575060005460ff16155b80156102155750600054610100900460ff16155b1561025c57336000908152600260209081526040808320888452909152902080546001600160a01b0319166001600160a01b038816179055630a85bd0160e11b9150610275565b6040516313297ca960e31b815260040160405180910390fd5b5095945050505050565b6001546001600160a01b03166001600160a01b03166312d9a6ad7f060c8eced3c6b422fe5573c862b67b9f6e25a3fc7d9543b14f7aee77b138e70d336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561030057600080fd5b505afa158015610314573d6000803e3d6000fd5b5050600054610100900460ff16159150610343905057604051639a2b7b7760e01b815260040160405180910390fd5b61034b610710565b565b6001546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156103af57600080fd5b505afa1580156103c3573d6000803e3d6000fd5b5050600054610100900460ff161591506103f2905057604051639a2b7b7760e01b815260040160405180910390fd5b6000805461ff0019166101001790557f197ee50d3254fb768e6c3ed8f87fee7c1ae45c7eee0d24d41b1c90933678cf866104293390565b6040516001600160a01b03909116815260200160405180910390a1565b6001546001600160a01b03166001600160a01b03166312d9a6ad7f060c8eced3c6b422fe5573c862b67b9f6e25a3fc7d9543b14f7aee77b138e70d336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156104c757600080fd5b505afa1580156104db573d6000803e3d6000fd5b5050600054610100900460ff1615915061050a905057604051639a2b7b7760e01b815260040160405180910390fd5b61034b610749565b6001546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561057457600080fd5b505afa158015610588573d6000803e3d6000fd5b506105a1925050506001600160a01b0384168383610786565b505050565b6000546201000090046001600160a01b0316336001600160a01b03161480156105d2575060005460ff16155b806105e45750600054610100900460ff165b156106c2576001600160a01b038083166000908152600260209081526040808320858452909152902054168061062d5760405163470cbf4760e01b815260040160405180910390fd5b6001600160a01b0383811660008181526002602090815260408083208784529091529081902080546001600160a01b0319169055516323b872dd60e01b8152306004820152918316602483015260448201849052906323b872dd90606401600060405180830381600087803b1580156106a557600080fd5b505af11580156106b9573d6000803e3d6000fd5b50505050505050565b604051631c133bbf60e11b815260040160405180910390fd5b60006001600160e01b031982166327d4cc0160e21b14806101d257506301ffc9a760e01b6001600160e01b03198316146101d2565b6107186107d8565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33610429565b610751610826565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586104293390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526105a190849061086c565b60005460ff1661034b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064015b60405180910390fd5b60005460ff161561034b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161081d565b60006108c1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661093e9092919063ffffffff16565b8051909150156105a157808060200190518101906108df9190610c0f565b6105a15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161081d565b606061094d8484600085610957565b90505b9392505050565b6060824710156109b85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161081d565b6001600160a01b0385163b610a0f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161081d565b600080866001600160a01b03168587604051610a2b9190610c61565b60006040518083038185875af1925050503d8060008114610a68576040519150601f19603f3d011682016040523d82523d6000602084013e610a6d565b606091505b5091509150610a7d828286610a88565b979650505050505050565b60608315610a97575081610950565b825115610aa75782518084602001fd5b8160405162461bcd60e51b815260040161081d9190610c7d565b600060208284031215610ad357600080fd5b81356001600160e01b03198116811461095057600080fd5b6001600160a01b0381168114610b0057600080fd5b50565b600080600080600060808688031215610b1b57600080fd5b8535610b2681610aeb565b94506020860135610b3681610aeb565b935060408601359250606086013567ffffffffffffffff80821115610b5a57600080fd5b818801915088601f830112610b6e57600080fd5b813581811115610b7d57600080fd5b896020828501011115610b8f57600080fd5b9699959850939650602001949392505050565b600080600060608486031215610bb757600080fd5b8335610bc281610aeb565b92506020840135610bd281610aeb565b929592945050506040919091013590565b60008060408385031215610bf657600080fd5b8235610c0181610aeb565b946020939093013593505050565b600060208284031215610c2157600080fd5b8151801515811461095057600080fd5b60005b83811015610c4c578181015183820152602001610c34565b83811115610c5b576000848401525b50505050565b60008251610c73818460208701610c31565b9190910192915050565b6020815260008251806020840152610c9c816040850160208701610c31565b601f01601f1916919091016040019291505056fea26469706673582212201ec8105c328f6db19454c7f3eaf78619295456223bb23e93251944c8c43da37164736f6c634300080d0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063790317e111610071578063790317e1146101415780637f63fe95146101495780638456cb591461015957806386c9de0514610161578063bcdd1e1314610187578063be2b9a791461019a57600080fd5b806301ffc9a7146100ae578063150b7a02146100d6578063183a7a05146101025780633f4ba83a1461012c5780635c975abb14610136575b600080fd5b6100c16100bc366004610ac1565b6101ad565b60405190151581526020015b60405180910390f35b6100e96100e4366004610b03565b6101d8565b6040516001600160e01b031990911681526020016100cd565b6000546201000090046001600160a01b03166040516001600160a01b0390911681526020016100cd565b61013461027f565b005b60005460ff166100c1565b61013461034d565b600054610100900460ff166100c1565b610134610446565b7f73ad2146b3d3a286642c794379d750360a2d53a3459a11b3e5d6cc900f55f44a6100e9565b610134610195366004610ba2565b610512565b6101346101a8366004610be3565b6105a6565b60006001600160e01b0319821663be2b9a7960e01b14806101d257506101d2826106db565b92915050565b6000805486906001600160a01b038083166201000090920416148015610201575060005460ff16155b80156102155750600054610100900460ff16155b1561025c57336000908152600260209081526040808320888452909152902080546001600160a01b0319166001600160a01b038816179055630a85bd0160e11b9150610275565b6040516313297ca960e31b815260040160405180910390fd5b5095945050505050565b6001546001600160a01b03166001600160a01b03166312d9a6ad7f060c8eced3c6b422fe5573c862b67b9f6e25a3fc7d9543b14f7aee77b138e70d336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561030057600080fd5b505afa158015610314573d6000803e3d6000fd5b5050600054610100900460ff16159150610343905057604051639a2b7b7760e01b815260040160405180910390fd5b61034b610710565b565b6001546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156103af57600080fd5b505afa1580156103c3573d6000803e3d6000fd5b5050600054610100900460ff161591506103f2905057604051639a2b7b7760e01b815260040160405180910390fd5b6000805461ff0019166101001790557f197ee50d3254fb768e6c3ed8f87fee7c1ae45c7eee0d24d41b1c90933678cf866104293390565b6040516001600160a01b03909116815260200160405180910390a1565b6001546001600160a01b03166001600160a01b03166312d9a6ad7f060c8eced3c6b422fe5573c862b67b9f6e25a3fc7d9543b14f7aee77b138e70d336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156104c757600080fd5b505afa1580156104db573d6000803e3d6000fd5b5050600054610100900460ff1615915061050a905057604051639a2b7b7760e01b815260040160405180910390fd5b61034b610749565b6001546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561057457600080fd5b505afa158015610588573d6000803e3d6000fd5b506105a1925050506001600160a01b0384168383610786565b505050565b6000546201000090046001600160a01b0316336001600160a01b03161480156105d2575060005460ff16155b806105e45750600054610100900460ff165b156106c2576001600160a01b038083166000908152600260209081526040808320858452909152902054168061062d5760405163470cbf4760e01b815260040160405180910390fd5b6001600160a01b0383811660008181526002602090815260408083208784529091529081902080546001600160a01b0319169055516323b872dd60e01b8152306004820152918316602483015260448201849052906323b872dd90606401600060405180830381600087803b1580156106a557600080fd5b505af11580156106b9573d6000803e3d6000fd5b50505050505050565b604051631c133bbf60e11b815260040160405180910390fd5b60006001600160e01b031982166327d4cc0160e21b14806101d257506301ffc9a760e01b6001600160e01b03198316146101d2565b6107186107d8565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33610429565b610751610826565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586104293390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526105a190849061086c565b60005460ff1661034b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064015b60405180910390fd5b60005460ff161561034b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161081d565b60006108c1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661093e9092919063ffffffff16565b8051909150156105a157808060200190518101906108df9190610c0f565b6105a15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161081d565b606061094d8484600085610957565b90505b9392505050565b6060824710156109b85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161081d565b6001600160a01b0385163b610a0f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161081d565b600080866001600160a01b03168587604051610a2b9190610c61565b60006040518083038185875af1925050503d8060008114610a68576040519150601f19603f3d011682016040523d82523d6000602084013e610a6d565b606091505b5091509150610a7d828286610a88565b979650505050505050565b60608315610a97575081610950565b825115610aa75782518084602001fd5b8160405162461bcd60e51b815260040161081d9190610c7d565b600060208284031215610ad357600080fd5b81356001600160e01b03198116811461095057600080fd5b6001600160a01b0381168114610b0057600080fd5b50565b600080600080600060808688031215610b1b57600080fd5b8535610b2681610aeb565b94506020860135610b3681610aeb565b935060408601359250606086013567ffffffffffffffff80821115610b5a57600080fd5b818801915088601f830112610b6e57600080fd5b813581811115610b7d57600080fd5b896020828501011115610b8f57600080fd5b9699959850939650602001949392505050565b600080600060608486031215610bb757600080fd5b8335610bc281610aeb565b92506020840135610bd281610aeb565b929592945050506040919091013590565b60008060408385031215610bf657600080fd5b8235610c0181610aeb565b946020939093013593505050565b600060208284031215610c2157600080fd5b8151801515811461095057600080fd5b60005b83811015610c4c578181015183820152602001610c34565b83811115610c5b576000848401525b50505050565b60008251610c73818460208701610c31565b9190910192915050565b6020815260008251806020840152610c9c816040850160208701610c31565b601f01601f1916919091016040019291505056fea26469706673582212201ec8105c328f6db19454c7f3eaf78619295456223bb23e93251944c8c43da37164736f6c634300080d0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
