Skip to content

Commit

Permalink
feat(sdk-rs): add multisig_create
Browse files Browse the repository at this point in the history
  • Loading branch information
vovacodes committed Oct 3, 2023
1 parent 0c00c80 commit 04482cb
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
2 changes: 1 addition & 1 deletion sdk/rs/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "squads-multisig"
version = "0.0.11"
version = "0.0.12"
description = "An SDK for building automated programs on Solana"
edition = "2021"
license = "MIT OR Apache-2.0"
Expand Down
51 changes: 51 additions & 0 deletions sdk/rs/src/client.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
use solana_client::nonblocking::rpc_client::RpcClient;

pub use squads_multisig_program::accounts::ConfigTransactionCreate as ConfigTransactionCreateAccounts;
pub use squads_multisig_program::accounts::MultisigCreate as MultisigCreateAccounts;
pub use squads_multisig_program::accounts::ProposalCreate as ProposalCreateAccounts;
pub use squads_multisig_program::accounts::ProposalVote as ProposalVoteAccounts;
pub use squads_multisig_program::accounts::SpendingLimitUse as SpendingLimitUseAccounts;
pub use squads_multisig_program::accounts::VaultTransactionCreate as VaultTransactionCreateAccounts;
pub use squads_multisig_program::instruction::ConfigTransactionCreate as ConfigTransactionCreateData;
pub use squads_multisig_program::instruction::MultisigCreate as MultisigCreateData;
pub use squads_multisig_program::instruction::ProposalApprove as ProposalApproveData;
pub use squads_multisig_program::instruction::ProposalCreate as ProposalCreateData;
pub use squads_multisig_program::instruction::SpendingLimitUse as SpendingLimitUseData;
pub use squads_multisig_program::instruction::VaultTransactionCreate as VaultTransactionCreateData;
pub use squads_multisig_program::instructions::ConfigTransactionCreateArgs;
pub use squads_multisig_program::instructions::MultisigCreateArgs;
pub use squads_multisig_program::instructions::ProposalCreateArgs;
pub use squads_multisig_program::instructions::ProposalVoteArgs;
pub use squads_multisig_program::instructions::SpendingLimitUseArgs;
Expand All @@ -35,6 +38,54 @@ pub async fn get_multisig(rpc_client: &RpcClient, multisig_key: &Pubkey) -> Clie
Ok(multisig)
}

/// Creates a new multisig config transaction.
/// Example:
/// ```
/// use squads_multisig::anchor_lang::error::ComparedValues::Pubkeys;
/// use squads_multisig::solana_program::pubkey::Pubkey;
/// use squads_multisig::solana_program::system_program;
/// use squads_multisig::state::{ConfigAction, Member, Permissions, Permission};
/// use squads_multisig::client::{
/// MultisigCreateAccounts,
/// MultisigCreateArgs,
/// multisig_create
/// };
///
/// let ix = multisig_create(
/// MultisigCreateAccounts {
/// multisig: Pubkey::new_unique(),
/// create_key: Pubkey::new_unique(),
/// creator: Pubkey::new_unique(),
/// system_program: system_program::id(),
/// },
/// MultisigCreateArgs {
/// members: vec![
/// Member {
/// key: Pubkey::new_unique(),
/// permissions: Permissions::from_vec(&[Permission::Initiate, Permission::Vote, Permission::Execute]),
/// }
/// ],
/// threshold: 1,
/// time_lock: 0,
/// config_authority: None,
/// memo: Some("Deploy my own Squad".to_string()),
/// },
/// Some(squads_multisig_program::ID)
/// );
/// ```
///
pub fn multisig_create(
accounts: MultisigCreateAccounts,
args: MultisigCreateArgs,
program_id: Option<Pubkey>,
) -> Instruction {
Instruction {
accounts: accounts.to_account_metas(Some(false)),
data: MultisigCreateData { args }.data(),
program_id: program_id.unwrap_or(squads_multisig_program::ID),
}
}

/// Creates a new multisig config transaction.
/// Example:
/// ```
Expand Down

0 comments on commit 04482cb

Please sign in to comment.