devol_accounts_kit/instructions_data/
start_next_pool.rs

1use crate::accounts::worker::svm_params::SvmParams;
2use crate::constants::{BOUNDS_COUNT};
3use crate::instructions_data::dvl_deserializable_instruction::DvlDeserializableInstruction;
4
5pub const INSTRUCTION_START_NEXT_POOL_SIZE: usize = 488;
6pub const INSTRUCTION_START_NEXT_POOL_VERSION: u8 = 2;
7
8#[repr(C)]
9pub struct InstructionStartNextPool {
10    pub cmd: u8,
11    pub version: u8,
12    pub reserved: [u8; 6],
13    pub svm_params: SvmParams,
14    pub bounds: [i32; BOUNDS_COUNT],
15    pub margin_vega: i64,
16    pub margin_vanna: i64,
17    pub margin_volga: i64,
18    pub range_lr: i64,
19    pub w_lr: i64,
20    pub max_lr: i64,
21    pub max_pct_pool: i64,
22    pub perm_impact: f64,
23}
24
25impl<'a> DvlDeserializableInstruction<'a> for InstructionStartNextPool {
26    #[inline(always)]
27    fn expected_size() -> usize {INSTRUCTION_START_NEXT_POOL_SIZE}
28    #[inline(always)]
29    fn expected_version() -> u8 {INSTRUCTION_START_NEXT_POOL_VERSION}
30}
31
32#[cfg(not(feature = "on-chain"))]
33#[cfg(test)]
34mod tests {
35    use super::*;
36    use crate::instructions_data::dvl_instruction_data::DvlInstruction;
37    use std::mem;
38    use crate::instructions_data::constructors::start_next_pool::StartNextPoolParams;
39
40    pub const INSTR_START_NEXT_POOL_CMD_OFFSET: usize = 0;
41    pub const INSTR_START_NEXT_POOL_VERSION_OFFSET: usize = 1;
42    pub const INSTR_START_NEXT_POOL_RESERVED_OFFSET: usize = 2;
43    pub const INSTR_START_NEXT_POOL_SVM_PARAMS_OFFSET: usize = 8;
44    pub const INSTR_START_NEXT_POOL_BOUNDS_OFFSET: usize = 48;
45    pub const INSTR_START_NEXT_POOL_MARGIN_VEGA_OFFSET: usize = 424;
46    pub const INSTR_START_NEXT_POOL_MARGIN_VANNA_OFFSET: usize = 432;
47    pub const INSTR_START_NEXT_POOL_MARGIN_VOLGA_OFFSET: usize = 440;
48    pub const INSTR_START_NEXT_POOL_RANGE_LR_OFFSET: usize = 448;
49    pub const INSTR_START_NEXT_POOL_W_LR_OFFSET: usize = 456;
50    pub const INSTR_START_NEXT_POOL_MAX_LR_OFFSET: usize = 464;
51    pub const INSTR_START_NEXT_POOL_MAX_PCT_POOL_OFFSET: usize = 472;
52    pub const INSTR_START_NEXT_POOL_PERM_IMPACT_OFFSET: usize = 480;
53
54    #[test]
55    fn test_instruction_data_offsets() {
56        let start_next_pool_params = StartNextPoolParams {
57            svm_params: SvmParams { c: 0., p: 0., v: 0., vt: 0., psi: 0. },
58            margin_vega: 0.,
59            margin_vanna: 0.,
60            margin_volga: 0.,
61            bounds: [0.; BOUNDS_COUNT],
62            w_lr: 0.,
63            range_lr: 0.,
64            max_pct_pool: 0.,
65            max_lr: 0.,
66            perm_impact: 0.,
67        };
68
69        let data =
70            DvlInstruction::new::<InstructionStartNextPool>(start_next_pool_params).unwrap();
71
72        let base_ptr = &*data as *const _ as usize;
73
74        assert_eq!(
75            &data.cmd as *const _ as usize - base_ptr,
76            INSTR_START_NEXT_POOL_CMD_OFFSET
77        );
78        assert_eq!(
79            &data.version as *const _ as usize - base_ptr,
80            INSTR_START_NEXT_POOL_VERSION_OFFSET
81        );
82        assert_eq!(
83            &data.reserved as *const _ as usize - base_ptr,
84            INSTR_START_NEXT_POOL_RESERVED_OFFSET
85        );
86        assert_eq!(
87            &data.svm_params as *const _ as usize - base_ptr,
88            INSTR_START_NEXT_POOL_SVM_PARAMS_OFFSET
89        );
90        assert_eq!(
91            &data.bounds as *const _ as usize - base_ptr,
92            INSTR_START_NEXT_POOL_BOUNDS_OFFSET
93        );
94        assert_eq!(
95            &data.margin_vega as *const _ as usize - base_ptr,
96            INSTR_START_NEXT_POOL_MARGIN_VEGA_OFFSET
97        );
98        assert_eq!(
99            &data.margin_vanna as *const _ as usize - base_ptr,
100            INSTR_START_NEXT_POOL_MARGIN_VANNA_OFFSET
101        );
102        assert_eq!(
103            &data.margin_volga as *const _ as usize - base_ptr,
104            INSTR_START_NEXT_POOL_MARGIN_VOLGA_OFFSET
105        );
106        assert_eq!(
107            &data.range_lr as *const _ as usize - base_ptr,
108            INSTR_START_NEXT_POOL_RANGE_LR_OFFSET
109        );
110        assert_eq!(
111            &data.w_lr as *const _ as usize - base_ptr,
112            INSTR_START_NEXT_POOL_W_LR_OFFSET
113        );
114        assert_eq!(
115            &data.max_lr as *const _ as usize - base_ptr,
116            INSTR_START_NEXT_POOL_MAX_LR_OFFSET
117        );
118        assert_eq!(
119            &data.max_pct_pool as *const _ as usize - base_ptr,
120            INSTR_START_NEXT_POOL_MAX_PCT_POOL_OFFSET
121        );
122        assert_eq!(
123            &data.perm_impact as *const _ as usize - base_ptr,
124            INSTR_START_NEXT_POOL_PERM_IMPACT_OFFSET
125        );
126
127        assert_eq!(
128            mem::size_of::<InstructionStartNextPool>(),
129            INSTRUCTION_START_NEXT_POOL_SIZE
130        );
131    }
132}