flash-sdk 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IDL = void 0;
4
+ exports.IDL = {
5
+ "version": "0.1.0",
6
+ "name": "limit_order_cpi",
7
+ "instructions": [
8
+ {
9
+ "name": "processMarketOrder",
10
+ "accounts": [
11
+ {
12
+ "name": "keeper",
13
+ "isMut": true,
14
+ "isSigner": true
15
+ },
16
+ {
17
+ "name": "pdaAccount",
18
+ "isMut": true,
19
+ "isSigner": false
20
+ },
21
+ {
22
+ "name": "pdaTokenVault",
23
+ "isMut": true,
24
+ "isSigner": false
25
+ },
26
+ {
27
+ "name": "transferAuthority",
28
+ "isMut": false,
29
+ "isSigner": false
30
+ },
31
+ {
32
+ "name": "perpetuals",
33
+ "isMut": false,
34
+ "isSigner": false
35
+ },
36
+ {
37
+ "name": "pool",
38
+ "isMut": true,
39
+ "isSigner": false
40
+ },
41
+ {
42
+ "name": "position",
43
+ "isMut": true,
44
+ "isSigner": false
45
+ },
46
+ {
47
+ "name": "custody",
48
+ "isMut": true,
49
+ "isSigner": false
50
+ },
51
+ {
52
+ "name": "custodyOracleAccount",
53
+ "isMut": false,
54
+ "isSigner": false
55
+ },
56
+ {
57
+ "name": "custodyTokenAccount",
58
+ "isMut": true,
59
+ "isSigner": false
60
+ },
61
+ {
62
+ "name": "systemProgram",
63
+ "isMut": false,
64
+ "isSigner": false
65
+ },
66
+ {
67
+ "name": "tokenProgram",
68
+ "isMut": false,
69
+ "isSigner": false
70
+ },
71
+ {
72
+ "name": "flashProgram",
73
+ "isMut": false,
74
+ "isSigner": false
75
+ }
76
+ ],
77
+ "args": [
78
+ {
79
+ "name": "params",
80
+ "type": {
81
+ "defined": "OpenPositionParams"
82
+ }
83
+ }
84
+ ]
85
+ }
86
+ ],
87
+ "types": [
88
+ {
89
+ "name": "OpenPositionParams",
90
+ "type": {
91
+ "kind": "struct",
92
+ "fields": [
93
+ {
94
+ "name": "price",
95
+ "type": "u64"
96
+ },
97
+ {
98
+ "name": "collateral",
99
+ "type": "u64"
100
+ },
101
+ {
102
+ "name": "size",
103
+ "type": "u64"
104
+ },
105
+ {
106
+ "name": "side",
107
+ "type": {
108
+ "defined": "Side"
109
+ }
110
+ }
111
+ ]
112
+ }
113
+ },
114
+ {
115
+ "name": "Side",
116
+ "type": {
117
+ "kind": "enum",
118
+ "variants": [
119
+ {
120
+ "name": "None"
121
+ },
122
+ {
123
+ "name": "Long"
124
+ },
125
+ {
126
+ "name": "Short"
127
+ }
128
+ ]
129
+ }
130
+ }
131
+ ]
132
+ };
@@ -0,0 +1,259 @@
1
+ export type LimitOrderCpi = {
2
+ "version": "0.1.0",
3
+ "name": "limit_order_cpi",
4
+ "instructions": [
5
+ {
6
+ "name": "processMarketOrder",
7
+ "accounts": [
8
+ {
9
+ "name": "keeper",
10
+ "isMut": true,
11
+ "isSigner": true
12
+ },
13
+ {
14
+ "name": "pdaAccount",
15
+ "isMut": true,
16
+ "isSigner": false
17
+ },
18
+ {
19
+ "name": "pdaTokenVault",
20
+ "isMut": true,
21
+ "isSigner": false
22
+ },
23
+ {
24
+ "name": "transferAuthority",
25
+ "isMut": false,
26
+ "isSigner": false
27
+ },
28
+ {
29
+ "name": "perpetuals",
30
+ "isMut": false,
31
+ "isSigner": false
32
+ },
33
+ {
34
+ "name": "pool",
35
+ "isMut": true,
36
+ "isSigner": false
37
+ },
38
+ {
39
+ "name": "position",
40
+ "isMut": true,
41
+ "isSigner": false
42
+ },
43
+ {
44
+ "name": "custody",
45
+ "isMut": true,
46
+ "isSigner": false
47
+ },
48
+ {
49
+ "name": "custodyOracleAccount",
50
+ "isMut": false,
51
+ "isSigner": false
52
+ },
53
+ {
54
+ "name": "custodyTokenAccount",
55
+ "isMut": true,
56
+ "isSigner": false
57
+ },
58
+ {
59
+ "name": "systemProgram",
60
+ "isMut": false,
61
+ "isSigner": false
62
+ },
63
+ {
64
+ "name": "tokenProgram",
65
+ "isMut": false,
66
+ "isSigner": false
67
+ },
68
+ {
69
+ "name": "flashProgram",
70
+ "isMut": false,
71
+ "isSigner": false
72
+ }
73
+ ],
74
+ "args": [
75
+ {
76
+ "name": "params",
77
+ "type": {
78
+ "defined": "OpenPositionParams"
79
+ }
80
+ }
81
+ ]
82
+ }
83
+ ],
84
+ "types": [
85
+ {
86
+ "name": "OpenPositionParams",
87
+ "type": {
88
+ "kind": "struct",
89
+ "fields": [
90
+ {
91
+ "name": "price",
92
+ "type": "u64"
93
+ },
94
+ {
95
+ "name": "collateral",
96
+ "type": "u64"
97
+ },
98
+ {
99
+ "name": "size",
100
+ "type": "u64"
101
+ },
102
+ {
103
+ "name": "side",
104
+ "type": {
105
+ "defined": "Side"
106
+ }
107
+ }
108
+ ]
109
+ }
110
+ },
111
+ {
112
+ "name": "Side",
113
+ "type": {
114
+ "kind": "enum",
115
+ "variants": [
116
+ {
117
+ "name": "None"
118
+ },
119
+ {
120
+ "name": "Long"
121
+ },
122
+ {
123
+ "name": "Short"
124
+ }
125
+ ]
126
+ }
127
+ }
128
+ ]
129
+ };
130
+
131
+ export const IDL: LimitOrderCpi = {
132
+ "version": "0.1.0",
133
+ "name": "limit_order_cpi",
134
+ "instructions": [
135
+ {
136
+ "name": "processMarketOrder",
137
+ "accounts": [
138
+ {
139
+ "name": "keeper",
140
+ "isMut": true,
141
+ "isSigner": true
142
+ },
143
+ {
144
+ "name": "pdaAccount",
145
+ "isMut": true,
146
+ "isSigner": false
147
+ },
148
+ {
149
+ "name": "pdaTokenVault",
150
+ "isMut": true,
151
+ "isSigner": false
152
+ },
153
+ {
154
+ "name": "transferAuthority",
155
+ "isMut": false,
156
+ "isSigner": false
157
+ },
158
+ {
159
+ "name": "perpetuals",
160
+ "isMut": false,
161
+ "isSigner": false
162
+ },
163
+ {
164
+ "name": "pool",
165
+ "isMut": true,
166
+ "isSigner": false
167
+ },
168
+ {
169
+ "name": "position",
170
+ "isMut": true,
171
+ "isSigner": false
172
+ },
173
+ {
174
+ "name": "custody",
175
+ "isMut": true,
176
+ "isSigner": false
177
+ },
178
+ {
179
+ "name": "custodyOracleAccount",
180
+ "isMut": false,
181
+ "isSigner": false
182
+ },
183
+ {
184
+ "name": "custodyTokenAccount",
185
+ "isMut": true,
186
+ "isSigner": false
187
+ },
188
+ {
189
+ "name": "systemProgram",
190
+ "isMut": false,
191
+ "isSigner": false
192
+ },
193
+ {
194
+ "name": "tokenProgram",
195
+ "isMut": false,
196
+ "isSigner": false
197
+ },
198
+ {
199
+ "name": "flashProgram",
200
+ "isMut": false,
201
+ "isSigner": false
202
+ }
203
+ ],
204
+ "args": [
205
+ {
206
+ "name": "params",
207
+ "type": {
208
+ "defined": "OpenPositionParams"
209
+ }
210
+ }
211
+ ]
212
+ }
213
+ ],
214
+ "types": [
215
+ {
216
+ "name": "OpenPositionParams",
217
+ "type": {
218
+ "kind": "struct",
219
+ "fields": [
220
+ {
221
+ "name": "price",
222
+ "type": "u64"
223
+ },
224
+ {
225
+ "name": "collateral",
226
+ "type": "u64"
227
+ },
228
+ {
229
+ "name": "size",
230
+ "type": "u64"
231
+ },
232
+ {
233
+ "name": "side",
234
+ "type": {
235
+ "defined": "Side"
236
+ }
237
+ }
238
+ ]
239
+ }
240
+ },
241
+ {
242
+ "name": "Side",
243
+ "type": {
244
+ "kind": "enum",
245
+ "variants": [
246
+ {
247
+ "name": "None"
248
+ },
249
+ {
250
+ "name": "Long"
251
+ },
252
+ {
253
+ "name": "Short"
254
+ }
255
+ ]
256
+ }
257
+ }
258
+ ]
259
+ };
@@ -28,6 +28,13 @@ export class Side {
28
28
  static Short = { short: {} };
29
29
  }
