1#![allow(dead_code)]
2#![allow(unused_imports)]
3#![allow(clippy::too_many_arguments)]
4use ::ethbridge_bridge_events::*;
5use ::ethbridge_structs::*;
6# [rustfmt :: skip] const __ABI : & str = "[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_version\",\"type\":\"uint8\"},{\"internalType\":\"bytes32[]\",\"name\":\"_currentBridgeValidatorSet\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"_nextBridgeValidatorSet\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"_currentGovernanceValidatorSet\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"_nextGovernanceValidatorSet\",\"type\":\"bytes32[]\"},{\"internalType\":\"contract IProxy\",\"name\":\"_proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"MerkleProofInvalidMultiproof\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"struct ICommon.ChainTransfer[]\",\"name\":\"transfers\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"confirmations\",\"type\":\"uint256\"}],\"name\":\"TransferToChain\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"dataDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ICommon.Erc20Transfer[]\",\"name\":\"transfers\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"relayerAddress\",\"type\":\"string\"}],\"name\":\"TransferToErc\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"validatorSetNonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bridgeValidatorSetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"governanceValidatorSetHash\",\"type\":\"bytes32\"}],\"name\":\"ValidatorSetUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"currentBridgeValidatorSetHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentGovernanceValidatorSetHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextBridgeValidatorSetHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextGovernanceValidatorSetHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"internalType\":\"struct ICommon.ChainTransfer[]\",\"name\":\"_transfers\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"confirmations\",\"type\":\"uint256\"}],\"name\":\"transferToChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferToChainNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"validatorSet\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"internalType\":\"struct ICommon.ValidatorSetArgs\",\"name\":\"validatorSetArgs\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"internalType\":\"struct ICommon.Signature[]\",\"name\":\"signatures\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"dataDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"internalType\":\"struct ICommon.Erc20Transfer[]\",\"name\":\"transfers\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"poolRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bool[]\",\"name\":\"proofFlags\",\"type\":\"bool[]\"},{\"internalType\":\"uint256\",\"name\":\"batchNonce\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"relayerAddress\",\"type\":\"string\"}],\"internalType\":\"struct ICommon.RelayProof\",\"name\":\"relayProof\",\"type\":\"tuple\"}],\"name\":\"transferToErc\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferToErc20Nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"validatorSet\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"internalType\":\"struct ICommon.ValidatorSetArgs\",\"name\":\"_currentValidatorSetArgs\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_bridgeValidatorSetHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_governanceValidatorSetHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"internalType\":\"struct ICommon.Signature[]\",\"name\":\"_signatures\",\"type\":\"tuple[]\"}],\"name\":\"updateValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"validatorSet\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"internalType\":\"struct ICommon.ValidatorSetArgs\",\"name\":\"_currentValidatorSetArgs\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"internalType\":\"struct ICommon.Signature[]\",\"name\":\"_signatures\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upgradeNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorSetNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"validatorSet\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"internalType\":\"struct ICommon.ValidatorSetArgs\",\"name\":\"_currentValidatorSetArgs\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"dataDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"internalType\":\"struct ICommon.Erc20Transfer[]\",\"name\":\"transfers\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"internalType\":\"struct ICommon.Signature[]\",\"name\":\"_signatures\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" ;
7#[doc = "The parsed JSON ABI of the contract."]
8pub static BRIDGE_ABI: ::ethers_contract::Lazy<::ethers::core::abi::Abi> =
9 ::ethers_contract::Lazy::new(|| {
10 ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid")
11 });
12pub struct Bridge<M>(::ethers_contract::Contract<M>);
13impl<M> ::core::clone::Clone for Bridge<M> {
14 fn clone(&self) -> Self {
15 Self(::core::clone::Clone::clone(&self.0))
16 }
17}
18impl<M> ::core::ops::Deref for Bridge<M> {
19 type Target = ::ethers_contract::Contract<M>;
20 fn deref(&self) -> &Self::Target {
21 &self.0
22 }
23}
24impl<M> ::core::ops::DerefMut for Bridge<M> {
25 fn deref_mut(&mut self) -> &mut Self::Target {
26 &mut self.0
27 }
28}
29impl<M> ::core::fmt::Debug for Bridge<M> {
30 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
31 f.debug_tuple(stringify!(Bridge))
32 .field(&self.address())
33 .finish()
34 }
35}
36impl<M: ::ethers::providers::Middleware> Bridge<M> {
37 #[doc = r" Creates a new contract instance with the specified `ethers` client at"]
38 #[doc = r" `address`. The contract derefs to a `ethers::Contract` object."]
39 pub fn new<T: Into<::ethers::core::types::Address>>(
40 address: T,
41 client: ::std::sync::Arc<M>,
42 ) -> Self {
43 Self(::ethers_contract::Contract::new(
44 address.into(),
45 BRIDGE_ABI.clone(),
46 client,
47 ))
48 }
49 #[doc = "Calls the contract's `currentBridgeValidatorSetHash` (0x7379d426) function"]
50 pub fn current_bridge_validator_set_hash(
51 &self,
52 ) -> ::ethers_contract::builders::ContractCall<M, [u8; 32]> {
53 self.0
54 .method_hash([115, 121, 212, 38], ())
55 .expect("method not found (this should never happen)")
56 }
57 #[doc = "Calls the contract's `currentGovernanceValidatorSetHash` (0x0df6a752) function"]
58 pub fn current_governance_validator_set_hash(
59 &self,
60 ) -> ::ethers_contract::builders::ContractCall<M, [u8; 32]> {
61 self.0
62 .method_hash([13, 246, 167, 82], ())
63 .expect("method not found (this should never happen)")
64 }
65 #[doc = "Calls the contract's `nextBridgeValidatorSetHash` (0xf5cd6594) function"]
66 pub fn next_bridge_validator_set_hash(
67 &self,
68 ) -> ::ethers_contract::builders::ContractCall<M, [u8; 32]> {
69 self.0
70 .method_hash([245, 205, 101, 148], ())
71 .expect("method not found (this should never happen)")
72 }
73 #[doc = "Calls the contract's `nextGovernanceValidatorSetHash` (0x1c461a91) function"]
74 pub fn next_governance_validator_set_hash(
75 &self,
76 ) -> ::ethers_contract::builders::ContractCall<M, [u8; 32]> {
77 self.0
78 .method_hash([28, 70, 26, 145], ())
79 .expect("method not found (this should never happen)")
80 }
81 #[doc = "Calls the contract's `transferToChain` (0x224738eb) function"]
82 pub fn transfer_to_chain(
83 &self,
84 transfers: ::std::vec::Vec<ChainTransfer>,
85 confirmations: ::ethers::core::types::U256,
86 ) -> ::ethers_contract::builders::ContractCall<M, ()> {
87 self.0
88 .method_hash([34, 71, 56, 235], (transfers, confirmations))
89 .expect("method not found (this should never happen)")
90 }
91 #[doc = "Calls the contract's `transferToChainNonce` (0x21b1eb5f) function"]
92 pub fn transfer_to_chain_nonce(
93 &self,
94 ) -> ::ethers_contract::builders::ContractCall<M, ::ethers::core::types::U256> {
95 self.0
96 .method_hash([33, 177, 235, 95], ())
97 .expect("method not found (this should never happen)")
98 }
99 #[doc = "Calls the contract's `transferToErc` (0x998c0030) function"]
100 pub fn transfer_to_erc(
101 &self,
102 validator_set_args: ValidatorSetArgs,
103 signatures: ::std::vec::Vec<Signature>,
104 relay_proof: RelayProof,
105 ) -> ::ethers_contract::builders::ContractCall<M, ()> {
106 self.0
107 .method_hash(
108 [153, 140, 0, 48],
109 (validator_set_args, signatures, relay_proof),
110 )
111 .expect("method not found (this should never happen)")
112 }
113 #[doc = "Calls the contract's `transferToErc20Nonce` (0x5f9fd577) function"]
114 pub fn transfer_to_erc_20_nonce(
115 &self,
116 ) -> ::ethers_contract::builders::ContractCall<M, ::ethers::core::types::U256> {
117 self.0
118 .method_hash([95, 159, 213, 119], ())
119 .expect("method not found (this should never happen)")
120 }
121 #[doc = "Calls the contract's `updateValidatorSet` (0xfd48739e) function"]
122 pub fn update_validator_set(
123 &self,
124 current_validator_set_args: ValidatorSetArgs,
125 bridge_validator_set_hash: [u8; 32],
126 governance_validator_set_hash: [u8; 32],
127 signatures: ::std::vec::Vec<Signature>,
128 ) -> ::ethers_contract::builders::ContractCall<M, ()> {
129 self.0
130 .method_hash(
131 [253, 72, 115, 158],
132 (
133 current_validator_set_args,
134 bridge_validator_set_hash,
135 governance_validator_set_hash,
136 signatures,
137 ),
138 )
139 .expect("method not found (this should never happen)")
140 }
141 #[doc = "Calls the contract's `upgrade` (0xc3203d76) function"]
142 pub fn upgrade(
143 &self,
144 current_validator_set_args: ValidatorSetArgs,
145 signatures: ::std::vec::Vec<Signature>,
146 to: ::ethers::core::types::Address,
147 nonce: ::ethers::core::types::U256,
148 ) -> ::ethers_contract::builders::ContractCall<M, ()> {
149 self.0
150 .method_hash(
151 [195, 32, 61, 118],
152 (current_validator_set_args, signatures, to, nonce),
153 )
154 .expect("method not found (this should never happen)")
155 }
156 #[doc = "Calls the contract's `upgradeNonce` (0x1af628b9) function"]
157 pub fn upgrade_nonce(
158 &self,
159 ) -> ::ethers_contract::builders::ContractCall<M, ::ethers::core::types::U256> {
160 self.0
161 .method_hash([26, 246, 40, 185], ())
162 .expect("method not found (this should never happen)")
163 }
164 #[doc = "Calls the contract's `validatorSetNonce` (0x486f2e46) function"]
165 pub fn validator_set_nonce(
166 &self,
167 ) -> ::ethers_contract::builders::ContractCall<M, ::ethers::core::types::U256> {
168 self.0
169 .method_hash([72, 111, 46, 70], ())
170 .expect("method not found (this should never happen)")
171 }
172 #[doc = "Calls the contract's `withdraw` (0x43d80041) function"]
173 pub fn withdraw(
174 &self,
175 current_validator_set_args: ValidatorSetArgs,
176 transfers: ::std::vec::Vec<Erc20Transfer>,
177 signatures: ::std::vec::Vec<Signature>,
178 nonce: ::ethers::core::types::U256,
179 ) -> ::ethers_contract::builders::ContractCall<M, ()> {
180 self.0
181 .method_hash(
182 [67, 216, 0, 65],
183 (current_validator_set_args, transfers, signatures, nonce),
184 )
185 .expect("method not found (this should never happen)")
186 }
187 #[doc = "Calls the contract's `withdrawNonce` (0xb8a4e151) function"]
188 pub fn withdraw_nonce(
189 &self,
190 ) -> ::ethers_contract::builders::ContractCall<M, ::ethers::core::types::U256> {
191 self.0
192 .method_hash([184, 164, 225, 81], ())
193 .expect("method not found (this should never happen)")
194 }
195 #[doc = "Gets the contract's `TransferToChain` event"]
196 pub fn transfer_to_chain_filter(
197 &self,
198 ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, TransferToChainFilter> {
199 self.0.event()
200 }
201 #[doc = "Gets the contract's `TransferToErc` event"]
202 pub fn transfer_to_erc_filter(
203 &self,
204 ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, TransferToErcFilter> {
205 self.0.event()
206 }
207 #[doc = "Gets the contract's `ValidatorSetUpdate` event"]
208 pub fn validator_set_update_filter(
209 &self,
210 ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, ValidatorSetUpdateFilter> {
211 self.0.event()
212 }
213 #[doc = r" Returns an `Event` builder for all the events of this contract."]
214 pub fn events(
215 &self,
216 ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, BridgeEvents> {
217 self.0
218 .event_with_filter(::core::default::Default::default())
219 }
220}
221impl<M: ::ethers::providers::Middleware> From<::ethers_contract::Contract<M>> for Bridge<M> {
222 fn from(contract: ::ethers_contract::Contract<M>) -> Self {
223 Self::new(contract.address(), contract.client())
224 }
225}