hopr_bindings/codegen/
hoprnodestakefactory.rs

1/**
2
3Generated by the following Solidity interface...
4```solidity
5interface HoprNodeStakeFactory {
6    error TooFewOwners();
7
8    event NewHoprNodeStakeModule(address indexed moduleImplementation, address instance);
9    event NewHoprNodeStakeSafe(address instance);
10
11    constructor();
12
13    function clone(address moduleSingletonAddress, address[] memory admins, uint256 nonce, bytes32 defaultTarget) external returns (address, address payable);
14    function predictDeterministicAddress(address implementation, bytes32 salt) external view returns (address predicted);
15    function safeVersion() external pure returns (string memory);
16}
17```
18
19...which was generated by the following JSON ABI:
20```json
21[
22  {
23    "type": "constructor",
24    "inputs": [],
25    "stateMutability": "nonpayable"
26  },
27  {
28    "type": "function",
29    "name": "clone",
30    "inputs": [
31      {
32        "name": "moduleSingletonAddress",
33        "type": "address",
34        "internalType": "address"
35      },
36      {
37        "name": "admins",
38        "type": "address[]",
39        "internalType": "address[]"
40      },
41      {
42        "name": "nonce",
43        "type": "uint256",
44        "internalType": "uint256"
45      },
46      {
47        "name": "defaultTarget",
48        "type": "bytes32",
49        "internalType": "bytes32"
50      }
51    ],
52    "outputs": [
53      {
54        "name": "",
55        "type": "address",
56        "internalType": "address"
57      },
58      {
59        "name": "",
60        "type": "address",
61        "internalType": "address payable"
62      }
63    ],
64    "stateMutability": "nonpayable"
65  },
66  {
67    "type": "function",
68    "name": "predictDeterministicAddress",
69    "inputs": [
70      {
71        "name": "implementation",
72        "type": "address",
73        "internalType": "address"
74      },
75      {
76        "name": "salt",
77        "type": "bytes32",
78        "internalType": "bytes32"
79      }
80    ],
81    "outputs": [
82      {
83        "name": "predicted",
84        "type": "address",
85        "internalType": "address"
86      }
87    ],
88    "stateMutability": "view"
89  },
90  {
91    "type": "function",
92    "name": "safeVersion",
93    "inputs": [],
94    "outputs": [
95      {
96        "name": "",
97        "type": "string",
98        "internalType": "string"
99      }
100    ],
101    "stateMutability": "pure"
102  },
103  {
104    "type": "event",
105    "name": "NewHoprNodeStakeModule",
106    "inputs": [
107      {
108        "name": "moduleImplementation",
109        "type": "address",
110        "indexed": true,
111        "internalType": "address"
112      },
113      {
114        "name": "instance",
115        "type": "address",
116        "indexed": false,
117        "internalType": "address"
118      }
119    ],
120    "anonymous": false
121  },
122  {
123    "type": "event",
124    "name": "NewHoprNodeStakeSafe",
125    "inputs": [
126      {
127        "name": "instance",
128        "type": "address",
129        "indexed": false,
130        "internalType": "address"
131      }
132    ],
133    "anonymous": false
134  },
135  {
136    "type": "error",
137    "name": "TooFewOwners",
138    "inputs": []
139  }
140]
141```*/
142#[allow(
143    non_camel_case_types,
144    non_snake_case,
145    clippy::pub_underscore_fields,
146    clippy::style,
147    clippy::empty_structs_with_brackets
148)]
149pub mod HoprNodeStakeFactory {
150    use super::*;
151    use alloy::sol_types as alloy_sol_types;
152    /// The creation / init bytecode of the contract.
153    ///
154    /// ```text
155    ///0x60a06040523480156200001157600080fd5b5030608081905260408051602081019290925260009082015260600160408051601f19818403018152908290526200005291600160f81b9060200162000078565b6040516020818303038152906040526000908162000071919062000176565b5062000242565b6000835160005b818110156200009b57602081870181015185830152016200007f565b507fff00000000000000000000000000000000000000000000000000000000000000939093169190920190815260010192915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000fc57607f821691505b6020821081036200011d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200017157600081815260208120601f850160051c810160208610156200014c5750805b601f850160051c820191505b818110156200016d5782815560010162000158565b5050505b505050565b81516001600160401b03811115620001925762000192620000d1565b620001aa81620001a38454620000e7565b8462000123565b602080601f831160018114620001e25760008415620001c95750858301515b600019600386901b1c1916600185901b1785556200016d565b600085815260208120601f198616915b828110156200021357888601518255948401946001909101908401620001f2565b5085821015620002325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610de66200025b60003960005050610de66000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063360d0fad146100465780637ef2721f14610076578063930f426a1461009d575b600080fd5b6100596100543660046108ee565b6100d0565b6040516001600160a01b0390911681526020015b60405180910390f35b6040805180820182526005815264312e342e3160d81b6020820152905161006d919061096a565b6100b06100ab366004610993565b6100ee565b604080516001600160a01b0393841681529290911660208301520161006d565b60006100e56001600160a01b0384168361049d565b90505b92915050565b6000808451600003610113576040516306bfe8d560e11b815260040160405180910390fd5b6040516bffffffffffffffffffffffff193360601b1660208201526034810185905260009060540160408051601f1981840301815291905280516020909101209050600061016a6001600160a01b038916836104fd565b905060008760008151811061018157610181610a7b565b60200260200101519050308860008151811061019f5761019f610a7b565b60200260200101906001600160a01b031690816001600160a01b03168152505060008860016000732a15de4410d4c8af0a7b6c12803120f43c42b82060008060006040516024016101f69796959493929190610a91565b60408051601f198184030181529181526020820180516001600160e01b031663b63e800d60e01b17905251631688f0b960e01b8152909150600090734e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec6790631688f0b990610273907341675c099f32341bf84bfc5382af534df5c7461a9086908e90600401610b52565b6020604051808303816000875af1158015610292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b69190610b86565b604080516001600160a01b0383166020820152739641d764fc13c8b624c04430c7356c1c7c8102e28183015260608082018c90528251808303909101815260808201909252919250829160009161030f9160a40161096a565b60408051601f198184030181529190526020810180516001600160e01b031663439fab9160e01b179052905061034e6001600160a01b0387168261059f565b506040516001600160a01b038716602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663610b592560e01b179052905061039f836000836105e3565b604051600160248201523060448201526001600160a01b038716606482015260009060840160408051601f198184030181529190526020810180516001600160e01b031663e318b52b60e01b17905290506103fc846001836105e3565b8e6001600160a01b03167f813d391dc490d6c1dae7d3fdd555f337533d1da2c908c6efd36d4cf557a632068960405161044491906001600160a01b0391909116815260200190565b60405180910390a26040516001600160a01b03861681527f8231d169f416b666ae7fa43faa24a18899738075a53f32c97617d173b189e3869060200160405180910390a150959d919c50909a5050505050505050505050565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff602482015260148101839052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018290526037600c820120607882015260556043909101206000906100e5565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166100e85760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064015b60405180910390fd5b60606100e5838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564000081525061074b565b604051631b1a23ef60e31b81526000906001600160a01b0385169063d8d11f7890610624908790859087908290819081908190819033908f90600401610bcc565b602060405180830381865afa158015610641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106659190610c42565b60405163d4d9bdcd60e01b8152600481018290529091506001600160a01b0385169063d4d9bdcd90602401600060405180830381600087803b1580156106aa57600080fd5b505af11580156106be573d6000803e3d6000fd5b505060405163353b090160e11b81526001600160a01b0387169250636a761202915061070190879060009087908290819081908190819033908290600401610c5b565b6020604051808303816000875af1158015610720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107449190610d72565b5050505050565b6060824710156107ac5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610596565b600080866001600160a01b031685876040516107c89190610d94565b60006040518083038185875af1925050503d8060008114610805576040519150601f19603f3d011682016040523d82523d6000602084013e61080a565b606091505b509150915061081b87838387610828565b925050505b949350505050565b60608315610897578251600003610890576001600160a01b0385163b6108905760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610596565b5081610820565b61082083838151156108ac5781518083602001fd5b8060405162461bcd60e51b8152600401610596919061096a565b6001600160a01b03811681146108db57600080fd5b50565b80356108e9816108c6565b919050565b6000806040838503121561090157600080fd5b823561090c816108c6565b946020939093013593505050565b60005b8381101561093557818101518382015260200161091d565b50506000910152565b6000815180845261095681602086016020860161091a565b601f01601f19169290920160200192915050565b6020815260006100e5602083018461093e565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156109a957600080fd5b84356109b4816108c6565b935060208581013567ffffffffffffffff808211156109d257600080fd5b818801915088601f8301126109e657600080fd5b8135818111156109f8576109f861097d565b8060051b604051601f19603f83011681018181108582111715610a1d57610a1d61097d565b60405291825284820192508381018501918b831115610a3b57600080fd5b938501935b82851015610a6057610a51856108de565b84529385019392850192610a40565b989b989a505050506040870135966060013595945050505050565b634e487b7160e01b600052603260045260246000fd5b6101008082528851908201819052600090610120830190602090818c01845b82811015610ad55781516001600160a01b031685529383019390830190600101610ab0565b50505060ff8a1684820152506001600160a01b03881660408401528281036060840152600181526000602082015260408101915050610b1f60808301876001600160a01b03169052565b6001600160a01b03851660a083015260ff841660c08301526001600160a01b03831660e083015298975050505050505050565b6001600160a01b0384168152606060208201819052600090610b769083018561093e565b9050826040830152949350505050565b600060208284031215610b9857600080fd5b8151610ba3816108c6565b9392505050565b60028110610bc857634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b038b81168252602082018b905261014060408301819052600091610bf98483018d61093e565b9250610c08606085018c610baa565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b600060208284031215610c5457600080fd5b5051919050565b600061014060018060a01b03808e16845260208d81860152826040860152610c858386018e61093e565b9250610c94606086018d610baa565b8a60808601528960a08601528860c086015281881660e086015281871661010086015284830361012086015260009150855482600182811c915080831680610cdd57607f831692505b8483108103610cfa57634e487b7160e01b86526022600452602486fd5b828752602087019650808015610d175760018114610d2d57610d58565b60ff198516885283151560051b88019650610d58565b60008b81526020902060005b85811015610d525781548a820152908401908701610d39565b89019750505b50505050505080925050509b9a5050505050505050505050565b600060208284031215610d8457600080fd5b81518015158114610ba357600080fd5b60008251610da681846020870161091a565b919091019291505056fea26469706673582212209886696b2909c8efe81802f6e75fd0d1072e9b57e0ca5680d6168aaf5fae4bc364736f6c63430008130033
156    /// ```
157    #[rustfmt::skip]
158    #[allow(clippy::all)]
159    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
160        b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P0`\x80\x81\x90R`@\x80Q` \x81\x01\x92\x90\x92R`\0\x90\x82\x01R``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\0R\x91`\x01`\xF8\x1B\x90` \x01b\0\0xV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\0\x90\x81b\0\0q\x91\x90b\0\x01vV[Pb\0\x02BV[`\0\x83Q`\0[\x81\x81\x10\x15b\0\0\x9BW` \x81\x87\x01\x81\x01Q\x85\x83\x01R\x01b\0\0\x7FV[P\x7F\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x01\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\0\xFCW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x01\x1DWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01qW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x01LWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x01mW\x82\x81U`\x01\x01b\0\x01XV[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x01\x92Wb\0\x01\x92b\0\0\xD1V[b\0\x01\xAA\x81b\0\x01\xA3\x84Tb\0\0\xE7V[\x84b\0\x01#V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x01\xE2W`\0\x84\x15b\0\x01\xC9WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x01mV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x02\x13W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x01\xF2V[P\x85\x82\x10\x15b\0\x022W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x80Qa\r\xE6b\0\x02[`\09`\0PPa\r\xE6`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c6\r\x0F\xAD\x14a\0FW\x80c~\xF2r\x1F\x14a\0vW\x80c\x93\x0FBj\x14a\0\x9DW[`\0\x80\xFD[a\0Ya\0T6`\x04a\x08\xEEV[a\0\xD0V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@\x80Q\x80\x82\x01\x82R`\x05\x81Rd1.4.1`\xD8\x1B` \x82\x01R\x90Qa\0m\x91\x90a\tjV[a\0\xB0a\0\xAB6`\x04a\t\x93V[a\0\xEEV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01R\x01a\0mV[`\0a\0\xE5`\x01`\x01`\xA0\x1B\x03\x84\x16\x83a\x04\x9DV[\x90P[\x92\x91PPV[`\0\x80\x84Q`\0\x03a\x01\x13W`@Qc\x06\xBF\xE8\xD5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x193``\x1B\x16` \x82\x01R`4\x81\x01\x85\x90R`\0\x90`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90P`\0a\x01j`\x01`\x01`\xA0\x1B\x03\x89\x16\x83a\x04\xFDV[\x90P`\0\x87`\0\x81Q\x81\x10a\x01\x81Wa\x01\x81a\n{V[` \x02` \x01\x01Q\x90P0\x88`\0\x81Q\x81\x10a\x01\x9FWa\x01\x9Fa\n{V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP`\0\x88`\x01`\0s*\x15\xDED\x10\xD4\xC8\xAF\n{l\x12\x801 \xF4<B\xB8 `\0\x80`\0`@Q`$\x01a\x01\xF6\x97\x96\x95\x94\x93\x92\x91\x90a\n\x91V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xB6>\x80\r`\xE0\x1B\x17\x90RQc\x16\x88\xF0\xB9`\xE0\x1B\x81R\x90\x91P`\0\x90sN\x1D\xCFz\xD4\xE4`\xCF\xD3\x07\x91\xCC\xC4\xF9\xC8\xA4\xF8 \xECg\x90c\x16\x88\xF0\xB9\x90a\x02s\x90sAg\\\t\x9F24\x1B\xF8K\xFCS\x82\xAFSM\xF5\xC7F\x1A\x90\x86\x90\x8E\x90`\x04\x01a\x0BRV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xB6\x91\x90a\x0B\x86V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Rs\x96A\xD7d\xFC\x13\xC8\xB6$\xC0D0\xC75l\x1C|\x81\x02\xE2\x81\x83\x01R``\x80\x82\x01\x8C\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`\x80\x82\x01\x90\x92R\x91\x92P\x82\x91`\0\x91a\x03\x0F\x91`\xA4\x01a\tjV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cC\x9F\xAB\x91`\xE0\x1B\x17\x90R\x90Pa\x03N`\x01`\x01`\xA0\x1B\x03\x87\x16\x82a\x05\x9FV[P`@Q`\x01`\x01`\xA0\x1B\x03\x87\x16`$\x82\x01R`\0\x90`D\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16ca\x0BY%`\xE0\x1B\x17\x90R\x90Pa\x03\x9F\x83`\0\x83a\x05\xE3V[`@Q`\x01`$\x82\x01R0`D\x82\x01R`\x01`\x01`\xA0\x1B\x03\x87\x16`d\x82\x01R`\0\x90`\x84\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xE3\x18\xB5+`\xE0\x1B\x17\x90R\x90Pa\x03\xFC\x84`\x01\x83a\x05\xE3V[\x8E`\x01`\x01`\xA0\x1B\x03\x16\x7F\x81=9\x1D\xC4\x90\xD6\xC1\xDA\xE7\xD3\xFD\xD5U\xF37S=\x1D\xA2\xC9\x08\xC6\xEF\xD3mL\xF5W\xA62\x06\x89`@Qa\x04D\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2`@Q`\x01`\x01`\xA0\x1B\x03\x86\x16\x81R\x7F\x821\xD1i\xF4\x16\xB6f\xAE\x7F\xA4?\xAA$\xA1\x88\x99s\x80u\xA5?2\xC9v\x17\xD1s\xB1\x89\xE3\x86\x90` \x01`@Q\x80\x91\x03\x90\xA1P\x95\x9D\x91\x9CP\x90\x9APPPPPPPPPPPV[`@Q0`8\x82\x01RoZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\xFF`$\x82\x01R`\x14\x81\x01\x83\x90Rs=`-\x80`\n=9\x81\xF36==7===6=s\x81R`X\x81\x01\x82\x90R`7`\x0C\x82\x01 `x\x82\x01R`U`C\x90\x91\x01 `\0\x90a\0\xE5V[`\0v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0\x83``\x1B`\xE8\x1C\x17`\0RnZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x83`x\x1B\x17` R\x81`7`\t`\0\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a\0\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FERC1167: create2 failed\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[``a\0\xE5\x83\x83`\0`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7FAddress: low-level call failed\0\0\x81RPa\x07KV[`@Qc\x1B\x1A#\xEF`\xE3\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\xD8\xD1\x1Fx\x90a\x06$\x90\x87\x90\x85\x90\x87\x90\x82\x90\x81\x90\x81\x90\x81\x90\x81\x903\x90\x8F\x90`\x04\x01a\x0B\xCCV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06e\x91\x90a\x0CBV[`@Qc\xD4\xD9\xBD\xCD`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\xD4\xD9\xBD\xCD\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06\xAAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06\xBEW=`\0\x80>=`\0\xFD[PP`@Qc5;\t\x01`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x16\x92Pcjv\x12\x02\x91Pa\x07\x01\x90\x87\x90`\0\x90\x87\x90\x82\x90\x81\x90\x81\x90\x81\x90\x81\x903\x90\x82\x90`\x04\x01a\x0C[V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07 W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07D\x91\x90a\rrV[PPPPPV[``\x82G\x10\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x05\x96V[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\x07\xC8\x91\x90a\r\x94V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x08\x05W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x08\nV[``\x91P[P\x91P\x91Pa\x08\x1B\x87\x83\x83\x87a\x08(V[\x92PPP[\x94\x93PPPPV[``\x83\x15a\x08\x97W\x82Q`\0\x03a\x08\x90W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x08\x90W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x05\x96V[P\x81a\x08 V[a\x08 \x83\x83\x81Q\x15a\x08\xACW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x96\x91\x90a\tjV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x08\xDBW`\0\x80\xFD[PV[\x805a\x08\xE9\x81a\x08\xC6V[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x01W`\0\x80\xFD[\x825a\t\x0C\x81a\x08\xC6V[\x94` \x93\x90\x93\x015\x93PPPV[`\0[\x83\x81\x10\x15a\t5W\x81\x81\x01Q\x83\x82\x01R` \x01a\t\x1DV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\tV\x81` \x86\x01` \x86\x01a\t\x1AV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\0\xE5` \x83\x01\x84a\t>V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\t\xA9W`\0\x80\xFD[\x845a\t\xB4\x81a\x08\xC6V[\x93P` \x85\x81\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\t\xD2W`\0\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12a\t\xE6W`\0\x80\xFD[\x815\x81\x81\x11\x15a\t\xF8Wa\t\xF8a\t}V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\n\x1DWa\n\x1Da\t}V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x8B\x83\x11\x15a\n;W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\n`Wa\nQ\x85a\x08\xDEV[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\n@V[\x98\x9B\x98\x9APPPP`@\x87\x015\x96``\x015\x95\x94PPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[a\x01\0\x80\x82R\x88Q\x90\x82\x01\x81\x90R`\0\x90a\x01 \x83\x01\x90` \x90\x81\x8C\x01\x84[\x82\x81\x10\x15a\n\xD5W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x93\x83\x01\x93\x90\x83\x01\x90`\x01\x01a\n\xB0V[PPP`\xFF\x8A\x16\x84\x82\x01RP`\x01`\x01`\xA0\x1B\x03\x88\x16`@\x84\x01R\x82\x81\x03``\x84\x01R`\x01\x81R`\0` \x82\x01R`@\x81\x01\x91PPa\x0B\x1F`\x80\x83\x01\x87`\x01`\x01`\xA0\x1B\x03\x16\x90RV[`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x83\x01R`\xFF\x84\x16`\xC0\x83\x01R`\x01`\x01`\xA0\x1B\x03\x83\x16`\xE0\x83\x01R\x98\x97PPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R``` \x82\x01\x81\x90R`\0\x90a\x0Bv\x90\x83\x01\x85a\t>V[\x90P\x82`@\x83\x01R\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x98W`\0\x80\xFD[\x81Qa\x0B\xA3\x81a\x08\xC6V[\x93\x92PPPV[`\x02\x81\x10a\x0B\xC8WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x82R` \x82\x01\x8B\x90Ra\x01@`@\x83\x01\x81\x90R`\0\x91a\x0B\xF9\x84\x83\x01\x8Da\t>V[\x92Pa\x0C\x08``\x85\x01\x8Ca\x0B\xAAV[`\x80\x84\x01\x99\x90\x99RP`\xA0\x82\x01\x96\x90\x96R`\xC0\x81\x01\x94\x90\x94R\x91\x85\x16`\xE0\x84\x01R\x90\x93\x16a\x01\0\x82\x01Ra\x01 \x01\x91\x90\x91R\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x0CTW`\0\x80\xFD[PQ\x91\x90PV[`\0a\x01@`\x01\x80`\xA0\x1B\x03\x80\x8E\x16\x84R` \x8D\x81\x86\x01R\x82`@\x86\x01Ra\x0C\x85\x83\x86\x01\x8Ea\t>V[\x92Pa\x0C\x94``\x86\x01\x8Da\x0B\xAAV[\x8A`\x80\x86\x01R\x89`\xA0\x86\x01R\x88`\xC0\x86\x01R\x81\x88\x16`\xE0\x86\x01R\x81\x87\x16a\x01\0\x86\x01R\x84\x83\x03a\x01 \x86\x01R`\0\x91P\x85T\x82`\x01\x82\x81\x1C\x91P\x80\x83\x16\x80a\x0C\xDDW`\x7F\x83\x16\x92P[\x84\x83\x10\x81\x03a\x0C\xFAWcNH{q`\xE0\x1B\x86R`\"`\x04R`$\x86\xFD[\x82\x87R` \x87\x01\x96P\x80\x80\x15a\r\x17W`\x01\x81\x14a\r-Wa\rXV[`\xFF\x19\x85\x16\x88R\x83\x15\x15`\x05\x1B\x88\x01\x96Pa\rXV[`\0\x8B\x81R` \x90 `\0[\x85\x81\x10\x15a\rRW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x87\x01a\r9V[\x89\x01\x97PP[PPPPPP\x80\x92PPP\x9B\x9APPPPPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\r\x84W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0B\xA3W`\0\x80\xFD[`\0\x82Qa\r\xA6\x81\x84` \x87\x01a\t\x1AV[\x91\x90\x91\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x98\x86ik)\t\xC8\xEF\xE8\x18\x02\xF6\xE7_\xD0\xD1\x07.\x9BW\xE0\xCAV\x80\xD6\x16\x8A\xAF_\xAEK\xC3dsolcC\0\x08\x13\x003",
161    );
162    /// The runtime bytecode of the contract, as deployed on the network.
163    ///
164    /// ```text
165    ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063360d0fad146100465780637ef2721f14610076578063930f426a1461009d575b600080fd5b6100596100543660046108ee565b6100d0565b6040516001600160a01b0390911681526020015b60405180910390f35b6040805180820182526005815264312e342e3160d81b6020820152905161006d919061096a565b6100b06100ab366004610993565b6100ee565b604080516001600160a01b0393841681529290911660208301520161006d565b60006100e56001600160a01b0384168361049d565b90505b92915050565b6000808451600003610113576040516306bfe8d560e11b815260040160405180910390fd5b6040516bffffffffffffffffffffffff193360601b1660208201526034810185905260009060540160408051601f1981840301815291905280516020909101209050600061016a6001600160a01b038916836104fd565b905060008760008151811061018157610181610a7b565b60200260200101519050308860008151811061019f5761019f610a7b565b60200260200101906001600160a01b031690816001600160a01b03168152505060008860016000732a15de4410d4c8af0a7b6c12803120f43c42b82060008060006040516024016101f69796959493929190610a91565b60408051601f198184030181529181526020820180516001600160e01b031663b63e800d60e01b17905251631688f0b960e01b8152909150600090734e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec6790631688f0b990610273907341675c099f32341bf84bfc5382af534df5c7461a9086908e90600401610b52565b6020604051808303816000875af1158015610292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b69190610b86565b604080516001600160a01b0383166020820152739641d764fc13c8b624c04430c7356c1c7c8102e28183015260608082018c90528251808303909101815260808201909252919250829160009161030f9160a40161096a565b60408051601f198184030181529190526020810180516001600160e01b031663439fab9160e01b179052905061034e6001600160a01b0387168261059f565b506040516001600160a01b038716602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663610b592560e01b179052905061039f836000836105e3565b604051600160248201523060448201526001600160a01b038716606482015260009060840160408051601f198184030181529190526020810180516001600160e01b031663e318b52b60e01b17905290506103fc846001836105e3565b8e6001600160a01b03167f813d391dc490d6c1dae7d3fdd555f337533d1da2c908c6efd36d4cf557a632068960405161044491906001600160a01b0391909116815260200190565b60405180910390a26040516001600160a01b03861681527f8231d169f416b666ae7fa43faa24a18899738075a53f32c97617d173b189e3869060200160405180910390a150959d919c50909a5050505050505050505050565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff602482015260148101839052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018290526037600c820120607882015260556043909101206000906100e5565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166100e85760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064015b60405180910390fd5b60606100e5838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564000081525061074b565b604051631b1a23ef60e31b81526000906001600160a01b0385169063d8d11f7890610624908790859087908290819081908190819033908f90600401610bcc565b602060405180830381865afa158015610641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106659190610c42565b60405163d4d9bdcd60e01b8152600481018290529091506001600160a01b0385169063d4d9bdcd90602401600060405180830381600087803b1580156106aa57600080fd5b505af11580156106be573d6000803e3d6000fd5b505060405163353b090160e11b81526001600160a01b0387169250636a761202915061070190879060009087908290819081908190819033908290600401610c5b565b6020604051808303816000875af1158015610720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107449190610d72565b5050505050565b6060824710156107ac5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610596565b600080866001600160a01b031685876040516107c89190610d94565b60006040518083038185875af1925050503d8060008114610805576040519150601f19603f3d011682016040523d82523d6000602084013e61080a565b606091505b509150915061081b87838387610828565b925050505b949350505050565b60608315610897578251600003610890576001600160a01b0385163b6108905760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610596565b5081610820565b61082083838151156108ac5781518083602001fd5b8060405162461bcd60e51b8152600401610596919061096a565b6001600160a01b03811681146108db57600080fd5b50565b80356108e9816108c6565b919050565b6000806040838503121561090157600080fd5b823561090c816108c6565b946020939093013593505050565b60005b8381101561093557818101518382015260200161091d565b50506000910152565b6000815180845261095681602086016020860161091a565b601f01601f19169290920160200192915050565b6020815260006100e5602083018461093e565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156109a957600080fd5b84356109b4816108c6565b935060208581013567ffffffffffffffff808211156109d257600080fd5b818801915088601f8301126109e657600080fd5b8135818111156109f8576109f861097d565b8060051b604051601f19603f83011681018181108582111715610a1d57610a1d61097d565b60405291825284820192508381018501918b831115610a3b57600080fd5b938501935b82851015610a6057610a51856108de565b84529385019392850192610a40565b989b989a505050506040870135966060013595945050505050565b634e487b7160e01b600052603260045260246000fd5b6101008082528851908201819052600090610120830190602090818c01845b82811015610ad55781516001600160a01b031685529383019390830190600101610ab0565b50505060ff8a1684820152506001600160a01b03881660408401528281036060840152600181526000602082015260408101915050610b1f60808301876001600160a01b03169052565b6001600160a01b03851660a083015260ff841660c08301526001600160a01b03831660e083015298975050505050505050565b6001600160a01b0384168152606060208201819052600090610b769083018561093e565b9050826040830152949350505050565b600060208284031215610b9857600080fd5b8151610ba3816108c6565b9392505050565b60028110610bc857634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b038b81168252602082018b905261014060408301819052600091610bf98483018d61093e565b9250610c08606085018c610baa565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b600060208284031215610c5457600080fd5b5051919050565b600061014060018060a01b03808e16845260208d81860152826040860152610c858386018e61093e565b9250610c94606086018d610baa565b8a60808601528960a08601528860c086015281881660e086015281871661010086015284830361012086015260009150855482600182811c915080831680610cdd57607f831692505b8483108103610cfa57634e487b7160e01b86526022600452602486fd5b828752602087019650808015610d175760018114610d2d57610d58565b60ff198516885283151560051b88019650610d58565b60008b81526020902060005b85811015610d525781548a820152908401908701610d39565b89019750505b50505050505080925050509b9a5050505050505050505050565b600060208284031215610d8457600080fd5b81518015158114610ba357600080fd5b60008251610da681846020870161091a565b919091019291505056fea26469706673582212209886696b2909c8efe81802f6e75fd0d1072e9b57e0ca5680d6168aaf5fae4bc364736f6c63430008130033
166    /// ```
167    #[rustfmt::skip]
168    #[allow(clippy::all)]
169    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
170        b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c6\r\x0F\xAD\x14a\0FW\x80c~\xF2r\x1F\x14a\0vW\x80c\x93\x0FBj\x14a\0\x9DW[`\0\x80\xFD[a\0Ya\0T6`\x04a\x08\xEEV[a\0\xD0V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@\x80Q\x80\x82\x01\x82R`\x05\x81Rd1.4.1`\xD8\x1B` \x82\x01R\x90Qa\0m\x91\x90a\tjV[a\0\xB0a\0\xAB6`\x04a\t\x93V[a\0\xEEV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x92\x90\x91\x16` \x83\x01R\x01a\0mV[`\0a\0\xE5`\x01`\x01`\xA0\x1B\x03\x84\x16\x83a\x04\x9DV[\x90P[\x92\x91PPV[`\0\x80\x84Q`\0\x03a\x01\x13W`@Qc\x06\xBF\xE8\xD5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x193``\x1B\x16` \x82\x01R`4\x81\x01\x85\x90R`\0\x90`T\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90P`\0a\x01j`\x01`\x01`\xA0\x1B\x03\x89\x16\x83a\x04\xFDV[\x90P`\0\x87`\0\x81Q\x81\x10a\x01\x81Wa\x01\x81a\n{V[` \x02` \x01\x01Q\x90P0\x88`\0\x81Q\x81\x10a\x01\x9FWa\x01\x9Fa\n{V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP`\0\x88`\x01`\0s*\x15\xDED\x10\xD4\xC8\xAF\n{l\x12\x801 \xF4<B\xB8 `\0\x80`\0`@Q`$\x01a\x01\xF6\x97\x96\x95\x94\x93\x92\x91\x90a\n\x91V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xB6>\x80\r`\xE0\x1B\x17\x90RQc\x16\x88\xF0\xB9`\xE0\x1B\x81R\x90\x91P`\0\x90sN\x1D\xCFz\xD4\xE4`\xCF\xD3\x07\x91\xCC\xC4\xF9\xC8\xA4\xF8 \xECg\x90c\x16\x88\xF0\xB9\x90a\x02s\x90sAg\\\t\x9F24\x1B\xF8K\xFCS\x82\xAFSM\xF5\xC7F\x1A\x90\x86\x90\x8E\x90`\x04\x01a\x0BRV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xB6\x91\x90a\x0B\x86V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Rs\x96A\xD7d\xFC\x13\xC8\xB6$\xC0D0\xC75l\x1C|\x81\x02\xE2\x81\x83\x01R``\x80\x82\x01\x8C\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`\x80\x82\x01\x90\x92R\x91\x92P\x82\x91`\0\x91a\x03\x0F\x91`\xA4\x01a\tjV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cC\x9F\xAB\x91`\xE0\x1B\x17\x90R\x90Pa\x03N`\x01`\x01`\xA0\x1B\x03\x87\x16\x82a\x05\x9FV[P`@Q`\x01`\x01`\xA0\x1B\x03\x87\x16`$\x82\x01R`\0\x90`D\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16ca\x0BY%`\xE0\x1B\x17\x90R\x90Pa\x03\x9F\x83`\0\x83a\x05\xE3V[`@Q`\x01`$\x82\x01R0`D\x82\x01R`\x01`\x01`\xA0\x1B\x03\x87\x16`d\x82\x01R`\0\x90`\x84\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xE3\x18\xB5+`\xE0\x1B\x17\x90R\x90Pa\x03\xFC\x84`\x01\x83a\x05\xE3V[\x8E`\x01`\x01`\xA0\x1B\x03\x16\x7F\x81=9\x1D\xC4\x90\xD6\xC1\xDA\xE7\xD3\xFD\xD5U\xF37S=\x1D\xA2\xC9\x08\xC6\xEF\xD3mL\xF5W\xA62\x06\x89`@Qa\x04D\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2`@Q`\x01`\x01`\xA0\x1B\x03\x86\x16\x81R\x7F\x821\xD1i\xF4\x16\xB6f\xAE\x7F\xA4?\xAA$\xA1\x88\x99s\x80u\xA5?2\xC9v\x17\xD1s\xB1\x89\xE3\x86\x90` \x01`@Q\x80\x91\x03\x90\xA1P\x95\x9D\x91\x9CP\x90\x9APPPPPPPPPPPV[`@Q0`8\x82\x01RoZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\xFF`$\x82\x01R`\x14\x81\x01\x83\x90Rs=`-\x80`\n=9\x81\xF36==7===6=s\x81R`X\x81\x01\x82\x90R`7`\x0C\x82\x01 `x\x82\x01R`U`C\x90\x91\x01 `\0\x90a\0\xE5V[`\0v=`-\x80`\n=9\x81\xF36==7===6=s\0\0\0\x83``\x1B`\xE8\x1C\x17`\0RnZ\xF4=\x82\x80>\x90=\x91`+W\xFD[\xF3\x83`x\x1B\x17` R\x81`7`\t`\0\xF5\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16a\0\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FERC1167: create2 failed\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[``a\0\xE5\x83\x83`\0`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7FAddress: low-level call failed\0\0\x81RPa\x07KV[`@Qc\x1B\x1A#\xEF`\xE3\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\xD8\xD1\x1Fx\x90a\x06$\x90\x87\x90\x85\x90\x87\x90\x82\x90\x81\x90\x81\x90\x81\x90\x81\x903\x90\x8F\x90`\x04\x01a\x0B\xCCV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06e\x91\x90a\x0CBV[`@Qc\xD4\xD9\xBD\xCD`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\xD4\xD9\xBD\xCD\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06\xAAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06\xBEW=`\0\x80>=`\0\xFD[PP`@Qc5;\t\x01`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x16\x92Pcjv\x12\x02\x91Pa\x07\x01\x90\x87\x90`\0\x90\x87\x90\x82\x90\x81\x90\x81\x90\x81\x90\x81\x903\x90\x82\x90`\x04\x01a\x0C[V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07 W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07D\x91\x90a\rrV[PPPPPV[``\x82G\x10\x15a\x07\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x05\x96V[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\x07\xC8\x91\x90a\r\x94V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x08\x05W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x08\nV[``\x91P[P\x91P\x91Pa\x08\x1B\x87\x83\x83\x87a\x08(V[\x92PPP[\x94\x93PPPPV[``\x83\x15a\x08\x97W\x82Q`\0\x03a\x08\x90W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x08\x90W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x05\x96V[P\x81a\x08 V[a\x08 \x83\x83\x81Q\x15a\x08\xACW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x05\x96\x91\x90a\tjV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x08\xDBW`\0\x80\xFD[PV[\x805a\x08\xE9\x81a\x08\xC6V[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x01W`\0\x80\xFD[\x825a\t\x0C\x81a\x08\xC6V[\x94` \x93\x90\x93\x015\x93PPPV[`\0[\x83\x81\x10\x15a\t5W\x81\x81\x01Q\x83\x82\x01R` \x01a\t\x1DV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\tV\x81` \x86\x01` \x86\x01a\t\x1AV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\0\xE5` \x83\x01\x84a\t>V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\t\xA9W`\0\x80\xFD[\x845a\t\xB4\x81a\x08\xC6V[\x93P` \x85\x81\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\t\xD2W`\0\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12a\t\xE6W`\0\x80\xFD[\x815\x81\x81\x11\x15a\t\xF8Wa\t\xF8a\t}V[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\n\x1DWa\n\x1Da\t}V[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x8B\x83\x11\x15a\n;W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\n`Wa\nQ\x85a\x08\xDEV[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\n@V[\x98\x9B\x98\x9APPPP`@\x87\x015\x96``\x015\x95\x94PPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[a\x01\0\x80\x82R\x88Q\x90\x82\x01\x81\x90R`\0\x90a\x01 \x83\x01\x90` \x90\x81\x8C\x01\x84[\x82\x81\x10\x15a\n\xD5W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x85R\x93\x83\x01\x93\x90\x83\x01\x90`\x01\x01a\n\xB0V[PPP`\xFF\x8A\x16\x84\x82\x01RP`\x01`\x01`\xA0\x1B\x03\x88\x16`@\x84\x01R\x82\x81\x03``\x84\x01R`\x01\x81R`\0` \x82\x01R`@\x81\x01\x91PPa\x0B\x1F`\x80\x83\x01\x87`\x01`\x01`\xA0\x1B\x03\x16\x90RV[`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x83\x01R`\xFF\x84\x16`\xC0\x83\x01R`\x01`\x01`\xA0\x1B\x03\x83\x16`\xE0\x83\x01R\x98\x97PPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R``` \x82\x01\x81\x90R`\0\x90a\x0Bv\x90\x83\x01\x85a\t>V[\x90P\x82`@\x83\x01R\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x0B\x98W`\0\x80\xFD[\x81Qa\x0B\xA3\x81a\x08\xC6V[\x93\x92PPPV[`\x02\x81\x10a\x0B\xC8WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16\x82R` \x82\x01\x8B\x90Ra\x01@`@\x83\x01\x81\x90R`\0\x91a\x0B\xF9\x84\x83\x01\x8Da\t>V[\x92Pa\x0C\x08``\x85\x01\x8Ca\x0B\xAAV[`\x80\x84\x01\x99\x90\x99RP`\xA0\x82\x01\x96\x90\x96R`\xC0\x81\x01\x94\x90\x94R\x91\x85\x16`\xE0\x84\x01R\x90\x93\x16a\x01\0\x82\x01Ra\x01 \x01\x91\x90\x91R\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x0CTW`\0\x80\xFD[PQ\x91\x90PV[`\0a\x01@`\x01\x80`\xA0\x1B\x03\x80\x8E\x16\x84R` \x8D\x81\x86\x01R\x82`@\x86\x01Ra\x0C\x85\x83\x86\x01\x8Ea\t>V[\x92Pa\x0C\x94``\x86\x01\x8Da\x0B\xAAV[\x8A`\x80\x86\x01R\x89`\xA0\x86\x01R\x88`\xC0\x86\x01R\x81\x88\x16`\xE0\x86\x01R\x81\x87\x16a\x01\0\x86\x01R\x84\x83\x03a\x01 \x86\x01R`\0\x91P\x85T\x82`\x01\x82\x81\x1C\x91P\x80\x83\x16\x80a\x0C\xDDW`\x7F\x83\x16\x92P[\x84\x83\x10\x81\x03a\x0C\xFAWcNH{q`\xE0\x1B\x86R`\"`\x04R`$\x86\xFD[\x82\x87R` \x87\x01\x96P\x80\x80\x15a\r\x17W`\x01\x81\x14a\r-Wa\rXV[`\xFF\x19\x85\x16\x88R\x83\x15\x15`\x05\x1B\x88\x01\x96Pa\rXV[`\0\x8B\x81R` \x90 `\0[\x85\x81\x10\x15a\rRW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x87\x01a\r9V[\x89\x01\x97PP[PPPPPP\x80\x92PPP\x9B\x9APPPPPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\r\x84W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0B\xA3W`\0\x80\xFD[`\0\x82Qa\r\xA6\x81\x84` \x87\x01a\t\x1AV[\x91\x90\x91\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x98\x86ik)\t\xC8\xEF\xE8\x18\x02\xF6\xE7_\xD0\xD1\x07.\x9BW\xE0\xCAV\x80\xD6\x16\x8A\xAF_\xAEK\xC3dsolcC\0\x08\x13\x003",
171    );
172    #[derive(serde::Serialize, serde::Deserialize)]
173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
174    /**Custom error with signature `TooFewOwners()` and selector `0x0d7fd1aa`.
175```solidity
176error TooFewOwners();
177```*/
178    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
179    #[derive(Clone)]
180    pub struct TooFewOwners;
181    #[allow(
182        non_camel_case_types,
183        non_snake_case,
184        clippy::pub_underscore_fields,
185        clippy::style
186    )]
187    const _: () = {
188        use alloy::sol_types as alloy_sol_types;
189        #[doc(hidden)]
190        type UnderlyingSolTuple<'a> = ();
191        #[doc(hidden)]
192        type UnderlyingRustTuple<'a> = ();
193        #[cfg(test)]
194        #[allow(dead_code, unreachable_patterns)]
195        fn _type_assertion(
196            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
197        ) {
198            match _t {
199                alloy_sol_types::private::AssertTypeEq::<
200                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
201                >(_) => {}
202            }
203        }
204        #[automatically_derived]
205        #[doc(hidden)]
206        impl ::core::convert::From<TooFewOwners> for UnderlyingRustTuple<'_> {
207            fn from(value: TooFewOwners) -> Self {
208                ()
209            }
210        }
211        #[automatically_derived]
212        #[doc(hidden)]
213        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TooFewOwners {
214            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
215                Self
216            }
217        }
218        #[automatically_derived]
219        impl alloy_sol_types::SolError for TooFewOwners {
220            type Parameters<'a> = UnderlyingSolTuple<'a>;
221            type Token<'a> = <Self::Parameters<
222                'a,
223            > as alloy_sol_types::SolType>::Token<'a>;
224            const SIGNATURE: &'static str = "TooFewOwners()";
225            const SELECTOR: [u8; 4] = [13u8, 127u8, 209u8, 170u8];
226            #[inline]
227            fn new<'a>(
228                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
229            ) -> Self {
230                tuple.into()
231            }
232            #[inline]
233            fn tokenize(&self) -> Self::Token<'_> {
234                ()
235            }
236            #[inline]
237            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
238                <Self::Parameters<
239                    '_,
240                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
241                    .map(Self::new)
242            }
243        }
244    };
245    #[derive(serde::Serialize, serde::Deserialize)]
246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
247    /**Event with signature `NewHoprNodeStakeModule(address,address)` and selector `0x813d391dc490d6c1dae7d3fdd555f337533d1da2c908c6efd36d4cf557a63206`.
248```solidity
249event NewHoprNodeStakeModule(address indexed moduleImplementation, address instance);
250```*/
251    #[allow(
252        non_camel_case_types,
253        non_snake_case,
254        clippy::pub_underscore_fields,
255        clippy::style
256    )]
257    #[derive(Clone)]
258    pub struct NewHoprNodeStakeModule {
259        #[allow(missing_docs)]
260        pub moduleImplementation: alloy::sol_types::private::Address,
261        #[allow(missing_docs)]
262        pub instance: alloy::sol_types::private::Address,
263    }
264    #[allow(
265        non_camel_case_types,
266        non_snake_case,
267        clippy::pub_underscore_fields,
268        clippy::style
269    )]
270    const _: () = {
271        use alloy::sol_types as alloy_sol_types;
272        #[automatically_derived]
273        impl alloy_sol_types::SolEvent for NewHoprNodeStakeModule {
274            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
275            type DataToken<'a> = <Self::DataTuple<
276                'a,
277            > as alloy_sol_types::SolType>::Token<'a>;
278            type TopicList = (
279                alloy_sol_types::sol_data::FixedBytes<32>,
280                alloy::sol_types::sol_data::Address,
281            );
282            const SIGNATURE: &'static str = "NewHoprNodeStakeModule(address,address)";
283            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
284                129u8, 61u8, 57u8, 29u8, 196u8, 144u8, 214u8, 193u8, 218u8, 231u8, 211u8,
285                253u8, 213u8, 85u8, 243u8, 55u8, 83u8, 61u8, 29u8, 162u8, 201u8, 8u8,
286                198u8, 239u8, 211u8, 109u8, 76u8, 245u8, 87u8, 166u8, 50u8, 6u8,
287            ]);
288            const ANONYMOUS: bool = false;
289            #[allow(unused_variables)]
290            #[inline]
291            fn new(
292                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
293                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
294            ) -> Self {
295                Self {
296                    moduleImplementation: topics.1,
297                    instance: data.0,
298                }
299            }
300            #[inline]
301            fn check_signature(
302                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
303            ) -> alloy_sol_types::Result<()> {
304                if topics.0 != Self::SIGNATURE_HASH {
305                    return Err(
306                        alloy_sol_types::Error::invalid_event_signature_hash(
307                            Self::SIGNATURE,
308                            topics.0,
309                            Self::SIGNATURE_HASH,
310                        ),
311                    );
312                }
313                Ok(())
314            }
315            #[inline]
316            fn tokenize_body(&self) -> Self::DataToken<'_> {
317                (
318                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
319                        &self.instance,
320                    ),
321                )
322            }
323            #[inline]
324            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
325                (Self::SIGNATURE_HASH.into(), self.moduleImplementation.clone())
326            }
327            #[inline]
328            fn encode_topics_raw(
329                &self,
330                out: &mut [alloy_sol_types::abi::token::WordToken],
331            ) -> alloy_sol_types::Result<()> {
332                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
333                    return Err(alloy_sol_types::Error::Overrun);
334                }
335                out[0usize] = alloy_sol_types::abi::token::WordToken(
336                    Self::SIGNATURE_HASH,
337                );
338                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
339                    &self.moduleImplementation,
340                );
341                Ok(())
342            }
343        }
344        #[automatically_derived]
345        impl alloy_sol_types::private::IntoLogData for NewHoprNodeStakeModule {
346            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
347                From::from(self)
348            }
349            fn into_log_data(self) -> alloy_sol_types::private::LogData {
350                From::from(&self)
351            }
352        }
353        #[automatically_derived]
354        impl From<&NewHoprNodeStakeModule> for alloy_sol_types::private::LogData {
355            #[inline]
356            fn from(this: &NewHoprNodeStakeModule) -> alloy_sol_types::private::LogData {
357                alloy_sol_types::SolEvent::encode_log_data(this)
358            }
359        }
360    };
361    #[derive(serde::Serialize, serde::Deserialize)]
362    #[derive(Default, Debug, PartialEq, Eq, Hash)]
363    /**Event with signature `NewHoprNodeStakeSafe(address)` and selector `0x8231d169f416b666ae7fa43faa24a18899738075a53f32c97617d173b189e386`.
364```solidity
365event NewHoprNodeStakeSafe(address instance);
366```*/
367    #[allow(
368        non_camel_case_types,
369        non_snake_case,
370        clippy::pub_underscore_fields,
371        clippy::style
372    )]
373    #[derive(Clone)]
374    pub struct NewHoprNodeStakeSafe {
375        #[allow(missing_docs)]
376        pub instance: alloy::sol_types::private::Address,
377    }
378    #[allow(
379        non_camel_case_types,
380        non_snake_case,
381        clippy::pub_underscore_fields,
382        clippy::style
383    )]
384    const _: () = {
385        use alloy::sol_types as alloy_sol_types;
386        #[automatically_derived]
387        impl alloy_sol_types::SolEvent for NewHoprNodeStakeSafe {
388            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
389            type DataToken<'a> = <Self::DataTuple<
390                'a,
391            > as alloy_sol_types::SolType>::Token<'a>;
392            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
393            const SIGNATURE: &'static str = "NewHoprNodeStakeSafe(address)";
394            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
395                130u8, 49u8, 209u8, 105u8, 244u8, 22u8, 182u8, 102u8, 174u8, 127u8,
396                164u8, 63u8, 170u8, 36u8, 161u8, 136u8, 153u8, 115u8, 128u8, 117u8,
397                165u8, 63u8, 50u8, 201u8, 118u8, 23u8, 209u8, 115u8, 177u8, 137u8, 227u8,
398                134u8,
399            ]);
400            const ANONYMOUS: bool = false;
401            #[allow(unused_variables)]
402            #[inline]
403            fn new(
404                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
405                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
406            ) -> Self {
407                Self { instance: data.0 }
408            }
409            #[inline]
410            fn check_signature(
411                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
412            ) -> alloy_sol_types::Result<()> {
413                if topics.0 != Self::SIGNATURE_HASH {
414                    return Err(
415                        alloy_sol_types::Error::invalid_event_signature_hash(
416                            Self::SIGNATURE,
417                            topics.0,
418                            Self::SIGNATURE_HASH,
419                        ),
420                    );
421                }
422                Ok(())
423            }
424            #[inline]
425            fn tokenize_body(&self) -> Self::DataToken<'_> {
426                (
427                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
428                        &self.instance,
429                    ),
430                )
431            }
432            #[inline]
433            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
434                (Self::SIGNATURE_HASH.into(),)
435            }
436            #[inline]
437            fn encode_topics_raw(
438                &self,
439                out: &mut [alloy_sol_types::abi::token::WordToken],
440            ) -> alloy_sol_types::Result<()> {
441                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
442                    return Err(alloy_sol_types::Error::Overrun);
443                }
444                out[0usize] = alloy_sol_types::abi::token::WordToken(
445                    Self::SIGNATURE_HASH,
446                );
447                Ok(())
448            }
449        }
450        #[automatically_derived]
451        impl alloy_sol_types::private::IntoLogData for NewHoprNodeStakeSafe {
452            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
453                From::from(self)
454            }
455            fn into_log_data(self) -> alloy_sol_types::private::LogData {
456                From::from(&self)
457            }
458        }
459        #[automatically_derived]
460        impl From<&NewHoprNodeStakeSafe> for alloy_sol_types::private::LogData {
461            #[inline]
462            fn from(this: &NewHoprNodeStakeSafe) -> alloy_sol_types::private::LogData {
463                alloy_sol_types::SolEvent::encode_log_data(this)
464            }
465        }
466    };
467    /**Constructor`.
468```solidity
469constructor();
470```*/
471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
472    #[derive(Clone)]
473    pub struct constructorCall {}
474    const _: () = {
475        use alloy::sol_types as alloy_sol_types;
476        {
477            #[doc(hidden)]
478            type UnderlyingSolTuple<'a> = ();
479            #[doc(hidden)]
480            type UnderlyingRustTuple<'a> = ();
481            #[cfg(test)]
482            #[allow(dead_code, unreachable_patterns)]
483            fn _type_assertion(
484                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
485            ) {
486                match _t {
487                    alloy_sol_types::private::AssertTypeEq::<
488                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
489                    >(_) => {}
490                }
491            }
492            #[automatically_derived]
493            #[doc(hidden)]
494            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
495                fn from(value: constructorCall) -> Self {
496                    ()
497                }
498            }
499            #[automatically_derived]
500            #[doc(hidden)]
501            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
503                    Self {}
504                }
505            }
506        }
507        #[automatically_derived]
508        impl alloy_sol_types::SolConstructor for constructorCall {
509            type Parameters<'a> = ();
510            type Token<'a> = <Self::Parameters<
511                'a,
512            > as alloy_sol_types::SolType>::Token<'a>;
513            #[inline]
514            fn new<'a>(
515                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
516            ) -> Self {
517                tuple.into()
518            }
519            #[inline]
520            fn tokenize(&self) -> Self::Token<'_> {
521                ()
522            }
523        }
524    };
525    #[derive(serde::Serialize, serde::Deserialize)]
526    #[derive(Default, Debug, PartialEq, Eq, Hash)]
527    /**Function with signature `clone(address,address[],uint256,bytes32)` and selector `0x930f426a`.
528```solidity
529function clone(address moduleSingletonAddress, address[] memory admins, uint256 nonce, bytes32 defaultTarget) external returns (address, address);
530```*/
531    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
532    #[derive(Clone)]
533    pub struct cloneCall {
534        #[allow(missing_docs)]
535        pub moduleSingletonAddress: alloy::sol_types::private::Address,
536        #[allow(missing_docs)]
537        pub admins: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
538        #[allow(missing_docs)]
539        pub nonce: alloy::sol_types::private::primitives::aliases::U256,
540        #[allow(missing_docs)]
541        pub defaultTarget: alloy::sol_types::private::FixedBytes<32>,
542    }
543    #[derive(serde::Serialize, serde::Deserialize)]
544    #[derive(Default, Debug, PartialEq, Eq, Hash)]
545    ///Container type for the return parameters of the [`clone(address,address[],uint256,bytes32)`](cloneCall) function.
546    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
547    #[derive(Clone)]
548    pub struct cloneReturn {
549        #[allow(missing_docs)]
550        pub _0: alloy::sol_types::private::Address,
551        #[allow(missing_docs)]
552        pub _1: alloy::sol_types::private::Address,
553    }
554    #[allow(
555        non_camel_case_types,
556        non_snake_case,
557        clippy::pub_underscore_fields,
558        clippy::style
559    )]
560    const _: () = {
561        use alloy::sol_types as alloy_sol_types;
562        {
563            #[doc(hidden)]
564            type UnderlyingSolTuple<'a> = (
565                alloy::sol_types::sol_data::Address,
566                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
567                alloy::sol_types::sol_data::Uint<256>,
568                alloy::sol_types::sol_data::FixedBytes<32>,
569            );
570            #[doc(hidden)]
571            type UnderlyingRustTuple<'a> = (
572                alloy::sol_types::private::Address,
573                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
574                alloy::sol_types::private::primitives::aliases::U256,
575                alloy::sol_types::private::FixedBytes<32>,
576            );
577            #[cfg(test)]
578            #[allow(dead_code, unreachable_patterns)]
579            fn _type_assertion(
580                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
581            ) {
582                match _t {
583                    alloy_sol_types::private::AssertTypeEq::<
584                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
585                    >(_) => {}
586                }
587            }
588            #[automatically_derived]
589            #[doc(hidden)]
590            impl ::core::convert::From<cloneCall> for UnderlyingRustTuple<'_> {
591                fn from(value: cloneCall) -> Self {
592                    (
593                        value.moduleSingletonAddress,
594                        value.admins,
595                        value.nonce,
596                        value.defaultTarget,
597                    )
598                }
599            }
600            #[automatically_derived]
601            #[doc(hidden)]
602            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cloneCall {
603                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
604                    Self {
605                        moduleSingletonAddress: tuple.0,
606                        admins: tuple.1,
607                        nonce: tuple.2,
608                        defaultTarget: tuple.3,
609                    }
610                }
611            }
612        }
613        {
614            #[doc(hidden)]
615            type UnderlyingSolTuple<'a> = (
616                alloy::sol_types::sol_data::Address,
617                alloy::sol_types::sol_data::Address,
618            );
619            #[doc(hidden)]
620            type UnderlyingRustTuple<'a> = (
621                alloy::sol_types::private::Address,
622                alloy::sol_types::private::Address,
623            );
624            #[cfg(test)]
625            #[allow(dead_code, unreachable_patterns)]
626            fn _type_assertion(
627                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
628            ) {
629                match _t {
630                    alloy_sol_types::private::AssertTypeEq::<
631                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
632                    >(_) => {}
633                }
634            }
635            #[automatically_derived]
636            #[doc(hidden)]
637            impl ::core::convert::From<cloneReturn> for UnderlyingRustTuple<'_> {
638                fn from(value: cloneReturn) -> Self {
639                    (value._0, value._1)
640                }
641            }
642            #[automatically_derived]
643            #[doc(hidden)]
644            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cloneReturn {
645                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
646                    Self { _0: tuple.0, _1: tuple.1 }
647                }
648            }
649        }
650        impl cloneReturn {
651            fn _tokenize(
652                &self,
653            ) -> <cloneCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
654                (
655                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
656                        &self._0,
657                    ),
658                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
659                        &self._1,
660                    ),
661                )
662            }
663        }
664        #[automatically_derived]
665        impl alloy_sol_types::SolCall for cloneCall {
666            type Parameters<'a> = (
667                alloy::sol_types::sol_data::Address,
668                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
669                alloy::sol_types::sol_data::Uint<256>,
670                alloy::sol_types::sol_data::FixedBytes<32>,
671            );
672            type Token<'a> = <Self::Parameters<
673                'a,
674            > as alloy_sol_types::SolType>::Token<'a>;
675            type Return = cloneReturn;
676            type ReturnTuple<'a> = (
677                alloy::sol_types::sol_data::Address,
678                alloy::sol_types::sol_data::Address,
679            );
680            type ReturnToken<'a> = <Self::ReturnTuple<
681                'a,
682            > as alloy_sol_types::SolType>::Token<'a>;
683            const SIGNATURE: &'static str = "clone(address,address[],uint256,bytes32)";
684            const SELECTOR: [u8; 4] = [147u8, 15u8, 66u8, 106u8];
685            #[inline]
686            fn new<'a>(
687                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
688            ) -> Self {
689                tuple.into()
690            }
691            #[inline]
692            fn tokenize(&self) -> Self::Token<'_> {
693                (
694                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
695                        &self.moduleSingletonAddress,
696                    ),
697                    <alloy::sol_types::sol_data::Array<
698                        alloy::sol_types::sol_data::Address,
699                    > as alloy_sol_types::SolType>::tokenize(&self.admins),
700                    <alloy::sol_types::sol_data::Uint<
701                        256,
702                    > as alloy_sol_types::SolType>::tokenize(&self.nonce),
703                    <alloy::sol_types::sol_data::FixedBytes<
704                        32,
705                    > as alloy_sol_types::SolType>::tokenize(&self.defaultTarget),
706                )
707            }
708            #[inline]
709            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
710                cloneReturn::_tokenize(ret)
711            }
712            #[inline]
713            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
714                <Self::ReturnTuple<
715                    '_,
716                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
717                    .map(Into::into)
718            }
719            #[inline]
720            fn abi_decode_returns_validate(
721                data: &[u8],
722            ) -> alloy_sol_types::Result<Self::Return> {
723                <Self::ReturnTuple<
724                    '_,
725                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
726                    .map(Into::into)
727            }
728        }
729    };
730    #[derive(serde::Serialize, serde::Deserialize)]
731    #[derive(Default, Debug, PartialEq, Eq, Hash)]
732    /**Function with signature `predictDeterministicAddress(address,bytes32)` and selector `0x360d0fad`.
733```solidity
734function predictDeterministicAddress(address implementation, bytes32 salt) external view returns (address predicted);
735```*/
736    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
737    #[derive(Clone)]
738    pub struct predictDeterministicAddressCall {
739        #[allow(missing_docs)]
740        pub implementation: alloy::sol_types::private::Address,
741        #[allow(missing_docs)]
742        pub salt: alloy::sol_types::private::FixedBytes<32>,
743    }
744    #[derive(serde::Serialize, serde::Deserialize)]
745    #[derive(Default, Debug, PartialEq, Eq, Hash)]
746    ///Container type for the return parameters of the [`predictDeterministicAddress(address,bytes32)`](predictDeterministicAddressCall) function.
747    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
748    #[derive(Clone)]
749    pub struct predictDeterministicAddressReturn {
750        #[allow(missing_docs)]
751        pub predicted: alloy::sol_types::private::Address,
752    }
753    #[allow(
754        non_camel_case_types,
755        non_snake_case,
756        clippy::pub_underscore_fields,
757        clippy::style
758    )]
759    const _: () = {
760        use alloy::sol_types as alloy_sol_types;
761        {
762            #[doc(hidden)]
763            type UnderlyingSolTuple<'a> = (
764                alloy::sol_types::sol_data::Address,
765                alloy::sol_types::sol_data::FixedBytes<32>,
766            );
767            #[doc(hidden)]
768            type UnderlyingRustTuple<'a> = (
769                alloy::sol_types::private::Address,
770                alloy::sol_types::private::FixedBytes<32>,
771            );
772            #[cfg(test)]
773            #[allow(dead_code, unreachable_patterns)]
774            fn _type_assertion(
775                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
776            ) {
777                match _t {
778                    alloy_sol_types::private::AssertTypeEq::<
779                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
780                    >(_) => {}
781                }
782            }
783            #[automatically_derived]
784            #[doc(hidden)]
785            impl ::core::convert::From<predictDeterministicAddressCall>
786            for UnderlyingRustTuple<'_> {
787                fn from(value: predictDeterministicAddressCall) -> Self {
788                    (value.implementation, value.salt)
789                }
790            }
791            #[automatically_derived]
792            #[doc(hidden)]
793            impl ::core::convert::From<UnderlyingRustTuple<'_>>
794            for predictDeterministicAddressCall {
795                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
796                    Self {
797                        implementation: tuple.0,
798                        salt: tuple.1,
799                    }
800                }
801            }
802        }
803        {
804            #[doc(hidden)]
805            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
806            #[doc(hidden)]
807            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
808            #[cfg(test)]
809            #[allow(dead_code, unreachable_patterns)]
810            fn _type_assertion(
811                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
812            ) {
813                match _t {
814                    alloy_sol_types::private::AssertTypeEq::<
815                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
816                    >(_) => {}
817                }
818            }
819            #[automatically_derived]
820            #[doc(hidden)]
821            impl ::core::convert::From<predictDeterministicAddressReturn>
822            for UnderlyingRustTuple<'_> {
823                fn from(value: predictDeterministicAddressReturn) -> Self {
824                    (value.predicted,)
825                }
826            }
827            #[automatically_derived]
828            #[doc(hidden)]
829            impl ::core::convert::From<UnderlyingRustTuple<'_>>
830            for predictDeterministicAddressReturn {
831                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
832                    Self { predicted: tuple.0 }
833                }
834            }
835        }
836        #[automatically_derived]
837        impl alloy_sol_types::SolCall for predictDeterministicAddressCall {
838            type Parameters<'a> = (
839                alloy::sol_types::sol_data::Address,
840                alloy::sol_types::sol_data::FixedBytes<32>,
841            );
842            type Token<'a> = <Self::Parameters<
843                'a,
844            > as alloy_sol_types::SolType>::Token<'a>;
845            type Return = alloy::sol_types::private::Address;
846            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
847            type ReturnToken<'a> = <Self::ReturnTuple<
848                'a,
849            > as alloy_sol_types::SolType>::Token<'a>;
850            const SIGNATURE: &'static str = "predictDeterministicAddress(address,bytes32)";
851            const SELECTOR: [u8; 4] = [54u8, 13u8, 15u8, 173u8];
852            #[inline]
853            fn new<'a>(
854                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
855            ) -> Self {
856                tuple.into()
857            }
858            #[inline]
859            fn tokenize(&self) -> Self::Token<'_> {
860                (
861                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
862                        &self.implementation,
863                    ),
864                    <alloy::sol_types::sol_data::FixedBytes<
865                        32,
866                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
867                )
868            }
869            #[inline]
870            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
871                (
872                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
873                        ret,
874                    ),
875                )
876            }
877            #[inline]
878            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
879                <Self::ReturnTuple<
880                    '_,
881                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
882                    .map(|r| {
883                        let r: predictDeterministicAddressReturn = r.into();
884                        r.predicted
885                    })
886            }
887            #[inline]
888            fn abi_decode_returns_validate(
889                data: &[u8],
890            ) -> alloy_sol_types::Result<Self::Return> {
891                <Self::ReturnTuple<
892                    '_,
893                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
894                    .map(|r| {
895                        let r: predictDeterministicAddressReturn = r.into();
896                        r.predicted
897                    })
898            }
899        }
900    };
901    #[derive(serde::Serialize, serde::Deserialize)]
902    #[derive(Default, Debug, PartialEq, Eq, Hash)]
903    /**Function with signature `safeVersion()` and selector `0x7ef2721f`.
904```solidity
905function safeVersion() external pure returns (string memory);
906```*/
907    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
908    #[derive(Clone)]
909    pub struct safeVersionCall;
910    #[derive(serde::Serialize, serde::Deserialize)]
911    #[derive(Default, Debug, PartialEq, Eq, Hash)]
912    ///Container type for the return parameters of the [`safeVersion()`](safeVersionCall) function.
913    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
914    #[derive(Clone)]
915    pub struct safeVersionReturn {
916        #[allow(missing_docs)]
917        pub _0: alloy::sol_types::private::String,
918    }
919    #[allow(
920        non_camel_case_types,
921        non_snake_case,
922        clippy::pub_underscore_fields,
923        clippy::style
924    )]
925    const _: () = {
926        use alloy::sol_types as alloy_sol_types;
927        {
928            #[doc(hidden)]
929            type UnderlyingSolTuple<'a> = ();
930            #[doc(hidden)]
931            type UnderlyingRustTuple<'a> = ();
932            #[cfg(test)]
933            #[allow(dead_code, unreachable_patterns)]
934            fn _type_assertion(
935                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
936            ) {
937                match _t {
938                    alloy_sol_types::private::AssertTypeEq::<
939                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
940                    >(_) => {}
941                }
942            }
943            #[automatically_derived]
944            #[doc(hidden)]
945            impl ::core::convert::From<safeVersionCall> for UnderlyingRustTuple<'_> {
946                fn from(value: safeVersionCall) -> Self {
947                    ()
948                }
949            }
950            #[automatically_derived]
951            #[doc(hidden)]
952            impl ::core::convert::From<UnderlyingRustTuple<'_>> for safeVersionCall {
953                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
954                    Self
955                }
956            }
957        }
958        {
959            #[doc(hidden)]
960            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
961            #[doc(hidden)]
962            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
963            #[cfg(test)]
964            #[allow(dead_code, unreachable_patterns)]
965            fn _type_assertion(
966                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
967            ) {
968                match _t {
969                    alloy_sol_types::private::AssertTypeEq::<
970                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
971                    >(_) => {}
972                }
973            }
974            #[automatically_derived]
975            #[doc(hidden)]
976            impl ::core::convert::From<safeVersionReturn> for UnderlyingRustTuple<'_> {
977                fn from(value: safeVersionReturn) -> Self {
978                    (value._0,)
979                }
980            }
981            #[automatically_derived]
982            #[doc(hidden)]
983            impl ::core::convert::From<UnderlyingRustTuple<'_>> for safeVersionReturn {
984                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
985                    Self { _0: tuple.0 }
986                }
987            }
988        }
989        #[automatically_derived]
990        impl alloy_sol_types::SolCall for safeVersionCall {
991            type Parameters<'a> = ();
992            type Token<'a> = <Self::Parameters<
993                'a,
994            > as alloy_sol_types::SolType>::Token<'a>;
995            type Return = alloy::sol_types::private::String;
996            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
997            type ReturnToken<'a> = <Self::ReturnTuple<
998                'a,
999            > as alloy_sol_types::SolType>::Token<'a>;
1000            const SIGNATURE: &'static str = "safeVersion()";
1001            const SELECTOR: [u8; 4] = [126u8, 242u8, 114u8, 31u8];
1002            #[inline]
1003            fn new<'a>(
1004                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1005            ) -> Self {
1006                tuple.into()
1007            }
1008            #[inline]
1009            fn tokenize(&self) -> Self::Token<'_> {
1010                ()
1011            }
1012            #[inline]
1013            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
1014                (
1015                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
1016                        ret,
1017                    ),
1018                )
1019            }
1020            #[inline]
1021            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1022                <Self::ReturnTuple<
1023                    '_,
1024                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
1025                    .map(|r| {
1026                        let r: safeVersionReturn = r.into();
1027                        r._0
1028                    })
1029            }
1030            #[inline]
1031            fn abi_decode_returns_validate(
1032                data: &[u8],
1033            ) -> alloy_sol_types::Result<Self::Return> {
1034                <Self::ReturnTuple<
1035                    '_,
1036                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1037                    .map(|r| {
1038                        let r: safeVersionReturn = r.into();
1039                        r._0
1040                    })
1041            }
1042        }
1043    };
1044    ///Container for all the [`HoprNodeStakeFactory`](self) function calls.
1045    #[derive(serde::Serialize, serde::Deserialize)]
1046    #[derive()]
1047    pub enum HoprNodeStakeFactoryCalls {
1048        #[allow(missing_docs)]
1049        clone(cloneCall),
1050        #[allow(missing_docs)]
1051        predictDeterministicAddress(predictDeterministicAddressCall),
1052        #[allow(missing_docs)]
1053        safeVersion(safeVersionCall),
1054    }
1055    #[automatically_derived]
1056    impl HoprNodeStakeFactoryCalls {
1057        /// All the selectors of this enum.
1058        ///
1059        /// Note that the selectors might not be in the same order as the variants.
1060        /// No guarantees are made about the order of the selectors.
1061        ///
1062        /// Prefer using `SolInterface` methods instead.
1063        pub const SELECTORS: &'static [[u8; 4usize]] = &[
1064            [54u8, 13u8, 15u8, 173u8],
1065            [126u8, 242u8, 114u8, 31u8],
1066            [147u8, 15u8, 66u8, 106u8],
1067        ];
1068    }
1069    #[automatically_derived]
1070    impl alloy_sol_types::SolInterface for HoprNodeStakeFactoryCalls {
1071        const NAME: &'static str = "HoprNodeStakeFactoryCalls";
1072        const MIN_DATA_LENGTH: usize = 0usize;
1073        const COUNT: usize = 3usize;
1074        #[inline]
1075        fn selector(&self) -> [u8; 4] {
1076            match self {
1077                Self::clone(_) => <cloneCall as alloy_sol_types::SolCall>::SELECTOR,
1078                Self::predictDeterministicAddress(_) => {
1079                    <predictDeterministicAddressCall as alloy_sol_types::SolCall>::SELECTOR
1080                }
1081                Self::safeVersion(_) => {
1082                    <safeVersionCall as alloy_sol_types::SolCall>::SELECTOR
1083                }
1084            }
1085        }
1086        #[inline]
1087        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
1088            Self::SELECTORS.get(i).copied()
1089        }
1090        #[inline]
1091        fn valid_selector(selector: [u8; 4]) -> bool {
1092            Self::SELECTORS.binary_search(&selector).is_ok()
1093        }
1094        #[inline]
1095        #[allow(non_snake_case)]
1096        fn abi_decode_raw(
1097            selector: [u8; 4],
1098            data: &[u8],
1099        ) -> alloy_sol_types::Result<Self> {
1100            static DECODE_SHIMS: &[fn(
1101                &[u8],
1102            ) -> alloy_sol_types::Result<HoprNodeStakeFactoryCalls>] = &[
1103                {
1104                    fn predictDeterministicAddress(
1105                        data: &[u8],
1106                    ) -> alloy_sol_types::Result<HoprNodeStakeFactoryCalls> {
1107                        <predictDeterministicAddressCall as alloy_sol_types::SolCall>::abi_decode_raw(
1108                                data,
1109                            )
1110                            .map(HoprNodeStakeFactoryCalls::predictDeterministicAddress)
1111                    }
1112                    predictDeterministicAddress
1113                },
1114                {
1115                    fn safeVersion(
1116                        data: &[u8],
1117                    ) -> alloy_sol_types::Result<HoprNodeStakeFactoryCalls> {
1118                        <safeVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
1119                                data,
1120                            )
1121                            .map(HoprNodeStakeFactoryCalls::safeVersion)
1122                    }
1123                    safeVersion
1124                },
1125                {
1126                    fn clone(
1127                        data: &[u8],
1128                    ) -> alloy_sol_types::Result<HoprNodeStakeFactoryCalls> {
1129                        <cloneCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
1130                            .map(HoprNodeStakeFactoryCalls::clone)
1131                    }
1132                    clone
1133                },
1134            ];
1135            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
1136                return Err(
1137                    alloy_sol_types::Error::unknown_selector(
1138                        <Self as alloy_sol_types::SolInterface>::NAME,
1139                        selector,
1140                    ),
1141                );
1142            };
1143            DECODE_SHIMS[idx](data)
1144        }
1145        #[inline]
1146        #[allow(non_snake_case)]
1147        fn abi_decode_raw_validate(
1148            selector: [u8; 4],
1149            data: &[u8],
1150        ) -> alloy_sol_types::Result<Self> {
1151            static DECODE_VALIDATE_SHIMS: &[fn(
1152                &[u8],
1153            ) -> alloy_sol_types::Result<HoprNodeStakeFactoryCalls>] = &[
1154                {
1155                    fn predictDeterministicAddress(
1156                        data: &[u8],
1157                    ) -> alloy_sol_types::Result<HoprNodeStakeFactoryCalls> {
1158                        <predictDeterministicAddressCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
1159                                data,
1160                            )
1161                            .map(HoprNodeStakeFactoryCalls::predictDeterministicAddress)
1162                    }
1163                    predictDeterministicAddress
1164                },
1165                {
1166                    fn safeVersion(
1167                        data: &[u8],
1168                    ) -> alloy_sol_types::Result<HoprNodeStakeFactoryCalls> {
1169                        <safeVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
1170                                data,
1171                            )
1172                            .map(HoprNodeStakeFactoryCalls::safeVersion)
1173                    }
1174                    safeVersion
1175                },
1176                {
1177                    fn clone(
1178                        data: &[u8],
1179                    ) -> alloy_sol_types::Result<HoprNodeStakeFactoryCalls> {
1180                        <cloneCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
1181                                data,
1182                            )
1183                            .map(HoprNodeStakeFactoryCalls::clone)
1184                    }
1185                    clone
1186                },
1187            ];
1188            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
1189                return Err(
1190                    alloy_sol_types::Error::unknown_selector(
1191                        <Self as alloy_sol_types::SolInterface>::NAME,
1192                        selector,
1193                    ),
1194                );
1195            };
1196            DECODE_VALIDATE_SHIMS[idx](data)
1197        }
1198        #[inline]
1199        fn abi_encoded_size(&self) -> usize {
1200            match self {
1201                Self::clone(inner) => {
1202                    <cloneCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
1203                }
1204                Self::predictDeterministicAddress(inner) => {
1205                    <predictDeterministicAddressCall as alloy_sol_types::SolCall>::abi_encoded_size(
1206                        inner,
1207                    )
1208                }
1209                Self::safeVersion(inner) => {
1210                    <safeVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(
1211                        inner,
1212                    )
1213                }
1214            }
1215        }
1216        #[inline]
1217        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1218            match self {
1219                Self::clone(inner) => {
1220                    <cloneCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
1221                }
1222                Self::predictDeterministicAddress(inner) => {
1223                    <predictDeterministicAddressCall as alloy_sol_types::SolCall>::abi_encode_raw(
1224                        inner,
1225                        out,
1226                    )
1227                }
1228                Self::safeVersion(inner) => {
1229                    <safeVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
1230                        inner,
1231                        out,
1232                    )
1233                }
1234            }
1235        }
1236    }
1237    ///Container for all the [`HoprNodeStakeFactory`](self) custom errors.
1238    #[derive(serde::Serialize, serde::Deserialize)]
1239    #[derive(Debug, PartialEq, Eq, Hash)]
1240    pub enum HoprNodeStakeFactoryErrors {
1241        #[allow(missing_docs)]
1242        TooFewOwners(TooFewOwners),
1243    }
1244    #[automatically_derived]
1245    impl HoprNodeStakeFactoryErrors {
1246        /// All the selectors of this enum.
1247        ///
1248        /// Note that the selectors might not be in the same order as the variants.
1249        /// No guarantees are made about the order of the selectors.
1250        ///
1251        /// Prefer using `SolInterface` methods instead.
1252        pub const SELECTORS: &'static [[u8; 4usize]] = &[[13u8, 127u8, 209u8, 170u8]];
1253    }
1254    #[automatically_derived]
1255    impl alloy_sol_types::SolInterface for HoprNodeStakeFactoryErrors {
1256        const NAME: &'static str = "HoprNodeStakeFactoryErrors";
1257        const MIN_DATA_LENGTH: usize = 0usize;
1258        const COUNT: usize = 1usize;
1259        #[inline]
1260        fn selector(&self) -> [u8; 4] {
1261            match self {
1262                Self::TooFewOwners(_) => {
1263                    <TooFewOwners as alloy_sol_types::SolError>::SELECTOR
1264                }
1265            }
1266        }
1267        #[inline]
1268        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
1269            Self::SELECTORS.get(i).copied()
1270        }
1271        #[inline]
1272        fn valid_selector(selector: [u8; 4]) -> bool {
1273            Self::SELECTORS.binary_search(&selector).is_ok()
1274        }
1275        #[inline]
1276        #[allow(non_snake_case)]
1277        fn abi_decode_raw(
1278            selector: [u8; 4],
1279            data: &[u8],
1280        ) -> alloy_sol_types::Result<Self> {
1281            static DECODE_SHIMS: &[fn(
1282                &[u8],
1283            ) -> alloy_sol_types::Result<HoprNodeStakeFactoryErrors>] = &[
1284                {
1285                    fn TooFewOwners(
1286                        data: &[u8],
1287                    ) -> alloy_sol_types::Result<HoprNodeStakeFactoryErrors> {
1288                        <TooFewOwners as alloy_sol_types::SolError>::abi_decode_raw(data)
1289                            .map(HoprNodeStakeFactoryErrors::TooFewOwners)
1290                    }
1291                    TooFewOwners
1292                },
1293            ];
1294            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
1295                return Err(
1296                    alloy_sol_types::Error::unknown_selector(
1297                        <Self as alloy_sol_types::SolInterface>::NAME,
1298                        selector,
1299                    ),
1300                );
1301            };
1302            DECODE_SHIMS[idx](data)
1303        }
1304        #[inline]
1305        #[allow(non_snake_case)]
1306        fn abi_decode_raw_validate(
1307            selector: [u8; 4],
1308            data: &[u8],
1309        ) -> alloy_sol_types::Result<Self> {
1310            static DECODE_VALIDATE_SHIMS: &[fn(
1311                &[u8],
1312            ) -> alloy_sol_types::Result<HoprNodeStakeFactoryErrors>] = &[
1313                {
1314                    fn TooFewOwners(
1315                        data: &[u8],
1316                    ) -> alloy_sol_types::Result<HoprNodeStakeFactoryErrors> {
1317                        <TooFewOwners as alloy_sol_types::SolError>::abi_decode_raw_validate(
1318                                data,
1319                            )
1320                            .map(HoprNodeStakeFactoryErrors::TooFewOwners)
1321                    }
1322                    TooFewOwners
1323                },
1324            ];
1325            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
1326                return Err(
1327                    alloy_sol_types::Error::unknown_selector(
1328                        <Self as alloy_sol_types::SolInterface>::NAME,
1329                        selector,
1330                    ),
1331                );
1332            };
1333            DECODE_VALIDATE_SHIMS[idx](data)
1334        }
1335        #[inline]
1336        fn abi_encoded_size(&self) -> usize {
1337            match self {
1338                Self::TooFewOwners(inner) => {
1339                    <TooFewOwners as alloy_sol_types::SolError>::abi_encoded_size(inner)
1340                }
1341            }
1342        }
1343        #[inline]
1344        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1345            match self {
1346                Self::TooFewOwners(inner) => {
1347                    <TooFewOwners as alloy_sol_types::SolError>::abi_encode_raw(
1348                        inner,
1349                        out,
1350                    )
1351                }
1352            }
1353        }
1354    }
1355    ///Container for all the [`HoprNodeStakeFactory`](self) events.
1356    #[derive(serde::Serialize, serde::Deserialize)]
1357    #[derive(Debug, PartialEq, Eq, Hash)]
1358    pub enum HoprNodeStakeFactoryEvents {
1359        #[allow(missing_docs)]
1360        NewHoprNodeStakeModule(NewHoprNodeStakeModule),
1361        #[allow(missing_docs)]
1362        NewHoprNodeStakeSafe(NewHoprNodeStakeSafe),
1363    }
1364    #[automatically_derived]
1365    impl HoprNodeStakeFactoryEvents {
1366        /// All the selectors of this enum.
1367        ///
1368        /// Note that the selectors might not be in the same order as the variants.
1369        /// No guarantees are made about the order of the selectors.
1370        ///
1371        /// Prefer using `SolInterface` methods instead.
1372        pub const SELECTORS: &'static [[u8; 32usize]] = &[
1373            [
1374                129u8, 61u8, 57u8, 29u8, 196u8, 144u8, 214u8, 193u8, 218u8, 231u8, 211u8,
1375                253u8, 213u8, 85u8, 243u8, 55u8, 83u8, 61u8, 29u8, 162u8, 201u8, 8u8,
1376                198u8, 239u8, 211u8, 109u8, 76u8, 245u8, 87u8, 166u8, 50u8, 6u8,
1377            ],
1378            [
1379                130u8, 49u8, 209u8, 105u8, 244u8, 22u8, 182u8, 102u8, 174u8, 127u8,
1380                164u8, 63u8, 170u8, 36u8, 161u8, 136u8, 153u8, 115u8, 128u8, 117u8,
1381                165u8, 63u8, 50u8, 201u8, 118u8, 23u8, 209u8, 115u8, 177u8, 137u8, 227u8,
1382                134u8,
1383            ],
1384        ];
1385    }
1386    #[automatically_derived]
1387    impl alloy_sol_types::SolEventInterface for HoprNodeStakeFactoryEvents {
1388        const NAME: &'static str = "HoprNodeStakeFactoryEvents";
1389        const COUNT: usize = 2usize;
1390        fn decode_raw_log(
1391            topics: &[alloy_sol_types::Word],
1392            data: &[u8],
1393        ) -> alloy_sol_types::Result<Self> {
1394            match topics.first().copied() {
1395                Some(
1396                    <NewHoprNodeStakeModule as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
1397                ) => {
1398                    <NewHoprNodeStakeModule as alloy_sol_types::SolEvent>::decode_raw_log(
1399                            topics,
1400                            data,
1401                        )
1402                        .map(Self::NewHoprNodeStakeModule)
1403                }
1404                Some(
1405                    <NewHoprNodeStakeSafe as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
1406                ) => {
1407                    <NewHoprNodeStakeSafe as alloy_sol_types::SolEvent>::decode_raw_log(
1408                            topics,
1409                            data,
1410                        )
1411                        .map(Self::NewHoprNodeStakeSafe)
1412                }
1413                _ => {
1414                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
1415                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
1416                        log: alloy_sol_types::private::Box::new(
1417                            alloy_sol_types::private::LogData::new_unchecked(
1418                                topics.to_vec(),
1419                                data.to_vec().into(),
1420                            ),
1421                        ),
1422                    })
1423                }
1424            }
1425        }
1426    }
1427    #[automatically_derived]
1428    impl alloy_sol_types::private::IntoLogData for HoprNodeStakeFactoryEvents {
1429        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
1430            match self {
1431                Self::NewHoprNodeStakeModule(inner) => {
1432                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
1433                }
1434                Self::NewHoprNodeStakeSafe(inner) => {
1435                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
1436                }
1437            }
1438        }
1439        fn into_log_data(self) -> alloy_sol_types::private::LogData {
1440            match self {
1441                Self::NewHoprNodeStakeModule(inner) => {
1442                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
1443                }
1444                Self::NewHoprNodeStakeSafe(inner) => {
1445                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
1446                }
1447            }
1448        }
1449    }
1450    use alloy::contract as alloy_contract;
1451    /**Creates a new wrapper around an on-chain [`HoprNodeStakeFactory`](self) contract instance.
1452
1453See the [wrapper's documentation](`HoprNodeStakeFactoryInstance`) for more details.*/
1454    #[inline]
1455    pub const fn new<
1456        P: alloy_contract::private::Provider<N>,
1457        N: alloy_contract::private::Network,
1458    >(
1459        address: alloy_sol_types::private::Address,
1460        provider: P,
1461    ) -> HoprNodeStakeFactoryInstance<P, N> {
1462        HoprNodeStakeFactoryInstance::<P, N>::new(address, provider)
1463    }
1464    /**Deploys this contract using the given `provider` and constructor arguments, if any.
1465
1466Returns a new instance of the contract, if the deployment was successful.
1467
1468For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
1469    #[inline]
1470    pub fn deploy<
1471        P: alloy_contract::private::Provider<N>,
1472        N: alloy_contract::private::Network,
1473    >(
1474        provider: P,
1475    ) -> impl ::core::future::Future<
1476        Output = alloy_contract::Result<HoprNodeStakeFactoryInstance<P, N>>,
1477    > {
1478        HoprNodeStakeFactoryInstance::<P, N>::deploy(provider)
1479    }
1480    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
1481and constructor arguments, if any.
1482
1483This is a simple wrapper around creating a `RawCallBuilder` with the data set to
1484the bytecode concatenated with the constructor's ABI-encoded arguments.*/
1485    #[inline]
1486    pub fn deploy_builder<
1487        P: alloy_contract::private::Provider<N>,
1488        N: alloy_contract::private::Network,
1489    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
1490        HoprNodeStakeFactoryInstance::<P, N>::deploy_builder(provider)
1491    }
1492    /**A [`HoprNodeStakeFactory`](self) instance.
1493
1494Contains type-safe methods for interacting with an on-chain instance of the
1495[`HoprNodeStakeFactory`](self) contract located at a given `address`, using a given
1496provider `P`.
1497
1498If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1499documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1500be used to deploy a new instance of the contract.
1501
1502See the [module-level documentation](self) for all the available methods.*/
1503    #[derive(Clone)]
1504    pub struct HoprNodeStakeFactoryInstance<P, N = alloy_contract::private::Ethereum> {
1505        address: alloy_sol_types::private::Address,
1506        provider: P,
1507        _network: ::core::marker::PhantomData<N>,
1508    }
1509    #[automatically_derived]
1510    impl<P, N> ::core::fmt::Debug for HoprNodeStakeFactoryInstance<P, N> {
1511        #[inline]
1512        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1513            f.debug_tuple("HoprNodeStakeFactoryInstance").field(&self.address).finish()
1514        }
1515    }
1516    /// Instantiation and getters/setters.
1517    #[automatically_derived]
1518    impl<
1519        P: alloy_contract::private::Provider<N>,
1520        N: alloy_contract::private::Network,
1521    > HoprNodeStakeFactoryInstance<P, N> {
1522        /**Creates a new wrapper around an on-chain [`HoprNodeStakeFactory`](self) contract instance.
1523
1524See the [wrapper's documentation](`HoprNodeStakeFactoryInstance`) for more details.*/
1525        #[inline]
1526        pub const fn new(
1527            address: alloy_sol_types::private::Address,
1528            provider: P,
1529        ) -> Self {
1530            Self {
1531                address,
1532                provider,
1533                _network: ::core::marker::PhantomData,
1534            }
1535        }
1536        /**Deploys this contract using the given `provider` and constructor arguments, if any.
1537
1538Returns a new instance of the contract, if the deployment was successful.
1539
1540For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
1541        #[inline]
1542        pub async fn deploy(
1543            provider: P,
1544        ) -> alloy_contract::Result<HoprNodeStakeFactoryInstance<P, N>> {
1545            let call_builder = Self::deploy_builder(provider);
1546            let contract_address = call_builder.deploy().await?;
1547            Ok(Self::new(contract_address, call_builder.provider))
1548        }
1549        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
1550and constructor arguments, if any.
1551
1552This is a simple wrapper around creating a `RawCallBuilder` with the data set to
1553the bytecode concatenated with the constructor's ABI-encoded arguments.*/
1554        #[inline]
1555        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
1556            alloy_contract::RawCallBuilder::new_raw_deploy(
1557                provider,
1558                ::core::clone::Clone::clone(&BYTECODE),
1559            )
1560        }
1561        /// Returns a reference to the address.
1562        #[inline]
1563        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1564            &self.address
1565        }
1566        /// Sets the address.
1567        #[inline]
1568        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1569            self.address = address;
1570        }
1571        /// Sets the address and returns `self`.
1572        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1573            self.set_address(address);
1574            self
1575        }
1576        /// Returns a reference to the provider.
1577        #[inline]
1578        pub const fn provider(&self) -> &P {
1579            &self.provider
1580        }
1581    }
1582    impl<P: ::core::clone::Clone, N> HoprNodeStakeFactoryInstance<&P, N> {
1583        /// Clones the provider and returns a new instance with the cloned provider.
1584        #[inline]
1585        pub fn with_cloned_provider(self) -> HoprNodeStakeFactoryInstance<P, N> {
1586            HoprNodeStakeFactoryInstance {
1587                address: self.address,
1588                provider: ::core::clone::Clone::clone(&self.provider),
1589                _network: ::core::marker::PhantomData,
1590            }
1591        }
1592    }
1593    /// Function calls.
1594    #[automatically_derived]
1595    impl<
1596        P: alloy_contract::private::Provider<N>,
1597        N: alloy_contract::private::Network,
1598    > HoprNodeStakeFactoryInstance<P, N> {
1599        /// Creates a new call builder using this contract instance's provider and address.
1600        ///
1601        /// Note that the call can be any function call, not just those defined in this
1602        /// contract. Prefer using the other methods for building type-safe contract calls.
1603        pub fn call_builder<C: alloy_sol_types::SolCall>(
1604            &self,
1605            call: &C,
1606        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1607            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1608        }
1609        ///Creates a new call builder for the [`clone`] function.
1610        pub fn clone(
1611            &self,
1612            moduleSingletonAddress: alloy::sol_types::private::Address,
1613            admins: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
1614            nonce: alloy::sol_types::private::primitives::aliases::U256,
1615            defaultTarget: alloy::sol_types::private::FixedBytes<32>,
1616        ) -> alloy_contract::SolCallBuilder<&P, cloneCall, N> {
1617            self.call_builder(
1618                &cloneCall {
1619                    moduleSingletonAddress,
1620                    admins,
1621                    nonce,
1622                    defaultTarget,
1623                },
1624            )
1625        }
1626        ///Creates a new call builder for the [`predictDeterministicAddress`] function.
1627        pub fn predictDeterministicAddress(
1628            &self,
1629            implementation: alloy::sol_types::private::Address,
1630            salt: alloy::sol_types::private::FixedBytes<32>,
1631        ) -> alloy_contract::SolCallBuilder<&P, predictDeterministicAddressCall, N> {
1632            self.call_builder(
1633                &predictDeterministicAddressCall {
1634                    implementation,
1635                    salt,
1636                },
1637            )
1638        }
1639        ///Creates a new call builder for the [`safeVersion`] function.
1640        pub fn safeVersion(
1641            &self,
1642        ) -> alloy_contract::SolCallBuilder<&P, safeVersionCall, N> {
1643            self.call_builder(&safeVersionCall)
1644        }
1645    }
1646    /// Event filters.
1647    #[automatically_derived]
1648    impl<
1649        P: alloy_contract::private::Provider<N>,
1650        N: alloy_contract::private::Network,
1651    > HoprNodeStakeFactoryInstance<P, N> {
1652        /// Creates a new event filter using this contract instance's provider and address.
1653        ///
1654        /// Note that the type can be any event, not just those defined in this contract.
1655        /// Prefer using the other methods for building type-safe event filters.
1656        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1657            &self,
1658        ) -> alloy_contract::Event<&P, E, N> {
1659            alloy_contract::Event::new_sol(&self.provider, &self.address)
1660        }
1661        ///Creates a new event filter for the [`NewHoprNodeStakeModule`] event.
1662        pub fn NewHoprNodeStakeModule_filter(
1663            &self,
1664        ) -> alloy_contract::Event<&P, NewHoprNodeStakeModule, N> {
1665            self.event_filter::<NewHoprNodeStakeModule>()
1666        }
1667        ///Creates a new event filter for the [`NewHoprNodeStakeSafe`] event.
1668        pub fn NewHoprNodeStakeSafe_filter(
1669            &self,
1670        ) -> alloy_contract::Event<&P, NewHoprNodeStakeSafe, N> {
1671            self.event_filter::<NewHoprNodeStakeSafe>()
1672        }
1673    }
1674}