ethbridge_bridge_contract/
lib.rs

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}