extras_filecoin/
multisig.rs

1use fil_actor_multisig::{
2    AddSignerParams, ChangeNumApprovalsThresholdParams, ConstructorParams, LockBalanceParams,
3    ProposeParams, RemoveSignerParams, SwapSignerParams, Transaction, TxnID, TxnIDParams,
4};
5use fvm_ipld_encoding::RawBytes;
6use fvm_shared::address::Address;
7use fvm_shared::clock::ChainEpoch;
8use fvm_shared::econ::TokenAmount;
9use fvm_shared::MethodNum;
10use serde::{Deserialize, Serialize};
11
12use super::json::address;
13use super::json::rawbytes;
14use super::json::serde_base64_vector;
15use super::json::tokenamount;
16use super::json::vec_address;
17
18#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
19#[serde(remote = "Transaction", rename_all = "PascalCase")]
20pub struct TransactionAPI {
21    #[serde(with = "address")]
22    pub to: Address,
23    #[serde(with = "tokenamount")]
24    pub value: TokenAmount,
25    pub method: MethodNum,
26    #[serde(with = "rawbytes")]
27    pub params: RawBytes,
28    #[serde(with = "vec_address")]
29    pub approved: Vec<Address>,
30}
31
32#[derive(Serialize, Deserialize)]
33#[serde(remote = "ConstructorParams", rename_all = "PascalCase")]
34pub struct ConstructorParamsAPI {
35    #[serde(with = "vec_address")]
36    pub signers: Vec<Address>,
37    pub num_approvals_threshold: u64,
38    pub unlock_duration: ChainEpoch,
39    pub start_epoch: ChainEpoch,
40}
41
42#[derive(Serialize, Deserialize)]
43#[serde(rename_all = "PascalCase")]
44pub struct ConstructorParamsV1 {
45    #[serde(with = "vec_address")]
46    pub signers: Vec<Address>,
47    pub num_approvals_threshold: i64,
48    pub unlock_duration: ChainEpoch,
49}
50
51#[derive(Serialize, Deserialize)]
52#[serde(remote = "ProposeParams", rename_all = "PascalCase")]
53pub struct ProposeParamsAPI {
54    #[serde(with = "address")]
55    pub to: Address,
56    #[serde(with = "tokenamount")]
57    pub value: TokenAmount,
58    pub method: MethodNum,
59    #[serde(with = "rawbytes")]
60    pub params: RawBytes,
61}
62
63#[derive(Serialize, Deserialize)]
64#[serde(remote = "TxnIDParams", rename_all = "PascalCase")]
65pub struct TxnIDParamsAPI {
66    #[serde(alias = "ID")]
67    pub id: TxnID,
68    /// Optional hash of proposal to ensure an operation can only apply to a
69    /// specific proposal.
70    #[serde(with = "serde_base64_vector")]
71    pub proposal_hash: Vec<u8>,
72}
73
74#[derive(Serialize, Deserialize)]
75#[serde(remote = "AddSignerParams", rename_all = "PascalCase")]
76pub struct AddSignerParamsAPI {
77    #[serde(with = "address")]
78    pub signer: Address,
79    pub increase: bool,
80}
81
82#[derive(Serialize, Deserialize)]
83#[serde(remote = "RemoveSignerParams", rename_all = "PascalCase")]
84pub struct RemoveSignerParamsAPI {
85    #[serde(with = "address")]
86    pub signer: Address,
87    pub decrease: bool,
88}
89
90#[derive(Serialize, Deserialize)]
91#[serde(remote = "SwapSignerParams", rename_all = "PascalCase")]
92pub struct SwapSignerParamsAPI {
93    #[serde(with = "address")]
94    pub from: Address,
95    #[serde(with = "address")]
96    pub to: Address,
97}
98
99/// Propose method call parameters
100#[derive(Serialize, Deserialize)]
101#[serde(
102    remote = "ChangeNumApprovalsThresholdParams",
103    rename_all = "PascalCase"
104)]
105pub struct ChangeNumApprovalsThresholdParamsAPI {
106    // Support typo to avoid breaking dev implementation
107    #[serde(alias = "NewTreshold")]
108    pub new_threshold: u64,
109}
110
111/// Lock balance call params.
112#[derive(Serialize, Deserialize)]
113#[serde(remote = "LockBalanceParams", rename_all = "PascalCase")]
114pub struct LockBalanceParamsAPI {
115    pub start_epoch: ChainEpoch,
116    pub unlock_duration: ChainEpoch,
117    #[serde(with = "tokenamount")]
118    pub amount: TokenAmount,
119}