1pub 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}