mod clock;
mod events;
mod instructions;
use anchor_lang::{prelude::*, AccountsExit};
pub use clock::*;
pub use events::*;
pub use instructions::raydium_stake_lp_compound::*;
use vipers::Validate;
declare_id!("DTQ4xCxT3isWPbEJMB5eAct49ofbK9tNMyBTQniFKb8h");
#[program]
pub mod strategy_vaults {
use super::*;
#[access_control(ctx.accounts.validate())]
pub fn create_vault(
ctx: Context<CreateVault>,
manager: Pubkey,
serum_program_id: Pubkey,
pool_program_id: Pubkey,
farm_program_id: Pubkey,
farm: Pubkey,
farm_authority: Pubkey,
serum_market: Pubkey,
serum_vault_signer: Pubkey,
amm_authority: Pubkey,
) -> Result<()> {
instructions::raydium_stake_lp_compound::create_vault::handler(
ctx,
manager,
serum_program_id,
pool_program_id,
farm_program_id,
farm,
farm_authority,
serum_market,
serum_vault_signer,
amm_authority,
)
}
#[access_control(ctx.accounts.validate())]
pub fn create_vault_two(ctx: Context<CreateVaultTwo>, farm_version: u64) -> Result<()> {
instructions::raydium_stake_lp_compound::create_vault_two::handler(ctx, farm_version)
}
#[access_control(ctx.accounts.validate())]
pub fn create_vault_three(ctx: Context<CreateVaultThree>) -> Result<()> {
instructions::raydium_stake_lp_compound::create_vault_three::handler(ctx)
}
#[access_control(ctx.accounts.validate())]
pub fn create_user_info(ctx: Context<CreateUserInfo>, user_account: Pubkey) -> Result<()> {
instructions::raydium_stake_lp_compound::create_user_info::handler(ctx, user_account)
}
#[access_control(ctx.accounts.validate())]
pub fn add_liquidity(
ctx: Context<AddLiquidity>,
token_a_amount: u64,
token_b_amount: u64,
) -> Result<()> {
instructions::raydium_stake_lp_compound::add_liquidity::handler(
ctx,
token_a_amount,
token_b_amount,
)
}
#[access_control(ctx.accounts.validate())]
pub fn stake(ctx: Context<Stake>, amount: u64) -> Result<()> {
instructions::raydium_stake_lp_compound::stake::handler(ctx, amount)
}
#[access_control(ctx.accounts.validate())]
pub fn remove_liquidity(ctx: Context<RemoveLiquidity>) -> Result<()> {
instructions::raydium_stake_lp_compound::remove_liquidity::handler(ctx)
}
#[access_control(ctx.accounts.validate())]
pub fn unlock_liquidity(ctx: Context<UnlockLiquidity>, amount: u64) -> Result<()> {
instructions::raydium_stake_lp_compound::unlock_liquidity::handler(ctx, amount)
}
#[access_control(ctx.accounts.validate())]
pub fn crank1(ctx: Context<Crank1>) -> Result<()> {
instructions::raydium_stake_lp_compound::crank1::handler(ctx)
}
#[access_control(ctx.accounts.validate())]
pub fn crank2(ctx: Context<Crank2>) -> Result<()> {
instructions::raydium_stake_lp_compound::crank2::handler(ctx)
}
#[access_control(ctx.accounts.validate())]
pub fn crank3(ctx: Context<Crank3>) -> Result<()> {
instructions::raydium_stake_lp_compound::crank3::handler(ctx)
}
}