import { Abi, ContractAbi } from '../common.contracts' const abi: Abi[] = [ { inputs: [], stateMutability: 'nonpayable', type: 'constructor', }, { anonymous: false, inputs: [ { indexed: false, internalType: 'address', name: 'addr', type: 'address', }, { indexed: false, internalType: 'address', name: 'owner', type: 'address', }, { indexed: false, internalType: 'string', name: 'reason', type: 'string', }, ], name: 'CreateFailed', type: 'event', }, { anonymous: false, inputs: [ { indexed: false, internalType: 'address', name: 'addr', type: 'address', }, ], name: 'Created', type: 'event', }, { anonymous: false, inputs: [ { indexed: false, internalType: 'address', name: 'addr', type: 'address', }, { indexed: false, internalType: 'address', name: 'owner', type: 'address', }, { indexed: false, internalType: 'uint256', name: 'index', type: 'uint256', }, ], name: 'WalletDetails', type: 'event', }, { inputs: [ { internalType: 'address', name: 'owner', type: 'address', }, { internalType: 'uint256', name: 'index', type: 'uint256', }, ], name: 'create', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ { internalType: 'address', name: 'owner', type: 'address', }, { internalType: 'uint256[]', name: 'index', type: 'uint256[]', }, ], name: 'createBatch', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ { internalType: 'address', name: 'owner', type: 'address', }, { internalType: 'uint256', name: 'index', type: 'uint256', }, ], name: 'getWallet', outputs: [ { internalType: 'address', name: 'addr', type: 'address', }, { internalType: 'bool', name: 'exists', type: 'bool', }, { internalType: 'bytes32', name: 'salt', type: 'bytes32', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'address', name: 'owner', type: 'address', }, { internalType: 'uint256[]', name: 'index', type: 'uint256[]', }, ], name: 'getWallets', outputs: [ { internalType: 'address[]', name: '', type: 'address[]', }, { internalType: 'bool[]', name: '', type: 'bool[]', }, { internalType: 'bytes32[]', name: '', type: 'bytes32[]', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'bytes32', name: '', type: 'bytes32', }, ], name: 'wallets', outputs: [ { internalType: 'address', name: '', type: 'address', }, ], stateMutability: 'view', type: 'function', }, ] const bytecode = '0x608060405234801561001057600080fd5b5060405161001d9061005f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905561006c565b61144c80610d0a83390190565b610c8f8061007b6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630ecaea731461005c57806313feefc214610071578063ae666ab6146100b7578063de862c38146100ca578063f456d470146100ec575b600080fd5b61006f61006a3660046109e2565b610124565b005b61009a61007f366004610a0c565b6001602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61006f6100c536600461090a565b6102b6565b6100dd6100d836600461090a565b6104f3565b6040516100ae93929190610b24565b6100ff6100fa3660046109e2565b610755565b604080516001600160a01b0390941684529115156020840152908201526060016100ae565b60008060006101338585610755565b92509250925081156101605760405162461bcd60e51b815260040161015790610bcf565b60405180910390fd5b60008054610177906001600160a01b0316836107db565b9050836001600160a01b0316816001600160a01b0316146101aa5760405162461bcd60e51b815260040161015790610bbd565b6000828152600160205260409081902080546001600160a01b0319166001600160a01b03848116918217909255915163066ad14f60e21b815290881660048201526319ab453c90602401600060405180830381600087803b15801561020e57600080fd5b505af1158015610222573d6000803e3d6000fd5b50506040516001600160a01b03841681527f1449abf21e49fd025f33495e77f7b1461caefdd3d4bb646424a3f445c4576a5b9250602001905060405180910390a1604080516001600160a01b038084168252881660208201529081018690527fc73427619458903ddfed317f155ade5fdb0f869ce14127ef0b4c992c95c6bc939060600160405180910390a1505050505050565b60005b81518110156104ee5760008060006102ea868686815181106102dd576102dd610c2d565b6020026020010151610755565b9250925092508115610337577f24e7702012ced233e23467d16a94ecf9bd06c350f8fadb065d4829886f8556168387604051610327929190610ad8565b60405180910390a15050506104dc565b6000805461034e906001600160a01b0316836107db565b9050836001600160a01b0316816001600160a01b0316146103ab577f24e7702012ced233e23467d16a94ecf9bd06c350f8fadb065d4829886f855616848860405161039a929190610aa5565b60405180910390a1505050506104dc565b6000828152600160205260409081902080546001600160a01b0319166001600160a01b03848116918217909255915163066ad14f60e21b815290891660048201526319ab453c90602401600060405180830381600087803b15801561040f57600080fd5b505af1158015610423573d6000803e3d6000fd5b50506040516001600160a01b03841681527f1449abf21e49fd025f33495e77f7b1461caefdd3d4bb646424a3f445c4576a5b9250602001905060405180910390a17fc73427619458903ddfed317f155ade5fdb0f869ce14127ef0b4c992c95c6bc93818888888151811061049957610499610c2d565b60200260200101516040516104cf939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a1505050505b806104e681610c04565b9150506102b9565b505050565b60608060606000845167ffffffffffffffff81111561051457610514610c43565b60405190808252806020026020018201604052801561053d578160200160208202803683370190505b5090506000855167ffffffffffffffff81111561055c5761055c610c43565b604051908082528060200260200182016040528015610585578160200160208202803683370190505b5090506000865167ffffffffffffffff8111156105a4576105a4610c43565b6040519080825280602002602001820160405280156105cd578160200160208202803683370190505b50905060005b875181101561074657888882815181106105ef576105ef610c2d565b602002602001015160405160200161062592919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012082828151811061064d5761064d610c2d565b6020908102919091010152600054825161068a916001600160a01b03169084908490811061067d5761067d610c2d565b6020026020010151610881565b84828151811061069c5761069c610c2d565b60200260200101906001600160a01b031690816001600160a01b03168152505060006001600160a01b0316600160008484815181106106dd576106dd610c2d565b6020026020010151815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b0316141583828151811061072457610724610c2d565b911515602092830291909101909101528061073e81610c04565b9150506105d3565b50919450925090509250925092565b6040516bffffffffffffffffffffffff19606084901b166020820152603481018290526000908190819060540160408051601f1981840301815291905280516020909101206000549091506107b3906001600160a01b031682610881565b60008281526001602052604090205490966001600160a01b0390911615159550909350915050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b03811661087b5760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610157565b92915050565b60006108e7838330604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b80356001600160a01b038116811461090557600080fd5b919050565b6000806040838503121561091d57600080fd5b610926836108ee565b915060208084013567ffffffffffffffff8082111561094457600080fd5b818601915086601f83011261095857600080fd5b81358181111561096a5761096a610c43565b8060051b604051601f19603f8301168101818110858211171561098f5761098f610c43565b604052828152858101935084860182860187018b10156109ae57600080fd5b600095505b838610156109d15780358552600195909501949386019386016109b3565b508096505050505050509250929050565b600080604083850312156109f557600080fd5b6109fe836108ee565b946020939093013593505050565b600060208284031215610a1e57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610a5557815187529582019590820190600101610a39565b509495945050505050565b602c81527f4164647265737320646f65736e74206d6174636820776974682070726564696360208201526b3a32b21030b2323932b9b99760a11b604082015260600190565b6001600160a01b03838116825282166020820152606060408201819052600090610ad0908301610a60565b949350505050565b6001600160a01b038381168252821660208201526060604082018190526015908201527457616c6c657420616c72656164792065786973747360581b6080820152600060a08201610ad0565b606080825284519082018190526000906020906080840190828801845b82811015610b665781516001600160a01b031684529284019290840190600101610b41565b5050508381038285015285518082528683019183019060005b81811015610b9d578351151583529284019291840191600101610b7f565b50508481036040860152610bb18187610a25565b98975050505050505050565b60208152600061087b60208301610a60565b60208152600061087b60208301601581527457616c6c657420616c72656164792065786973747360581b602082015260400190565b6000600019821415610c2657634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212206afb763665a8e355ec2779d98f2ccac493fe10d0d5e3448cc63139b89454f06964736f6c63430008070033608060405234801561001057600080fd5b5061142c806100206000396000f3fe6080604052600436106100955760003560e01c8063bc197c8111610059578063bc197c811461016b578063f23a6e6114610197578063f2881e21146101c3578063f2fde38b146101d6578063f7e290a4146101f657600080fd5b8063150b7a02146100a157806319ab453c146100ea578063715018a61461010c5780638da5cb5b14610121578063966f197c1461015857600080fd5b3661009c57005b600080fd5b3480156100ad57600080fd5b506100cc6100bc36600461105e565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020015b60405180910390f35b3480156100f657600080fd5b5061010a610105366004610f99565b610216565b005b34801561011857600080fd5b5061010a610222565b34801561012d57600080fd5b506000546201000090046001600160a01b03166040516001600160a01b0390911681526020016100e1565b61010a610166366004611179565b6102ad565b34801561017757600080fd5b506100cc610186366004610fb4565b63bc197c8160e01b95945050505050565b3480156101a357600080fd5b506100cc6101b23660046110c6565b63f23a6e6160e01b95945050505050565b61010a6101d136600461112b565b6106c5565b3480156101e257600080fd5b5061010a6101f1366004610f99565b610852565b34801561020257600080fd5b5061010a61021136600461112b565b610951565b61021f81610a8b565b50565b6000546001600160a01b036201000090910416331461025c5760405162461bcd60e51b8152600401610253906112e7565b60405180910390fd5b60008054604051620100009091046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805462010000600160b01b0319169055565b6000546001600160a01b03620100009091041633146102de5760405162461bcd60e51b8152600401610253906112e7565b83518551146102ec57600080fd5b83518351146102fa57600080fd5b815183511461030857600080fd5b805182511461031657600080fd5b60005b85518110156106bd57848181518110610334576103346113ca565b6020026020010151600014156103b2576103ad848281518110610359576103596113ca565b6020026020010151848381518110610373576103736113ca565b602002602001015188848151811061038d5761038d6113ca565b60200260200101516001600160a01b0316610b919092919063ffffffff16565b6106ab565b8481815181106103c4576103c46113ca565b6020026020010151600114156104af578581815181106103e6576103e66113ca565b60200260200101516001600160a01b031663b88d4fde3086848151811061040f5761040f6113ca565b6020026020010151858581518110610429576104296113ca565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152608060648201526000608482015260a4015b600060405180830381600087803b15801561049257600080fd5b505af11580156104a6573d6000803e3d6000fd5b505050506106ab565b8481815181106104c1576104c16113ca565b602002602001015160021415610567578581815181106104e3576104e36113ca565b60200260200101516001600160a01b031663f242432a3086848151811061050c5761050c6113ca565b6020026020010151858581518110610526576105266113ca565b6020026020010151878681518110610540576105406113ca565b60200260200101516040518563ffffffff1660e01b8152600401610478949392919061127c565b848181518110610579576105796113ca565b6020026020010151600314156106635783818151811061059b5761059b6113ca565b60200260200101516001600160a01b03166108fc8483815181106105c1576105c16113ca565b60200260200101519081150290604051600060405180830381858888f193505050501580156105f4573d6000803e3d6000fd5b50828181518110610607576106076113ca565b6020026020010151848281518110610621576106216113ca565b60200260200101516001600160a01b03167f1a646868f368f13a9903d85b6d3c7fc7366487cd50853fcaa912a82511f1c23160405160405180910390a36106ab565b60405162461bcd60e51b815260206004820152601960248201527f556e737570706f7274656420636f6e74726163742074797065000000000000006044820152606401610253565b806106b5816113a1565b915050610319565b505050505050565b6000546001600160a01b03620100009091041633146106f65760405162461bcd60e51b8152600401610253906112e7565b836107145761070f6001600160a01b0386168484610b91565b61084b565b836001141561079957604051635c46a7ef60e11b81523060048201526001600160a01b03848116602483015260448201839052608060648301526000608483015286169063b88d4fde9060a4015b600060405180830381600087803b15801561077c57600080fd5b505af1158015610790573d6000803e3d6000fd5b5050505061084b565b83600214156107d457604051637921219560e11b81526001600160a01b0386169063f242432a9061076290309087908690889060040161127c565b8360031415610663576040516001600160a01b0384169083156108fc029084906000818181858888f19350505050158015610813573d6000803e3d6000fd5b5060405182906001600160a01b038516907f1a646868f368f13a9903d85b6d3c7fc7366487cd50853fcaa912a82511f1c23190600090a35b5050505050565b6000546001600160a01b03620100009091041633146108835760405162461bcd60e51b8152600401610253906112e7565b6001600160a01b0381166108e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610253565b600080546040516001600160a01b03808516936201000090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000546001600160a01b03620100009091041633146109825760405162461bcd60e51b8152600401610253906112e7565b83610a0f5760405163095ea7b360e01b81526001600160a01b0384811660048301526024820184905286169063095ea7b390604401602060405180830381600087803b1580156109d157600080fd5b505af11580156109e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a09919061123e565b5061084b565b8360011415610a4d5760405163095ea7b360e01b81526001600160a01b0384811660048301526024820183905286169063095ea7b390604401610762565b83600214156106635760405163a22cb46560e01b81526001600160a01b0384811660048301526001602483015286169063a22cb46590604401610762565b600054610100900460ff1680610aa4575060005460ff16155b610b075760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610253565b600054610100900460ff16158015610b29576000805461ffff19166101011790555b6000805462010000600160b01b031916620100006001600160a01b0385169081029190911782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015610b8d576000805461ff00191690555b5050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610be3908490610be8565b505050565b6000610c3d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610cba9092919063ffffffff16565b805190915015610be35780806020019051810190610c5b919061123e565b610be35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610253565b6060610cc98484600085610cd3565b90505b9392505050565b606082471015610d345760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610253565b843b610d825760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610253565b600080866001600160a01b03168587604051610d9e9190611260565b60006040518083038185875af1925050503d8060008114610ddb576040519150601f19603f3d011682016040523d82523d6000602084013e610de0565b606091505b5091509150610df0828286610dfb565b979650505050505050565b60608315610e0a575081610ccc565b825115610e1a5782518084602001fd5b8160405162461bcd60e51b815260040161025391906112b4565b80356001600160a01b0381168114610e4b57600080fd5b919050565b600082601f830112610e6157600080fd5b81356020610e76610e718361134d565b61131c565b80838252828201915082860187848660051b8901011115610e9657600080fd5b60005b85811015610ebc57610eaa82610e34565b84529284019290840190600101610e99565b5090979650505050505050565b600082601f830112610eda57600080fd5b81356020610eea610e718361134d565b80838252828201915082860187848660051b8901011115610f0a57600080fd5b60005b85811015610ebc57813584529284019290840190600101610f0d565b600082601f830112610f3a57600080fd5b813567ffffffffffffffff811115610f5457610f546113e0565b610f67601f8201601f191660200161131c565b818152846020838601011115610f7c57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610fab57600080fd5b610ccc82610e34565b600080600080600060a08688031215610fcc57600080fd5b610fd586610e34565b9450610fe360208701610e34565b9350604086013567ffffffffffffffff8082111561100057600080fd5b61100c89838a01610ec9565b9450606088013591508082111561102257600080fd5b61102e89838a01610ec9565b9350608088013591508082111561104457600080fd5b5061105188828901610f29565b9150509295509295909350565b6000806000806080858703121561107457600080fd5b61107d85610e34565b935061108b60208601610e34565b925060408501359150606085013567ffffffffffffffff8111156110ae57600080fd5b6110ba87828801610f29565b91505092959194509250565b600080600080600060a086880312156110de57600080fd5b6110e786610e34565b94506110f560208701610e34565b93506040860135925060608601359150608086013567ffffffffffffffff81111561111f57600080fd5b61105188828901610f29565b600080600080600060a0868803121561114357600080fd5b61114c86610e34565b94506020860135935061116160408701610e34565b94979396509394606081013594506080013592915050565b600080600080600060a0868803121561119157600080fd5b853567ffffffffffffffff808211156111a957600080fd5b6111b589838a01610e50565b965060208801359150808211156111cb57600080fd5b6111d789838a01610ec9565b955060408801359150808211156111ed57600080fd5b6111f989838a01610e50565b9450606088013591508082111561120f57600080fd5b61121b89838a01610ec9565b9350608088013591508082111561123157600080fd5b5061105188828901610ec9565b60006020828403121561125057600080fd5b81518015158114610ccc57600080fd5b60008251611272818460208701611371565b9190910192915050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b60208152600082518060208401526112d3816040850160208701611371565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715611345576113456113e0565b604052919050565b600067ffffffffffffffff821115611367576113676113e0565b5060051b60200190565b60005b8381101561138c578181015183820152602001611374565b8381111561139b576000848401525b50505050565b60006000198214156113c357634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212201d2ebb4379f60ff0537a9e0229a0d30da03521cac6db12a985c980e49f63f72964736f6c63430008070033' export const CustodialWalletFactoryV2: ContractAbi = { abi, bytecode, }