30
30
 
31
+ export class AumCalcMode {
32
+ static Min = { min: {} };
33
+ static Max = { max: {} };
34
+ static Last = { last : {} };
35
+ static EMA = { ema : {} };
36
+ }
37
+
31
38
  // =======================================================
32
39
  // ================== POSITION ====================
33
40
  // =======================================================
@@ -125,8 +132,8 @@ export interface PositionStats {
125
132
  collateralUsd: BN,
126
133
  sizeUsd: BN,
127
134
  lockedAmount: BN,
128
- weightedLeverage: BN,
129
- totalLeverage: BN,
135
+ weightedLeverage: BN, // weighted_price
136
+ totalLeverage: BN, // total_quantity
130
137
  cumulativeInterestUsd: BN,
131
138
  cumulativeInterestSnapshot: BN,
132
139
  }
@@ -5,6 +5,57 @@ export const getUnixTs = () => {
5
5
  return new Date().getTime() / 1000;
6
6
  };
7
7
 
8
+ // 99999.123456
9
+ // 99999.123
10
+ export function toUiDecimals(
11
+ nativeAmount: BN | number | string,
12
+ decimals: number,
13
+ precision = 3,
14
+ commaSeperated = false
15
+ ): string {
16
+ // TODO: remove BN and upgrade to bigint https://github.com/solana-labs/solana/issues/27440
17
+
18
+ if(precision> decimals){
19
+ throw "not allowed precision> decimals"
20
+ }
21
+ let r = '';
22
+
23
+ if (nativeAmount instanceof BN) {
24
+ const nativeAmountString = nativeAmount.toString();
25
+ // get decimals
26
+ const d = nativeAmountString.slice((decimals) * -1);
27
+ const p = d.slice(0 ,precision);
28
+ const nativeAmountWithoutDecimalsStr = nativeAmount.div(new BN( 10 ** decimals)).toString();
29
+
30
+ r = nativeAmountWithoutDecimalsStr + "." + p;
31
+ }
32
+ else if (typeof nativeAmount === "string") {
33
+ if( isNaN(Number(nativeAmount))){
34
+ throw "String No valid "
35
+ }
36
+ const d = nativeAmount.slice((decimals) * -1);
37
+ const p = d.slice(0 ,precision);
38
+ const nativeAmountWithoutDecimalsStr = (new BN(nativeAmount)).div(new BN( 10 ** decimals)).toString();
39
+
40
+ r = nativeAmountWithoutDecimalsStr + "." + p;
41
+ }
42
+ else if (typeof nativeAmount === "number") {
43
+ const d = nativeAmount.toString().slice((decimals) * -1);
44
+ const p = d.slice(0 ,precision);
45
+ const nativeAmountWithoutDecimalsStr = (new BN(nativeAmount)).div(new BN( 10 ** decimals)).toString();
46
+ r = nativeAmountWithoutDecimalsStr + "." + p;
47
+ }
48
+ else {
49
+ return 'type unknown'
50
+ }
51
+
52
+ if(commaSeperated){
53
+ return Number(r).toLocaleString();
54
+ } else {
55
+ return r;
56
+ }
57
+
58
+ }
8
59
 
9
60
  // recheck ?? logic
10
61
  export const scaleToExponent = (arg: BN, exponent: BN, target_exponent: BN) : BN => {