fil_actor_multisig_state/v13/
types.rs1use std::fmt::Display;
5
6use fvm_ipld_encoding::tuple::*;
7use fvm_ipld_encoding::{RawBytes, strict_bytes};
8use fvm_shared4::MethodNum;
9use fvm_shared4::address::Address;
10use fvm_shared4::clock::ChainEpoch;
11use fvm_shared4::econ::TokenAmount;
12use fvm_shared4::error::ExitCode;
13use serde::{Deserialize, Serialize};
14
15use fil_actors_shared::v13::MapKey;
16
17pub const SIGNERS_MAX: usize = 256;
20
21#[derive(Debug, Clone, Copy, Default, Serialize, Deserialize, Hash, Eq, PartialEq, PartialOrd)]
23#[serde(transparent)]
24pub struct TxnID(pub i64);
25
26impl MapKey for TxnID {
27 fn from_bytes(b: &[u8]) -> Result<Self, String> {
28 i64::from_bytes(b).map(TxnID)
29 }
30
31 fn to_bytes(&self) -> Result<Vec<u8>, String> {
32 self.0.to_bytes()
33 }
34}
35
36impl Display for TxnID {
37 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
38 write!(f, "{}", self.0)
39 }
40}
41
42#[derive(Clone, PartialEq, Eq, Debug, Serialize_tuple, Deserialize_tuple)]
44pub struct Transaction {
45 pub to: Address,
46 pub value: TokenAmount,
47 pub method: MethodNum,
48 pub params: RawBytes,
49
50 pub approved: Vec<Address>,
51}
52
53#[derive(Serialize_tuple, Debug)]
60pub struct ProposalHashData<'a> {
61 pub requester: Option<&'a Address>,
62 pub to: &'a Address,
63 pub value: &'a TokenAmount,
64 pub method: &'a MethodNum,
65 pub params: &'a RawBytes,
66}
67
68#[derive(Serialize_tuple, Deserialize_tuple)]
70pub struct ConstructorParams {
71 pub signers: Vec<Address>,
72 pub num_approvals_threshold: u64,
73 pub unlock_duration: ChainEpoch,
74 pub start_epoch: ChainEpoch,
76}
77
78#[derive(Serialize_tuple, Deserialize_tuple)]
80pub struct ProposeParams {
81 pub to: Address,
82 pub value: TokenAmount,
83 pub method: MethodNum,
84 pub params: RawBytes,
85}
86
87#[derive(Serialize_tuple, Deserialize_tuple)]
89pub struct ProposeReturn {
90 pub txn_id: TxnID,
92 pub applied: bool,
95 pub code: ExitCode,
97 pub ret: RawBytes,
100}
101
102#[derive(Clone, PartialEq, Eq, Debug, Serialize_tuple, Deserialize_tuple)]
104pub struct TxnIDParams {
105 pub id: TxnID,
106 #[serde(with = "strict_bytes")]
109 pub proposal_hash: Vec<u8>,
110}
111
112#[derive(Serialize_tuple, Deserialize_tuple)]
114pub struct ApproveReturn {
115 pub applied: bool,
118 pub code: ExitCode,
120 pub ret: RawBytes,
123}
124
125#[derive(Serialize_tuple, Deserialize_tuple)]
127pub struct AddSignerParams {
128 pub signer: Address,
129 pub increase: bool,
130}
131
132#[derive(Serialize_tuple, Deserialize_tuple)]
134pub struct RemoveSignerParams {
135 pub signer: Address,
136 pub decrease: bool,
137}
138
139#[derive(Serialize_tuple, Deserialize_tuple)]
141pub struct SwapSignerParams {
142 pub from: Address,
143 pub to: Address,
144}
145
146#[derive(Serialize_tuple, Deserialize_tuple)]
148pub struct ChangeNumApprovalsThresholdParams {
149 pub new_threshold: u64,
150}
151
152#[derive(Serialize_tuple, Deserialize_tuple)]
154pub struct LockBalanceParams {
155 pub start_epoch: ChainEpoch,
156 pub unlock_duration: ChainEpoch,
157 pub amount: TokenAmount,
158}