#![allow(clippy::result_large_err)]
#![deny(arithmetic_overflow)]
#![deny(unused_must_use)]
pub use anchor_lang;
use anchor_lang::prelude::*;
#[cfg(not(feature = "no-entrypoint"))]
use solana_security_txt::security_txt;
pub use instructions::ProgramConfig;
pub use instructions::*;
pub use state::*;
pub use utils::SmallVec;
pub mod errors;
pub mod instructions;
pub mod state;
mod utils;
#[cfg(not(feature = "no-entrypoint"))]
security_txt! {
name: "Squads Multisig Program",
project_url: "https://squads.so",
contacts: "email:security@sqds.io,email:contact@osec.io",
policy: "https://github.com/Squads-Protocol/v4/blob/main/SECURITY.md",
preferred_languages: "en",
source_code: "https://github.com/squads-protocol/v4",
auditors: "OtterSec, Neodyme"
}
#[cfg(not(feature = "testing"))]
declare_id!("SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf");
#[cfg(feature = "testing")]
declare_id!("GyhGAqjokLwF9UXdQ2dR5Zwiup242j4mX4J1tSMKyAmD");
#[program]
pub mod squads_multisig_program {
use super::*;
pub fn program_config_init(
ctx: Context<ProgramConfigInit>,
args: ProgramConfigInitArgs,
) -> Result<()> {
ProgramConfigInit::program_config_init(ctx, args)
}
pub fn program_config_set_authority(
ctx: Context<ProgramConfig>,
args: ProgramConfigSetAuthorityArgs,
) -> Result<()> {
ProgramConfig::program_config_set_authority(ctx, args)
}
pub fn program_config_set_multisig_creation_fee(
ctx: Context<ProgramConfig>,
args: ProgramConfigSetMultisigCreationFeeArgs,
) -> Result<()> {
ProgramConfig::program_config_set_multisig_creation_fee(ctx, args)
}
pub fn program_config_set_treasury(
ctx: Context<ProgramConfig>,
args: ProgramConfigSetTreasuryArgs,
) -> Result<()> {
ProgramConfig::program_config_set_treasury(ctx, args)
}
#[allow(deprecated)]
pub fn multisig_create(ctx: Context<MultisigCreate>, args: MultisigCreateArgs) -> Result<()> {
MultisigCreate::multisig_create(ctx, args)
}
pub fn multisig_create_v2(
ctx: Context<MultisigCreateV2>,
args: MultisigCreateArgsV2,
) -> Result<()> {
MultisigCreateV2::multisig_create(ctx, args)
}
pub fn multisig_add_member(
ctx: Context<MultisigConfig>,
args: MultisigAddMemberArgs,
) -> Result<()> {
MultisigConfig::multisig_add_member(ctx, args)
}
pub fn multisig_remove_member(
ctx: Context<MultisigConfig>,
args: MultisigRemoveMemberArgs,
) -> Result<()> {
MultisigConfig::multisig_remove_member(ctx, args)
}
pub fn multisig_set_time_lock(
ctx: Context<MultisigConfig>,
args: MultisigSetTimeLockArgs,
) -> Result<()> {
MultisigConfig::multisig_set_time_lock(ctx, args)
}
pub fn multisig_change_threshold(
ctx: Context<MultisigConfig>,
args: MultisigChangeThresholdArgs,
) -> Result<()> {
MultisigConfig::multisig_change_threshold(ctx, args)
}
pub fn multisig_set_config_authority(
ctx: Context<MultisigConfig>,
args: MultisigSetConfigAuthorityArgs,
) -> Result<()> {
MultisigConfig::multisig_set_config_authority(ctx, args)
}
pub fn multisig_set_rent_collector(
ctx: Context<MultisigConfig>,
args: MultisigSetRentCollectorArgs,
) -> Result<()> {
MultisigConfig::multisig_set_rent_collector(ctx, args)
}
pub fn multisig_add_spending_limit(
ctx: Context<MultisigAddSpendingLimit>,
args: MultisigAddSpendingLimitArgs,
) -> Result<()> {
MultisigAddSpendingLimit::multisig_add_spending_limit(ctx, args)
}
pub fn multisig_remove_spending_limit(
ctx: Context<MultisigRemoveSpendingLimit>,
args: MultisigRemoveSpendingLimitArgs,
) -> Result<()> {
MultisigRemoveSpendingLimit::multisig_remove_spending_limit(ctx, args)
}
pub fn config_transaction_create(
ctx: Context<ConfigTransactionCreate>,
args: ConfigTransactionCreateArgs,
) -> Result<()> {
ConfigTransactionCreate::config_transaction_create(ctx, args)
}
pub fn config_transaction_execute<'info>(
ctx: Context<'_, '_, 'info, 'info, ConfigTransactionExecute<'info>>,
) -> Result<()> {
ConfigTransactionExecute::config_transaction_execute(ctx)
}
pub fn vault_transaction_create(
ctx: Context<VaultTransactionCreate>,
args: VaultTransactionCreateArgs,
) -> Result<()> {
VaultTransactionCreate::vault_transaction_create(ctx, args)
}
pub fn vault_transaction_execute(ctx: Context<VaultTransactionExecute>) -> Result<()> {
VaultTransactionExecute::vault_transaction_execute(ctx)
}
pub fn batch_create(ctx: Context<BatchCreate>, args: BatchCreateArgs) -> Result<()> {
BatchCreate::batch_create(ctx, args)
}
pub fn batch_add_transaction(
ctx: Context<BatchAddTransaction>,
args: BatchAddTransactionArgs,
) -> Result<()> {
BatchAddTransaction::batch_add_transaction(ctx, args)
}
pub fn batch_execute_transaction(ctx: Context<BatchExecuteTransaction>) -> Result<()> {
BatchExecuteTransaction::batch_execute_transaction(ctx)
}
pub fn proposal_create(ctx: Context<ProposalCreate>, args: ProposalCreateArgs) -> Result<()> {
ProposalCreate::proposal_create(ctx, args)
}
pub fn proposal_activate(ctx: Context<ProposalActivate>) -> Result<()> {
ProposalActivate::proposal_activate(ctx)
}
pub fn proposal_approve(ctx: Context<ProposalVote>, args: ProposalVoteArgs) -> Result<()> {
ProposalVote::proposal_approve(ctx, args)
}
pub fn proposal_reject(ctx: Context<ProposalVote>, args: ProposalVoteArgs) -> Result<()> {
ProposalVote::proposal_reject(ctx, args)
}
pub fn proposal_cancel(ctx: Context<ProposalVote>, args: ProposalVoteArgs) -> Result<()> {
ProposalVote::proposal_cancel(ctx, args)
}
pub fn spending_limit_use(
ctx: Context<SpendingLimitUse>,
args: SpendingLimitUseArgs,
) -> Result<()> {
SpendingLimitUse::spending_limit_use(ctx, args)
}
pub fn config_transaction_accounts_close(
ctx: Context<ConfigTransactionAccountsClose>,
) -> Result<()> {
ConfigTransactionAccountsClose::config_transaction_accounts_close(ctx)
}
pub fn vault_transaction_accounts_close(
ctx: Context<VaultTransactionAccountsClose>,
) -> Result<()> {
VaultTransactionAccountsClose::vault_transaction_accounts_close(ctx)
}
pub fn vault_batch_transaction_account_close(
ctx: Context<VaultBatchTransactionAccountClose>,
) -> Result<()> {
VaultBatchTransactionAccountClose::vault_batch_transaction_account_close(ctx)
}
pub fn batch_accounts_close(ctx: Context<BatchAccountsClose>) -> Result<()> {
BatchAccountsClose::batch_accounts_close(ctx)
}
}