@symmetry-hq/sdk 1.0.1

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.
Files changed (121) hide show
  1. package/dist/src/constants.d.ts +23 -0
  2. package/dist/src/constants.js +38 -0
  3. package/dist/src/index.d.ts +804 -0
  4. package/dist/src/index.js +2097 -0
  5. package/dist/src/instructions/automation/auction.d.ts +6 -0
  6. package/dist/src/instructions/automation/auction.js +40 -0
  7. package/dist/src/instructions/automation/claimBounty.d.ts +12 -0
  8. package/dist/src/instructions/automation/claimBounty.js +44 -0
  9. package/dist/src/instructions/automation/flashSwap.d.ts +21 -0
  10. package/dist/src/instructions/automation/flashSwap.js +74 -0
  11. package/dist/src/instructions/automation/priceUpdate.d.ts +19 -0
  12. package/dist/src/instructions/automation/priceUpdate.js +89 -0
  13. package/dist/src/instructions/automation/rebalanceIntent.d.ts +32 -0
  14. package/dist/src/instructions/automation/rebalanceIntent.js +117 -0
  15. package/dist/src/instructions/automation/rebalanceSwap.d.ts +11 -0
  16. package/dist/src/instructions/automation/rebalanceSwap.js +42 -0
  17. package/dist/src/instructions/management/addBounty.d.ts +7 -0
  18. package/dist/src/instructions/management/addBounty.js +41 -0
  19. package/dist/src/instructions/management/admin.d.ts +9 -0
  20. package/dist/src/instructions/management/admin.js +53 -0
  21. package/dist/src/instructions/management/claimFees.d.ts +15 -0
  22. package/dist/src/instructions/management/claimFees.js +95 -0
  23. package/dist/src/instructions/management/createBasket.d.ts +21 -0
  24. package/dist/src/instructions/management/createBasket.js +98 -0
  25. package/dist/src/instructions/management/edit.d.ts +51 -0
  26. package/dist/src/instructions/management/edit.js +477 -0
  27. package/dist/src/instructions/management/luts.d.ts +30 -0
  28. package/dist/src/instructions/management/luts.js +99 -0
  29. package/dist/src/instructions/pda.d.ts +25 -0
  30. package/dist/src/instructions/pda.js +128 -0
  31. package/dist/src/instructions/user/deposit.d.ts +20 -0
  32. package/dist/src/instructions/user/deposit.js +100 -0
  33. package/dist/src/instructions/user/withdraw.d.ts +8 -0
  34. package/dist/src/instructions/user/withdraw.js +36 -0
  35. package/dist/src/jup.d.ts +49 -0
  36. package/dist/src/jup.js +80 -0
  37. package/dist/src/keeperMonitor.d.ts +52 -0
  38. package/dist/src/keeperMonitor.js +624 -0
  39. package/dist/src/layouts/basket.d.ts +191 -0
  40. package/dist/src/layouts/basket.js +51 -0
  41. package/dist/src/layouts/config.d.ts +281 -0
  42. package/dist/src/layouts/config.js +237 -0
  43. package/dist/src/layouts/fraction.d.ts +20 -0
  44. package/dist/src/layouts/fraction.js +164 -0
  45. package/dist/src/layouts/intents/bounty.d.ts +18 -0
  46. package/dist/src/layouts/intents/bounty.js +19 -0
  47. package/dist/src/layouts/intents/intent.d.ts +209 -0
  48. package/dist/src/layouts/intents/intent.js +97 -0
  49. package/dist/src/layouts/intents/rebalanceIntent.d.ts +212 -0
  50. package/dist/src/layouts/intents/rebalanceIntent.js +94 -0
  51. package/dist/src/layouts/lookupTable.d.ts +7 -0
  52. package/dist/src/layouts/lookupTable.js +10 -0
  53. package/dist/src/layouts/oracle.d.ts +63 -0
  54. package/dist/src/layouts/oracle.js +96 -0
  55. package/dist/src/states/basket.d.ts +14 -0
  56. package/dist/src/states/basket.js +479 -0
  57. package/dist/src/states/config.d.ts +3 -0
  58. package/dist/src/states/config.js +71 -0
  59. package/dist/src/states/intents/intent.d.ts +10 -0
  60. package/dist/src/states/intents/intent.js +316 -0
  61. package/dist/src/states/intents/rebalanceIntent.d.ts +42 -0
  62. package/dist/src/states/intents/rebalanceIntent.js +680 -0
  63. package/dist/src/states/oracles/constants.d.ts +9 -0
  64. package/dist/src/states/oracles/constants.js +15 -0
  65. package/dist/src/states/oracles/oracle.d.ts +24 -0
  66. package/dist/src/states/oracles/oracle.js +168 -0
  67. package/dist/src/states/oracles/pythOracle.d.ts +132 -0
  68. package/dist/src/states/oracles/pythOracle.js +609 -0
  69. package/dist/src/states/oracles/raydiumClmmOracle.d.ts +184 -0
  70. package/dist/src/states/oracles/raydiumClmmOracle.js +843 -0
  71. package/dist/src/states/oracles/raydiumCpmmOracle.d.ts +120 -0
  72. package/dist/src/states/oracles/raydiumCpmmOracle.js +540 -0
  73. package/dist/src/states/oracles/switchboardOracle.d.ts +0 -0
  74. package/dist/src/states/oracles/switchboardOracle.js +1 -0
  75. package/dist/src/states/withdrawBasketFees.d.ts +10 -0
  76. package/dist/src/states/withdrawBasketFees.js +154 -0
  77. package/dist/src/txUtils.d.ts +65 -0
  78. package/dist/src/txUtils.js +306 -0
  79. package/dist/test.d.ts +1 -0
  80. package/dist/test.js +561 -0
  81. package/package.json +31 -0
  82. package/src/constants.ts +40 -0
  83. package/src/index.ts +2431 -0
  84. package/src/instructions/automation/auction.ts +55 -0
  85. package/src/instructions/automation/claimBounty.ts +69 -0
  86. package/src/instructions/automation/flashSwap.ts +104 -0
  87. package/src/instructions/automation/priceUpdate.ts +117 -0
  88. package/src/instructions/automation/rebalanceIntent.ts +181 -0
  89. package/src/instructions/management/addBounty.ts +55 -0
  90. package/src/instructions/management/admin.ts +72 -0
  91. package/src/instructions/management/claimFees.ts +129 -0
  92. package/src/instructions/management/createBasket.ts +138 -0
  93. package/src/instructions/management/edit.ts +602 -0
  94. package/src/instructions/management/luts.ts +157 -0
  95. package/src/instructions/pda.ts +151 -0
  96. package/src/instructions/user/deposit.ts +143 -0
  97. package/src/instructions/user/withdraw.ts +53 -0
  98. package/src/jup.ts +113 -0
  99. package/src/keeperMonitor.ts +585 -0
  100. package/src/layouts/basket.ts +233 -0
  101. package/src/layouts/config.ts +576 -0
  102. package/src/layouts/fraction.ts +164 -0
  103. package/src/layouts/intents/bounty.ts +35 -0
  104. package/src/layouts/intents/intent.ts +324 -0
  105. package/src/layouts/intents/rebalanceIntent.ts +306 -0
  106. package/src/layouts/lookupTable.ts +14 -0
  107. package/src/layouts/oracle.ts +157 -0
  108. package/src/states/basket.ts +527 -0
  109. package/src/states/config.ts +62 -0
  110. package/src/states/intents/intent.ts +311 -0
  111. package/src/states/intents/rebalanceIntent.ts +751 -0
  112. package/src/states/oracles/constants.ts +13 -0
  113. package/src/states/oracles/oracle.ts +212 -0
  114. package/src/states/oracles/pythOracle.ts +874 -0
  115. package/src/states/oracles/raydiumClmmOracle.ts +1193 -0
  116. package/src/states/oracles/raydiumCpmmOracle.ts +784 -0
  117. package/src/states/oracles/switchboardOracle.ts +0 -0
  118. package/src/states/withdrawBasketFees.ts +160 -0
  119. package/src/txUtils.ts +424 -0
  120. package/test.ts +609 -0
  121. package/tsconfig.json +101 -0
