Skip to content

Commit 04482cb

Browse files
committed
feat(sdk-rs): add multisig_create
1 parent 0c00c80 commit 04482cb

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

sdk/rs/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "squads-multisig"
3-
version = "0.0.11"
3+
version = "0.0.12"
44
description = "An SDK for building automated programs on Solana"
55
edition = "2021"
66
license = "MIT OR Apache-2.0"

sdk/rs/src/client.rs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
use solana_client::nonblocking::rpc_client::RpcClient;
22

33
pub use squads_multisig_program::accounts::ConfigTransactionCreate as ConfigTransactionCreateAccounts;
4+
pub use squads_multisig_program::accounts::MultisigCreate as MultisigCreateAccounts;
45
pub use squads_multisig_program::accounts::ProposalCreate as ProposalCreateAccounts;
56
pub use squads_multisig_program::accounts::ProposalVote as ProposalVoteAccounts;
67
pub use squads_multisig_program::accounts::SpendingLimitUse as SpendingLimitUseAccounts;
78
pub use squads_multisig_program::accounts::VaultTransactionCreate as VaultTransactionCreateAccounts;
89
pub use squads_multisig_program::instruction::ConfigTransactionCreate as ConfigTransactionCreateData;
10+
pub use squads_multisig_program::instruction::MultisigCreate as MultisigCreateData;
911
pub use squads_multisig_program::instruction::ProposalApprove as ProposalApproveData;
1012
pub use squads_multisig_program::instruction::ProposalCreate as ProposalCreateData;
1113
pub use squads_multisig_program::instruction::SpendingLimitUse as SpendingLimitUseData;
1214
pub use squads_multisig_program::instruction::VaultTransactionCreate as VaultTransactionCreateData;
1315
pub use squads_multisig_program::instructions::ConfigTransactionCreateArgs;
16+
pub use squads_multisig_program::instructions::MultisigCreateArgs;
1417
pub use squads_multisig_program::instructions::ProposalCreateArgs;
1518
pub use squads_multisig_program::instructions::ProposalVoteArgs;
1619
pub 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

Comments
 (0)