bulk_client/msgs/
multisig.rs1use serde::{Deserialize, Serialize};
2use solana_keypair::Pubkey;
3use crate::transaction::{Action, ActionMeta};
4
5#[derive(Clone, Debug, Serialize, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct CreateMultisig {
9 #[serde(default)]
10 pub signers: Vec<Pubkey>,
11 pub threshold: u32,
12 #[serde(default)]
13 pub time_lock_secs: u32,
14 #[serde(default = "default_proposal_lifetime_secs")]
15 pub proposal_lifetime_secs: u32,
16
17 #[serde(skip)]
18 pub meta: ActionMeta,
19}
20
21#[derive(Clone, Debug, Serialize, Deserialize)]
23#[serde(rename_all = "camelCase")]
24pub struct MultisigPropose {
25 #[serde(with = "crate::msgs::serde_pubkey", rename = "m")]
26 pub multisig: Pubkey,
27 #[serde(rename = "a", default)]
28 pub actions: Vec<Action>,
29
30 #[serde(skip)]
31 pub meta: ActionMeta,
32}
33
34#[derive(Clone, Debug, Serialize, Deserialize)]
37#[serde(rename_all = "camelCase")]
38pub struct MultisigApprove {
39 #[serde(with = "crate::msgs::serde_pubkey", rename = "m")]
40 pub multisig: Pubkey,
41 #[serde(rename = "p")]
42 pub proposal_id: u64,
43
44 #[serde(skip)]
45 pub meta: ActionMeta,
46}
47
48#[derive(Clone, Debug, Serialize, Deserialize)]
51#[serde(rename_all = "camelCase")]
52pub struct MultisigReject {
53 #[serde(with = "crate::msgs::serde_pubkey", rename = "m")]
54 pub multisig: Pubkey,
55 #[serde(rename = "p")]
56 pub proposal_id: u64,
57
58 #[serde(skip)]
59 pub meta: ActionMeta,
60}
61
62#[derive(Clone, Debug, Serialize, Deserialize)]
64#[serde(rename_all = "camelCase")]
65pub struct MultisigCancel {
66 #[serde(with = "crate::msgs::serde_pubkey", rename = "m")]
67 pub multisig: Pubkey,
68 #[serde(rename = "p")]
69 pub proposal_id: u64,
70
71 #[serde(skip)]
72 pub meta: ActionMeta,
73}
74
75#[derive(Clone, Debug, Serialize, Deserialize)]
77#[serde(rename_all = "camelCase")]
78pub struct MultisigExecute {
79 #[serde(with = "crate::msgs::serde_pubkey", rename = "m")]
80 pub multisig: Pubkey,
81 #[serde(rename = "p")]
82 pub proposal_id: u64,
83
84 #[serde(skip)]
85 pub meta: ActionMeta,
86}
87
88#[derive(Clone, Debug, Serialize, Deserialize)]
90#[serde(rename_all = "camelCase")]
91pub struct UpdateMultisigPolicy {
92 #[serde(with = "crate::msgs::serde_pubkey", rename = "m")]
93 pub multisig: Pubkey,
94 #[serde(default = "default_signers")]
95 pub signers: Vec<Pubkey>,
96 pub threshold: u32,
97 #[serde(default)]
98 pub time_lock_secs: u32,
99 #[serde(default = "default_proposal_lifetime_secs")]
100 pub proposal_lifetime_secs: u32,
101
102 #[serde(skip)]
103 pub meta: ActionMeta,
104}
105
106fn default_signers() -> Vec<Pubkey> {
107 Vec::new()
108}
109fn default_proposal_lifetime_secs() -> u32 {
110 7 * 24 * 3600
111}
112