@symmetry-hq/temp-v3-sdk 0.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 (148) hide show
  1. package/dist/idl/idl.d.ts +8 -0
  2. package/dist/idl/idl.js +4958 -0
  3. package/dist/idl/types.d.ts +4955 -0
  4. package/dist/idl/types.js +2 -0
  5. package/dist/index.d.ts +24 -0
  6. package/dist/index.js +60 -0
  7. package/dist/layouts/basket.d.ts +42 -0
  8. package/dist/layouts/basket.js +43 -0
  9. package/dist/layouts/config.d.ts +97 -0
  10. package/dist/layouts/config.js +102 -0
  11. package/dist/layouts/fraction.d.ts +6 -0
  12. package/dist/layouts/fraction.js +9 -0
  13. package/dist/layouts/oracle.d.ts +36 -0
  14. package/dist/layouts/oracle.js +37 -0
  15. package/dist/src/constants.d.ts +15 -0
  16. package/dist/src/constants.js +19 -0
  17. package/dist/src/idl/idl.d.ts +8 -0
  18. package/dist/src/idl/idl.js +4958 -0
  19. package/dist/src/idl/types.d.ts +4955 -0
  20. package/dist/src/idl/types.js +2 -0
  21. package/dist/src/index.d.ts +53 -0
  22. package/dist/src/index.js +199 -0
  23. package/dist/src/instructions/accounts.d.ts +27 -0
  24. package/dist/src/instructions/accounts.js +110 -0
  25. package/dist/src/instructions/auction.d.ts +7 -0
  26. package/dist/src/instructions/auction.js +43 -0
  27. package/dist/src/instructions/automation/auction.d.ts +6 -0
  28. package/dist/src/instructions/automation/auction.js +40 -0
  29. package/dist/src/instructions/automation/claimBounty.d.ts +12 -0
  30. package/dist/src/instructions/automation/claimBounty.js +44 -0
  31. package/dist/src/instructions/automation/priceUpdate.d.ts +15 -0
  32. package/dist/src/instructions/automation/priceUpdate.js +47 -0
  33. package/dist/src/instructions/automation/rebalanceSwap.d.ts +10 -0
  34. package/dist/src/instructions/automation/rebalanceSwap.js +42 -0
  35. package/dist/src/instructions/basket.d.ts +120 -0
  36. package/dist/src/instructions/basket.js +622 -0
  37. package/dist/src/instructions/bounty.d.ts +18 -0
  38. package/dist/src/instructions/bounty.js +81 -0
  39. package/dist/src/instructions/fee.d.ts +8 -0
  40. package/dist/src/instructions/fee.js +46 -0
  41. package/dist/src/instructions/globalConfig.d.ts +11 -0
  42. package/dist/src/instructions/globalConfig.js +43 -0
  43. package/dist/src/instructions/luts.d.ts +33 -0
  44. package/dist/src/instructions/luts.js +91 -0
  45. package/dist/src/instructions/management/addBounty.d.ts +7 -0
  46. package/dist/src/instructions/management/addBounty.js +39 -0
  47. package/dist/src/instructions/management/admin.d.ts +9 -0
  48. package/dist/src/instructions/management/admin.js +43 -0
  49. package/dist/src/instructions/management/claimFees.d.ts +7 -0
  50. package/dist/src/instructions/management/claimFees.js +47 -0
  51. package/dist/src/instructions/management/createBasket.d.ts +22 -0
  52. package/dist/src/instructions/management/createBasket.js +101 -0
  53. package/dist/src/instructions/management/edit.d.ts +34 -0
  54. package/dist/src/instructions/management/edit.js +192 -0
  55. package/dist/src/instructions/management/luts.d.ts +29 -0
  56. package/dist/src/instructions/management/luts.js +88 -0
  57. package/dist/src/instructions/pda.d.ts +26 -0
  58. package/dist/src/instructions/pda.js +110 -0
  59. package/dist/src/instructions/price.d.ts +17 -0
  60. package/dist/src/instructions/price.js +47 -0
  61. package/dist/src/instructions/user/deposit.d.ts +32 -0
  62. package/dist/src/instructions/user/deposit.js +168 -0
  63. package/dist/src/instructions/user/withdraw.d.ts +16 -0
  64. package/dist/src/instructions/user/withdraw.js +82 -0
  65. package/dist/src/layouts/basket.d.ts +41 -0
  66. package/dist/src/layouts/basket.js +43 -0
  67. package/dist/src/layouts/config.d.ts +133 -0
  68. package/dist/src/layouts/config.js +137 -0
  69. package/dist/src/layouts/fraction.d.ts +6 -0
  70. package/dist/src/layouts/fraction.js +9 -0
  71. package/dist/src/layouts/intents/bounty.d.ts +18 -0
  72. package/dist/src/layouts/intents/bounty.js +19 -0
  73. package/dist/src/layouts/intents/intent.d.ts +101 -0
  74. package/dist/src/layouts/intents/intent.js +113 -0
  75. package/dist/src/layouts/intents/rebalanceIntent.d.ts +56 -0
  76. package/dist/src/layouts/intents/rebalanceIntent.js +63 -0
  77. package/dist/src/layouts/lookupTable.d.ts +7 -0
  78. package/dist/src/layouts/lookupTable.js +10 -0
  79. package/dist/src/layouts/oracle.d.ts +42 -0
  80. package/dist/src/layouts/oracle.js +43 -0
  81. package/dist/src/states/basket.d.ts +8 -0
  82. package/dist/src/states/basket.js +54 -0
  83. package/dist/src/states/intents/intent.d.ts +14 -0
  84. package/dist/src/states/intents/intent.js +90 -0
  85. package/dist/src/states/intents/rebalanceIntent.d.ts +8 -0
  86. package/dist/src/states/intents/rebalanceIntent.js +54 -0
  87. package/dist/src/states/oracles/clmm_oracle.d.ts +178 -0
  88. package/dist/src/states/oracles/clmm_oracle.js +546 -0
  89. package/dist/src/states/oracles/constants.d.ts +8 -0
  90. package/dist/src/states/oracles/constants.js +12 -0
  91. package/dist/src/states/oracles/oracle.d.ts +60 -0
  92. package/dist/src/states/oracles/oracle.js +237 -0
  93. package/dist/src/states/oracles/pythOracle.d.ts +39 -0
  94. package/dist/src/states/oracles/pythOracle.js +202 -0
  95. package/dist/src/states/oracles/pyth_oracle.d.ts +39 -0
  96. package/dist/src/states/oracles/pyth_oracle.js +202 -0
  97. package/dist/src/states/oracles/raydiumClmmOracle.d.ts +178 -0
  98. package/dist/src/states/oracles/raydiumClmmOracle.js +546 -0
  99. package/dist/src/states/oracles/raydiumCpmmOracle.d.ts +139 -0
  100. package/dist/src/states/oracles/raydiumCpmmOracle.js +420 -0
  101. package/dist/src/states/oracles/raydium_cpmm_oracle.d.ts +139 -0
  102. package/dist/src/states/oracles/raydium_cpmm_oracle.js +420 -0
  103. package/dist/src/states/oracles/switchboardOracle.d.ts +0 -0
  104. package/dist/src/states/oracles/switchboardOracle.js +1 -0
  105. package/dist/src/states/oracles/switchboard_oracle.d.ts +0 -0
  106. package/dist/src/states/oracles/switchboard_oracle.js +1 -0
  107. package/dist/src/txUtils.d.ts +26 -0
  108. package/dist/src/txUtils.js +183 -0
  109. package/dist/states/basket.d.ts +8 -0
  110. package/dist/states/basket.js +57 -0
  111. package/dist/test.d.ts +1 -0
  112. package/dist/test.js +39 -0
  113. package/package.json +30 -0
  114. package/src/constants.ts +24 -0
  115. package/src/index.ts +260 -0
  116. package/src/instructions/automation/auction.ts +55 -0
  117. package/src/instructions/automation/claimBounty.ts +69 -0
  118. package/src/instructions/automation/priceUpdate.ts +73 -0
  119. package/src/instructions/automation/rebalanceSwap.ts +60 -0
  120. package/src/instructions/management/addBounty.ts +56 -0
  121. package/src/instructions/management/admin.ts +65 -0
  122. package/src/instructions/management/claimFees.ts +59 -0
  123. package/src/instructions/management/createBasket.ts +148 -0
  124. package/src/instructions/management/edit.ts +255 -0
  125. package/src/instructions/management/luts.ts +134 -0
  126. package/src/instructions/pda.ts +160 -0
  127. package/src/instructions/user/deposit.ts +237 -0
  128. package/src/instructions/user/withdraw.ts +130 -0
  129. package/src/layouts/basket.ts +82 -0
  130. package/src/layouts/config.ts +301 -0
  131. package/src/layouts/fraction.ts +12 -0
  132. package/src/layouts/intents/bounty.ts +35 -0
  133. package/src/layouts/intents/intent.ts +204 -0
  134. package/src/layouts/intents/rebalanceIntent.ts +111 -0
  135. package/src/layouts/lookupTable.ts +14 -0
  136. package/src/layouts/oracle.ts +96 -0
  137. package/src/states/basket.ts +56 -0
  138. package/src/states/intents/intent.ts +107 -0
  139. package/src/states/intents/rebalanceIntent.ts +57 -0
  140. package/src/states/oracles/constants.ts +13 -0
  141. package/src/states/oracles/oracle.ts +260 -0
  142. package/src/states/oracles/pythOracle.ts +270 -0
  143. package/src/states/oracles/raydiumClmmOracle.ts +812 -0
  144. package/src/states/oracles/raydiumCpmmOracle.ts +614 -0
  145. package/src/states/oracles/switchboardOracle.ts +0 -0
  146. package/src/txUtils.ts +250 -0
  147. package/test.ts +30 -0
  148. package/tsconfig.json +101 -0
