@exponent-labs/exponent-types 0.1.4 → 0.1.6

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.
@@ -32,6 +32,18 @@ export type InterfaceTypeGeneric = {
32
32
  };
33
33
  } | {
34
34
  hyloLpToken: Record<string, never>;
35
+ } | {
36
+ jupiterLend: {
37
+ padding: number[];
38
+ };
39
+ } | {
40
+ kaminoVault: {
41
+ padding: number[];
42
+ };
43
+ } | {
44
+ solstice: {
45
+ padding: number[];
46
+ };
35
47
  };
36
48
  export type InterfaceTypeGenericJson = {
37
49
  pyth: {
@@ -46,7 +58,72 @@ export type InterfaceTypeGenericJson = {
46
58
  fragmetric: Record<string, never>;
47
59
  } | {
48
60
  meteora: Record<string, never>;
61
+ } | {
62
+ fragmetricSupportedAsset: Record<string, never>;
63
+ } | {
64
+ sanctum: Record<string, never>;
65
+ } | {
66
+ jupiterPerps: {
67
+ lastFeeUsdResetUnixTimestamp: string;
68
+ lastRealizedFeeUsd: string;
69
+ lastAumUsd: string;
70
+ lastRealizedFeeUsdUpdateUnixTimestamp: string;
71
+ };
72
+ } | {
73
+ adrena: {
74
+ previousTotalFees: string;
75
+ };
76
+ } | {
77
+ hyloLpToken: Record<string, never>;
78
+ } | {
79
+ jupiterLend: {
80
+ padding: number[];
81
+ };
82
+ } | {
83
+ kaminoVault: {
84
+ padding: number[];
85
+ };
86
+ } | {
87
+ solstice: {
88
+ padding: number[];
89
+ };
49
90
  };
91
+ /** Additional data that different interface types may need */
92
+ export interface AdditionalDataGeneric {
93
+ fragmetricData?: {
94
+ receiptTokenMint: web3.PublicKey;
95
+ wrappedTokenMint: web3.PublicKey;
96
+ };
97
+ jupiterLendData?: {
98
+ baseTokenMint: web3.PublicKey;
99
+ tokenReservesLiquidity: web3.PublicKey;
100
+ lendingSupplyPosition: web3.PublicKey;
101
+ rewardsRateModel: web3.PublicKey;
102
+ rateModel: web3.PublicKey;
103
+ };
104
+ kaminoVaultData?: {
105
+ vault: web3.PublicKey;
106
+ reserves: {
107
+ reserveAddress: web3.PublicKey;
108
+ marketAddress: web3.PublicKey;
109
+ }[];
110
+ tokenVault: web3.PublicKey;
111
+ tokenMint: web3.PublicKey;
112
+ baseVaultAuthority: web3.PublicKey;
113
+ sharesMint: web3.PublicKey;
114
+ };
115
+ }
116
+ /** JSON version of additional data */
117
+ export interface AdditionalDataGenericJson {
118
+ fragmetricData?: {
119
+ receiptTokenMint: string;
120
+ wrappedTokenMint: string;
121
+ };
122
+ jupiterLendData?: {
123
+ baseTokenMint: string;
124
+ tokenReservesLiquidity: string;
125
+ };
126
+ }
50
127
  export interface Hook {
51
128
  enabled: boolean;
52
129
  interfaceEmissionsAccountsUntil: number;
@@ -66,16 +143,15 @@ export interface GenericSyState {
66
143
  account: GenericSyMetaAccount;
67
144
  tokenProgramBase: web3.PublicKey;
68
145
  syRate: number;
69
- fragmetricData?: {
70
- receiptTokenMint: web3.PublicKey;
71
- wrappedTokenMint: web3.PublicKey;
72
- };
146
+ additionalData?: AdditionalDataGeneric;
73
147
  }
74
148
  export interface GenericSyStateJson {
75
149
  selfAddress: string;
76
150
  account: GenericSyMetaAccountJson;
77
151
  tokenProgramBase: string;
78
152
  syRate: number;
153
+ additionalData?: AdditionalDataGenericJson;
154
+ /** @deprecated Use additionalData.fragmetricData instead */
79
155
  fragmetricData?: {
80
156
  receiptTokenMint: string;
81
157
  wrappedTokenMint: string;
@@ -126,3 +202,12 @@ export declare function deserializeGenericSyMetaAccountRaw(raw: GenericSyMetaAcc
126
202
  export declare function toInterfaceTypeGenericJson(interfaceType: InterfaceTypeGeneric): InterfaceTypeGenericJson;
127
203
  /** Convert InterfaceTypeGenericJson to InterfaceTypeGeneric */
128
204
  export declare function fromInterfaceTypeGenericJson(json: InterfaceTypeGenericJson): InterfaceTypeGeneric;
205
+ /** Convert AdditionalDataGeneric to AdditionalDataGenericJson */
206
+ export declare function toAdditionalDataGenericJson(additionalData: AdditionalDataGeneric): AdditionalDataGenericJson;
207
+ /** Convert AdditionalDataGenericJson to AdditionalDataGeneric */
208
+ export declare function fromAdditionalDataGenericJson(json: AdditionalDataGenericJson): AdditionalDataGeneric;
209
+ /** Helper function to extract fragmetric data from additional data */
210
+ export declare function getFragmetricDataFromAdditionalData(additionalData?: AdditionalDataGeneric): {
211
+ receiptTokenMint: web3.PublicKey;
212
+ wrappedTokenMint: web3.PublicKey;
213
+ } | undefined;
package/build/generic.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fromInterfaceTypeGenericJson = exports.toInterfaceTypeGenericJson = exports.deserializeGenericSyMetaAccountRaw = void 0;
3
+ exports.getFragmetricDataFromAdditionalData = exports.fromAdditionalDataGenericJson = exports.toAdditionalDataGenericJson = exports.fromInterfaceTypeGenericJson = exports.toInterfaceTypeGenericJson = exports.deserializeGenericSyMetaAccountRaw = void 0;
4
4
  const anchor_1 = require("@coral-xyz/anchor");
5
5
  function deserializeGenericSyMetaAccountRaw(raw) {
6
6
  return {
@@ -34,6 +34,37 @@ function toInterfaceTypeGenericJson(interfaceType) {
34
34
  },
35
35
  };
36
36
  }
37
+ if ("jupiterPerps" in interfaceType) {
38
+ return {
39
+ jupiterPerps: {
40
+ lastFeeUsdResetUnixTimestamp: interfaceType.jupiterPerps.lastFeeUsdResetUnixTimestamp.toString(),
41
+ lastRealizedFeeUsd: interfaceType.jupiterPerps.lastRealizedFeeUsd.toString(),
42
+ lastAumUsd: interfaceType.jupiterPerps.lastAumUsd.toString(),
43
+ lastRealizedFeeUsdUpdateUnixTimestamp: interfaceType.jupiterPerps.lastRealizedFeeUsdUpdateUnixTimestamp.toString(),
44
+ },
45
+ };
46
+ }
47
+ if ("adrena" in interfaceType) {
48
+ return {
49
+ adrena: {
50
+ previousTotalFees: interfaceType.adrena.previousTotalFees.toString(),
51
+ },
52
+ };
53
+ }
54
+ if ("jupiterLend" in interfaceType) {
55
+ return {
56
+ jupiterLend: {
57
+ padding: interfaceType.jupiterLend.padding,
58
+ },
59
+ };
60
+ }
61
+ if ("kaminoVault" in interfaceType) {
62
+ return {
63
+ kaminoVault: {
64
+ padding: interfaceType.kaminoVault.padding,
65
+ },
66
+ };
67
+ }
37
68
  return interfaceType;
38
69
  }
39
70
  exports.toInterfaceTypeGenericJson = toInterfaceTypeGenericJson;
@@ -47,7 +78,69 @@ function fromInterfaceTypeGenericJson(json) {
47
78
  },
48
79
  };
49
80
  }
81
+ if ("jupiterPerps" in json) {
82
+ return {
83
+ jupiterPerps: {
84
+ lastFeeUsdResetUnixTimestamp: parseInt(json.jupiterPerps.lastFeeUsdResetUnixTimestamp),
85
+ lastRealizedFeeUsd: new anchor_1.BN(json.jupiterPerps.lastRealizedFeeUsd),
86
+ lastAumUsd: new anchor_1.BN(json.jupiterPerps.lastAumUsd),
87
+ lastRealizedFeeUsdUpdateUnixTimestamp: parseInt(json.jupiterPerps.lastRealizedFeeUsdUpdateUnixTimestamp),
88
+ },
89
+ };
90
+ }
91
+ if ("adrena" in json) {
92
+ return {
93
+ adrena: {
94
+ previousTotalFees: new anchor_1.BN(json.adrena.previousTotalFees),
95
+ },
96
+ };
97
+ }
98
+ if ("jupiterLend" in json) {
99
+ return {
100
+ jupiterLend: {
101
+ padding: json.jupiterLend.padding,
102
+ },
103
+ };
104
+ }
105
+ if ("kaminoVault" in json) {
106
+ return {
107
+ kaminoVault: {
108
+ padding: json.kaminoVault.padding,
109
+ },
110
+ };
111
+ }
50
112
  return json;
51
113
  }
52
114
  exports.fromInterfaceTypeGenericJson = fromInterfaceTypeGenericJson;
115
+ /** Convert AdditionalDataGeneric to AdditionalDataGenericJson */
116
+ function toAdditionalDataGenericJson(additionalData) {
117
+ const result = {};
118
+ if (additionalData.fragmetricData) {
119
+ result.fragmetricData = {
120
+ receiptTokenMint: additionalData.fragmetricData.receiptTokenMint.toString(),
121
+ wrappedTokenMint: additionalData.fragmetricData.wrappedTokenMint.toString(),
122
+ };
123
+ }
124
+ return result;
125
+ }
126
+ exports.toAdditionalDataGenericJson = toAdditionalDataGenericJson;
127
+ /** Convert AdditionalDataGenericJson to AdditionalDataGeneric */
128
+ function fromAdditionalDataGenericJson(json) {
129
+ const result = {};
130
+ if (json.fragmetricData) {
131
+ result.fragmetricData = {
132
+ receiptTokenMint: new anchor_1.web3.PublicKey(json.fragmetricData.receiptTokenMint),
133
+ wrappedTokenMint: new anchor_1.web3.PublicKey(json.fragmetricData.wrappedTokenMint),
134
+ };
135
+ }
136
+ return result;
137
+ }
138
+ exports.fromAdditionalDataGenericJson = fromAdditionalDataGenericJson;
139
+ /** Helper function to extract fragmetric data from additional data */
140
+ function getFragmetricDataFromAdditionalData(additionalData) {
141
+ if (!additionalData)
142
+ return undefined;
143
+ return additionalData.fragmetricData;
144
+ }
145
+ exports.getFragmetricDataFromAdditionalData = getFragmetricDataFromAdditionalData;
53
146
  //# sourceMappingURL=generic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generic.js","sourceRoot":"","sources":["../src/generic.ts"],"names":[],"mappings":";;;AAAA,8CAA4C;AAmJ5C,SAAgB,kCAAkC,CAAC,GAA4B;IAC7E,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;QACxC,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,IAAI,EAAE;YACJ,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO;YACzB,+BAA+B,EAAE,GAAG,CAAC,IAAI,CAAC,+BAA+B;YACzE,wBAAwB,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC;YACvE,2BAA2B,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC;YAC7E,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS;SAC9B;KACF,CAAA;AACH,CAAC;AApBD,gFAoBC;AAED,+DAA+D;AAC/D,SAAgB,0BAA0B,CAAC,aAAmC;IAC5E,IAAI,MAAM,IAAI,aAAa,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE;gBACJ,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAChD,iBAAiB,EAAE,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;aACnE;SACF,CAAA;IACH,CAAC;IACD,OAAO,aAAyC,CAAA;AAClD,CAAC;AAVD,gEAUC;AAED,+DAA+D;AAC/D,SAAgB,4BAA4B,CAAC,IAA8B;IACzE,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO;YACL,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI,WAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACpC,iBAAiB,EAAE,IAAI,WAAE,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;aACvD;SACF,CAAA;IACH,CAAC;IACD,OAAO,IAA4B,CAAA;AACrC,CAAC;AAVD,oEAUC"}
1
+ {"version":3,"file":"generic.js","sourceRoot":"","sources":["../src/generic.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exponent-labs/exponent-types",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "license": "AGPL-3.0",
package/src/generic.ts CHANGED
@@ -43,7 +43,21 @@ export type InterfaceTypeGeneric =
43
43
  | {
44
44
  hyloLpToken: Record<string, never>
45
45
  }
46
-
46
+ | {
47
+ jupiterLend: {
48
+ padding: number[]
49
+ }
50
+ }
51
+ | {
52
+ kaminoVault: {
53
+ padding: number[]
54
+ }
55
+ }
56
+ | {
57
+ solstice: {
58
+ padding: number[]
59
+ }
60
+ }
47
61
  export type InterfaceTypeGenericJson =
48
62
  | {
49
63
  pyth: {
@@ -63,6 +77,88 @@ export type InterfaceTypeGenericJson =
63
77
  | {
64
78
  meteora: Record<string, never>
65
79
  }
80
+ | {
81
+ fragmetricSupportedAsset: Record<string, never>
82
+ }
83
+ | {
84
+ sanctum: Record<string, never>
85
+ }
86
+ | {
87
+ jupiterPerps: {
88
+ lastFeeUsdResetUnixTimestamp: string
89
+ lastRealizedFeeUsd: string
90
+ lastAumUsd: string
91
+ lastRealizedFeeUsdUpdateUnixTimestamp: string
92
+ }
93
+ }
94
+ | {
95
+ adrena: {
96
+ previousTotalFees: string
97
+ }
98
+ }
99
+ | {
100
+ hyloLpToken: Record<string, never>
101
+ }
102
+ | {
103
+ jupiterLend: {
104
+ padding: number[]
105
+ }
106
+ }
107
+ | {
108
+ kaminoVault: {
109
+ padding: number[]
110
+ }
111
+ }
112
+ | {
113
+ solstice: {
114
+ padding: number[]
115
+ }
116
+ }
117
+ /** Additional data that different interface types may need */
118
+ export interface AdditionalDataGeneric {
119
+ fragmetricData?: {
120
+ receiptTokenMint: web3.PublicKey
121
+ wrappedTokenMint: web3.PublicKey
122
+ }
123
+ jupiterLendData?: {
124
+ baseTokenMint: web3.PublicKey
125
+ tokenReservesLiquidity: web3.PublicKey
126
+ lendingSupplyPosition: web3.PublicKey
127
+ rewardsRateModel: web3.PublicKey
128
+ rateModel: web3.PublicKey
129
+ }
130
+ kaminoVaultData?: {
131
+ vault: web3.PublicKey
132
+ reserves: {
133
+ reserveAddress: web3.PublicKey
134
+ marketAddress: web3.PublicKey
135
+ }[]
136
+ tokenVault: web3.PublicKey
137
+ tokenMint: web3.PublicKey
138
+ baseVaultAuthority: web3.PublicKey
139
+ sharesMint: web3.PublicKey
140
+ }
141
+ // Add other interface-specific data here as needed
142
+ // meteoraData?: { ... }
143
+ // sanctumData?: { ... }
144
+ // adrenaData?: { ... }
145
+ }
146
+
147
+ /** JSON version of additional data */
148
+ export interface AdditionalDataGenericJson {
149
+ fragmetricData?: {
150
+ receiptTokenMint: string
151
+ wrappedTokenMint: string
152
+ }
153
+ jupiterLendData?: {
154
+ baseTokenMint: string
155
+ tokenReservesLiquidity: string
156
+ }
157
+ // Add other interface-specific data here as needed
158
+ // meteoraData?: { ... }
159
+ // sanctumData?: { ... }
160
+ // adrenaData?: { ... }
161
+ }
66
162
 
67
163
  export interface Hook {
68
164
  enabled: boolean
@@ -85,10 +181,7 @@ export interface GenericSyState {
85
181
  account: GenericSyMetaAccount
86
182
  tokenProgramBase: web3.PublicKey
87
183
  syRate: number
88
- fragmetricData?: {
89
- receiptTokenMint: web3.PublicKey
90
- wrappedTokenMint: web3.PublicKey
91
- }
184
+ additionalData?: AdditionalDataGeneric
92
185
  }
93
186
 
94
187
  export interface GenericSyStateJson {
@@ -96,6 +189,8 @@ export interface GenericSyStateJson {
96
189
  account: GenericSyMetaAccountJson
97
190
  tokenProgramBase: string
98
191
  syRate: number
192
+ additionalData?: AdditionalDataGenericJson
193
+ /** @deprecated Use additionalData.fragmetricData instead */
99
194
  fragmetricData?: {
100
195
  receiptTokenMint: string
101
196
  wrappedTokenMint: string
@@ -177,6 +272,38 @@ export function toInterfaceTypeGenericJson(interfaceType: InterfaceTypeGeneric):
177
272
  },
178
273
  }
179
274
  }
275
+ if ("jupiterPerps" in interfaceType) {
276
+ return {
277
+ jupiterPerps: {
278
+ lastFeeUsdResetUnixTimestamp: interfaceType.jupiterPerps.lastFeeUsdResetUnixTimestamp.toString(),
279
+ lastRealizedFeeUsd: interfaceType.jupiterPerps.lastRealizedFeeUsd.toString(),
280
+ lastAumUsd: interfaceType.jupiterPerps.lastAumUsd.toString(),
281
+ lastRealizedFeeUsdUpdateUnixTimestamp:
282
+ interfaceType.jupiterPerps.lastRealizedFeeUsdUpdateUnixTimestamp.toString(),
283
+ },
284
+ }
285
+ }
286
+ if ("adrena" in interfaceType) {
287
+ return {
288
+ adrena: {
289
+ previousTotalFees: interfaceType.adrena.previousTotalFees.toString(),
290
+ },
291
+ }
292
+ }
293
+ if ("jupiterLend" in interfaceType) {
294
+ return {
295
+ jupiterLend: {
296
+ padding: interfaceType.jupiterLend.padding,
297
+ },
298
+ }
299
+ }
300
+ if ("kaminoVault" in interfaceType) {
301
+ return {
302
+ kaminoVault: {
303
+ padding: interfaceType.kaminoVault.padding,
304
+ },
305
+ }
306
+ }
180
307
  return interfaceType as InterfaceTypeGenericJson
181
308
  }
182
309
 
@@ -190,5 +317,76 @@ export function fromInterfaceTypeGenericJson(json: InterfaceTypeGenericJson): In
190
317
  },
191
318
  }
192
319
  }
320
+ if ("jupiterPerps" in json) {
321
+ return {
322
+ jupiterPerps: {
323
+ lastFeeUsdResetUnixTimestamp: parseInt(json.jupiterPerps.lastFeeUsdResetUnixTimestamp),
324
+ lastRealizedFeeUsd: new BN(json.jupiterPerps.lastRealizedFeeUsd),
325
+ lastAumUsd: new BN(json.jupiterPerps.lastAumUsd),
326
+ lastRealizedFeeUsdUpdateUnixTimestamp: parseInt(json.jupiterPerps.lastRealizedFeeUsdUpdateUnixTimestamp),
327
+ },
328
+ }
329
+ }
330
+ if ("adrena" in json) {
331
+ return {
332
+ adrena: {
333
+ previousTotalFees: new BN(json.adrena.previousTotalFees),
334
+ },
335
+ }
336
+ }
337
+ if ("jupiterLend" in json) {
338
+ return {
339
+ jupiterLend: {
340
+ padding: json.jupiterLend.padding,
341
+ },
342
+ }
343
+ }
344
+ if ("kaminoVault" in json) {
345
+ return {
346
+ kaminoVault: {
347
+ padding: json.kaminoVault.padding,
348
+ },
349
+ }
350
+ }
193
351
  return json as InterfaceTypeGeneric
194
352
  }
353
+
354
+ /** Convert AdditionalDataGeneric to AdditionalDataGenericJson */
355
+ export function toAdditionalDataGenericJson(additionalData: AdditionalDataGeneric): AdditionalDataGenericJson {
356
+ const result: AdditionalDataGenericJson = {}
357
+
358
+ if (additionalData.fragmetricData) {
359
+ result.fragmetricData = {
360
+ receiptTokenMint: additionalData.fragmetricData.receiptTokenMint.toString(),
361
+ wrappedTokenMint: additionalData.fragmetricData.wrappedTokenMint.toString(),
362
+ }
363
+ }
364
+
365
+ return result
366
+ }
367
+
368
+ /** Convert AdditionalDataGenericJson to AdditionalDataGeneric */
369
+ export function fromAdditionalDataGenericJson(json: AdditionalDataGenericJson): AdditionalDataGeneric {
370
+ const result: AdditionalDataGeneric = {}
371
+
372
+ if (json.fragmetricData) {
373
+ result.fragmetricData = {
374
+ receiptTokenMint: new web3.PublicKey(json.fragmetricData.receiptTokenMint),
375
+ wrappedTokenMint: new web3.PublicKey(json.fragmetricData.wrappedTokenMint),
376
+ }
377
+ }
378
+
379
+ return result
380
+ }
381
+
382
+ /** Helper function to extract fragmetric data from additional data */
383
+ export function getFragmetricDataFromAdditionalData(additionalData?: AdditionalDataGeneric):
384
+ | {
385
+ receiptTokenMint: web3.PublicKey
386
+ wrappedTokenMint: web3.PublicKey
387
+ }
388
+ | undefined {
389
+ if (!additionalData) return undefined
390
+
391
+ return additionalData.fragmetricData
392
+ }