pod_examples_solidity/
ranked_feed.rs

1/**
2
3Generated by the following Solidity interface...
4```solidity
5interface RankedFeed {
6    error AlreadyVoted();
7
8    event PostCreated(bytes32 indexed post_id, address indexed poster, bytes post_data);
9    event PostVoted(bytes32 indexed post_id, address indexed voter);
10
11    function createPost(bytes memory post_data) external;
12    function votePost(bytes32 post_id) external;
13}
14```
15
16...which was generated by the following JSON ABI:
17```json
18[
19  {
20    "type": "function",
21    "name": "createPost",
22    "inputs": [
23      {
24        "name": "post_data",
25        "type": "bytes",
26        "internalType": "bytes"
27      }
28    ],
29    "outputs": [],
30    "stateMutability": "nonpayable"
31  },
32  {
33    "type": "function",
34    "name": "votePost",
35    "inputs": [
36      {
37        "name": "post_id",
38        "type": "bytes32",
39        "internalType": "bytes32"
40      }
41    ],
42    "outputs": [],
43    "stateMutability": "nonpayable"
44  },
45  {
46    "type": "event",
47    "name": "PostCreated",
48    "inputs": [
49      {
50        "name": "post_id",
51        "type": "bytes32",
52        "indexed": true,
53        "internalType": "bytes32"
54      },
55      {
56        "name": "poster",
57        "type": "address",
58        "indexed": true,
59        "internalType": "address"
60      },
61      {
62        "name": "post_data",
63        "type": "bytes",
64        "indexed": false,
65        "internalType": "bytes"
66      }
67    ],
68    "anonymous": false
69  },
70  {
71    "type": "event",
72    "name": "PostVoted",
73    "inputs": [
74      {
75        "name": "post_id",
76        "type": "bytes32",
77        "indexed": true,
78        "internalType": "bytes32"
79      },
80      {
81        "name": "voter",
82        "type": "address",
83        "indexed": true,
84        "internalType": "address"
85      }
86    ],
87    "anonymous": false
88  },
89  {
90    "type": "error",
91    "name": "AlreadyVoted",
92    "inputs": []
93  }
94]
95```*/
96#[allow(
97    non_camel_case_types,
98    non_snake_case,
99    clippy::pub_underscore_fields,
100    clippy::style,
101    clippy::empty_structs_with_brackets
102)]
103pub mod RankedFeed {
104    use super::*;
105    use alloy::sol_types as alloy_sol_types;
106    /// The creation / init bytecode of the contract.
107    ///
108    /// ```text
109    ///0x6080604052348015600e575f5ffd5b5061074d8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c8063a1981bf114610038578063dfbaa2fb14610054575b5f5ffd5b610052600480360381019061004d9190610427565b610070565b005b61006e600480360381019061006991906104b3565b610133565b005b5f610087823360016102339092919063ffffffff16565b146100be576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d681336001806102f9909392919063ffffffff16565b6100ec8160015f6103bf9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff16817f98b6b180756c849b5bfbbd2bbd091f3fe64b0935ac195418c0b619b9b661c78d60405160405180910390a350565b5f338383604051602001610149939291906105af565b6040516020818303038152906040528051906020012090505f610178823360016102339092919063ffffffff16565b146101af576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101c781336001806102f9909392919063ffffffff16565b6101dd8160015f6103bf9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff16817fed6e6fdf99cd5e97145c7e59ade93923be1979557a77e639ed95a203c7a8e8618585604051610226929190610624565b60405180910390a3505050565b5f3273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146102a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610299906106c6565b60405180910390fd5b835f015f8481526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490509392505050565b3273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e906106c6565b60405180910390fd5b80845f015f8581526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050505050565b80835f015f8481526020019081526020015f205f8282546103e0919061071a565b92505081905550505050565b5f5ffd5b5f5ffd5b5f819050919050565b610406816103f4565b8114610410575f5ffd5b50565b5f81359050610421816103fd565b92915050565b5f6020828403121561043c5761043b6103ec565b5b5f61044984828501610413565b91505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261047357610472610452565b5b8235905067ffffffffffffffff8111156104905761048f610456565b5b6020830191508360018202830111156104ac576104ab61045a565b5b9250929050565b5f5f602083850312156104c9576104c86103ec565b5b5f83013567ffffffffffffffff8111156104e6576104e56103f0565b5b6104f28582860161045e565b92509250509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610527826104fe565b9050919050565b5f8160601b9050919050565b5f6105448261052e565b9050919050565b5f6105558261053a565b9050919050565b61056d6105688261051d565b61054b565b82525050565b5f81905092915050565b828183375f83830152505050565b5f6105968385610573565b93506105a383858461057d565b82840190509392505050565b5f6105ba828661055c565b6014820191506105cb82848661058b565b9150819050949350505050565b5f82825260208201905092915050565b5f601f19601f8301169050919050565b5f61060383856105d8565b935061061083858461057d565b610619836105e8565b840190509392505050565b5f6020820190508181035f83015261063d8184866105f8565b90509392505050565b5f82825260208201905092915050565b7f43616e6e6f7420616363657373204f776e6564436f756e746572206f776e65645f8201527f20627920616e6f74686572206164647265737300000000000000000000000000602082015250565b5f6106b0603383610646565b91506106bb82610656565b604082019050919050565b5f6020820190508181035f8301526106dd816106a4565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610724826106e4565b915061072f836106e4565b9250828201905080821115610747576107466106ed565b5b9291505056
110    /// ```
111    #[rustfmt::skip]
112    #[allow(clippy::all)]
113    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
114        b"`\x80`@R4\x80\x15`\x0EW__\xFD[Pa\x07M\x80a\0\x1C_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x004W_5`\xE0\x1C\x80c\xA1\x98\x1B\xF1\x14a\08W\x80c\xDF\xBA\xA2\xFB\x14a\0TW[__\xFD[a\0R`\x04\x806\x03\x81\x01\x90a\0M\x91\x90a\x04'V[a\0pV[\0[a\0n`\x04\x806\x03\x81\x01\x90a\0i\x91\x90a\x04\xB3V[a\x013V[\0[_a\0\x87\x823`\x01a\x023\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x14a\0\xBEW`@Q\x7F|\x9A\x1C\xF9\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\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\0\xD6\x813`\x01\x80a\x02\xF9\x90\x93\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[a\0\xEC\x81`\x01_a\x03\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81\x7F\x98\xB6\xB1\x80ul\x84\x9B[\xFB\xBD+\xBD\t\x1F?\xE6K\t5\xAC\x19T\x18\xC0\xB6\x19\xB9\xB6a\xC7\x8D`@Q`@Q\x80\x91\x03\x90\xA3PV[_3\x83\x83`@Q` \x01a\x01I\x93\x92\x91\x90a\x05\xAFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P_a\x01x\x823`\x01a\x023\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x14a\x01\xAFW`@Q\x7F|\x9A\x1C\xF9\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\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x01\xC7\x813`\x01\x80a\x02\xF9\x90\x93\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[a\x01\xDD\x81`\x01_a\x03\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81\x7F\xEDno\xDF\x99\xCD^\x97\x14\\~Y\xAD\xE99#\xBE\x19yUzw\xE69\xED\x95\xA2\x03\xC7\xA8\xE8a\x85\x85`@Qa\x02&\x92\x91\x90a\x06$V[`@Q\x80\x91\x03\x90\xA3PPPV[_2s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x02\xA2W`@Q\x7F\x08\xC3y\xA0\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\x81R`\x04\x01a\x02\x99\x90a\x06\xC6V[`@Q\x80\x91\x03\x90\xFD[\x83_\x01_\x84\x81R` \x01\x90\x81R` \x01_ _\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x90P\x93\x92PPPV[2s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x03gW`@Q\x7F\x08\xC3y\xA0\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\x81R`\x04\x01a\x03^\x90a\x06\xC6V[`@Q\x80\x91\x03\x90\xFD[\x80\x84_\x01_\x85\x81R` \x01\x90\x81R` \x01_ _\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ \x81\x90UPPPPPV[\x80\x83_\x01_\x84\x81R` \x01\x90\x81R` \x01_ _\x82\x82Ta\x03\xE0\x91\x90a\x07\x1AV[\x92PP\x81\x90UPPPPV[__\xFD[__\xFD[_\x81\x90P\x91\x90PV[a\x04\x06\x81a\x03\xF4V[\x81\x14a\x04\x10W__\xFD[PV[_\x815\x90Pa\x04!\x81a\x03\xFDV[\x92\x91PPV[_` \x82\x84\x03\x12\x15a\x04<Wa\x04;a\x03\xECV[[_a\x04I\x84\x82\x85\x01a\x04\x13V[\x91PP\x92\x91PPV[__\xFD[__\xFD[__\xFD[__\x83`\x1F\x84\x01\x12a\x04sWa\x04ra\x04RV[[\x825\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\x90Wa\x04\x8Fa\x04VV[[` \x83\x01\x91P\x83`\x01\x82\x02\x83\x01\x11\x15a\x04\xACWa\x04\xABa\x04ZV[[\x92P\x92\x90PV[__` \x83\x85\x03\x12\x15a\x04\xC9Wa\x04\xC8a\x03\xECV[[_\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE6Wa\x04\xE5a\x03\xF0V[[a\x04\xF2\x85\x82\x86\x01a\x04^V[\x92P\x92PP\x92P\x92\x90PV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x90P\x91\x90PV[_a\x05'\x82a\x04\xFEV[\x90P\x91\x90PV[_\x81``\x1B\x90P\x91\x90PV[_a\x05D\x82a\x05.V[\x90P\x91\x90PV[_a\x05U\x82a\x05:V[\x90P\x91\x90PV[a\x05ma\x05h\x82a\x05\x1DV[a\x05KV[\x82RPPV[_\x81\x90P\x92\x91PPV[\x82\x81\x837_\x83\x83\x01RPPPV[_a\x05\x96\x83\x85a\x05sV[\x93Pa\x05\xA3\x83\x85\x84a\x05}V[\x82\x84\x01\x90P\x93\x92PPPV[_a\x05\xBA\x82\x86a\x05\\V[`\x14\x82\x01\x91Pa\x05\xCB\x82\x84\x86a\x05\x8BV[\x91P\x81\x90P\x94\x93PPPPV[_\x82\x82R` \x82\x01\x90P\x92\x91PPV[_`\x1F\x19`\x1F\x83\x01\x16\x90P\x91\x90PV[_a\x06\x03\x83\x85a\x05\xD8V[\x93Pa\x06\x10\x83\x85\x84a\x05}V[a\x06\x19\x83a\x05\xE8V[\x84\x01\x90P\x93\x92PPPV[_` \x82\x01\x90P\x81\x81\x03_\x83\x01Ra\x06=\x81\x84\x86a\x05\xF8V[\x90P\x93\x92PPPV[_\x82\x82R` \x82\x01\x90P\x92\x91PPV[\x7FCannot access OwnedCounter owned_\x82\x01R\x7F by another address\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01RPV[_a\x06\xB0`3\x83a\x06FV[\x91Pa\x06\xBB\x82a\x06VV[`@\x82\x01\x90P\x91\x90PV[_` \x82\x01\x90P\x81\x81\x03_\x83\x01Ra\x06\xDD\x81a\x06\xA4V[\x90P\x91\x90PV[_\x81\x90P\x91\x90PV[\x7FNH{q\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_R`\x11`\x04R`$_\xFD[_a\x07$\x82a\x06\xE4V[\x91Pa\x07/\x83a\x06\xE4V[\x92P\x82\x82\x01\x90P\x80\x82\x11\x15a\x07GWa\x07Fa\x06\xEDV[[\x92\x91PPV",
115    );
116    /// The runtime bytecode of the contract, as deployed on the network.
117    ///
118    /// ```text
119    ///0x608060405234801561000f575f5ffd5b5060043610610034575f3560e01c8063a1981bf114610038578063dfbaa2fb14610054575b5f5ffd5b610052600480360381019061004d9190610427565b610070565b005b61006e600480360381019061006991906104b3565b610133565b005b5f610087823360016102339092919063ffffffff16565b146100be576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d681336001806102f9909392919063ffffffff16565b6100ec8160015f6103bf9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff16817f98b6b180756c849b5bfbbd2bbd091f3fe64b0935ac195418c0b619b9b661c78d60405160405180910390a350565b5f338383604051602001610149939291906105af565b6040516020818303038152906040528051906020012090505f610178823360016102339092919063ffffffff16565b146101af576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101c781336001806102f9909392919063ffffffff16565b6101dd8160015f6103bf9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff16817fed6e6fdf99cd5e97145c7e59ade93923be1979557a77e639ed95a203c7a8e8618585604051610226929190610624565b60405180910390a3505050565b5f3273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146102a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610299906106c6565b60405180910390fd5b835f015f8481526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490509392505050565b3273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e906106c6565b60405180910390fd5b80845f015f8581526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050505050565b80835f015f8481526020019081526020015f205f8282546103e0919061071a565b92505081905550505050565b5f5ffd5b5f5ffd5b5f819050919050565b610406816103f4565b8114610410575f5ffd5b50565b5f81359050610421816103fd565b92915050565b5f6020828403121561043c5761043b6103ec565b5b5f61044984828501610413565b91505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261047357610472610452565b5b8235905067ffffffffffffffff8111156104905761048f610456565b5b6020830191508360018202830111156104ac576104ab61045a565b5b9250929050565b5f5f602083850312156104c9576104c86103ec565b5b5f83013567ffffffffffffffff8111156104e6576104e56103f0565b5b6104f28582860161045e565b92509250509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610527826104fe565b9050919050565b5f8160601b9050919050565b5f6105448261052e565b9050919050565b5f6105558261053a565b9050919050565b61056d6105688261051d565b61054b565b82525050565b5f81905092915050565b828183375f83830152505050565b5f6105968385610573565b93506105a383858461057d565b82840190509392505050565b5f6105ba828661055c565b6014820191506105cb82848661058b565b9150819050949350505050565b5f82825260208201905092915050565b5f601f19601f8301169050919050565b5f61060383856105d8565b935061061083858461057d565b610619836105e8565b840190509392505050565b5f6020820190508181035f83015261063d8184866105f8565b90509392505050565b5f82825260208201905092915050565b7f43616e6e6f7420616363657373204f776e6564436f756e746572206f776e65645f8201527f20627920616e6f74686572206164647265737300000000000000000000000000602082015250565b5f6106b0603383610646565b91506106bb82610656565b604082019050919050565b5f6020820190508181035f8301526106dd816106a4565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610724826106e4565b915061072f836106e4565b9250828201905080821115610747576107466106ed565b5b9291505056
120    /// ```
121    #[rustfmt::skip]
122    #[allow(clippy::all)]
123    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
124        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x004W_5`\xE0\x1C\x80c\xA1\x98\x1B\xF1\x14a\08W\x80c\xDF\xBA\xA2\xFB\x14a\0TW[__\xFD[a\0R`\x04\x806\x03\x81\x01\x90a\0M\x91\x90a\x04'V[a\0pV[\0[a\0n`\x04\x806\x03\x81\x01\x90a\0i\x91\x90a\x04\xB3V[a\x013V[\0[_a\0\x87\x823`\x01a\x023\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x14a\0\xBEW`@Q\x7F|\x9A\x1C\xF9\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\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\0\xD6\x813`\x01\x80a\x02\xF9\x90\x93\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[a\0\xEC\x81`\x01_a\x03\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81\x7F\x98\xB6\xB1\x80ul\x84\x9B[\xFB\xBD+\xBD\t\x1F?\xE6K\t5\xAC\x19T\x18\xC0\xB6\x19\xB9\xB6a\xC7\x8D`@Q`@Q\x80\x91\x03\x90\xA3PV[_3\x83\x83`@Q` \x01a\x01I\x93\x92\x91\x90a\x05\xAFV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P_a\x01x\x823`\x01a\x023\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x14a\x01\xAFW`@Q\x7F|\x9A\x1C\xF9\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\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x01\xC7\x813`\x01\x80a\x02\xF9\x90\x93\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[a\x01\xDD\x81`\x01_a\x03\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81\x7F\xEDno\xDF\x99\xCD^\x97\x14\\~Y\xAD\xE99#\xBE\x19yUzw\xE69\xED\x95\xA2\x03\xC7\xA8\xE8a\x85\x85`@Qa\x02&\x92\x91\x90a\x06$V[`@Q\x80\x91\x03\x90\xA3PPPV[_2s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x02\xA2W`@Q\x7F\x08\xC3y\xA0\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\x81R`\x04\x01a\x02\x99\x90a\x06\xC6V[`@Q\x80\x91\x03\x90\xFD[\x83_\x01_\x84\x81R` \x01\x90\x81R` \x01_ _\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x90P\x93\x92PPPV[2s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x03gW`@Q\x7F\x08\xC3y\xA0\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\x81R`\x04\x01a\x03^\x90a\x06\xC6V[`@Q\x80\x91\x03\x90\xFD[\x80\x84_\x01_\x85\x81R` \x01\x90\x81R` \x01_ _\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ \x81\x90UPPPPPV[\x80\x83_\x01_\x84\x81R` \x01\x90\x81R` \x01_ _\x82\x82Ta\x03\xE0\x91\x90a\x07\x1AV[\x92PP\x81\x90UPPPPV[__\xFD[__\xFD[_\x81\x90P\x91\x90PV[a\x04\x06\x81a\x03\xF4V[\x81\x14a\x04\x10W__\xFD[PV[_\x815\x90Pa\x04!\x81a\x03\xFDV[\x92\x91PPV[_` \x82\x84\x03\x12\x15a\x04<Wa\x04;a\x03\xECV[[_a\x04I\x84\x82\x85\x01a\x04\x13V[\x91PP\x92\x91PPV[__\xFD[__\xFD[__\xFD[__\x83`\x1F\x84\x01\x12a\x04sWa\x04ra\x04RV[[\x825\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\x90Wa\x04\x8Fa\x04VV[[` \x83\x01\x91P\x83`\x01\x82\x02\x83\x01\x11\x15a\x04\xACWa\x04\xABa\x04ZV[[\x92P\x92\x90PV[__` \x83\x85\x03\x12\x15a\x04\xC9Wa\x04\xC8a\x03\xECV[[_\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE6Wa\x04\xE5a\x03\xF0V[[a\x04\xF2\x85\x82\x86\x01a\x04^V[\x92P\x92PP\x92P\x92\x90PV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x90P\x91\x90PV[_a\x05'\x82a\x04\xFEV[\x90P\x91\x90PV[_\x81``\x1B\x90P\x91\x90PV[_a\x05D\x82a\x05.V[\x90P\x91\x90PV[_a\x05U\x82a\x05:V[\x90P\x91\x90PV[a\x05ma\x05h\x82a\x05\x1DV[a\x05KV[\x82RPPV[_\x81\x90P\x92\x91PPV[\x82\x81\x837_\x83\x83\x01RPPPV[_a\x05\x96\x83\x85a\x05sV[\x93Pa\x05\xA3\x83\x85\x84a\x05}V[\x82\x84\x01\x90P\x93\x92PPPV[_a\x05\xBA\x82\x86a\x05\\V[`\x14\x82\x01\x91Pa\x05\xCB\x82\x84\x86a\x05\x8BV[\x91P\x81\x90P\x94\x93PPPPV[_\x82\x82R` \x82\x01\x90P\x92\x91PPV[_`\x1F\x19`\x1F\x83\x01\x16\x90P\x91\x90PV[_a\x06\x03\x83\x85a\x05\xD8V[\x93Pa\x06\x10\x83\x85\x84a\x05}V[a\x06\x19\x83a\x05\xE8V[\x84\x01\x90P\x93\x92PPPV[_` \x82\x01\x90P\x81\x81\x03_\x83\x01Ra\x06=\x81\x84\x86a\x05\xF8V[\x90P\x93\x92PPPV[_\x82\x82R` \x82\x01\x90P\x92\x91PPV[\x7FCannot access OwnedCounter owned_\x82\x01R\x7F by another address\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01RPV[_a\x06\xB0`3\x83a\x06FV[\x91Pa\x06\xBB\x82a\x06VV[`@\x82\x01\x90P\x91\x90PV[_` \x82\x01\x90P\x81\x81\x03_\x83\x01Ra\x06\xDD\x81a\x06\xA4V[\x90P\x91\x90PV[_\x81\x90P\x91\x90PV[\x7FNH{q\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_R`\x11`\x04R`$_\xFD[_a\x07$\x82a\x06\xE4V[\x91Pa\x07/\x83a\x06\xE4V[\x92P\x82\x82\x01\x90P\x80\x82\x11\x15a\x07GWa\x07Fa\x06\xEDV[[\x92\x91PPV",
125    );
126    #[derive(serde::Serialize, serde::Deserialize)]
127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
128    /**Custom error with signature `AlreadyVoted()` and selector `0x7c9a1cf9`.
129```solidity
130error AlreadyVoted();
131```*/
132    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
133    #[derive(Clone)]
134    pub struct AlreadyVoted;
135    #[allow(
136        non_camel_case_types,
137        non_snake_case,
138        clippy::pub_underscore_fields,
139        clippy::style
140    )]
141    const _: () = {
142        use alloy::sol_types as alloy_sol_types;
143        #[doc(hidden)]
144        #[allow(dead_code)]
145        type UnderlyingSolTuple<'a> = ();
146        #[doc(hidden)]
147        type UnderlyingRustTuple<'a> = ();
148        #[cfg(test)]
149        #[allow(dead_code, unreachable_patterns)]
150        fn _type_assertion(
151            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
152        ) {
153            match _t {
154                alloy_sol_types::private::AssertTypeEq::<
155                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
156                >(_) => {}
157            }
158        }
159        #[automatically_derived]
160        #[doc(hidden)]
161        impl ::core::convert::From<AlreadyVoted> for UnderlyingRustTuple<'_> {
162            fn from(value: AlreadyVoted) -> Self {
163                ()
164            }
165        }
166        #[automatically_derived]
167        #[doc(hidden)]
168        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AlreadyVoted {
169            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
170                Self
171            }
172        }
173        #[automatically_derived]
174        impl alloy_sol_types::SolError for AlreadyVoted {
175            type Parameters<'a> = UnderlyingSolTuple<'a>;
176            type Token<'a> = <Self::Parameters<
177                'a,
178            > as alloy_sol_types::SolType>::Token<'a>;
179            const SIGNATURE: &'static str = "AlreadyVoted()";
180            const SELECTOR: [u8; 4] = [124u8, 154u8, 28u8, 249u8];
181            #[inline]
182            fn new<'a>(
183                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
184            ) -> Self {
185                tuple.into()
186            }
187            #[inline]
188            fn tokenize(&self) -> Self::Token<'_> {
189                ()
190            }
191            #[inline]
192            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
193                <Self::Parameters<
194                    '_,
195                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
196                    .map(Self::new)
197            }
198        }
199    };
200    #[derive(serde::Serialize, serde::Deserialize)]
201    #[derive(Default, Debug, PartialEq, Eq, Hash)]
202    /**Event with signature `PostCreated(bytes32,address,bytes)` and selector `0xed6e6fdf99cd5e97145c7e59ade93923be1979557a77e639ed95a203c7a8e861`.
203```solidity
204event PostCreated(bytes32 indexed post_id, address indexed poster, bytes post_data);
205```*/
206    #[allow(
207        non_camel_case_types,
208        non_snake_case,
209        clippy::pub_underscore_fields,
210        clippy::style
211    )]
212    #[derive(Clone)]
213    pub struct PostCreated {
214        #[allow(missing_docs)]
215        pub post_id: alloy::sol_types::private::FixedBytes<32>,
216        #[allow(missing_docs)]
217        pub poster: alloy::sol_types::private::Address,
218        #[allow(missing_docs)]
219        pub post_data: alloy::sol_types::private::Bytes,
220    }
221    #[allow(
222        non_camel_case_types,
223        non_snake_case,
224        clippy::pub_underscore_fields,
225        clippy::style
226    )]
227    const _: () = {
228        use alloy::sol_types as alloy_sol_types;
229        #[automatically_derived]
230        impl alloy_sol_types::SolEvent for PostCreated {
231            type DataTuple<'a> = (alloy::sol_types::sol_data::Bytes,);
232            type DataToken<'a> = <Self::DataTuple<
233                'a,
234            > as alloy_sol_types::SolType>::Token<'a>;
235            type TopicList = (
236                alloy_sol_types::sol_data::FixedBytes<32>,
237                alloy::sol_types::sol_data::FixedBytes<32>,
238                alloy::sol_types::sol_data::Address,
239            );
240            const SIGNATURE: &'static str = "PostCreated(bytes32,address,bytes)";
241            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
242                237u8, 110u8, 111u8, 223u8, 153u8, 205u8, 94u8, 151u8, 20u8, 92u8, 126u8,
243                89u8, 173u8, 233u8, 57u8, 35u8, 190u8, 25u8, 121u8, 85u8, 122u8, 119u8,
244                230u8, 57u8, 237u8, 149u8, 162u8, 3u8, 199u8, 168u8, 232u8, 97u8,
245            ]);
246            const ANONYMOUS: bool = false;
247            #[allow(unused_variables)]
248            #[inline]
249            fn new(
250                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
251                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
252            ) -> Self {
253                Self {
254                    post_id: topics.1,
255                    poster: topics.2,
256                    post_data: data.0,
257                }
258            }
259            #[inline]
260            fn check_signature(
261                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
262            ) -> alloy_sol_types::Result<()> {
263                if topics.0 != Self::SIGNATURE_HASH {
264                    return Err(
265                        alloy_sol_types::Error::invalid_event_signature_hash(
266                            Self::SIGNATURE,
267                            topics.0,
268                            Self::SIGNATURE_HASH,
269                        ),
270                    );
271                }
272                Ok(())
273            }
274            #[inline]
275            fn tokenize_body(&self) -> Self::DataToken<'_> {
276                (
277                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
278                        &self.post_data,
279                    ),
280                )
281            }
282            #[inline]
283            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
284                (Self::SIGNATURE_HASH.into(), self.post_id.clone(), self.poster.clone())
285            }
286            #[inline]
287            fn encode_topics_raw(
288                &self,
289                out: &mut [alloy_sol_types::abi::token::WordToken],
290            ) -> alloy_sol_types::Result<()> {
291                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
292                    return Err(alloy_sol_types::Error::Overrun);
293                }
294                out[0usize] = alloy_sol_types::abi::token::WordToken(
295                    Self::SIGNATURE_HASH,
296                );
297                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
298                    32,
299                > as alloy_sol_types::EventTopic>::encode_topic(&self.post_id);
300                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
301                    &self.poster,
302                );
303                Ok(())
304            }
305        }
306        #[automatically_derived]
307        impl alloy_sol_types::private::IntoLogData for PostCreated {
308            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
309                From::from(self)
310            }
311            fn into_log_data(self) -> alloy_sol_types::private::LogData {
312                From::from(&self)
313            }
314        }
315        #[automatically_derived]
316        impl From<&PostCreated> for alloy_sol_types::private::LogData {
317            #[inline]
318            fn from(this: &PostCreated) -> alloy_sol_types::private::LogData {
319                alloy_sol_types::SolEvent::encode_log_data(this)
320            }
321        }
322    };
323    #[derive(serde::Serialize, serde::Deserialize)]
324    #[derive(Default, Debug, PartialEq, Eq, Hash)]
325    /**Event with signature `PostVoted(bytes32,address)` and selector `0x98b6b180756c849b5bfbbd2bbd091f3fe64b0935ac195418c0b619b9b661c78d`.
326```solidity
327event PostVoted(bytes32 indexed post_id, address indexed voter);
328```*/
329    #[allow(
330        non_camel_case_types,
331        non_snake_case,
332        clippy::pub_underscore_fields,
333        clippy::style
334    )]
335    #[derive(Clone)]
336    pub struct PostVoted {
337        #[allow(missing_docs)]
338        pub post_id: alloy::sol_types::private::FixedBytes<32>,
339        #[allow(missing_docs)]
340        pub voter: alloy::sol_types::private::Address,
341    }
342    #[allow(
343        non_camel_case_types,
344        non_snake_case,
345        clippy::pub_underscore_fields,
346        clippy::style
347    )]
348    const _: () = {
349        use alloy::sol_types as alloy_sol_types;
350        #[automatically_derived]
351        impl alloy_sol_types::SolEvent for PostVoted {
352            type DataTuple<'a> = ();
353            type DataToken<'a> = <Self::DataTuple<
354                'a,
355            > as alloy_sol_types::SolType>::Token<'a>;
356            type TopicList = (
357                alloy_sol_types::sol_data::FixedBytes<32>,
358                alloy::sol_types::sol_data::FixedBytes<32>,
359                alloy::sol_types::sol_data::Address,
360            );
361            const SIGNATURE: &'static str = "PostVoted(bytes32,address)";
362            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
363                152u8, 182u8, 177u8, 128u8, 117u8, 108u8, 132u8, 155u8, 91u8, 251u8,
364                189u8, 43u8, 189u8, 9u8, 31u8, 63u8, 230u8, 75u8, 9u8, 53u8, 172u8, 25u8,
365                84u8, 24u8, 192u8, 182u8, 25u8, 185u8, 182u8, 97u8, 199u8, 141u8,
366            ]);
367            const ANONYMOUS: bool = false;
368            #[allow(unused_variables)]
369            #[inline]
370            fn new(
371                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
372                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
373            ) -> Self {
374                Self {
375                    post_id: topics.1,
376                    voter: topics.2,
377                }
378            }
379            #[inline]
380            fn check_signature(
381                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
382            ) -> alloy_sol_types::Result<()> {
383                if topics.0 != Self::SIGNATURE_HASH {
384                    return Err(
385                        alloy_sol_types::Error::invalid_event_signature_hash(
386                            Self::SIGNATURE,
387                            topics.0,
388                            Self::SIGNATURE_HASH,
389                        ),
390                    );
391                }
392                Ok(())
393            }
394            #[inline]
395            fn tokenize_body(&self) -> Self::DataToken<'_> {
396                ()
397            }
398            #[inline]
399            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
400                (Self::SIGNATURE_HASH.into(), self.post_id.clone(), self.voter.clone())
401            }
402            #[inline]
403            fn encode_topics_raw(
404                &self,
405                out: &mut [alloy_sol_types::abi::token::WordToken],
406            ) -> alloy_sol_types::Result<()> {
407                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
408                    return Err(alloy_sol_types::Error::Overrun);
409                }
410                out[0usize] = alloy_sol_types::abi::token::WordToken(
411                    Self::SIGNATURE_HASH,
412                );
413                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
414                    32,
415                > as alloy_sol_types::EventTopic>::encode_topic(&self.post_id);
416                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
417                    &self.voter,
418                );
419                Ok(())
420            }
421        }
422        #[automatically_derived]
423        impl alloy_sol_types::private::IntoLogData for PostVoted {
424            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
425                From::from(self)
426            }
427            fn into_log_data(self) -> alloy_sol_types::private::LogData {
428                From::from(&self)
429            }
430        }
431        #[automatically_derived]
432        impl From<&PostVoted> for alloy_sol_types::private::LogData {
433            #[inline]
434            fn from(this: &PostVoted) -> alloy_sol_types::private::LogData {
435                alloy_sol_types::SolEvent::encode_log_data(this)
436            }
437        }
438    };
439    #[derive(serde::Serialize, serde::Deserialize)]
440    #[derive(Default, Debug, PartialEq, Eq, Hash)]
441    /**Function with signature `createPost(bytes)` and selector `0xdfbaa2fb`.
442```solidity
443function createPost(bytes memory post_data) external;
444```*/
445    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
446    #[derive(Clone)]
447    pub struct createPostCall {
448        #[allow(missing_docs)]
449        pub post_data: alloy::sol_types::private::Bytes,
450    }
451    ///Container type for the return parameters of the [`createPost(bytes)`](createPostCall) function.
452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
453    #[derive(Clone)]
454    pub struct createPostReturn {}
455    #[allow(
456        non_camel_case_types,
457        non_snake_case,
458        clippy::pub_underscore_fields,
459        clippy::style
460    )]
461    const _: () = {
462        use alloy::sol_types as alloy_sol_types;
463        {
464            #[doc(hidden)]
465            #[allow(dead_code)]
466            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,);
467            #[doc(hidden)]
468            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,);
469            #[cfg(test)]
470            #[allow(dead_code, unreachable_patterns)]
471            fn _type_assertion(
472                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
473            ) {
474                match _t {
475                    alloy_sol_types::private::AssertTypeEq::<
476                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
477                    >(_) => {}
478                }
479            }
480            #[automatically_derived]
481            #[doc(hidden)]
482            impl ::core::convert::From<createPostCall> for UnderlyingRustTuple<'_> {
483                fn from(value: createPostCall) -> Self {
484                    (value.post_data,)
485                }
486            }
487            #[automatically_derived]
488            #[doc(hidden)]
489            impl ::core::convert::From<UnderlyingRustTuple<'_>> for createPostCall {
490                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
491                    Self { post_data: tuple.0 }
492                }
493            }
494        }
495        {
496            #[doc(hidden)]
497            #[allow(dead_code)]
498            type UnderlyingSolTuple<'a> = ();
499            #[doc(hidden)]
500            type UnderlyingRustTuple<'a> = ();
501            #[cfg(test)]
502            #[allow(dead_code, unreachable_patterns)]
503            fn _type_assertion(
504                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
505            ) {
506                match _t {
507                    alloy_sol_types::private::AssertTypeEq::<
508                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
509                    >(_) => {}
510                }
511            }
512            #[automatically_derived]
513            #[doc(hidden)]
514            impl ::core::convert::From<createPostReturn> for UnderlyingRustTuple<'_> {
515                fn from(value: createPostReturn) -> Self {
516                    ()
517                }
518            }
519            #[automatically_derived]
520            #[doc(hidden)]
521            impl ::core::convert::From<UnderlyingRustTuple<'_>> for createPostReturn {
522                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
523                    Self {}
524                }
525            }
526        }
527        impl createPostReturn {
528            fn _tokenize(
529                &self,
530            ) -> <createPostCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
531                ()
532            }
533        }
534        #[automatically_derived]
535        impl alloy_sol_types::SolCall for createPostCall {
536            type Parameters<'a> = (alloy::sol_types::sol_data::Bytes,);
537            type Token<'a> = <Self::Parameters<
538                'a,
539            > as alloy_sol_types::SolType>::Token<'a>;
540            type Return = createPostReturn;
541            type ReturnTuple<'a> = ();
542            type ReturnToken<'a> = <Self::ReturnTuple<
543                'a,
544            > as alloy_sol_types::SolType>::Token<'a>;
545            const SIGNATURE: &'static str = "createPost(bytes)";
546            const SELECTOR: [u8; 4] = [223u8, 186u8, 162u8, 251u8];
547            #[inline]
548            fn new<'a>(
549                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
550            ) -> Self {
551                tuple.into()
552            }
553            #[inline]
554            fn tokenize(&self) -> Self::Token<'_> {
555                (
556                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
557                        &self.post_data,
558                    ),
559                )
560            }
561            #[inline]
562            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
563                createPostReturn::_tokenize(ret)
564            }
565            #[inline]
566            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
567                <Self::ReturnTuple<
568                    '_,
569                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
570                    .map(Into::into)
571            }
572            #[inline]
573            fn abi_decode_returns_validate(
574                data: &[u8],
575            ) -> alloy_sol_types::Result<Self::Return> {
576                <Self::ReturnTuple<
577                    '_,
578                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
579                    .map(Into::into)
580            }
581        }
582    };
583    #[derive(serde::Serialize, serde::Deserialize)]
584    #[derive(Default, Debug, PartialEq, Eq, Hash)]
585    /**Function with signature `votePost(bytes32)` and selector `0xa1981bf1`.
586```solidity
587function votePost(bytes32 post_id) external;
588```*/
589    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
590    #[derive(Clone)]
591    pub struct votePostCall {
592        #[allow(missing_docs)]
593        pub post_id: alloy::sol_types::private::FixedBytes<32>,
594    }
595    ///Container type for the return parameters of the [`votePost(bytes32)`](votePostCall) function.
596    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
597    #[derive(Clone)]
598    pub struct votePostReturn {}
599    #[allow(
600        non_camel_case_types,
601        non_snake_case,
602        clippy::pub_underscore_fields,
603        clippy::style
604    )]
605    const _: () = {
606        use alloy::sol_types as alloy_sol_types;
607        {
608            #[doc(hidden)]
609            #[allow(dead_code)]
610            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
611            #[doc(hidden)]
612            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
613            #[cfg(test)]
614            #[allow(dead_code, unreachable_patterns)]
615            fn _type_assertion(
616                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
617            ) {
618                match _t {
619                    alloy_sol_types::private::AssertTypeEq::<
620                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
621                    >(_) => {}
622                }
623            }
624            #[automatically_derived]
625            #[doc(hidden)]
626            impl ::core::convert::From<votePostCall> for UnderlyingRustTuple<'_> {
627                fn from(value: votePostCall) -> Self {
628                    (value.post_id,)
629                }
630            }
631            #[automatically_derived]
632            #[doc(hidden)]
633            impl ::core::convert::From<UnderlyingRustTuple<'_>> for votePostCall {
634                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
635                    Self { post_id: tuple.0 }
636                }
637            }
638        }
639        {
640            #[doc(hidden)]
641            #[allow(dead_code)]
642            type UnderlyingSolTuple<'a> = ();
643            #[doc(hidden)]
644            type UnderlyingRustTuple<'a> = ();
645            #[cfg(test)]
646            #[allow(dead_code, unreachable_patterns)]
647            fn _type_assertion(
648                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
649            ) {
650                match _t {
651                    alloy_sol_types::private::AssertTypeEq::<
652                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
653                    >(_) => {}
654                }
655            }
656            #[automatically_derived]
657            #[doc(hidden)]
658            impl ::core::convert::From<votePostReturn> for UnderlyingRustTuple<'_> {
659                fn from(value: votePostReturn) -> Self {
660                    ()
661                }
662            }
663            #[automatically_derived]
664            #[doc(hidden)]
665            impl ::core::convert::From<UnderlyingRustTuple<'_>> for votePostReturn {
666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
667                    Self {}
668                }
669            }
670        }
671        impl votePostReturn {
672            fn _tokenize(
673                &self,
674            ) -> <votePostCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
675                ()
676            }
677        }
678        #[automatically_derived]
679        impl alloy_sol_types::SolCall for votePostCall {
680            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
681            type Token<'a> = <Self::Parameters<
682                'a,
683            > as alloy_sol_types::SolType>::Token<'a>;
684            type Return = votePostReturn;
685            type ReturnTuple<'a> = ();
686            type ReturnToken<'a> = <Self::ReturnTuple<
687                'a,
688            > as alloy_sol_types::SolType>::Token<'a>;
689            const SIGNATURE: &'static str = "votePost(bytes32)";
690            const SELECTOR: [u8; 4] = [161u8, 152u8, 27u8, 241u8];
691            #[inline]
692            fn new<'a>(
693                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
694            ) -> Self {
695                tuple.into()
696            }
697            #[inline]
698            fn tokenize(&self) -> Self::Token<'_> {
699                (
700                    <alloy::sol_types::sol_data::FixedBytes<
701                        32,
702                    > as alloy_sol_types::SolType>::tokenize(&self.post_id),
703                )
704            }
705            #[inline]
706            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
707                votePostReturn::_tokenize(ret)
708            }
709            #[inline]
710            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
711                <Self::ReturnTuple<
712                    '_,
713                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
714                    .map(Into::into)
715            }
716            #[inline]
717            fn abi_decode_returns_validate(
718                data: &[u8],
719            ) -> alloy_sol_types::Result<Self::Return> {
720                <Self::ReturnTuple<
721                    '_,
722                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
723                    .map(Into::into)
724            }
725        }
726    };
727    ///Container for all the [`RankedFeed`](self) function calls.
728    #[derive(Clone)]
729    #[derive(serde::Serialize, serde::Deserialize)]
730    #[derive()]
731    pub enum RankedFeedCalls {
732        #[allow(missing_docs)]
733        createPost(createPostCall),
734        #[allow(missing_docs)]
735        votePost(votePostCall),
736    }
737    impl RankedFeedCalls {
738        /// All the selectors of this enum.
739        ///
740        /// Note that the selectors might not be in the same order as the variants.
741        /// No guarantees are made about the order of the selectors.
742        ///
743        /// Prefer using `SolInterface` methods instead.
744        pub const SELECTORS: &'static [[u8; 4usize]] = &[
745            [161u8, 152u8, 27u8, 241u8],
746            [223u8, 186u8, 162u8, 251u8],
747        ];
748        /// The names of the variants in the same order as `SELECTORS`.
749        pub const VARIANT_NAMES: &'static [&'static str] = &[
750            ::core::stringify!(votePost),
751            ::core::stringify!(createPost),
752        ];
753        /// The signatures in the same order as `SELECTORS`.
754        pub const SIGNATURES: &'static [&'static str] = &[
755            <votePostCall as alloy_sol_types::SolCall>::SIGNATURE,
756            <createPostCall as alloy_sol_types::SolCall>::SIGNATURE,
757        ];
758        /// Returns the signature for the given selector, if known.
759        #[inline]
760        pub fn signature_by_selector(
761            selector: [u8; 4usize],
762        ) -> ::core::option::Option<&'static str> {
763            match Self::SELECTORS.binary_search(&selector) {
764                ::core::result::Result::Ok(idx) => {
765                    ::core::option::Option::Some(Self::SIGNATURES[idx])
766                }
767                ::core::result::Result::Err(_) => ::core::option::Option::None,
768            }
769        }
770        /// Returns the enum variant name for the given selector, if known.
771        #[inline]
772        pub fn name_by_selector(
773            selector: [u8; 4usize],
774        ) -> ::core::option::Option<&'static str> {
775            let sig = Self::signature_by_selector(selector)?;
776            sig.split_once('(').map(|(name, _)| name)
777        }
778    }
779    #[automatically_derived]
780    impl alloy_sol_types::SolInterface for RankedFeedCalls {
781        const NAME: &'static str = "RankedFeedCalls";
782        const MIN_DATA_LENGTH: usize = 32usize;
783        const COUNT: usize = 2usize;
784        #[inline]
785        fn selector(&self) -> [u8; 4] {
786            match self {
787                Self::createPost(_) => {
788                    <createPostCall as alloy_sol_types::SolCall>::SELECTOR
789                }
790                Self::votePost(_) => <votePostCall as alloy_sol_types::SolCall>::SELECTOR,
791            }
792        }
793        #[inline]
794        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
795            Self::SELECTORS.get(i).copied()
796        }
797        #[inline]
798        fn valid_selector(selector: [u8; 4]) -> bool {
799            Self::SELECTORS.binary_search(&selector).is_ok()
800        }
801        #[inline]
802        #[allow(non_snake_case)]
803        fn abi_decode_raw(
804            selector: [u8; 4],
805            data: &[u8],
806        ) -> alloy_sol_types::Result<Self> {
807            static DECODE_SHIMS: &[fn(
808                &[u8],
809            ) -> alloy_sol_types::Result<RankedFeedCalls>] = &[
810                {
811                    fn votePost(
812                        data: &[u8],
813                    ) -> alloy_sol_types::Result<RankedFeedCalls> {
814                        <votePostCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
815                            .map(RankedFeedCalls::votePost)
816                    }
817                    votePost
818                },
819                {
820                    fn createPost(
821                        data: &[u8],
822                    ) -> alloy_sol_types::Result<RankedFeedCalls> {
823                        <createPostCall as alloy_sol_types::SolCall>::abi_decode_raw(
824                                data,
825                            )
826                            .map(RankedFeedCalls::createPost)
827                    }
828                    createPost
829                },
830            ];
831            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
832                return Err(
833                    alloy_sol_types::Error::unknown_selector(
834                        <Self as alloy_sol_types::SolInterface>::NAME,
835                        selector,
836                    ),
837                );
838            };
839            DECODE_SHIMS[idx](data)
840        }
841        #[inline]
842        #[allow(non_snake_case)]
843        fn abi_decode_raw_validate(
844            selector: [u8; 4],
845            data: &[u8],
846        ) -> alloy_sol_types::Result<Self> {
847            static DECODE_VALIDATE_SHIMS: &[fn(
848                &[u8],
849            ) -> alloy_sol_types::Result<RankedFeedCalls>] = &[
850                {
851                    fn votePost(
852                        data: &[u8],
853                    ) -> alloy_sol_types::Result<RankedFeedCalls> {
854                        <votePostCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
855                                data,
856                            )
857                            .map(RankedFeedCalls::votePost)
858                    }
859                    votePost
860                },
861                {
862                    fn createPost(
863                        data: &[u8],
864                    ) -> alloy_sol_types::Result<RankedFeedCalls> {
865                        <createPostCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
866                                data,
867                            )
868                            .map(RankedFeedCalls::createPost)
869                    }
870                    createPost
871                },
872            ];
873            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
874                return Err(
875                    alloy_sol_types::Error::unknown_selector(
876                        <Self as alloy_sol_types::SolInterface>::NAME,
877                        selector,
878                    ),
879                );
880            };
881            DECODE_VALIDATE_SHIMS[idx](data)
882        }
883        #[inline]
884        fn abi_encoded_size(&self) -> usize {
885            match self {
886                Self::createPost(inner) => {
887                    <createPostCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
888                }
889                Self::votePost(inner) => {
890                    <votePostCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
891                }
892            }
893        }
894        #[inline]
895        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
896            match self {
897                Self::createPost(inner) => {
898                    <createPostCall as alloy_sol_types::SolCall>::abi_encode_raw(
899                        inner,
900                        out,
901                    )
902                }
903                Self::votePost(inner) => {
904                    <votePostCall as alloy_sol_types::SolCall>::abi_encode_raw(
905                        inner,
906                        out,
907                    )
908                }
909            }
910        }
911    }
912    ///Container for all the [`RankedFeed`](self) custom errors.
913    #[derive(Clone)]
914    #[derive(serde::Serialize, serde::Deserialize)]
915    #[derive(Debug, PartialEq, Eq, Hash)]
916    pub enum RankedFeedErrors {
917        #[allow(missing_docs)]
918        AlreadyVoted(AlreadyVoted),
919    }
920    impl RankedFeedErrors {
921        /// All the selectors of this enum.
922        ///
923        /// Note that the selectors might not be in the same order as the variants.
924        /// No guarantees are made about the order of the selectors.
925        ///
926        /// Prefer using `SolInterface` methods instead.
927        pub const SELECTORS: &'static [[u8; 4usize]] = &[[124u8, 154u8, 28u8, 249u8]];
928        /// The names of the variants in the same order as `SELECTORS`.
929        pub const VARIANT_NAMES: &'static [&'static str] = &[
930            ::core::stringify!(AlreadyVoted),
931        ];
932        /// The signatures in the same order as `SELECTORS`.
933        pub const SIGNATURES: &'static [&'static str] = &[
934            <AlreadyVoted as alloy_sol_types::SolError>::SIGNATURE,
935        ];
936        /// Returns the signature for the given selector, if known.
937        #[inline]
938        pub fn signature_by_selector(
939            selector: [u8; 4usize],
940        ) -> ::core::option::Option<&'static str> {
941            match Self::SELECTORS.binary_search(&selector) {
942                ::core::result::Result::Ok(idx) => {
943                    ::core::option::Option::Some(Self::SIGNATURES[idx])
944                }
945                ::core::result::Result::Err(_) => ::core::option::Option::None,
946            }
947        }
948        /// Returns the enum variant name for the given selector, if known.
949        #[inline]
950        pub fn name_by_selector(
951            selector: [u8; 4usize],
952        ) -> ::core::option::Option<&'static str> {
953            let sig = Self::signature_by_selector(selector)?;
954            sig.split_once('(').map(|(name, _)| name)
955        }
956    }
957    #[automatically_derived]
958    impl alloy_sol_types::SolInterface for RankedFeedErrors {
959        const NAME: &'static str = "RankedFeedErrors";
960        const MIN_DATA_LENGTH: usize = 0usize;
961        const COUNT: usize = 1usize;
962        #[inline]
963        fn selector(&self) -> [u8; 4] {
964            match self {
965                Self::AlreadyVoted(_) => {
966                    <AlreadyVoted as alloy_sol_types::SolError>::SELECTOR
967                }
968            }
969        }
970        #[inline]
971        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
972            Self::SELECTORS.get(i).copied()
973        }
974        #[inline]
975        fn valid_selector(selector: [u8; 4]) -> bool {
976            Self::SELECTORS.binary_search(&selector).is_ok()
977        }
978        #[inline]
979        #[allow(non_snake_case)]
980        fn abi_decode_raw(
981            selector: [u8; 4],
982            data: &[u8],
983        ) -> alloy_sol_types::Result<Self> {
984            static DECODE_SHIMS: &[fn(
985                &[u8],
986            ) -> alloy_sol_types::Result<RankedFeedErrors>] = &[
987                {
988                    fn AlreadyVoted(
989                        data: &[u8],
990                    ) -> alloy_sol_types::Result<RankedFeedErrors> {
991                        <AlreadyVoted as alloy_sol_types::SolError>::abi_decode_raw(data)
992                            .map(RankedFeedErrors::AlreadyVoted)
993                    }
994                    AlreadyVoted
995                },
996            ];
997            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
998                return Err(
999                    alloy_sol_types::Error::unknown_selector(
1000                        <Self as alloy_sol_types::SolInterface>::NAME,
1001                        selector,
1002                    ),
1003                );
1004            };
1005            DECODE_SHIMS[idx](data)
1006        }
1007        #[inline]
1008        #[allow(non_snake_case)]
1009        fn abi_decode_raw_validate(
1010            selector: [u8; 4],
1011            data: &[u8],
1012        ) -> alloy_sol_types::Result<Self> {
1013            static DECODE_VALIDATE_SHIMS: &[fn(
1014                &[u8],
1015            ) -> alloy_sol_types::Result<RankedFeedErrors>] = &[
1016                {
1017                    fn AlreadyVoted(
1018                        data: &[u8],
1019                    ) -> alloy_sol_types::Result<RankedFeedErrors> {
1020                        <AlreadyVoted as alloy_sol_types::SolError>::abi_decode_raw_validate(
1021                                data,
1022                            )
1023                            .map(RankedFeedErrors::AlreadyVoted)
1024                    }
1025                    AlreadyVoted
1026                },
1027            ];
1028            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
1029                return Err(
1030                    alloy_sol_types::Error::unknown_selector(
1031                        <Self as alloy_sol_types::SolInterface>::NAME,
1032                        selector,
1033                    ),
1034                );
1035            };
1036            DECODE_VALIDATE_SHIMS[idx](data)
1037        }
1038        #[inline]
1039        fn abi_encoded_size(&self) -> usize {
1040            match self {
1041                Self::AlreadyVoted(inner) => {
1042                    <AlreadyVoted as alloy_sol_types::SolError>::abi_encoded_size(inner)
1043                }
1044            }
1045        }
1046        #[inline]
1047        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1048            match self {
1049                Self::AlreadyVoted(inner) => {
1050                    <AlreadyVoted as alloy_sol_types::SolError>::abi_encode_raw(
1051                        inner,
1052                        out,
1053                    )
1054                }
1055            }
1056        }
1057    }
1058    ///Container for all the [`RankedFeed`](self) events.
1059    #[derive(Clone)]
1060    #[derive(serde::Serialize, serde::Deserialize)]
1061    #[derive(Debug, PartialEq, Eq, Hash)]
1062    pub enum RankedFeedEvents {
1063        #[allow(missing_docs)]
1064        PostCreated(PostCreated),
1065        #[allow(missing_docs)]
1066        PostVoted(PostVoted),
1067    }
1068    impl RankedFeedEvents {
1069        /// All the selectors of this enum.
1070        ///
1071        /// Note that the selectors might not be in the same order as the variants.
1072        /// No guarantees are made about the order of the selectors.
1073        ///
1074        /// Prefer using `SolInterface` methods instead.
1075        pub const SELECTORS: &'static [[u8; 32usize]] = &[
1076            [
1077                152u8, 182u8, 177u8, 128u8, 117u8, 108u8, 132u8, 155u8, 91u8, 251u8,
1078                189u8, 43u8, 189u8, 9u8, 31u8, 63u8, 230u8, 75u8, 9u8, 53u8, 172u8, 25u8,
1079                84u8, 24u8, 192u8, 182u8, 25u8, 185u8, 182u8, 97u8, 199u8, 141u8,
1080            ],
1081            [
1082                237u8, 110u8, 111u8, 223u8, 153u8, 205u8, 94u8, 151u8, 20u8, 92u8, 126u8,
1083                89u8, 173u8, 233u8, 57u8, 35u8, 190u8, 25u8, 121u8, 85u8, 122u8, 119u8,
1084                230u8, 57u8, 237u8, 149u8, 162u8, 3u8, 199u8, 168u8, 232u8, 97u8,
1085            ],
1086        ];
1087        /// The names of the variants in the same order as `SELECTORS`.
1088        pub const VARIANT_NAMES: &'static [&'static str] = &[
1089            ::core::stringify!(PostVoted),
1090            ::core::stringify!(PostCreated),
1091        ];
1092        /// The signatures in the same order as `SELECTORS`.
1093        pub const SIGNATURES: &'static [&'static str] = &[
1094            <PostVoted as alloy_sol_types::SolEvent>::SIGNATURE,
1095            <PostCreated as alloy_sol_types::SolEvent>::SIGNATURE,
1096        ];
1097        /// Returns the signature for the given selector, if known.
1098        #[inline]
1099        pub fn signature_by_selector(
1100            selector: [u8; 32usize],
1101        ) -> ::core::option::Option<&'static str> {
1102            match Self::SELECTORS.binary_search(&selector) {
1103                ::core::result::Result::Ok(idx) => {
1104                    ::core::option::Option::Some(Self::SIGNATURES[idx])
1105                }
1106                ::core::result::Result::Err(_) => ::core::option::Option::None,
1107            }
1108        }
1109        /// Returns the enum variant name for the given selector, if known.
1110        #[inline]
1111        pub fn name_by_selector(
1112            selector: [u8; 32usize],
1113        ) -> ::core::option::Option<&'static str> {
1114            let sig = Self::signature_by_selector(selector)?;
1115            sig.split_once('(').map(|(name, _)| name)
1116        }
1117    }
1118    #[automatically_derived]
1119    impl alloy_sol_types::SolEventInterface for RankedFeedEvents {
1120        const NAME: &'static str = "RankedFeedEvents";
1121        const COUNT: usize = 2usize;
1122        fn decode_raw_log(
1123            topics: &[alloy_sol_types::Word],
1124            data: &[u8],
1125        ) -> alloy_sol_types::Result<Self> {
1126            match topics.first().copied() {
1127                Some(<PostCreated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
1128                    <PostCreated as alloy_sol_types::SolEvent>::decode_raw_log(
1129                            topics,
1130                            data,
1131                        )
1132                        .map(Self::PostCreated)
1133                }
1134                Some(<PostVoted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
1135                    <PostVoted as alloy_sol_types::SolEvent>::decode_raw_log(
1136                            topics,
1137                            data,
1138                        )
1139                        .map(Self::PostVoted)
1140                }
1141                _ => {
1142                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
1143                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
1144                        log: alloy_sol_types::private::Box::new(
1145                            alloy_sol_types::private::LogData::new_unchecked(
1146                                topics.to_vec(),
1147                                data.to_vec().into(),
1148                            ),
1149                        ),
1150                    })
1151                }
1152            }
1153        }
1154    }
1155    #[automatically_derived]
1156    impl alloy_sol_types::private::IntoLogData for RankedFeedEvents {
1157        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
1158            match self {
1159                Self::PostCreated(inner) => {
1160                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
1161                }
1162                Self::PostVoted(inner) => {
1163                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
1164                }
1165            }
1166        }
1167        fn into_log_data(self) -> alloy_sol_types::private::LogData {
1168            match self {
1169                Self::PostCreated(inner) => {
1170                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
1171                }
1172                Self::PostVoted(inner) => {
1173                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
1174                }
1175            }
1176        }
1177    }
1178    use alloy::contract as alloy_contract;
1179    /**Creates a new wrapper around an on-chain [`RankedFeed`](self) contract instance.
1180
1181See the [wrapper's documentation](`RankedFeedInstance`) for more details.*/
1182    #[inline]
1183    pub const fn new<
1184        P: alloy_contract::private::Provider<N>,
1185        N: alloy_contract::private::Network,
1186    >(
1187        address: alloy_sol_types::private::Address,
1188        __provider: P,
1189    ) -> RankedFeedInstance<P, N> {
1190        RankedFeedInstance::<P, N>::new(address, __provider)
1191    }
1192    /**Deploys this contract using the given `provider` and constructor arguments, if any.
1193
1194Returns a new instance of the contract, if the deployment was successful.
1195
1196For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
1197    #[inline]
1198    pub fn deploy<
1199        P: alloy_contract::private::Provider<N>,
1200        N: alloy_contract::private::Network,
1201    >(
1202        __provider: P,
1203    ) -> impl ::core::future::Future<
1204        Output = alloy_contract::Result<RankedFeedInstance<P, N>>,
1205    > {
1206        RankedFeedInstance::<P, N>::deploy(__provider)
1207    }
1208    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
1209and constructor arguments, if any.
1210
1211This is a simple wrapper around creating a `RawCallBuilder` with the data set to
1212the bytecode concatenated with the constructor's ABI-encoded arguments.*/
1213    #[inline]
1214    pub fn deploy_builder<
1215        P: alloy_contract::private::Provider<N>,
1216        N: alloy_contract::private::Network,
1217    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
1218        RankedFeedInstance::<P, N>::deploy_builder(__provider)
1219    }
1220    /**A [`RankedFeed`](self) instance.
1221
1222Contains type-safe methods for interacting with an on-chain instance of the
1223[`RankedFeed`](self) contract located at a given `address`, using a given
1224provider `P`.
1225
1226If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1227documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1228be used to deploy a new instance of the contract.
1229
1230See the [module-level documentation](self) for all the available methods.*/
1231    #[derive(Clone)]
1232    pub struct RankedFeedInstance<P, N = alloy_contract::private::Ethereum> {
1233        address: alloy_sol_types::private::Address,
1234        provider: P,
1235        _network: ::core::marker::PhantomData<N>,
1236    }
1237    #[automatically_derived]
1238    impl<P, N> ::core::fmt::Debug for RankedFeedInstance<P, N> {
1239        #[inline]
1240        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1241            f.debug_tuple("RankedFeedInstance").field(&self.address).finish()
1242        }
1243    }
1244    /// Instantiation and getters/setters.
1245    impl<
1246        P: alloy_contract::private::Provider<N>,
1247        N: alloy_contract::private::Network,
1248    > RankedFeedInstance<P, N> {
1249        /**Creates a new wrapper around an on-chain [`RankedFeed`](self) contract instance.
1250
1251See the [wrapper's documentation](`RankedFeedInstance`) for more details.*/
1252        #[inline]
1253        pub const fn new(
1254            address: alloy_sol_types::private::Address,
1255            __provider: P,
1256        ) -> Self {
1257            Self {
1258                address,
1259                provider: __provider,
1260                _network: ::core::marker::PhantomData,
1261            }
1262        }
1263        /**Deploys this contract using the given `provider` and constructor arguments, if any.
1264
1265Returns a new instance of the contract, if the deployment was successful.
1266
1267For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
1268        #[inline]
1269        pub async fn deploy(
1270            __provider: P,
1271        ) -> alloy_contract::Result<RankedFeedInstance<P, N>> {
1272            let call_builder = Self::deploy_builder(__provider);
1273            let contract_address = call_builder.deploy().await?;
1274            Ok(Self::new(contract_address, call_builder.provider))
1275        }
1276        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
1277and constructor arguments, if any.
1278
1279This is a simple wrapper around creating a `RawCallBuilder` with the data set to
1280the bytecode concatenated with the constructor's ABI-encoded arguments.*/
1281        #[inline]
1282        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
1283            alloy_contract::RawCallBuilder::new_raw_deploy(
1284                __provider,
1285                ::core::clone::Clone::clone(&BYTECODE),
1286            )
1287        }
1288        /// Returns a reference to the address.
1289        #[inline]
1290        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1291            &self.address
1292        }
1293        /// Sets the address.
1294        #[inline]
1295        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1296            self.address = address;
1297        }
1298        /// Sets the address and returns `self`.
1299        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1300            self.set_address(address);
1301            self
1302        }
1303        /// Returns a reference to the provider.
1304        #[inline]
1305        pub const fn provider(&self) -> &P {
1306            &self.provider
1307        }
1308    }
1309    impl<P: ::core::clone::Clone, N> RankedFeedInstance<&P, N> {
1310        /// Clones the provider and returns a new instance with the cloned provider.
1311        #[inline]
1312        pub fn with_cloned_provider(self) -> RankedFeedInstance<P, N> {
1313            RankedFeedInstance {
1314                address: self.address,
1315                provider: ::core::clone::Clone::clone(&self.provider),
1316                _network: ::core::marker::PhantomData,
1317            }
1318        }
1319    }
1320    /// Function calls.
1321    impl<
1322        P: alloy_contract::private::Provider<N>,
1323        N: alloy_contract::private::Network,
1324    > RankedFeedInstance<P, N> {
1325        /// Creates a new call builder using this contract instance's provider and address.
1326        ///
1327        /// Note that the call can be any function call, not just those defined in this
1328        /// contract. Prefer using the other methods for building type-safe contract calls.
1329        pub fn call_builder<C: alloy_sol_types::SolCall>(
1330            &self,
1331            call: &C,
1332        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1333            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1334        }
1335        ///Creates a new call builder for the [`createPost`] function.
1336        pub fn createPost(
1337            &self,
1338            post_data: alloy::sol_types::private::Bytes,
1339        ) -> alloy_contract::SolCallBuilder<&P, createPostCall, N> {
1340            self.call_builder(&createPostCall { post_data })
1341        }
1342        ///Creates a new call builder for the [`votePost`] function.
1343        pub fn votePost(
1344            &self,
1345            post_id: alloy::sol_types::private::FixedBytes<32>,
1346        ) -> alloy_contract::SolCallBuilder<&P, votePostCall, N> {
1347            self.call_builder(&votePostCall { post_id })
1348        }
1349    }
1350    /// Event filters.
1351    impl<
1352        P: alloy_contract::private::Provider<N>,
1353        N: alloy_contract::private::Network,
1354    > RankedFeedInstance<P, N> {
1355        /// Creates a new event filter using this contract instance's provider and address.
1356        ///
1357        /// Note that the type can be any event, not just those defined in this contract.
1358        /// Prefer using the other methods for building type-safe event filters.
1359        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1360            &self,
1361        ) -> alloy_contract::Event<&P, E, N> {
1362            alloy_contract::Event::new_sol(&self.provider, &self.address)
1363        }
1364        ///Creates a new event filter for the [`PostCreated`] event.
1365        pub fn PostCreated_filter(&self) -> alloy_contract::Event<&P, PostCreated, N> {
1366            self.event_filter::<PostCreated>()
1367        }
1368        ///Creates a new event filter for the [`PostVoted`] event.
1369        pub fn PostVoted_filter(&self) -> alloy_contract::Event<&P, PostVoted, N> {
1370            self.event_filter::<PostVoted>()
1371        }
1372    }
1373}