squads_multisig/
lib.rs

1// Re-export dependencies for convenience
2pub use solana_client;
3
4pub use squads_multisig_program;
5pub use squads_multisig_program::anchor_lang;
6pub use squads_multisig_program::anchor_lang::solana_program;
7
8pub mod client;
9pub mod pda;
10pub mod vault_transaction;
11
12pub mod error {
13    use thiserror::Error;
14
15    #[derive(Debug, Error)]
16    pub enum ClientError {
17        #[error(transparent)]
18        Client(#[from] solana_client::client_error::ClientError),
19        #[error("Failed to deserialize account data")]
20        DeserializationError,
21        #[error("Invalid AddressLookupTableAccount")]
22        InvalidAddressLookupTableAccount,
23        #[error("Invalid TransactionMessage")]
24        InvalidTransactionMessage,
25    }
26}
27
28pub type ClientResult<T> = Result<T, error::ClientError>;
29
30pub mod state {
31    pub use squads_multisig_program::instructions::TransactionMessage;
32    pub use squads_multisig_program::state::{
33        Batch, ConfigAction, ConfigTransaction, Member, Multisig, MultisigCompiledInstruction,
34        MultisigMessageAddressTableLookup, Period, Permission, Permissions, Proposal,
35        ProposalStatus, SpendingLimit, VaultTransactionMessage,
36    };
37    pub use squads_multisig_program::SmallVec;
38}
39
40pub mod cpi {
41    use squads_multisig_program::anchor_lang::prelude::{CpiContext, Pubkey, Result};
42    pub use squads_multisig_program::cpi::accounts::{
43        BatchAddTransaction, BatchCreate, BatchExecuteTransaction, ConfigTransactionCreate,
44        ConfigTransactionExecute, MultisigAddSpendingLimit, MultisigConfig, MultisigCreateV2,
45        MultisigRemoveSpendingLimit, ProposalActivate, ProposalCreate, ProposalVote,
46        SpendingLimitUse, VaultTransactionCreate, VaultTransactionExecute,
47    };
48    use squads_multisig_program::Member;
49
50    pub fn create_multisig<'info>(
51        ctx: CpiContext<'_, '_, '_, 'info, MultisigCreateV2<'info>>,
52        members: Vec<Member>,
53        threshold: u16,
54        config_authority: Option<Pubkey>,
55        rent_collector: Option<Pubkey>,
56        time_lock: u32,
57        memo: Option<String>,
58    ) -> Result<()> {
59        squads_multisig_program::cpi::multisig_create_v2(
60            ctx,
61            squads_multisig_program::MultisigCreateArgsV2 {
62                members,
63                threshold,
64                config_authority,
65                rent_collector,
66                time_lock,
67                memo,
68            },
69        )
70    }
71}