Skip to main content

polyester/models/
zipper.rs

1//! Zipper deposit/withdraw config models (Go `models/zipper.go` parity).
2
3#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize)]
4pub struct ZipperTokenConfig {
5    pub address: String,
6    pub decimals: u32,
7}
8
9#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize)]
10pub struct ZipperAssetChainVariant {
11    pub zipped_asset_id: u32,
12    pub chain_id: u32,
13    pub is_native_asset: bool,
14    pub network_fee: String,
15    pub deposit_min_amount: String,
16    pub withdraw_min_amount: String,
17    pub source_token: ZipperTokenConfig,
18    pub z_token: ZipperTokenConfig,
19}
20
21#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize)]
22pub struct ZipperChainConfig {
23    pub chain_id: u32,
24    pub code: String,
25    pub name: String,
26    pub native_chain_id: String,
27    pub native_currency_symbol: String,
28    pub explorer_url: String,
29    pub icon: String,
30    pub required_confirmations: u32,
31    pub confirmation_time_seconds: u32,
32    pub is_case_sensitive: bool,
33    pub min_address_length: u32,
34    pub max_address_length: u32,
35}
36
37#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize)]
38pub struct ZipperAssetConfig {
39    pub asset: String,
40    pub ledger_id: u32,
41    pub name: String,
42    pub icon: String,
43    pub quantity_scale: u32,
44    pub quantity_display_decimals: u32,
45    pub u_asset_id: String,
46    pub variants: Vec<ZipperAssetChainVariant>,
47}
48
49#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize)]
50pub struct ZipperChainContractConfig {
51    pub name: String,
52    pub address: String,
53    #[serde(rename = "type")]
54    pub contract_type: String,
55    pub description: String,
56    pub version: u32,
57}
58
59#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize)]
60pub struct DepositWithdrawConfig {
61    pub chains: Vec<ZipperChainConfig>,
62    pub assets: Vec<ZipperAssetConfig>,
63    pub contracts: Vec<ZipperChainContractConfig>,
64    pub polyester_chain_id: u32,
65    pub ts_ms: i64,
66}
67
68#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize, Default)]
69pub struct ZippedAssetSupplyUpdate {
70    pub zipped_asset_id: u32,
71    pub supply: String,
72}
73
74#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize, Default)]
75pub struct ZippedAssetSupplyBatch {
76    pub updates: Vec<ZippedAssetSupplyUpdate>,
77}