11use solana_client:: nonblocking:: rpc_client:: RpcClient ;
22
33pub use squads_multisig_program:: accounts:: ConfigTransactionCreate as ConfigTransactionCreateAccounts ;
4+ pub use squads_multisig_program:: accounts:: MultisigCreate as MultisigCreateAccounts ;
45pub use squads_multisig_program:: accounts:: ProposalCreate as ProposalCreateAccounts ;
56pub use squads_multisig_program:: accounts:: ProposalVote as ProposalVoteAccounts ;
67pub use squads_multisig_program:: accounts:: SpendingLimitUse as SpendingLimitUseAccounts ;
78pub use squads_multisig_program:: accounts:: VaultTransactionCreate as VaultTransactionCreateAccounts ;
89pub use squads_multisig_program:: instruction:: ConfigTransactionCreate as ConfigTransactionCreateData ;
10+ pub use squads_multisig_program:: instruction:: MultisigCreate as MultisigCreateData ;
911pub use squads_multisig_program:: instruction:: ProposalApprove as ProposalApproveData ;
1012pub use squads_multisig_program:: instruction:: ProposalCreate as ProposalCreateData ;
1113pub use squads_multisig_program:: instruction:: SpendingLimitUse as SpendingLimitUseData ;
1214pub use squads_multisig_program:: instruction:: VaultTransactionCreate as VaultTransactionCreateData ;
1315pub use squads_multisig_program:: instructions:: ConfigTransactionCreateArgs ;
16+ pub use squads_multisig_program:: instructions:: MultisigCreateArgs ;
1417pub use squads_multisig_program:: instructions:: ProposalCreateArgs ;
1518pub use squads_multisig_program:: instructions:: ProposalVoteArgs ;
1619pub use squads_multisig_program:: instructions:: SpendingLimitUseArgs ;
@@ -35,6 +38,54 @@ pub async fn get_multisig(rpc_client: &RpcClient, multisig_key: &Pubkey) -> Clie
3538 Ok ( multisig)
3639}
3740
41+ /// Creates a new multisig config transaction.
42+ /// Example:
43+ /// ```
44+ /// use squads_multisig::anchor_lang::error::ComparedValues::Pubkeys;
45+ /// use squads_multisig::solana_program::pubkey::Pubkey;
46+ /// use squads_multisig::solana_program::system_program;
47+ /// use squads_multisig::state::{ConfigAction, Member, Permissions, Permission};
48+ /// use squads_multisig::client::{
49+ /// MultisigCreateAccounts,
50+ /// MultisigCreateArgs,
51+ /// multisig_create
52+ /// };
53+ ///
54+ /// let ix = multisig_create(
55+ /// MultisigCreateAccounts {
56+ /// multisig: Pubkey::new_unique(),
57+ /// create_key: Pubkey::new_unique(),
58+ /// creator: Pubkey::new_unique(),
59+ /// system_program: system_program::id(),
60+ /// },
61+ /// MultisigCreateArgs {
62+ /// members: vec![
63+ /// Member {
64+ /// key: Pubkey::new_unique(),
65+ /// permissions: Permissions::from_vec(&[Permission::Initiate, Permission::Vote, Permission::Execute]),
66+ /// }
67+ /// ],
68+ /// threshold: 1,
69+ /// time_lock: 0,
70+ /// config_authority: None,
71+ /// memo: Some("Deploy my own Squad".to_string()),
72+ /// },
73+ /// Some(squads_multisig_program::ID)
74+ /// );
75+ /// ```
76+ ///
77+ pub fn multisig_create (
78+ accounts : MultisigCreateAccounts ,
79+ args : MultisigCreateArgs ,
80+ program_id : Option < Pubkey > ,
81+ ) -> Instruction {
82+ Instruction {
83+ accounts : accounts. to_account_metas ( Some ( false ) ) ,
84+ data : MultisigCreateData { args } . data ( ) ,
85+ program_id : program_id. unwrap_or ( squads_multisig_program:: ID ) ,
86+ }
87+ }
88+
3889/// Creates a new multisig config transaction.
3990/// Example:
4091/// ```
0 commit comments