devol_accounts_kit/instructions_data/
start_next_pool.rs1use 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}