eigen_utils/rewardsv2/sdk/
contracts_registry.rs

1/**
2
3Generated by the following Solidity interface...
4```solidity
5interface ContractsRegistry {
6    function contractCount() external view returns (uint256);
7    function contractNames(uint256) external view returns (string memory);
8    function contracts(string memory) external view returns (address);
9    function registerContract(string memory name, address _contract) external;
10}
11```
12
13...which was generated by the following JSON ABI:
14```json
15[
16  {
17    "type": "function",
18    "name": "contractCount",
19    "inputs": [],
20    "outputs": [
21      {
22        "name": "",
23        "type": "uint256",
24        "internalType": "uint256"
25      }
26    ],
27    "stateMutability": "view"
28  },
29  {
30    "type": "function",
31    "name": "contractNames",
32    "inputs": [
33      {
34        "name": "",
35        "type": "uint256",
36        "internalType": "uint256"
37      }
38    ],
39    "outputs": [
40      {
41        "name": "",
42        "type": "string",
43        "internalType": "string"
44      }
45    ],
46    "stateMutability": "view"
47  },
48  {
49    "type": "function",
50    "name": "contracts",
51    "inputs": [
52      {
53        "name": "",
54        "type": "string",
55        "internalType": "string"
56      }
57    ],
58    "outputs": [
59      {
60        "name": "",
61        "type": "address",
62        "internalType": "address"
63      }
64    ],
65    "stateMutability": "view"
66  },
67  {
68    "type": "function",
69    "name": "registerContract",
70    "inputs": [
71      {
72        "name": "name",
73        "type": "string",
74        "internalType": "string"
75      },
76      {
77        "name": "_contract",
78        "type": "address",
79        "internalType": "address"
80      }
81    ],
82    "outputs": [],
83    "stateMutability": "nonpayable"
84  }
85]
86```*/
87#[allow(
88    non_camel_case_types,
89    non_snake_case,
90    clippy::pub_underscore_fields,
91    clippy::style,
92    clippy::empty_structs_with_brackets
93)]
94pub mod ContractsRegistry {
95    use super::*;
96    use alloy::sol_types as alloy_sol_types;
97    /// The creation / init bytecode of the contract.
98    ///
99    /// ```text
100    ///0x608080604052346015576104c1908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081633ca6bb92146102f8575080637f3c2c28146100ca5780638736381a146100ad57638c5b838514610048575f80fd5b346100a95760203660031901126100a95760043567ffffffffffffffff81116100a95761007b6020913690600401610435565b8160405191805191829101835e5f90820190815281900382019020546040516001600160a01b039091168152f35b5f80fd5b346100a9575f3660031901126100a9576020600254604051908152f35b346100a95760403660031901126100a95760043567ffffffffffffffff81116100a9576100fb903690600401610435565b6024356001600160a01b038116908190036100a95760405182519060208401918083835e5f9082019081528190036020019020546001600160a01b03166102b3576020604051809285518091835e81015f815203019020906bffffffffffffffffffffffff60a01b8254161790556002545f52600160205260405f20815167ffffffffffffffff811161029f5761019282546103db565b601f811161025a575b50602092601f82116001146101fb57928192935f926101f0575b50508160011b915f199060031b1c19161790555b6002545f1981146101dc57600101600255005b634e487b7160e01b5f52601160045260245ffd5b0151905083806101b5565b601f19821693835f52805f20915f5b868110610242575083600195961061022a575b505050811b0190556101c9565b01515f1960f88460031b161c1916905583808061021d565b9192602060018192868501518155019401920161020a565b825f5260205f20601f830160051c81019160208410610295575b601f0160051c01905b81811061028a575061019b565b5f815560010161027d565b9091508190610274565b634e487b7160e01b5f52604160045260245ffd5b60405162461bcd60e51b815260206004820152601b60248201527f636f6e747261637420616c7265616479207265676973746572656400000000006044820152606490fd5b346100a95760203660031901126100a9576004355f52600160205260405f20905f825492610325846103db565b9081845260208401946001811690815f146103be575060011461037e575b8460408561035381870382610413565b8151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b5f90815260208120939250905b8082106103a45750909150810160200161035382610343565b91926001816020925483858801015201910190929161038b565b60ff191686525050151560051b8201602001905061035382610343565b90600182811c92168015610409575b60208310146103f557565b634e487b7160e01b5f52602260045260245ffd5b91607f16916103ea565b90601f8019910116810190811067ffffffffffffffff82111761029f57604052565b81601f820112156100a95780359067ffffffffffffffff821161029f576040519261046a601f8401601f191660200185610413565b828452602083830101116100a957815f92602080930183860137830101529056fea2646970667358221220b9fba6cc4f192072b3fefccb2c64d81390e1bd009f4ccd3c7e42465b694ba63064736f6c634300081b0033
101    /// ```
102    #[rustfmt::skip]
103    #[allow(clippy::all)]
104    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
105        b"`\x80\x80`@R4`\x15Wa\x04\xC1\x90\x81a\0\x1A\x829\xF3[_\x80\xFD\xFE`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1C\x90\x81c<\xA6\xBB\x92\x14a\x02\xF8WP\x80c\x7F<,(\x14a\0\xCAW\x80c\x8768\x1A\x14a\0\xADWc\x8C[\x83\x85\x14a\0HW_\x80\xFD[4a\0\xA9W` 6`\x03\x19\x01\x12a\0\xA9W`\x045g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\0\xA9Wa\0{` \x916\x90`\x04\x01a\x045V[\x81`@Q\x91\x80Q\x91\x82\x91\x01\x83^_\x90\x82\x01\x90\x81R\x81\x90\x03\x82\x01\x90 T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\xF3[_\x80\xFD[4a\0\xA9W_6`\x03\x19\x01\x12a\0\xA9W` `\x02T`@Q\x90\x81R\xF3[4a\0\xA9W`@6`\x03\x19\x01\x12a\0\xA9W`\x045g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\0\xA9Wa\0\xFB\x906\x90`\x04\x01a\x045V[`$5`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03a\0\xA9W`@Q\x82Q\x90` \x84\x01\x91\x80\x83\x83^_\x90\x82\x01\x90\x81R\x81\x90\x03` \x01\x90 T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xB3W` `@Q\x80\x92\x85Q\x80\x91\x83^\x81\x01_\x81R\x03\x01\x90 \x90k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B\x82T\x16\x17\x90U`\x02T_R`\x01` R`@_ \x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x02\x9FWa\x01\x92\x82Ta\x03\xDBV[`\x1F\x81\x11a\x02ZW[P` \x92`\x1F\x82\x11`\x01\x14a\x01\xFBW\x92\x81\x92\x93_\x92a\x01\xF0W[PP\x81`\x01\x1B\x91_\x19\x90`\x03\x1B\x1C\x19\x16\x17\x90U[`\x02T_\x19\x81\x14a\x01\xDCW`\x01\x01`\x02U\0[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x01Q\x90P\x83\x80a\x01\xB5V[`\x1F\x19\x82\x16\x93\x83_R\x80_ \x91_[\x86\x81\x10a\x02BWP\x83`\x01\x95\x96\x10a\x02*W[PPP\x81\x1B\x01\x90Ua\x01\xC9V[\x01Q_\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x83\x80\x80a\x02\x1DV[\x91\x92` `\x01\x81\x92\x86\x85\x01Q\x81U\x01\x94\x01\x92\x01a\x02\nV[\x82_R` _ `\x1F\x83\x01`\x05\x1C\x81\x01\x91` \x84\x10a\x02\x95W[`\x1F\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x02\x8AWPa\x01\x9BV[_\x81U`\x01\x01a\x02}V[\x90\x91P\x81\x90a\x02tV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7Fcontract already registered\0\0\0\0\0`D\x82\x01R`d\x90\xFD[4a\0\xA9W` 6`\x03\x19\x01\x12a\0\xA9W`\x045_R`\x01` R`@_ \x90_\x82T\x92a\x03%\x84a\x03\xDBV[\x90\x81\x84R` \x84\x01\x94`\x01\x81\x16\x90\x81_\x14a\x03\xBEWP`\x01\x14a\x03~W[\x84`@\x85a\x03S\x81\x87\x03\x82a\x04\x13V[\x81Q\x92\x83\x91` \x83RQ\x80\x91\x81` \x85\x01R\x84\x84\x01^_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[_\x90\x81R` \x81 \x93\x92P\x90[\x80\x82\x10a\x03\xA4WP\x90\x91P\x81\x01` \x01a\x03S\x82a\x03CV[\x91\x92`\x01\x81` \x92T\x83\x85\x88\x01\x01R\x01\x91\x01\x90\x92\x91a\x03\x8BV[`\xFF\x19\x16\x86RPP\x15\x15`\x05\x1B\x82\x01` \x01\x90Pa\x03S\x82a\x03CV[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x04\tW[` \x83\x10\x14a\x03\xF5WV[cNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[\x91`\x7F\x16\x91a\x03\xEAV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\x9FW`@RV[\x81`\x1F\x82\x01\x12\x15a\0\xA9W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x02\x9FW`@Q\x92a\x04j`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x04\x13V[\x82\x84R` \x83\x83\x01\x01\x11a\0\xA9W\x81_\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V\xFE\xA2dipfsX\"\x12 \xB9\xFB\xA6\xCCO\x19 r\xB3\xFE\xFC\xCB,d\xD8\x13\x90\xE1\xBD\0\x9FL\xCD<~BF[iK\xA60dsolcC\0\x08\x1B\x003",
106    );
107    /// The runtime bytecode of the contract, as deployed on the network.
108    ///
109    /// ```text
110    ///0x6080806040526004361015610012575f80fd5b5f3560e01c9081633ca6bb92146102f8575080637f3c2c28146100ca5780638736381a146100ad57638c5b838514610048575f80fd5b346100a95760203660031901126100a95760043567ffffffffffffffff81116100a95761007b6020913690600401610435565b8160405191805191829101835e5f90820190815281900382019020546040516001600160a01b039091168152f35b5f80fd5b346100a9575f3660031901126100a9576020600254604051908152f35b346100a95760403660031901126100a95760043567ffffffffffffffff81116100a9576100fb903690600401610435565b6024356001600160a01b038116908190036100a95760405182519060208401918083835e5f9082019081528190036020019020546001600160a01b03166102b3576020604051809285518091835e81015f815203019020906bffffffffffffffffffffffff60a01b8254161790556002545f52600160205260405f20815167ffffffffffffffff811161029f5761019282546103db565b601f811161025a575b50602092601f82116001146101fb57928192935f926101f0575b50508160011b915f199060031b1c19161790555b6002545f1981146101dc57600101600255005b634e487b7160e01b5f52601160045260245ffd5b0151905083806101b5565b601f19821693835f52805f20915f5b868110610242575083600195961061022a575b505050811b0190556101c9565b01515f1960f88460031b161c1916905583808061021d565b9192602060018192868501518155019401920161020a565b825f5260205f20601f830160051c81019160208410610295575b601f0160051c01905b81811061028a575061019b565b5f815560010161027d565b9091508190610274565b634e487b7160e01b5f52604160045260245ffd5b60405162461bcd60e51b815260206004820152601b60248201527f636f6e747261637420616c7265616479207265676973746572656400000000006044820152606490fd5b346100a95760203660031901126100a9576004355f52600160205260405f20905f825492610325846103db565b9081845260208401946001811690815f146103be575060011461037e575b8460408561035381870382610413565b8151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b5f90815260208120939250905b8082106103a45750909150810160200161035382610343565b91926001816020925483858801015201910190929161038b565b60ff191686525050151560051b8201602001905061035382610343565b90600182811c92168015610409575b60208310146103f557565b634e487b7160e01b5f52602260045260245ffd5b91607f16916103ea565b90601f8019910116810190811067ffffffffffffffff82111761029f57604052565b81601f820112156100a95780359067ffffffffffffffff821161029f576040519261046a601f8401601f191660200185610413565b828452602083830101116100a957815f92602080930183860137830101529056fea2646970667358221220b9fba6cc4f192072b3fefccb2c64d81390e1bd009f4ccd3c7e42465b694ba63064736f6c634300081b0033
111    /// ```
112    #[rustfmt::skip]
113    #[allow(clippy::all)]
114    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
115        b"`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1C\x90\x81c<\xA6\xBB\x92\x14a\x02\xF8WP\x80c\x7F<,(\x14a\0\xCAW\x80c\x8768\x1A\x14a\0\xADWc\x8C[\x83\x85\x14a\0HW_\x80\xFD[4a\0\xA9W` 6`\x03\x19\x01\x12a\0\xA9W`\x045g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\0\xA9Wa\0{` \x916\x90`\x04\x01a\x045V[\x81`@Q\x91\x80Q\x91\x82\x91\x01\x83^_\x90\x82\x01\x90\x81R\x81\x90\x03\x82\x01\x90 T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\xF3[_\x80\xFD[4a\0\xA9W_6`\x03\x19\x01\x12a\0\xA9W` `\x02T`@Q\x90\x81R\xF3[4a\0\xA9W`@6`\x03\x19\x01\x12a\0\xA9W`\x045g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\0\xA9Wa\0\xFB\x906\x90`\x04\x01a\x045V[`$5`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03a\0\xA9W`@Q\x82Q\x90` \x84\x01\x91\x80\x83\x83^_\x90\x82\x01\x90\x81R\x81\x90\x03` \x01\x90 T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xB3W` `@Q\x80\x92\x85Q\x80\x91\x83^\x81\x01_\x81R\x03\x01\x90 \x90k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\xA0\x1B\x82T\x16\x17\x90U`\x02T_R`\x01` R`@_ \x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x02\x9FWa\x01\x92\x82Ta\x03\xDBV[`\x1F\x81\x11a\x02ZW[P` \x92`\x1F\x82\x11`\x01\x14a\x01\xFBW\x92\x81\x92\x93_\x92a\x01\xF0W[PP\x81`\x01\x1B\x91_\x19\x90`\x03\x1B\x1C\x19\x16\x17\x90U[`\x02T_\x19\x81\x14a\x01\xDCW`\x01\x01`\x02U\0[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x01Q\x90P\x83\x80a\x01\xB5V[`\x1F\x19\x82\x16\x93\x83_R\x80_ \x91_[\x86\x81\x10a\x02BWP\x83`\x01\x95\x96\x10a\x02*W[PPP\x81\x1B\x01\x90Ua\x01\xC9V[\x01Q_\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U\x83\x80\x80a\x02\x1DV[\x91\x92` `\x01\x81\x92\x86\x85\x01Q\x81U\x01\x94\x01\x92\x01a\x02\nV[\x82_R` _ `\x1F\x83\x01`\x05\x1C\x81\x01\x91` \x84\x10a\x02\x95W[`\x1F\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x02\x8AWPa\x01\x9BV[_\x81U`\x01\x01a\x02}V[\x90\x91P\x81\x90a\x02tV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7Fcontract already registered\0\0\0\0\0`D\x82\x01R`d\x90\xFD[4a\0\xA9W` 6`\x03\x19\x01\x12a\0\xA9W`\x045_R`\x01` R`@_ \x90_\x82T\x92a\x03%\x84a\x03\xDBV[\x90\x81\x84R` \x84\x01\x94`\x01\x81\x16\x90\x81_\x14a\x03\xBEWP`\x01\x14a\x03~W[\x84`@\x85a\x03S\x81\x87\x03\x82a\x04\x13V[\x81Q\x92\x83\x91` \x83RQ\x80\x91\x81` \x85\x01R\x84\x84\x01^_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xF3[_\x90\x81R` \x81 \x93\x92P\x90[\x80\x82\x10a\x03\xA4WP\x90\x91P\x81\x01` \x01a\x03S\x82a\x03CV[\x91\x92`\x01\x81` \x92T\x83\x85\x88\x01\x01R\x01\x91\x01\x90\x92\x91a\x03\x8BV[`\xFF\x19\x16\x86RPP\x15\x15`\x05\x1B\x82\x01` \x01\x90Pa\x03S\x82a\x03CV[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x04\tW[` \x83\x10\x14a\x03\xF5WV[cNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[\x91`\x7F\x16\x91a\x03\xEAV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\x9FW`@RV[\x81`\x1F\x82\x01\x12\x15a\0\xA9W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x02\x9FW`@Q\x92a\x04j`\x1F\x84\x01`\x1F\x19\x16` \x01\x85a\x04\x13V[\x82\x84R` \x83\x83\x01\x01\x11a\0\xA9W\x81_\x92` \x80\x93\x01\x83\x86\x017\x83\x01\x01R\x90V\xFE\xA2dipfsX\"\x12 \xB9\xFB\xA6\xCCO\x19 r\xB3\xFE\xFC\xCB,d\xD8\x13\x90\xE1\xBD\0\x9FL\xCD<~BF[iK\xA60dsolcC\0\x08\x1B\x003",
116    );
117    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
118    /**Function with signature `contractCount()` and selector `0x8736381a`.
119    ```solidity
120    function contractCount() external view returns (uint256);
121    ```*/
122    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
123    #[derive(Clone)]
124    pub struct contractCountCall;
125    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
126    ///Container type for the return parameters of the [`contractCount()`](contractCountCall) function.
127    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
128    #[derive(Clone)]
129    pub struct contractCountReturn {
130        #[allow(missing_docs)]
131        pub _0: alloy::sol_types::private::primitives::aliases::U256,
132    }
133    #[allow(
134        non_camel_case_types,
135        non_snake_case,
136        clippy::pub_underscore_fields,
137        clippy::style
138    )]
139    const _: () = {
140        use alloy::sol_types as alloy_sol_types;
141        {
142            #[doc(hidden)]
143            type UnderlyingSolTuple<'a> = ();
144            #[doc(hidden)]
145            type UnderlyingRustTuple<'a> = ();
146            #[cfg(test)]
147            #[allow(dead_code, unreachable_patterns)]
148            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
149                match _t {
150                    alloy_sol_types::private::AssertTypeEq::<
151                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
152                    >(_) => {}
153                }
154            }
155            #[automatically_derived]
156            #[doc(hidden)]
157            impl ::core::convert::From<contractCountCall> for UnderlyingRustTuple<'_> {
158                fn from(value: contractCountCall) -> Self {
159                    ()
160                }
161            }
162            #[automatically_derived]
163            #[doc(hidden)]
164            impl ::core::convert::From<UnderlyingRustTuple<'_>> for contractCountCall {
165                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
166                    Self
167                }
168            }
169        }
170        {
171            #[doc(hidden)]
172            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
173            #[doc(hidden)]
174            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
175            #[cfg(test)]
176            #[allow(dead_code, unreachable_patterns)]
177            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
178                match _t {
179                    alloy_sol_types::private::AssertTypeEq::<
180                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
181                    >(_) => {}
182                }
183            }
184            #[automatically_derived]
185            #[doc(hidden)]
186            impl ::core::convert::From<contractCountReturn> for UnderlyingRustTuple<'_> {
187                fn from(value: contractCountReturn) -> Self {
188                    (value._0,)
189                }
190            }
191            #[automatically_derived]
192            #[doc(hidden)]
193            impl ::core::convert::From<UnderlyingRustTuple<'_>> for contractCountReturn {
194                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
195                    Self { _0: tuple.0 }
196                }
197            }
198        }
199        #[automatically_derived]
200        impl alloy_sol_types::SolCall for contractCountCall {
201            type Parameters<'a> = ();
202            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
203            type Return = alloy::sol_types::private::primitives::aliases::U256;
204            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
205            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
206            const SIGNATURE: &'static str = "contractCount()";
207            const SELECTOR: [u8; 4] = [135u8, 54u8, 56u8, 26u8];
208            #[inline]
209            fn new<'a>(
210                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
211            ) -> Self {
212                tuple.into()
213            }
214            #[inline]
215            fn tokenize(&self) -> Self::Token<'_> {
216                ()
217            }
218            #[inline]
219            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
220                (
221                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
222                        ret,
223                    ),
224                )
225            }
226            #[inline]
227            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
228                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
229                    |r| {
230                        let r: contractCountReturn = r.into();
231                        r._0
232                    },
233                )
234            }
235            #[inline]
236            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
237                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
238                    data,
239                )
240                .map(|r| {
241                    let r: contractCountReturn = r.into();
242                    r._0
243                })
244            }
245        }
246    };
247    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
248    /**Function with signature `contractNames(uint256)` and selector `0x3ca6bb92`.
249    ```solidity
250    function contractNames(uint256) external view returns (string memory);
251    ```*/
252    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
253    #[derive(Clone)]
254    pub struct contractNamesCall(pub alloy::sol_types::private::primitives::aliases::U256);
255    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
256    ///Container type for the return parameters of the [`contractNames(uint256)`](contractNamesCall) function.
257    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
258    #[derive(Clone)]
259    pub struct contractNamesReturn {
260        #[allow(missing_docs)]
261        pub _0: alloy::sol_types::private::String,
262    }
263    #[allow(
264        non_camel_case_types,
265        non_snake_case,
266        clippy::pub_underscore_fields,
267        clippy::style
268    )]
269    const _: () = {
270        use alloy::sol_types as alloy_sol_types;
271        {
272            #[doc(hidden)]
273            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
274            #[doc(hidden)]
275            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
276            #[cfg(test)]
277            #[allow(dead_code, unreachable_patterns)]
278            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
279                match _t {
280                    alloy_sol_types::private::AssertTypeEq::<
281                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
282                    >(_) => {}
283                }
284            }
285            #[automatically_derived]
286            #[doc(hidden)]
287            impl ::core::convert::From<contractNamesCall> for UnderlyingRustTuple<'_> {
288                fn from(value: contractNamesCall) -> Self {
289                    (value.0,)
290                }
291            }
292            #[automatically_derived]
293            #[doc(hidden)]
294            impl ::core::convert::From<UnderlyingRustTuple<'_>> for contractNamesCall {
295                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
296                    Self(tuple.0)
297                }
298            }
299        }
300        {
301            #[doc(hidden)]
302            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
303            #[doc(hidden)]
304            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
305            #[cfg(test)]
306            #[allow(dead_code, unreachable_patterns)]
307            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
308                match _t {
309                    alloy_sol_types::private::AssertTypeEq::<
310                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
311                    >(_) => {}
312                }
313            }
314            #[automatically_derived]
315            #[doc(hidden)]
316            impl ::core::convert::From<contractNamesReturn> for UnderlyingRustTuple<'_> {
317                fn from(value: contractNamesReturn) -> Self {
318                    (value._0,)
319                }
320            }
321            #[automatically_derived]
322            #[doc(hidden)]
323            impl ::core::convert::From<UnderlyingRustTuple<'_>> for contractNamesReturn {
324                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
325                    Self { _0: tuple.0 }
326                }
327            }
328        }
329        #[automatically_derived]
330        impl alloy_sol_types::SolCall for contractNamesCall {
331            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
332            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
333            type Return = alloy::sol_types::private::String;
334            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
335            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
336            const SIGNATURE: &'static str = "contractNames(uint256)";
337            const SELECTOR: [u8; 4] = [60u8, 166u8, 187u8, 146u8];
338            #[inline]
339            fn new<'a>(
340                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
341            ) -> Self {
342                tuple.into()
343            }
344            #[inline]
345            fn tokenize(&self) -> Self::Token<'_> {
346                (
347                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
348                        &self.0,
349                    ),
350                )
351            }
352            #[inline]
353            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
354                (<alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(ret),)
355            }
356            #[inline]
357            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
358                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
359                    |r| {
360                        let r: contractNamesReturn = r.into();
361                        r._0
362                    },
363                )
364            }
365            #[inline]
366            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
367                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
368                    data,
369                )
370                .map(|r| {
371                    let r: contractNamesReturn = r.into();
372                    r._0
373                })
374            }
375        }
376    };
377    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
378    /**Function with signature `contracts(string)` and selector `0x8c5b8385`.
379    ```solidity
380    function contracts(string memory) external view returns (address);
381    ```*/
382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
383    #[derive(Clone)]
384    pub struct contractsCall(pub alloy::sol_types::private::String);
385    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
386    ///Container type for the return parameters of the [`contracts(string)`](contractsCall) function.
387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
388    #[derive(Clone)]
389    pub struct contractsReturn {
390        #[allow(missing_docs)]
391        pub _0: alloy::sol_types::private::Address,
392    }
393    #[allow(
394        non_camel_case_types,
395        non_snake_case,
396        clippy::pub_underscore_fields,
397        clippy::style
398    )]
399    const _: () = {
400        use alloy::sol_types as alloy_sol_types;
401        {
402            #[doc(hidden)]
403            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
404            #[doc(hidden)]
405            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
406            #[cfg(test)]
407            #[allow(dead_code, unreachable_patterns)]
408            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
409                match _t {
410                    alloy_sol_types::private::AssertTypeEq::<
411                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
412                    >(_) => {}
413                }
414            }
415            #[automatically_derived]
416            #[doc(hidden)]
417            impl ::core::convert::From<contractsCall> for UnderlyingRustTuple<'_> {
418                fn from(value: contractsCall) -> Self {
419                    (value.0,)
420                }
421            }
422            #[automatically_derived]
423            #[doc(hidden)]
424            impl ::core::convert::From<UnderlyingRustTuple<'_>> for contractsCall {
425                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
426                    Self(tuple.0)
427                }
428            }
429        }
430        {
431            #[doc(hidden)]
432            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
433            #[doc(hidden)]
434            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
435            #[cfg(test)]
436            #[allow(dead_code, unreachable_patterns)]
437            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
438                match _t {
439                    alloy_sol_types::private::AssertTypeEq::<
440                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
441                    >(_) => {}
442                }
443            }
444            #[automatically_derived]
445            #[doc(hidden)]
446            impl ::core::convert::From<contractsReturn> for UnderlyingRustTuple<'_> {
447                fn from(value: contractsReturn) -> Self {
448                    (value._0,)
449                }
450            }
451            #[automatically_derived]
452            #[doc(hidden)]
453            impl ::core::convert::From<UnderlyingRustTuple<'_>> for contractsReturn {
454                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
455                    Self { _0: tuple.0 }
456                }
457            }
458        }
459        #[automatically_derived]
460        impl alloy_sol_types::SolCall for contractsCall {
461            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
462            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
463            type Return = alloy::sol_types::private::Address;
464            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
465            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
466            const SIGNATURE: &'static str = "contracts(string)";
467            const SELECTOR: [u8; 4] = [140u8, 91u8, 131u8, 133u8];
468            #[inline]
469            fn new<'a>(
470                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
471            ) -> Self {
472                tuple.into()
473            }
474            #[inline]
475            fn tokenize(&self) -> Self::Token<'_> {
476                (
477                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
478                        &self.0,
479                    ),
480                )
481            }
482            #[inline]
483            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
484                (
485                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
486                        ret,
487                    ),
488                )
489            }
490            #[inline]
491            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
492                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
493                    |r| {
494                        let r: contractsReturn = r.into();
495                        r._0
496                    },
497                )
498            }
499            #[inline]
500            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
501                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
502                    data,
503                )
504                .map(|r| {
505                    let r: contractsReturn = r.into();
506                    r._0
507                })
508            }
509        }
510    };
511    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
512    /**Function with signature `registerContract(string,address)` and selector `0x7f3c2c28`.
513    ```solidity
514    function registerContract(string memory name, address _contract) external;
515    ```*/
516    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
517    #[derive(Clone)]
518    pub struct registerContractCall {
519        #[allow(missing_docs)]
520        pub name: alloy::sol_types::private::String,
521        #[allow(missing_docs)]
522        pub _contract: alloy::sol_types::private::Address,
523    }
524    ///Container type for the return parameters of the [`registerContract(string,address)`](registerContractCall) function.
525    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
526    #[derive(Clone)]
527    pub struct registerContractReturn {}
528    #[allow(
529        non_camel_case_types,
530        non_snake_case,
531        clippy::pub_underscore_fields,
532        clippy::style
533    )]
534    const _: () = {
535        use alloy::sol_types as alloy_sol_types;
536        {
537            #[doc(hidden)]
538            type UnderlyingSolTuple<'a> = (
539                alloy::sol_types::sol_data::String,
540                alloy::sol_types::sol_data::Address,
541            );
542            #[doc(hidden)]
543            type UnderlyingRustTuple<'a> = (
544                alloy::sol_types::private::String,
545                alloy::sol_types::private::Address,
546            );
547            #[cfg(test)]
548            #[allow(dead_code, unreachable_patterns)]
549            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
550                match _t {
551                    alloy_sol_types::private::AssertTypeEq::<
552                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
553                    >(_) => {}
554                }
555            }
556            #[automatically_derived]
557            #[doc(hidden)]
558            impl ::core::convert::From<registerContractCall> for UnderlyingRustTuple<'_> {
559                fn from(value: registerContractCall) -> Self {
560                    (value.name, value._contract)
561                }
562            }
563            #[automatically_derived]
564            #[doc(hidden)]
565            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerContractCall {
566                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
567                    Self {
568                        name: tuple.0,
569                        _contract: tuple.1,
570                    }
571                }
572            }
573        }
574        {
575            #[doc(hidden)]
576            type UnderlyingSolTuple<'a> = ();
577            #[doc(hidden)]
578            type UnderlyingRustTuple<'a> = ();
579            #[cfg(test)]
580            #[allow(dead_code, unreachable_patterns)]
581            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
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<registerContractReturn> for UnderlyingRustTuple<'_> {
591                fn from(value: registerContractReturn) -> Self {
592                    ()
593                }
594            }
595            #[automatically_derived]
596            #[doc(hidden)]
597            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerContractReturn {
598                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
599                    Self {}
600                }
601            }
602        }
603        impl registerContractReturn {
604            fn _tokenize(
605                &self,
606            ) -> <registerContractCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
607                ()
608            }
609        }
610        #[automatically_derived]
611        impl alloy_sol_types::SolCall for registerContractCall {
612            type Parameters<'a> = (
613                alloy::sol_types::sol_data::String,
614                alloy::sol_types::sol_data::Address,
615            );
616            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
617            type Return = registerContractReturn;
618            type ReturnTuple<'a> = ();
619            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
620            const SIGNATURE: &'static str = "registerContract(string,address)";
621            const SELECTOR: [u8; 4] = [127u8, 60u8, 44u8, 40u8];
622            #[inline]
623            fn new<'a>(
624                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
625            ) -> Self {
626                tuple.into()
627            }
628            #[inline]
629            fn tokenize(&self) -> Self::Token<'_> {
630                (
631                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
632                        &self.name,
633                    ),
634                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
635                        &self._contract,
636                    ),
637                )
638            }
639            #[inline]
640            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
641                registerContractReturn::_tokenize(ret)
642            }
643            #[inline]
644            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
645                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
646                    .map(Into::into)
647            }
648            #[inline]
649            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
650                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
651                    data,
652                )
653                .map(Into::into)
654            }
655        }
656    };
657    ///Container for all the [`ContractsRegistry`](self) function calls.
658    #[derive(serde::Serialize, serde::Deserialize)]
659    pub enum ContractsRegistryCalls {
660        #[allow(missing_docs)]
661        contractCount(contractCountCall),
662        #[allow(missing_docs)]
663        contractNames(contractNamesCall),
664        #[allow(missing_docs)]
665        contracts(contractsCall),
666        #[allow(missing_docs)]
667        registerContract(registerContractCall),
668    }
669    #[automatically_derived]
670    impl ContractsRegistryCalls {
671        /// All the selectors of this enum.
672        ///
673        /// Note that the selectors might not be in the same order as the variants.
674        /// No guarantees are made about the order of the selectors.
675        ///
676        /// Prefer using `SolInterface` methods instead.
677        pub const SELECTORS: &'static [[u8; 4usize]] = &[
678            [60u8, 166u8, 187u8, 146u8],
679            [127u8, 60u8, 44u8, 40u8],
680            [135u8, 54u8, 56u8, 26u8],
681            [140u8, 91u8, 131u8, 133u8],
682        ];
683    }
684    #[automatically_derived]
685    impl alloy_sol_types::SolInterface for ContractsRegistryCalls {
686        const NAME: &'static str = "ContractsRegistryCalls";
687        const MIN_DATA_LENGTH: usize = 0usize;
688        const COUNT: usize = 4usize;
689        #[inline]
690        fn selector(&self) -> [u8; 4] {
691            match self {
692                Self::contractCount(_) => <contractCountCall as alloy_sol_types::SolCall>::SELECTOR,
693                Self::contractNames(_) => <contractNamesCall as alloy_sol_types::SolCall>::SELECTOR,
694                Self::contracts(_) => <contractsCall as alloy_sol_types::SolCall>::SELECTOR,
695                Self::registerContract(_) => {
696                    <registerContractCall as alloy_sol_types::SolCall>::SELECTOR
697                }
698            }
699        }
700        #[inline]
701        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
702            Self::SELECTORS.get(i).copied()
703        }
704        #[inline]
705        fn valid_selector(selector: [u8; 4]) -> bool {
706            Self::SELECTORS.binary_search(&selector).is_ok()
707        }
708        #[inline]
709        #[allow(non_snake_case)]
710        fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
711            static DECODE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<ContractsRegistryCalls>] =
712                &[
713                    {
714                        fn contractNames(
715                            data: &[u8],
716                        ) -> alloy_sol_types::Result<ContractsRegistryCalls>
717                        {
718                            <contractNamesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
719                                .map(ContractsRegistryCalls::contractNames)
720                        }
721                        contractNames
722                    },
723                    {
724                        fn registerContract(
725                            data: &[u8],
726                        ) -> alloy_sol_types::Result<ContractsRegistryCalls>
727                        {
728                            <registerContractCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
729                                .map(ContractsRegistryCalls::registerContract)
730                        }
731                        registerContract
732                    },
733                    {
734                        fn contractCount(
735                            data: &[u8],
736                        ) -> alloy_sol_types::Result<ContractsRegistryCalls>
737                        {
738                            <contractCountCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
739                                .map(ContractsRegistryCalls::contractCount)
740                        }
741                        contractCount
742                    },
743                    {
744                        fn contracts(
745                            data: &[u8],
746                        ) -> alloy_sol_types::Result<ContractsRegistryCalls>
747                        {
748                            <contractsCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
749                                .map(ContractsRegistryCalls::contracts)
750                        }
751                        contracts
752                    },
753                ];
754            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
755                return Err(alloy_sol_types::Error::unknown_selector(
756                    <Self as alloy_sol_types::SolInterface>::NAME,
757                    selector,
758                ));
759            };
760            DECODE_SHIMS[idx](data)
761        }
762        #[inline]
763        #[allow(non_snake_case)]
764        fn abi_decode_raw_validate(
765            selector: [u8; 4],
766            data: &[u8],
767        ) -> alloy_sol_types::Result<Self> {
768            static DECODE_VALIDATE_SHIMS: &[fn(
769                &[u8],
770            ) -> alloy_sol_types::Result<
771                ContractsRegistryCalls,
772            >] = &[
773                {
774                    fn contractNames(
775                        data: &[u8],
776                    ) -> alloy_sol_types::Result<ContractsRegistryCalls> {
777                        <contractNamesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
778                            data,
779                        )
780                        .map(ContractsRegistryCalls::contractNames)
781                    }
782                    contractNames
783                },
784                {
785                    fn registerContract(
786                        data: &[u8],
787                    ) -> alloy_sol_types::Result<ContractsRegistryCalls> {
788                        <registerContractCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
789                            data,
790                        )
791                        .map(ContractsRegistryCalls::registerContract)
792                    }
793                    registerContract
794                },
795                {
796                    fn contractCount(
797                        data: &[u8],
798                    ) -> alloy_sol_types::Result<ContractsRegistryCalls> {
799                        <contractCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
800                            data,
801                        )
802                        .map(ContractsRegistryCalls::contractCount)
803                    }
804                    contractCount
805                },
806                {
807                    fn contracts(data: &[u8]) -> alloy_sol_types::Result<ContractsRegistryCalls> {
808                        <contractsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
809                            .map(ContractsRegistryCalls::contracts)
810                    }
811                    contracts
812                },
813            ];
814            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
815                return Err(alloy_sol_types::Error::unknown_selector(
816                    <Self as alloy_sol_types::SolInterface>::NAME,
817                    selector,
818                ));
819            };
820            DECODE_VALIDATE_SHIMS[idx](data)
821        }
822        #[inline]
823        fn abi_encoded_size(&self) -> usize {
824            match self {
825                Self::contractCount(inner) => {
826                    <contractCountCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
827                }
828                Self::contractNames(inner) => {
829                    <contractNamesCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
830                }
831                Self::contracts(inner) => {
832                    <contractsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
833                }
834                Self::registerContract(inner) => {
835                    <registerContractCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
836                }
837            }
838        }
839        #[inline]
840        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
841            match self {
842                Self::contractCount(inner) => {
843                    <contractCountCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
844                }
845                Self::contractNames(inner) => {
846                    <contractNamesCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
847                }
848                Self::contracts(inner) => {
849                    <contractsCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
850                }
851                Self::registerContract(inner) => {
852                    <registerContractCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
853                }
854            }
855        }
856    }
857    use alloy::contract as alloy_contract;
858    /**Creates a new wrapper around an on-chain [`ContractsRegistry`](self) contract instance.
859
860    See the [wrapper's documentation](`ContractsRegistryInstance`) for more details.*/
861    #[inline]
862    pub const fn new<
863        P: alloy_contract::private::Provider<N>,
864        N: alloy_contract::private::Network,
865    >(
866        address: alloy_sol_types::private::Address,
867        provider: P,
868    ) -> ContractsRegistryInstance<P, N> {
869        ContractsRegistryInstance::<P, N>::new(address, provider)
870    }
871    /**Deploys this contract using the given `provider` and constructor arguments, if any.
872
873    Returns a new instance of the contract, if the deployment was successful.
874
875    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
876    #[inline]
877    pub fn deploy<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>(
878        provider: P,
879    ) -> impl ::core::future::Future<Output = alloy_contract::Result<ContractsRegistryInstance<P, N>>>
880    {
881        ContractsRegistryInstance::<P, N>::deploy(provider)
882    }
883    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
884    and constructor arguments, if any.
885
886    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
887    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
888    #[inline]
889    pub fn deploy_builder<
890        P: alloy_contract::private::Provider<N>,
891        N: alloy_contract::private::Network,
892    >(
893        provider: P,
894    ) -> alloy_contract::RawCallBuilder<P, N> {
895        ContractsRegistryInstance::<P, N>::deploy_builder(provider)
896    }
897    /**A [`ContractsRegistry`](self) instance.
898
899    Contains type-safe methods for interacting with an on-chain instance of the
900    [`ContractsRegistry`](self) contract located at a given `address`, using a given
901    provider `P`.
902
903    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
904    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
905    be used to deploy a new instance of the contract.
906
907    See the [module-level documentation](self) for all the available methods.*/
908    #[derive(Clone)]
909    pub struct ContractsRegistryInstance<P, N = alloy_contract::private::Ethereum> {
910        address: alloy_sol_types::private::Address,
911        provider: P,
912        _network: ::core::marker::PhantomData<N>,
913    }
914    #[automatically_derived]
915    impl<P, N> ::core::fmt::Debug for ContractsRegistryInstance<P, N> {
916        #[inline]
917        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
918            f.debug_tuple("ContractsRegistryInstance")
919                .field(&self.address)
920                .finish()
921        }
922    }
923    /// Instantiation and getters/setters.
924    #[automatically_derived]
925    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
926        ContractsRegistryInstance<P, N>
927    {
928        /**Creates a new wrapper around an on-chain [`ContractsRegistry`](self) contract instance.
929
930        See the [wrapper's documentation](`ContractsRegistryInstance`) for more details.*/
931        #[inline]
932        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
933            Self {
934                address,
935                provider,
936                _network: ::core::marker::PhantomData,
937            }
938        }
939        /**Deploys this contract using the given `provider` and constructor arguments, if any.
940
941        Returns a new instance of the contract, if the deployment was successful.
942
943        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
944        #[inline]
945        pub async fn deploy(
946            provider: P,
947        ) -> alloy_contract::Result<ContractsRegistryInstance<P, N>> {
948            let call_builder = Self::deploy_builder(provider);
949            let contract_address = call_builder.deploy().await?;
950            Ok(Self::new(contract_address, call_builder.provider))
951        }
952        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
953        and constructor arguments, if any.
954
955        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
956        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
957        #[inline]
958        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
959            alloy_contract::RawCallBuilder::new_raw_deploy(
960                provider,
961                ::core::clone::Clone::clone(&BYTECODE),
962            )
963        }
964        /// Returns a reference to the address.
965        #[inline]
966        pub const fn address(&self) -> &alloy_sol_types::private::Address {
967            &self.address
968        }
969        /// Sets the address.
970        #[inline]
971        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
972            self.address = address;
973        }
974        /// Sets the address and returns `self`.
975        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
976            self.set_address(address);
977            self
978        }
979        /// Returns a reference to the provider.
980        #[inline]
981        pub const fn provider(&self) -> &P {
982            &self.provider
983        }
984    }
985    impl<P: ::core::clone::Clone, N> ContractsRegistryInstance<&P, N> {
986        /// Clones the provider and returns a new instance with the cloned provider.
987        #[inline]
988        pub fn with_cloned_provider(self) -> ContractsRegistryInstance<P, N> {
989            ContractsRegistryInstance {
990                address: self.address,
991                provider: ::core::clone::Clone::clone(&self.provider),
992                _network: ::core::marker::PhantomData,
993            }
994        }
995    }
996    /// Function calls.
997    #[automatically_derived]
998    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
999        ContractsRegistryInstance<P, N>
1000    {
1001        /// Creates a new call builder using this contract instance's provider and address.
1002        ///
1003        /// Note that the call can be any function call, not just those defined in this
1004        /// contract. Prefer using the other methods for building type-safe contract calls.
1005        pub fn call_builder<C: alloy_sol_types::SolCall>(
1006            &self,
1007            call: &C,
1008        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1009            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1010        }
1011        ///Creates a new call builder for the [`contractCount`] function.
1012        pub fn contractCount(&self) -> alloy_contract::SolCallBuilder<&P, contractCountCall, N> {
1013            self.call_builder(&contractCountCall)
1014        }
1015        ///Creates a new call builder for the [`contractNames`] function.
1016        pub fn contractNames(
1017            &self,
1018            _0: alloy::sol_types::private::primitives::aliases::U256,
1019        ) -> alloy_contract::SolCallBuilder<&P, contractNamesCall, N> {
1020            self.call_builder(&contractNamesCall(_0))
1021        }
1022        ///Creates a new call builder for the [`contracts`] function.
1023        pub fn contracts(
1024            &self,
1025            _0: alloy::sol_types::private::String,
1026        ) -> alloy_contract::SolCallBuilder<&P, contractsCall, N> {
1027            self.call_builder(&contractsCall(_0))
1028        }
1029        ///Creates a new call builder for the [`registerContract`] function.
1030        pub fn registerContract(
1031            &self,
1032            name: alloy::sol_types::private::String,
1033            _contract: alloy::sol_types::private::Address,
1034        ) -> alloy_contract::SolCallBuilder<&P, registerContractCall, N> {
1035            self.call_builder(&registerContractCall { name, _contract })
1036        }
1037    }
1038    /// Event filters.
1039    #[automatically_derived]
1040    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
1041        ContractsRegistryInstance<P, N>
1042    {
1043        /// Creates a new event filter using this contract instance's provider and address.
1044        ///
1045        /// Note that the type can be any event, not just those defined in this contract.
1046        /// Prefer using the other methods for building type-safe event filters.
1047        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1048            &self,
1049        ) -> alloy_contract::Event<&P, E, N> {
1050            alloy_contract::Event::new_sol(&self.provider, &self.address)
1051        }
1052    }
1053}