solana_vaults/
traits.rs

1//! Vaults traits and common features.
2
3use {
4    crate::vault_info::VaultInfo,
5    solana_farm_sdk::vault::Vault,
6    solana_program::{account_info::AccountInfo, entrypoint::ProgramResult},
7};
8
9pub trait VaultParams {
10    fn default_min_crank_interval() -> u64;
11    fn default_fee() -> f64;
12    fn default_external_fee() -> f64;
13}
14
15pub trait UserInit {
16    fn user_init(vault: &Vault, accounts: &[AccountInfo]) -> ProgramResult;
17}
18
19pub trait AddLiquidity {
20    fn add_liquidity(
21        vault: &Vault,
22        accounts: &[AccountInfo],
23        max_token_a_amount: u64,
24        max_token_b_amount: u64,
25    ) -> ProgramResult;
26}
27
28pub trait LockLiquidity {
29    fn lock_liquidity(vault: &Vault, accounts: &[AccountInfo], amount: u64) -> ProgramResult;
30}
31
32pub trait UnlockLiquidity {
33    fn unlock_liquidity(vault: &Vault, accounts: &[AccountInfo], amount: u64) -> ProgramResult;
34}
35
36pub trait RemoveLiquidity {
37    fn remove_liquidity(vault: &Vault, accounts: &[AccountInfo], amount: u64) -> ProgramResult;
38}
39
40pub trait Features {
41    fn set_min_crank_interval(
42        vault: &Vault,
43        vault_info: &mut VaultInfo,
44        accounts: &[AccountInfo],
45        min_crank_interval_sec: u64,
46    ) -> ProgramResult;
47
48    fn set_fee(
49        vault: &Vault,
50        vault_info: &mut VaultInfo,
51        accounts: &[AccountInfo],
52        fee: f64,
53    ) -> ProgramResult;
54
55    fn set_external_fee(
56        vault: &Vault,
57        vault_info: &mut VaultInfo,
58        accounts: &[AccountInfo],
59        external_fee: f64,
60    ) -> ProgramResult;
61
62    fn enable_deposits(
63        vault: &Vault,
64        vault_info: &mut VaultInfo,
65        accounts: &[AccountInfo],
66    ) -> ProgramResult;
67
68    fn disable_deposits(
69        vault: &Vault,
70        vault_info: &mut VaultInfo,
71        accounts: &[AccountInfo],
72    ) -> ProgramResult;
73
74    fn enable_withdrawals(
75        vault: &Vault,
76        vault_info: &mut VaultInfo,
77        accounts: &[AccountInfo],
78    ) -> ProgramResult;
79
80    fn disable_withdrawals(
81        vault: &Vault,
82        vault_info: &mut VaultInfo,
83        accounts: &[AccountInfo],
84    ) -> ProgramResult;
85}
86
87pub trait Crank {
88    fn crank(vault: &Vault, accounts: &[AccountInfo], step: u64) -> ProgramResult;
89}
90
91pub trait Init {
92    fn init(vault: &Vault, accounts: &[AccountInfo], step: u64) -> ProgramResult;
93}
94
95pub trait Shutdown {
96    fn shutdown(vault: &Vault, accounts: &[AccountInfo]) -> ProgramResult;
97}
98
99pub trait WithdrawFees {
100    fn withdraw_fees(vault: &Vault, accounts: &[AccountInfo], amount: u64) -> ProgramResult;
101}
102
103pub trait SetAdminSigners {
104    fn set_admin_signers(
105        vault: &Vault,
106        accounts: &[AccountInfo],
107        min_signatures: u8,
108    ) -> ProgramResult;
109}
110
111pub trait RemoveMultisig {
112    fn remove_multisig(vault: &Vault, accounts: &[AccountInfo]) -> ProgramResult;
113}