zksync_web3_rs/eip712/
paymaster_params.rs

1use ethers::{types::Address, utils::rlp::Encodable};
2use serde::Serialize;
3
4#[derive(Serialize, serde::Deserialize, Clone, Debug, Default)]
5#[serde(rename_all(serialize = "camelCase", deserialize = "camelCase"))]
6pub struct PaymasterParams {
7    pub paymaster: Address,
8    pub paymaster_input: Vec<u8>,
9}
10
11impl PaymasterParams {
12    pub fn paymaster(mut self, paymaster: Address) -> Self {
13        self.paymaster = paymaster;
14        self
15    }
16
17    pub fn paymaster_input(mut self, paymaster_input: Vec<u8>) -> Self {
18        self.paymaster_input = paymaster_input;
19        self
20    }
21}
22
23impl Encodable for PaymasterParams {
24    fn rlp_append(&self, stream: &mut ethers::utils::rlp::RlpStream) {
25        stream.begin_list(2);
26        stream.append(&self.paymaster);
27        stream.append(&self.paymaster_input.clone());
28    }
29}