@@ -0,0 +1,82 @@
1
+
2
+ import { BN } from "@coral-xyz/anchor";
3
+ import { PublicKey } from "@solana/web3.js";
4
+ import { array, publicKey, str, struct, u128, u16, u64, u8 } from '@coral-xyz/borsh';
5
+ import { OracleAggregator, OracleAggregatorLayout } from "./oracle";
6
+ import { Fraction, FractionLayout } from "./fraction";
7
+ import { BasketSettings, BasketSettingsLayout } from "./config";
8
+
9
+ export const MAX_SUPPORTED_TOKENS_PER_BASKET: number = 100;
10
+
11
+ export interface BasketFees {
12
+ symmetryFees: BN; // u64
13
+ creatorFees: BN; // u64
14
+ hostFees: BN; // u64
15
+ managersFees: BN; // u64
16
+ };
17
+
18
+ export const BasketFeesLayout = struct<BasketFees>([
19
+ u64("symmetryFees"),
20
+ u64("creatorFees"),
21
+ u64("hostFees"),
22
+ u64("managersFees"),
23
+ ]);
24
+
25
+ export interface LookupTables {
26
+ active: PublicKey[]; // length 2
27
+ temp: PublicKey[]; // length 2
28
+ };
29
+
30
+ export const LookupTablesLayout = struct<LookupTables>([
31
+ array(publicKey(), 2, "active"),
32
+ array(publicKey(), 2, "temp"),
33
+ ]);
34
+
35
+ export interface Asset {
36
+ mint: PublicKey;
37
+ amount: BN; // u64
38
+ weight: number; // u16
39
+ oracleAggregator: OracleAggregator;
40
+ };
41
+
42
+ export const AssetLayout = struct<Asset>([
43
+ publicKey('mint'),
44
+ u64('amount'),
45
+ u16('weight'),
46
+ OracleAggregatorLayout.replicate('oracleAggregator'),
47
+ ]);
48
+
49
+ export interface Basket {
50
+ version: number; // u8
51
+ seedArray: number[]; // length 16
52
+ ownAddress: PublicKey;
53
+ mint: PublicKey;
54
+ supplyOutstanding: BN; // u64
55
+
56
+ highWaterMark: Fraction;
57
+ bountyBalance: BN; // u64
58
+
59
+ settings: BasketSettings;
60
+ accumulatedFees: BasketFees;
61
+ lookupTables: LookupTables;
62
+
63
+ writeVersion: BN; // u64
64
+ numTokens: number; // u8
65
+ composition: Asset[]; // length MAX_SUPPORTED_TOKENS_PER_BASKET
66
+ };
67
+
68
+ export const BasketLayout = struct<Basket>([
69
+ u8('version'),
70
+ array(u8(), 16, 'seedArray'),
71
+ publicKey('ownAddress'),
72
+ publicKey('mint'),
73
+ u64('supplyOutstanding'),
74
+ FractionLayout.replicate('highWaterMark'),
75
+ u64('bountyBalance'),
76
+ BasketSettingsLayout.replicate('settings'),
77
+ BasketFeesLayout.replicate('accumulatedFees'),
78
+ LookupTablesLayout.replicate('lookupTables'),
79
+ u64('writeVersion'),
80
+ u8('numTokens'),
81
+ array(AssetLayout, MAX_SUPPORTED_TOKENS_PER_BASKET, 'composition'),
82
+ ]);
@@ -0,0 +1,301 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ import { array, publicKey, str, struct, u128, u16, u64, u8 } from '@coral-xyz/borsh';
3
+ import { Fraction, FractionLayout } from "./fraction";
4
+ import { BN } from "@coral-xyz/anchor";
5
+ import { BountySchedule, BountyScheduleLayout } from "./intents/bounty";
6
+
7
+ export const MAX_MANAGERS_PER_BASKET = 10;
8
+ export const MAX_SYMBOL_LENGTH = 10;
9
+ export const MAX_NAME_LENGTH = 32;
10
+ export const MAX_URI_LENGTH = 200;
11
+
12
+ export enum BasketType {
13
+ Private = 0,
14
+ Public = 1,
15
+ };
16
+
17
+ export const BasketTypeLayout = struct<BasketType>([
18
+ u8('basketType'),
19
+ ]);
20
+
21
+ export interface ScheduleSettings {
22
+ cycleDuration: BN; // u64
23
+ depositsStart: BN; // u64
24
+ depositsEnd: BN; // u64
25
+ automationStart: BN; // u64
26
+ automationEnd: BN; // u64
27
+ managementStart: BN; // u64
28
+ managementEnd: BN; // u64
29
+ modificationDelay: BN; // u64
30
+ };
31
+
32
+ export const ScheduleSettingsLayout = struct<ScheduleSettings>([
33
+ u64('cycleDuration'),
34
+ u64('depositsStart'),
35
+ u64('depositsEnd'),
36
+ u64('automationStart'),
37
+ u64('automationEnd'),
38
+ u64('managementStart'),
39
+ u64('managementEnd'),
40
+ u64('modificationDelay'),
41
+ ]);
42
+
43
+ export interface FeeSettings {
44
+ hostDepositFeeBps: number;
45
+ hostManagementFeeBps: number;
46
+ hostPerformanceFeeBps: number;
47
+ creatorDepositFeeBps: number;
48
+ creatorManagementFeeBps: number;
49
+ creatorPerformanceFeeBps: number;
50
+ managersDepositFeeBps: number;
51
+ managersManagementFeeBps: number;
52
+ managersPerformanceFeeBps: number;
53
+ basketDepositFeeBps: number;
54
+ basketWithdrawFeeBps: number;
55
+ modificationDelay: BN; // u64 -> BN
56
+ };
57
+
58
+ export const FeeSettingsLayout = struct<FeeSettings>([
59
+ u16('hostDepositFeeBps'),
60
+ u16('hostManagementFeeBps'),
61
+ u16('hostPerformanceFeeBps'),
62
+ u16('creatorDepositFeeBps'),
63
+ u16('creatorManagementFeeBps'),
64
+ u16('creatorPerformanceFeeBps'),
65
+ u16('managersDepositFeeBps'),
66
+ u16('managersManagementFeeBps'),
67
+ u16('managersPerformanceFeeBps'),
68
+ u16('basketDepositFeeBps'),
69
+ u16('basketWithdrawFeeBps'),
70
+ u64('modificationDelay'),
71
+ ]);
72
+
73
+ export interface ManagerSettings {
74
+ managers: PublicKey[]; // [Pubkey; 10]
75
+ managersWeightBps: number[]; //[u16; 10]
76
+ modificationDelay: BN; // u64
77
+ }
78
+
79
+ export const ManagerSettingsLayout = struct<ManagerSettings>([
80
+ array(publicKey(), MAX_MANAGERS_PER_BASKET, 'managers'),
81
+ array(u16(), MAX_MANAGERS_PER_BASKET, 'managersWeightBps'),
82
+ u64('modificationDelay'),
83
+ ])
84
+
85
+ export interface AutomationSettings {
86
+ allowAutomation: number; // u8
87
+ rebalanceSlippageBps: number; // u16
88
+ rebalanceThresholdBps: number; // u16
89
+ rebalanceIntervalSeconds: BN; // u64 -> BN
90
+ modificationDelay: BN; // u64 -> BN
91
+ };
92
+
93
+ export const AutomationSettingsLayout = struct<AutomationSettings>([
94
+ u8('allowAutomation'),
95
+ u16('rebalanceSlippageBps'),
96
+ u16('rebalanceThresholdBps'),
97
+ u64('rebalanceIntervalSeconds'),
98
+ u64('modificationDelay'),
99
+ ]);
100
+
101
+ export interface LpSettings {
102
+ lpThresholdBps: number; // u16
103
+ allowLp: number; // u8
104
+ modificationDelay: BN; // u64 -> BN
105
+ };
106
+
107
+ export const LpSettingsLayout = struct<LpSettings>([
108
+ u16('lpThresholdBps'),
109
+ u8('allowLp'),
110
+ u64('modificationDelay'),
111
+ ]);
112
+
113
+ export interface MetadataSettings {
114
+ symbolLength: number; // u8
115
+ symbol: number[]; // [u8; MAX_SYMBOL_LENGTH]
116
+ nameLength: number; // u8
117
+ name: number[]; // [u8; MAX_NAME_LENGTH]
118
+ uriLength: number; // u8
119
+ uri: number[]; // [u8; MAX_URI_LENGTH]
120
+ modificationDelay: BN; // u64
121
+ };
122
+
123
+ export const MetadataSettingsLayout = struct<MetadataSettings>([
124
+ u8('symbolLength'),
125
+ array(u8(), MAX_SYMBOL_LENGTH, 'symbol'),
126
+ u8('nameLength'),
127
+ array(u8(), MAX_NAME_LENGTH, 'name'),
128
+ u8('uriLength'),
129
+ array(u8(), MAX_URI_LENGTH, 'uri'),
130
+ u64('modificationDelay'),
131
+ ]);
132
+
133
+ export interface BasketSettings {
134
+ creator: PublicKey;
135
+ host: PublicKey;
136
+
137
+ basketType: BasketType;
138
+ startPrice: Fraction;
139
+
140
+ activeRebalance: BN;
141
+ activeDeposits: BN;
142
+ activeManagements: BN;
143
+
144
+ schedule: ScheduleSettings;
145
+ scheduleAuthorityBitmask: number; // u16
146
+
147
+ feeSettings: FeeSettings;
148
+ feeSettingsAuthorityBitmask: number; // u16
149
+
150
+ managerSettings: ManagerSettings;
151
+ managerSettingsAuthorityBitmask: number; // u16
152
+
153
+ automationSettings: AutomationSettings;
154
+ automationSettingsAuthorityBitmask: number; // u16
155
+
156
+ lpSettings: LpSettings;
157
+ lpSettingsAuthorityBitmask: number; // u16
158
+
159
+ metadataSettings: MetadataSettings;
160
+ metadataSettingsAuthorityBitmask: number; // u16
161
+
162
+ addTokenDelay: BN; // u64
163
+ addTokenIntentAuthorityBitmask: number; // u16
164
+
165
+ updateWeightsDelay: BN; // u64
166
+ updateWeightsIntentAuthorityBitmask: number; // u16
167
+
168
+ makeDirectSwapDelay: BN; // u64
169
+ makeDirectSwapIntentAuthorityBitmask: number; // u16
170
+
171
+ extraData: BN[]; // [u64; 32]
172
+ };
173
+
174
+ export const BasketSettingsLayout = struct<BasketSettings>([
175
+ publicKey('creator'),
176
+ publicKey('host'),
177
+
178
+ BasketTypeLayout.replicate('basketType'),
179
+ FractionLayout.replicate('startPrice'),
180
+
181
+ u64('activeRebalance'),
182
+ u64('activeDeposits'),
183
+ u64('activeManagements'),
184
+
185
+ ScheduleSettingsLayout.replicate('schedule'),
186
+ u16('scheduleAuthorityBitmask'),
187
+
188
+ FeeSettingsLayout.replicate('feeSettings'),
189
+ u16('feeSettingsAuthorityBitmask'),
190
+
191
+ ManagerSettingsLayout.replicate('managerSettings'),
192
+ u16('managerSettingsAuthorityBitmask'),
193
+
194
+ AutomationSettingsLayout.replicate('automationSettings'),
195
+ u16('automationSettingsAuthorityBitmask'),
196
+
197
+ LpSettingsLayout.replicate('lpSettings'),
198
+ u16('lpSettingsAuthorityBitmask'),
199
+
200
+ MetadataSettingsLayout.replicate('metadataSettings'),
201
+ u16('metadataSettingsAuthorityBitmask'),
202
+
203
+ u64('addTokenDelay'),
204
+ u16('addTokenIntentAuthorityBitmask'),
205
+
206
+ u64('updateWeightsDelay'),
207
+ u16('updateWeightsIntentAuthorityBitmask'),
208
+
209
+ u64('makeDirectSwapDelay'),
210
+ u16('makeDirectSwapIntentAuthorityBitmask'),
211
+
212
+ array(u64(), 32, 'extraData'),
213
+ ]);
214
+
215
+
216
+
217
+
218
+ export interface GlobalConfig {
219
+ admin: PublicKey;
220
+ owners: PublicKey[]; // [Pubkey; 3]
221
+
222
+ allowCreation: number; // u8
223
+ allowManagement: number; // u8
224
+ allowAutomation: number; // u8
225
+ allowDeposits: number; // u8
226
+ allowWithdraws: number; // u8
227
+
228
+ maxDepositFeeBps: number; // u16
229
+ maxWithdrawFeeBps: number; // u16
230
+ maxManagementFeeBps: number; // u16
231
+ maxPerformanceFeeBps: number; // u16
232
+
233
+ symmetryFeeCollector: PublicKey;
234
+ symmetryDepositFeeBps: number; // u16
235
+ symmetryWithdrawFeeBps: number; // u16
236
+ symmetryRebalanceFeeBps: number; // u16
237
+ symmetryManagementFeeBps: number; // u16
238
+ symmetryPerformanceFeeBps: number; // u16
239
+
240
+ bountyMint: PublicKey;
241
+ minBountyForBasketAutomation: BN; // u64
242
+ bountyBondAmount: BN; // u64
243
+ bountyPerPriceUpdateTask: BountySchedule;
244
+ bountyPerTask: BountySchedule;
245
+
246
+ aprBpsPerYear: number; // u16
247
+ rebalanceIntentLifetime: BN; // u64
248
+
249
+ depositTimeframe: BN; // u64
250
+ priceUpdateTimeframe: BN; // u64
251
+ rebalanceAuction1Timeframe: BN; // u64
252
+ rebalanceAuction2Timeframe: BN; // u64
253
+ rebalanceAuction3Timeframe: BN; // u64
254
+
255
+ priceUpdateDelayAfterCreation: BN; // u64
256
+ priceUpdateLifetime: BN; // u64
257
+ priceUpdateReexecutionDelay: BN; // u64
258
+ }
259
+
260
+
261
+ export const GlobalConfigLayout = struct<GlobalConfig>([
262
+ publicKey('admin'),
263
+ array(publicKey(), 3, 'owners'),
264
+
265
+ u8('allowCreation'),
266
+ u8('allowManagement'),
267
+ u8('allowAutomation'),
268
+ u8('allowDeposits'),
269
+ u8('allowWithdraws'),
270
+
271
+ u16('maxDepositFeeBps'),
272
+ u16('maxWithdrawFeeBps'),
273
+ u16('maxManagementFeeBps'),
274
+ u16('maxPerformanceFeeBps'),
275
+
276
+ publicKey('symmetryFeeCollector'),
277
+ u16('symmetryDepositFeeBps'),
278
+ u16('symmetryWithdrawFeeBps'),
279
+ u16('symmetryRebalanceFeeBps'),
280
+ u16('symmetryManagementFeeBps'),
281
+ u16('symmetryPerformanceFeeBps'),
282
+
283
+ publicKey('bountyMint'),
284
+ u64('minBountyForBasketAutomation'),
285
+ u64('bountyBondAmount'),
286
+ BountyScheduleLayout.replicate('bountyPerPriceUpdateTask'),
287
+ BountyScheduleLayout.replicate('bountyPerTask'),
288
+
289
+ u16('aprBpsPerYear'),
290
+ u64('rebalanceIntentLifetime'),
291
+
292
+ u64('depositTimeframe'),
293
+ u64('priceUpdateTimeframe'),
294
+ u64('rebalanceAuction1Timeframe'),
295
+ u64('rebalanceAuction2Timeframe'),
296
+ u64('rebalanceAuction3Timeframe'),
297
+
298
+ u64('priceUpdateDelayAfterCreation'),
299
+ u64('priceUpdateLifetime'),
300
+ u64('priceUpdateReexecutionDelay'),
301
+ ]);
@@ -0,0 +1,12 @@
1
+ import { BN } from "@coral-xyz/anchor";
2
+ import { array, publicKey, str, struct, u128, u16, u64, u8 } from '@coral-xyz/borsh';
3
+
4
+ export interface Fraction {
5
+ numerator: BN; // u64 -> BN
6
+ exponent: BN; // u64 -> BN
7
+ };
8
+
9
+ export const FractionLayout = struct<Fraction>([
10
+ u64('numerator'),
11
+ u64('exponent'),
12
+ ]);
@@ -0,0 +1,35 @@
1
+ import { BN } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { array, publicKey, str, struct, u128, u16, u64, u8 } from '@coral-xyz/borsh';
4
+
5
+ export interface BountySchedule {
6
+ minBounty: BN; // u64
7
+ maxBounty: BN; // u64
8
+ minBountyUntil: BN; // u64
9
+ maxBountyAfter: BN; // u64
10
+ };
11
+
12
+ export const BountyScheduleLayout = struct<BountySchedule>([
13
+ u64('minBounty'),
14
+ u64('maxBounty'),
15
+ u64('minBountyUntil'),
16
+ u64('maxBountyAfter'),
17
+ ]);
18
+
19
+ export interface Bounty {
20
+ bountyDepositor: PublicKey;
21
+ bountyMint: PublicKey;
22
+ bountyTotal: BN; // u64
23
+ bountyLeft: BN; // u64
24
+ bountyPerPriceUpdateTask: BountySchedule;
25
+ bountyPerTask: BountySchedule;
26
+ }
27
+
28
+ export const BountyLayout = struct<Bounty>([
29
+ publicKey('bountyDepositor'),
30
+ publicKey('bountyMint'),
31
+ u64('bountyTotal'),
32
+ u64('bountyLeft'),
33
+ BountyScheduleLayout.replicate('bountyPerPriceUpdateTask'),
34
+ BountyScheduleLayout.replicate('bountyPerTask')
35
+ ]);
@@ -0,0 +1,204 @@
1
+ import { BN } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { array, publicKey, str, struct, u128, u16, u64, u8 } from '@coral-xyz/borsh';
4
+ import { Bounty, BountyLayout } from "./bounty";
5
+ import { AutomationSettings, FeeSettings, LpSettings, ManagerSettings, ManagerSettingsLayout, MetadataSettings, ScheduleSettings } from "../config";
6
+ import { OracleAggregator } from "../../states/oracles/oracle";
7
+ import { OracleAggregatorLayout } from "../oracle";
8
+
9
+ export const INTENT_TASK_DATA_SIZE = 600;
10
+
11
+ export enum IntentStatus {
12
+ NotActive,
13
+ Active,
14
+ Reverted,
15
+ Completed,
16
+ };
17
+
18
+ export interface ParsedIntent {
19
+ manager: PublicKey;
20
+ status : IntentStatus;
21
+ activationTimestamp: BN; // u64
22
+ basket: PublicKey;
23
+ bounty: Bounty;
24
+ taskType: TaskType;
25
+ taskData: EditData;
26
+ };
27
+
28
+ export interface Intent {
29
+ manager: PublicKey;
30
+ status : IntentStatus;
31
+ activationTimestamp: BN; // u64
32
+ basket: PublicKey;
33
+ bounty: Bounty;
34
+ taskType: TaskType;
35
+ taskData: number[]; // length of 600
36
+ };
37
+
38
+ export const IntentLayout = struct<Intent>([
39
+ publicKey('manager'),
40
+ u8('status'),
41
+ u64('activationTimestamp'),
42
+ publicKey('basket'),
43
+ BountyLayout.replicate('bounty'),
44
+ u8('taskType'),
45
+ array(u8(), INTENT_TASK_DATA_SIZE, 'taskData'),
46
+ ]);
47
+
48
+ export interface HostFees {
49
+ hostDepositFeeBps: number;
50
+ hostManagementFeeBps: number;
51
+ hostPerformanceFeeBps: number;
52
+ }
53
+
54
+ export const HostFeesLayout = struct<HostFees>([
55
+ u16('hostDepositFeeBps'),
56
+ u16('hostManagementFeeBps'),
57
+ u16('hostPerformanceFeeBps'),
58
+ ]);
59
+
60
+
61
+ export interface MetadataParams {
62
+ name: string;
63
+ symbol: string;
64
+ uri: string;
65
+ };
66
+
67
+ export const MetadataParamsLayout = struct([
68
+ str("name"),
69
+ str("symbol"),
70
+ str("uri"),
71
+ ]);
72
+
73
+
74
+ export enum TaskType {
75
+ Unknown = 0,
76
+
77
+ EditSchedule = 1,
78
+ EditFeeSettings = 2,
79
+ EditManagerSettings = 3,
80
+ EditAutomationSettings = 4,
81
+ EditLpSettings = 5,
82
+ EditMetadataSettings = 6,
83
+
84
+ EditAddTokenDelay = 7,
85
+ EditUpdateWeightsDelay = 8,
86
+
87
+ AddToken = 9,
88
+ UpdateWeights = 10,
89
+ Swap = 11,
90
+ }
91
+
92
+ export function taskTypeFromU8(value: number): TaskType {
93
+ switch (value) {
94
+ case 1: return TaskType.EditSchedule;
95
+ case 2: return TaskType.EditFeeSettings;
96
+ case 3: return TaskType.EditManagerSettings;
97
+ case 4: return TaskType.EditAutomationSettings;
98
+ case 5: return TaskType.EditLpSettings;
99
+ case 6: return TaskType.EditMetadataSettings;
100
+ case 7: return TaskType.EditAddTokenDelay;
101
+ case 8: return TaskType.EditUpdateWeightsDelay;
102
+ case 9: return TaskType.AddToken;
103
+ case 10: return TaskType.UpdateWeights;
104
+ case 11: return TaskType.Swap;
105
+ default: return TaskType.Unknown;
106
+ }
107
+ };
108
+
109
+ export interface AuthorityBitmasks{
110
+ scheduleAuthorityBitmask: number; // u16
111
+ feeSettingsAuthorityBitmask: number; // u16
112
+ managerSettingsAuthorityBitmask: number; // u16
113
+ automationSettingsAuthorityBitmask: number; // u16
114
+ lpSettingsAuthorityBitmask: number; // u16
115
+ metadataSettingsAuthorityBitmask: number; // u16
116
+ addTokenIntentAuthorityBitmask: number; // u16
117
+ updateWeightsIntentAuthorityBitmask: number; // u16
118
+ makeDirectSwapIntentAuthorityBitmask: number; // u16
119
+ };
120
+
121
+ export const AuthorityBitmasksLayout = struct<AuthorityBitmasks>([
122
+ u16('scheduleAuthorityBitmask'),
123
+ u16('feeSettingsAuthorityBitmask'),
124
+ u16('managerSettingsAuthorityBitmask'),
125
+ u16('automationSettingsAuthorityBitmask'),
126
+ u16('lpSettingsAuthorityBitmask'),
127
+ u16('metadataSettingsAuthorityBitmask'),
128
+ u16('addTokenIntentAuthorityBitmask'),
129
+ u16('updateWeightsIntentAuthorityBitmask'),
130
+ u16('makeDirectSwapIntentAuthorityBitmask'),
131
+ ]);
132
+
133
+ export interface ManagerSettingsWithAuthorityBitmasks{
134
+ managerSettings: ManagerSettings;
135
+ authorityBitmasks: AuthorityBitmasks;
136
+ };
137
+
138
+ export const ManagerSettingsWithAuthorityBitmasksLayout = struct<ManagerSettingsWithAuthorityBitmasks>([
139
+ ManagerSettingsLayout.replicate('managerSettings'),
140
+ AuthorityBitmasksLayout.replicate('authorityBitmasks'),
141
+ ]);
142
+
143
+ export interface AddTokenDelay{
144
+ delay: BN; // u64
145
+ };
146
+
147
+ export const AddTokenDelayLayout = struct<AddTokenDelay>([
148
+ u64('delay'),
149
+ ]);
150
+
151
+ export interface UpdateWeightsDelay{
152
+ delay: BN; // u64
153
+ };
154
+
155
+ export const UpdateWeightsDelayLayout = struct<UpdateWeightsDelay>([
156
+ u64('delay'),
157
+ ]);
158
+
159
+ export interface AddToken{
160
+ oracleAggregator: OracleAggregator;
161
+ tokenMint: PublicKey;
162
+ oracleAccounts: PublicKey[];
163
+ };
164
+
165
+ export const AddTokenLayout = struct<AddToken>([
166
+ OracleAggregatorLayout.replicate('oracleAggregator'),
167
+ publicKey('tokenMint'),
168
+ array(publicKey(), 4, 'oracleAccounts'),
169
+ ]);
170
+
171
+ export interface UpdateWeights{
172
+ tokenWeights: number[]; // [u16; 100]
173
+ writeVersion: BN; // u64
174
+ };
175
+
176
+ export const UpdateWeightsLayout = struct<UpdateWeights>([
177
+ array(u16(), 100, 'tokenWeights'),
178
+ u64('writeVersion'),
179
+ ]);
180
+
181
+ export interface Swap {
182
+ fromTokenMint: PublicKey;
183
+ toTokenMint: PublicKey;
184
+ amountFrom: BN; // u64
185
+ };
186
+ export const SwapLayout = struct<Swap>([
187
+ publicKey('fromTokenMint'),
188
+ publicKey('toTokenMint'),
189
+ u64('amountFrom'),
190
+ ]);
191
+
192
+ export type EditData =
193
+ ScheduleSettings |
194
+ FeeSettings |
195
+ ManagerSettingsWithAuthorityBitmasks |
196
+ AutomationSettings |
197
+ LpSettings |
198
+ MetadataSettings |
199
+ AddTokenDelay |
200
+ UpdateWeightsDelay |
201
+ AddToken |
202
+ UpdateWeights |
203
+ Swap;
204
+