@@ -0,0 +1,576 @@
1
+ import BN from 'bn.js';
2
+ import { array, publicKey, str, struct, u128, u16, u64, u8 } from '@coral-xyz/borsh';
3
+ import { PublicKey } from '@solana/web3.js';
4
+
5
+ import { Fraction, FractionLayout } from './fraction';
6
+ import { BountySchedule, BountyScheduleLayout } from './intents/bounty';
7
+ import { MAX_SUPPORTED_TOKENS_PER_BASKET } from '../constants';
8
+ import { FormattedBountySchedule } from './intents/intent';
9
+
10
+ export const MAX_MANAGERS_PER_BASKET = 10;
11
+ export const MAX_SYMBOL_LENGTH = 10;
12
+ export const MAX_NAME_LENGTH = 32;
13
+ export const MAX_URI_LENGTH = 200;
14
+
15
+ export enum BasketType {
16
+ Private = 0,
17
+ Public = 1,
18
+ };
19
+
20
+ export interface EditCreator {
21
+ creator: PublicKey;
22
+ };
23
+
24
+ export const EditCreatorLayout = struct<EditCreator>([
25
+ publicKey('creator'),
26
+ ]);
27
+
28
+ export interface AuthorityBitmasks{
29
+ scheduleAuthorityBitmask: number; // u16
30
+ feesAuthorityBitmask: number; // u16
31
+ managersAuthorityBitmask: number; // u16
32
+ automationAuthorityBitmask: number; // u16
33
+ lpAuthorityBitmask: number; // u16
34
+ metadataAuthorityBitmask: number; // u16
35
+ depositsAuthorityBitmask: number; // u16
36
+ forceRebalanceAuthorityBitmask: number; // u16
37
+ customRebalanceAuthorityBitmask: number; // u16
38
+ addTokenIntentAuthorityBitmask: number; // u16
39
+ updateWeightsIntentAuthorityBitmask: number; // u16
40
+ makeDirectSwapIntentAuthorityBitmask: number; // u16
41
+ extraData: number; // u16
42
+ extraData1: number; // u16
43
+ extraData2: number; // u16
44
+ }
45
+
46
+ export const AuthorityBitmasksLayout = struct<AuthorityBitmasks>([
47
+ u16('scheduleAuthorityBitmask'),
48
+ u16('feesAuthorityBitmask'),
49
+ u16('managersAuthorityBitmask'),
50
+ u16('automationAuthorityBitmask'),
51
+ u16('lpAuthorityBitmask'),
52
+ u16('metadataAuthorityBitmask'),
53
+ u16('depositsAuthorityBitmask'),
54
+ u16('forceRebalanceAuthorityBitmask'),
55
+ u16('customRebalanceAuthorityBitmask'),
56
+ u16('addTokenIntentAuthorityBitmask'),
57
+ u16('updateWeightsIntentAuthorityBitmask'),
58
+ u16('makeDirectSwapIntentAuthorityBitmask'),
59
+ u16('extraData'),
60
+ u16('extraData1'),
61
+ u16('extraData2'),
62
+ ]);
63
+
64
+ export interface ManagerSettings {
65
+ managers: PublicKey[]; // [Pubkey; 10]
66
+ managersWeightBps: number[]; //[u16; 10]
67
+ modificationDelay: BN; // u64
68
+ }
69
+
70
+ export const ManagerSettingsLayout = struct<ManagerSettings>([
71
+ array(publicKey(), MAX_MANAGERS_PER_BASKET, 'managers'),
72
+ array(u16(), MAX_MANAGERS_PER_BASKET, 'managersWeightBps'),
73
+ u64('modificationDelay'),
74
+ ])
75
+
76
+ export interface ManagerSettingsWithAuthorityBitmasks{
77
+ managerSettings: ManagerSettings;
78
+ authorityBitmasks: AuthorityBitmasks;
79
+ };
80
+
81
+ export const ManagerSettingsWithAuthorityBitmasksLayout = struct<ManagerSettingsWithAuthorityBitmasks>([
82
+ ManagerSettingsLayout.replicate('managerSettings'),
83
+ AuthorityBitmasksLayout.replicate('authorityBitmasks'),
84
+ ]);
85
+ export interface HostFees {
86
+ hostDepositFeeBps: number;
87
+ hostWithdrawalFeeBps: number;
88
+ hostManagementFeeBps: number;
89
+ hostPerformanceFeeBps: number;
90
+ }
91
+
92
+ export const HostFeesLayout = struct<HostFees>([
93
+ u16('hostDepositFeeBps'),
94
+ u16('hostWithdrawalFeeBps'),
95
+ u16('hostManagementFeeBps'),
96
+ u16('hostPerformanceFeeBps'),
97
+ ]);
98
+
99
+ export interface FeeSettings {
100
+ hostDepositFeeBps: number;
101
+ hostWithdrawFeeBps: number,
102
+ hostManagementFeeBps: number;
103
+ hostPerformanceFeeBps: number;
104
+
105
+ creatorDepositFeeBps: number;
106
+ creatorWithdrawFeeBps: number,
107
+ creatorManagementFeeBps: number;
108
+ creatorPerformanceFeeBps: number;
109
+
110
+ managersDepositFeeBps: number;
111
+ managersWithdrawFeeBps: number;
112
+ managersManagementFeeBps: number;
113
+ managersPerformanceFeeBps: number;
114
+
115
+ basketDepositFeeBps: number;
116
+ basketWithdrawFeeBps: number;
117
+
118
+ extraData: number[];
119
+
120
+ modificationDelay: BN; // u64 -> BN
121
+ };
122
+
123
+ export const FeeSettingsLayout = struct<FeeSettings>([
124
+ u16('hostDepositFeeBps'),
125
+ u16('hostWithdrawFeeBps'),
126
+ u16('hostManagementFeeBps'),
127
+ u16('hostPerformanceFeeBps'),
128
+ u16('creatorDepositFeeBps'),
129
+ u16('creatorWithdrawFeeBps'),
130
+ u16('creatorManagementFeeBps'),
131
+ u16('creatorPerformanceFeeBps'),
132
+ u16('managersDepositFeeBps'),
133
+ u16('managersWithdrawFeeBps'),
134
+ u16('managersManagementFeeBps'),
135
+ u16('managersPerformanceFeeBps'),
136
+ u16('basketDepositFeeBps'),
137
+ u16('basketWithdrawFeeBps'),
138
+ array(u8(), 32, 'extraData'),
139
+ u64('modificationDelay'),
140
+ ]);
141
+
142
+ export interface ScheduleSettings {
143
+ cycleStartTime: BN; // u64
144
+ cycleDuration: BN; // u64
145
+ depositsStart: BN; // u64
146
+ depositsEnd: BN; // u64
147
+ automationStart: BN; // u64
148
+ automationEnd: BN; // u64
149
+ managementStart: BN; // u64
150
+ managementEnd: BN; // u64
151
+ modificationDelay: BN; // u64
152
+ };
153
+
154
+ export const ScheduleSettingsLayout = struct<ScheduleSettings>([
155
+ u64('cycleStartTime'),
156
+ u64('cycleDuration'),
157
+ u64('depositsStart'),
158
+ u64('depositsEnd'),
159
+ u64('automationStart'),
160
+ u64('automationEnd'),
161
+ u64('managementStart'),
162
+ u64('managementEnd'),
163
+ u64('modificationDelay'),
164
+ ]);
165
+
166
+ export interface AutomationSettings {
167
+ allowAutomation: number; // u8
168
+
169
+ rebalanceSlippageThresholdBps: number; // u16
170
+ perTradeRebalanceSlippageThresholdBps: number; // u16
171
+
172
+ rebalanceActivationThresholdAbsBps: number; // u16
173
+ rebalanceActivationThresholdRelBps: number; // u16
174
+ rebalanceActivationCooldown: BN; // u64 -> BN
175
+
176
+ extraData: PublicKey[]; // 128bytes
177
+ modificationDelay: BN; // u64 -> BN
178
+ };
179
+
180
+ export const AutomationSettingsLayout = struct<AutomationSettings>([
181
+ u8('allowAutomation'),
182
+ u16('rebalanceSlippageThresholdBps'),
183
+ u16('perTradeRebalanceSlippageThresholdBps'),
184
+ u16('rebalanceActivationThresholdAbsBps'),
185
+ u16('rebalanceActivationThresholdRelBps'),
186
+ u64('rebalanceActivationCooldown'),
187
+ array(publicKey(), 4, 'extraData'),
188
+ u64('modificationDelay'),
189
+ ]);
190
+
191
+ export interface LpSettings {
192
+ allowLp: number; // u8
193
+ lpThresholdBps: number; // u16
194
+ extraData: number[]; // 32 bytes
195
+ modificationDelay: BN; // u64 -> BN
196
+ };
197
+
198
+ export const LpSettingsLayout = struct<LpSettings>([
199
+ u8('allowLp'),
200
+ u16('lpThresholdBps'),
201
+ array(u8(), 32, 'extraData'),
202
+ u64('modificationDelay'),
203
+ ]);
204
+
205
+ export interface MetadataParams {
206
+ name: string;
207
+ symbol: string;
208
+ uri: string;
209
+ };
210
+
211
+ export const MetadataParamsLayout = struct([
212
+ str("name"),
213
+ str("symbol"),
214
+ str("uri"),
215
+ ]);
216
+
217
+ export interface MetadataSettings {
218
+ symbolLength: number; // u8
219
+ symbol: number[]; // [u8; MAX_SYMBOL_LENGTH]
220
+ nameLength: number; // u8
221
+ name: number[]; // [u8; MAX_NAME_LENGTH]
222
+ uriLength: number; // u8
223
+ uri: number[]; // [u8; MAX_URI_LENGTH]
224
+ modificationDelay: BN; // u64
225
+ };
226
+
227
+ export const MetadataSettingsLayout = struct<MetadataSettings>([
228
+ u8('symbolLength'),
229
+ array(u8(), MAX_SYMBOL_LENGTH, 'symbol'),
230
+ u8('nameLength'),
231
+ array(u8(), MAX_NAME_LENGTH, 'name'),
232
+ u8('uriLength'),
233
+ array(u8(), MAX_URI_LENGTH, 'uri'),
234
+ u64('modificationDelay'),
235
+ ]);
236
+
237
+ export interface EditAddTokenDelay{
238
+ modificationDelay: BN;
239
+ };
240
+
241
+ export const EditAddTokenDelayLayout = struct<EditAddTokenDelay>([
242
+ u64('modificationDelay'),
243
+ ]);
244
+
245
+ export interface EditUpdateWeightsDelay{
246
+ modificationDelay: BN;
247
+ };
248
+
249
+ export const EditUpdateWeightsDelayLayout = struct<EditUpdateWeightsDelay>([
250
+ u64('modificationDelay'),
251
+ ]);
252
+
253
+ export interface EditMakeDirectSwapDelay{
254
+ modificationDelay: BN;
255
+ };
256
+
257
+ export const EditMakeDirectSwapDelayLayout = struct<EditMakeDirectSwapDelay>([
258
+ u64('modificationDelay'),
259
+ ]);
260
+
261
+ export interface UpdateWeights{
262
+ tokenWeights: number[]; // [u16; 100]
263
+ tokenMintsHash: number[]; // [u8; 32]
264
+ };
265
+
266
+ export const UpdateWeightsLayout = struct<UpdateWeights>([
267
+ array(u16(), MAX_SUPPORTED_TOKENS_PER_BASKET, 'tokenWeights'),
268
+ array(u8(), 32, 'tokenMintsHash'),
269
+ ]);
270
+
271
+ export interface MakeDirectSwap {
272
+ fromTokenMint: PublicKey;
273
+ toTokenMint: PublicKey;
274
+ amountFrom: BN; // u64
275
+ amountTo: BN; // u64
276
+ };
277
+
278
+ export const MakeDirectSwapLayout = struct<MakeDirectSwap>([
279
+ publicKey('fromTokenMint'),
280
+ publicKey('toTokenMint'),
281
+ u64('amountFrom'),
282
+ u64('amountTo'),
283
+ ]);
284
+
285
+ export interface BasketSettings {
286
+ creator: PublicKey,
287
+ host: PublicKey,
288
+
289
+ basketType: BasketType,
290
+
291
+ bountyMint: PublicKey,
292
+ bountyBalance: BN; // u64
293
+
294
+ startPrice: Fraction,
295
+ highWaterMark: Fraction,
296
+
297
+ activeRebalance: BN; // u64
298
+ activeWithdraws: BN; // u64
299
+ activeManagements: BN; // u64
300
+
301
+ lastAutomationExecutionTimestamp: BN; // u64
302
+
303
+ managers: ManagerSettings,
304
+ managersLastUpdateTimestamp: BN; // u64
305
+ managersAuthorityBitmask: number; // u16
306
+
307
+ fees: FeeSettings,
308
+ feesLastUpdateTimestamp: BN; // u64
309
+ feesAuthorityBitmask: number; // u16
310
+
311
+ schedule: ScheduleSettings,
312
+ scheduleLastUpdateTimestamp: BN; // u64
313
+ scheduleAuthorityBitmask: number; // u16
314
+
315
+ automation: AutomationSettings,
316
+ automationLastUpdateTimestamp: BN; // u64
317
+ automationAuthorityBitmask: number; // u16
318
+
319
+ lp: LpSettings,
320
+ lpLastUpdateTimestamp: BN; // u64
321
+ lpAuthorityBitmask: number; // u16
322
+
323
+ metadata: MetadataSettings,
324
+ metadataLastUpdateTimestamp: BN; // u64
325
+ metadataAuthorityBitmask: number; // u16
326
+
327
+ depositsAreAllowed: number; // u8
328
+ depositsAuthorityBitmask: number; // u16
329
+
330
+ forceRebalanceIsAllowed: number; // u8
331
+ forceRebalanceModificationDelay: BN; // u64
332
+ forceRebalanceLastUpdateTimestamp: BN; // u64
333
+ forceRebalanceAuthorityBitmask: number; // u16
334
+
335
+ customRebalanceIsAllowed: number; // u8
336
+ customRebalanceModificationDelay: BN; // u64
337
+ customRebalanceLastUpdateTimestamp: BN; // u64
338
+ customRebalanceAuthorityBitmask: number; // u16
339
+
340
+ addTokenDelay: BN; // u64
341
+ addTokenLastUpdateTimestamp: BN; // u64
342
+ addTokenIntentAuthorityBitmask: number; // u16
343
+
344
+ updateWeightsDelay: BN; // u64
345
+ updateWeightsLastUpdateTimestamp: BN; // u64
346
+ updateWeightsIntentAuthorityBitmask: number; // u16,
347
+
348
+ makeDirectSwapDelay: BN; // u64,
349
+ makeDirectSwapLastUpdateTimestamp: BN; // u64,
350
+ makeDirectSwapIntentAuthorityBitmask: number; // u16,
351
+
352
+ extraData: BN[]; // [u64; 32],
353
+ }
354
+
355
+ export const BasketSettingsLayout = struct<BasketSettings>([
356
+ publicKey('creator'),
357
+ publicKey('host'),
358
+
359
+ u8('basketType'),
360
+
361
+ publicKey('bountyMint'),
362
+ u64('bountyBalance'),
363
+
364
+ FractionLayout.replicate('startPrice'),
365
+ FractionLayout.replicate('highWaterMark'),
366
+
367
+ u64('activeRebalance'),
368
+ u64('activeWithdraws'),
369
+ u64('activeManagements'),
370
+
371
+ u64('lastAutomationExecutionTimestamp'),
372
+
373
+ ManagerSettingsLayout.replicate('managers'),
374
+ u64('managersLastUpdateTimestamp'),
375
+ u16('managersAuthorityBitmask'),
376
+
377
+ FeeSettingsLayout.replicate('fees'),
378
+ u64('feesLastUpdateTimestamp'),
379
+ u16('feesAuthorityBitmask'),
380
+
381
+ ScheduleSettingsLayout.replicate('schedule'),
382
+ u64('scheduleLastUpdateTimestamp'),
383
+ u16('scheduleAuthorityBitmask'),
384
+
385
+
386
+ AutomationSettingsLayout.replicate('automation'),
387
+ u64('automationLastUpdateTimestamp'),
388
+ u16('automationAuthorityBitmask'),
389
+
390
+ LpSettingsLayout.replicate('lp'),
391
+ u64('lpLastUpdateTimestamp'),
392
+ u16('lpAuthorityBitmask'),
393
+
394
+ MetadataSettingsLayout.replicate('metadata'),
395
+ u64('metadataLastUpdateTimestamp'),
396
+ u16('metadataAuthorityBitmask'),
397
+
398
+ u8('depositsAreAllowed'),
399
+ u16('depositsAuthorityBitmask'),
400
+
401
+ u8('forceRebalanceIsAllowed'),
402
+ u64('forceRebalanceModificationDelay'),
403
+ u64('forceRebalanceLastUpdateTimestamp'),
404
+ u16('forceRebalanceAuthorityBitmask'),
405
+
406
+ u8('customRebalanceIsAllowed'),
407
+ u64('customRebalanceModificationDelay'),
408
+ u64('customRebalanceLastUpdateTimestamp'),
409
+ u16('customRebalanceAuthorityBitmask'),
410
+
411
+ u64('addTokenDelay'),
412
+ u64('addTokenLastUpdateTimestamp'),
413
+ u16('addTokenIntentAuthorityBitmask'),
414
+
415
+ u64('updateWeightsDelay'),
416
+ u64('updateWeightsLastUpdateTimestamp'),
417
+ u16('updateWeightsIntentAuthorityBitmask'),
418
+
419
+ u64('makeDirectSwapDelay'),
420
+ u64('makeDirectSwapLastUpdateTimestamp'),
421
+ u16('makeDirectSwapIntentAuthorityBitmask'),
422
+
423
+ array(u64(), 32, 'extraData'),
424
+ ]);
425
+
426
+
427
+ export interface FormattedGlobalConfig {
428
+ pubkey: string;
429
+ admin: string;
430
+ owners: string[]; // [Pubkey; 3]
431
+ total_number_of_baskets: number;
432
+ allow_interactions: boolean; // u8
433
+ allow_creation: boolean; // u8
434
+ allow_management: boolean; // u8
435
+ allow_automation: boolean; // u8
436
+ allow_deposits: boolean; // u8
437
+ allow_withdraws: boolean; // u8
438
+ max_deposit_fee_bps: number; // u16
439
+ max_withdraw_fee_bps: number; // u16
440
+ max_management_fee_bps: number; // u16
441
+ max_performance_fee_bps: number; // u16
442
+ symmetry_fee_collector: string;
443
+ symmetry_deposit_fee_bps: number; // u16
444
+ symmetry_deposit_fee_share_bps: number; // u16
445
+ symmetry_withdraw_fee_bps: number; // u16
446
+ symmetry_withdraw_fee_share_bps: number; // u16
447
+ symmetry_management_fee_bps: number; // u16
448
+ symmetry_management_fee_share_bps: number; // u16
449
+ symmetry_performance_fee_bps: number; // u16
450
+ symmetry_performance_fee_share_bps: number; // u16
451
+ symmetry_trade_fee_bps: number; // u16
452
+ symmetry_limit_order_fee_bps: number; // u16
453
+ bounty_mint: string;
454
+ min_bounty_for_basket_automation: number; // u64
455
+ bounty_bond_amount: number; // u64
456
+ bounty_per_task: FormattedBountySchedule;
457
+ bounty_per_price_update_task_divisor: number; // u64
458
+ min_remaining_value: number;
459
+ min_mint_ratio: number;
460
+ apr_bps_per_year: number; // u16
461
+ rebalance_intent_lifetime: number; // u64
462
+ rebalance_auction_1_timeframe: number; // u64
463
+ rebalance_auction_2_timeframe: number; // u64
464
+ rebalance_auction_3_timeframe: number; // u64
465
+ price_update_delay_after_creation: number; // u64
466
+ price_update_lifetime: number; // u64
467
+ price_update_reexecution_delay: number; // u64
468
+ }
469
+
470
+ export interface GlobalConfig {
471
+ admin: PublicKey;
472
+ owners: PublicKey[]; // [Pubkey; 3]
473
+
474
+ totalNumberOfBaskets: BN,
475
+
476
+ allowInteractions: number; // u8
477
+ allowCreation: number; // u8
478
+ allowManagement: number; // u8
479
+ allowAutomation: number; // u8
480
+ allowDeposits: number; // u8
481
+ allowWithdraws: number; // u8
482
+
483
+ maxDepositFeeBps: number; // u16
484
+ maxWithdrawFeeBps: number; // u16
485
+ maxManagementFeeBps: number; // u16
486
+ maxPerformanceFeeBps: number; // u16
487
+
488
+ symmetryFeeCollector: PublicKey;
489
+ symmetryDepositFeeBps: number; // u16
490
+ symmetryDepositFeeShareBps: number; // u16
491
+ symmetryWithdrawFeeBps: number; // u16
492
+ symmetryWithdrawFeeShareBps: number; // u16
493
+ symmetryManagementFeeBps: number; // u16
494
+ symmetryManagementFeeShareBps: number; // u16
495
+ symmetryPerformanceFeeBps: number; // u16
496
+ symmetryPerformanceFeeShareBps: number; // u16
497
+ symmetryTradeFeeBps: number; // u16
498
+ symmetryLimitOrderFeeBps: number; // u16
499
+ symmetryFeesExtraData: number[]; // 16bytes
500
+
501
+ bountyMint: PublicKey;
502
+ minBountyForBasketAutomation: BN; // u64
503
+ bountyBondAmount: BN; // u64
504
+ bountyPerTask: BountySchedule;
505
+ bountyPerPriceUpdateTaskDivisor: BN; // u64
506
+
507
+ minRemainingValue: Fraction;
508
+ minMintRatio: Fraction;
509
+
510
+ aprBpsPerYear: number; // u16
511
+ rebalanceIntentLifetime: BN; // u64
512
+ rebalanceAuction1Timeframe: BN; // u64
513
+ rebalanceAuction2Timeframe: BN; // u64
514
+ rebalanceAuction3Timeframe: BN; // u64
515
+
516
+ priceUpdateDelayAfterCreation: BN; // u64
517
+ priceUpdateLifetime: BN; // u64
518
+ priceUpdateReexecutionDelay: BN; // u64
519
+
520
+ extraData: BN[]; //8 * 32 bytes
521
+
522
+ formatted?: FormattedGlobalConfig;
523
+ }
524
+
525
+
526
+ export const GlobalConfigLayout = struct<GlobalConfig>([
527
+ publicKey('admin'),
528
+ array(publicKey(), 3, 'owners'),
529
+
530
+ u64('totalNumberOfBaskets'),
531
+
532
+ u8('allowInteractions'),
533
+ u8('allowCreation'),
534
+ u8('allowManagement'),
535
+ u8('allowAutomation'),
536
+ u8('allowDeposits'),
537
+ u8('allowWithdraws'),
538
+
539
+ u16('maxDepositFeeBps'),
540
+ u16('maxWithdrawFeeBps'),
541
+ u16('maxManagementFeeBps'),
542
+ u16('maxPerformanceFeeBps'),
543
+
544
+ publicKey('symmetryFeeCollector'),
545
+ u16('symmetryDepositFeeBps'),
546
+ u16('symmetryDepositFeeShareBps'),
547
+ u16('symmetryWithdrawFeeBps'),
548
+ u16('symmetryWithdrawFeeShareBps'),
549
+ u16('symmetryManagementFeeBps'),
550
+ u16('symmetryManagementFeeShareBps'),
551
+ u16('symmetryPerformanceFeeBps'),
552
+ u16('symmetryPerformanceFeeShareBps'),
553
+ u16('symmetryTradeFeeBps'),
554
+ u16('symmetryLimitOrderFeeBps'),
555
+ array(u8(), 16, 'symmetryFeesExtraData'),
556
+
557
+ publicKey('bountyMint'),
558
+ u64('minBountyForBasketAutomation'),
559
+ u64('bountyBondAmount'),
560
+ BountyScheduleLayout.replicate('bountyPerTask'),
561
+ u64('bountyPerPriceUpdateTaskDivisor'),
562
+
563
+ FractionLayout.replicate('minRemainingValue'),
564
+ FractionLayout.replicate('minMintRatio'),
565
+
566
+ u16('aprBpsPerYear'),
567
+ u64('rebalanceIntentLifetime'),
568
+ u64('rebalanceAuction1Timeframe'),
569
+ u64('rebalanceAuction2Timeframe'),
570
+ u64('rebalanceAuction3Timeframe'),
571
+
572
+ u64('priceUpdateDelayAfterCreation'),
573
+ u64('priceUpdateLifetime'),
574
+ u64('priceUpdateReexecutionDelay'),
575
+ array(u64(), 32, 'extraData'),
576
+ ]);