use avail_rust_core::{
EncodeSelector,
rpc::{self, ExtrinsicFilter},
};
#[derive(Debug, Default, Clone)]
pub struct Options {
pub filter: Option<ExtrinsicFilter>,
pub ss58_address: Option<String>,
pub app_id: Option<u32>,
pub nonce: Option<u32>,
}
impl Options {
pub fn new() -> Self {
Self::default()
}
pub fn nonce(mut self, value: u32) -> Self {
self.nonce = Some(value);
self
}
pub fn app_id(mut self, value: u32) -> Self {
self.app_id = Some(value);
self
}
pub fn ss58_address(mut self, value: impl Into<String>) -> Self {
self.ss58_address = Some(value.into());
self
}
pub fn filter(mut self, value: impl Into<ExtrinsicFilter>) -> Self {
self.filter = Some(value.into());
self
}
pub fn to_rpc_opts(self, encode_as: EncodeSelector) -> rpc::ExtrinsicOpts {
rpc::ExtrinsicOpts {
transaction_filter: self.filter.unwrap_or_default(),
ss58_address: self.ss58_address,
app_id: self.app_id,
nonce: self.nonce,
encode_as,
}
}
}