@exponent-labs/exponent-types 0.1.3 → 0.1.5

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.
package/build/common.d.ts CHANGED
@@ -9,6 +9,16 @@ export interface SyEmissionRaw {
9
9
  treasuryEmission: BN;
10
10
  lastSeenIndex: AnchorizedPNum;
11
11
  }
12
+ export interface SyEmissionRaw2 {
13
+ mint: web3.PublicKey;
14
+ index: AnchorizedPNum;
15
+ last_seen_total_accrued_emissions: BN;
16
+ total_claimed_emissions: BN;
17
+ token_program: web3.PublicKey;
18
+ escrow_account: web3.PublicKey;
19
+ treasury_emission: BN;
20
+ last_seen_index: AnchorizedPNum;
21
+ }
12
22
  export interface SyEmissionJson {
13
23
  mint: string;
14
24
  tokenProgram: string;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
3
  import { BN, web3 } from "@coral-xyz/anchor";
4
- import { AnchorizedPNum, SyEmissionRaw, SyEmissionJson } from "./common";
4
+ import { AnchorizedPNum, SyEmissionJson, SyEmissionRaw } from "./common";
5
5
  export type InterfaceTypeGeneric = {
6
6
  pyth: {
7
7
  lastSlot: BN;
@@ -17,6 +17,33 @@ export type InterfaceTypeGeneric = {
17
17
  meteora: Record<string, never>;
18
18
  } | {
19
19
  fragmetricSupportedAsset: Record<string, never>;
20
+ } | {
21
+ sanctum: Record<string, never>;
22
+ } | {
23
+ jupiterPerps: {
24
+ lastFeeUsdResetUnixTimestamp: number;
25
+ lastRealizedFeeUsd: BN;
26
+ lastAumUsd: BN;
27
+ lastRealizedFeeUsdUpdateUnixTimestamp: number;
28
+ };
29
+ } | {
30
+ adrena: {
31
+ previousTotalFees: BN;
32
+ };
33
+ } | {
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
+ };
20
47
  };
21
48
  export type InterfaceTypeGenericJson = {
22
49
  pyth: {
@@ -31,7 +58,72 @@ export type InterfaceTypeGenericJson = {
31
58
  fragmetric: Record<string, never>;
32
59
  } | {
33
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
+ };
34
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
+ }
35
127
  export interface Hook {
36
128
  enabled: boolean;
37
129
  interfaceEmissionsAccountsUntil: number;
@@ -51,16 +143,19 @@ export interface GenericSyState {
51
143
  account: GenericSyMetaAccount;
52
144
  tokenProgramBase: web3.PublicKey;
53
145
  syRate: number;
54
- fragmetricData?: {
55
- receiptTokenMint: web3.PublicKey;
56
- wrappedTokenMint: web3.PublicKey;
57
- };
146
+ additionalData?: AdditionalDataGeneric;
58
147
  }
59
148
  export interface GenericSyStateJson {
60
149
  selfAddress: string;
61
150
  account: GenericSyMetaAccountJson;
62
151
  tokenProgramBase: string;
63
152
  syRate: number;
153
+ additionalData?: AdditionalDataGenericJson;
154
+ /** @deprecated Use additionalData.fragmetricData instead */
155
+ fragmetricData?: {
156
+ receiptTokenMint: string;
157
+ wrappedTokenMint: string;
158
+ };
64
159
  }
65
160
  export interface GenericSyMetaAccountJson {
66
161
  mintSy: string;
@@ -107,3 +202,12 @@ export declare function deserializeGenericSyMetaAccountRaw(raw: GenericSyMetaAcc
107
202
  export declare function toInterfaceTypeGenericJson(interfaceType: InterfaceTypeGeneric): InterfaceTypeGenericJson;
108
203
  /** Convert InterfaceTypeGenericJson to InterfaceTypeGeneric */
109
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;AA2H5C,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/build/kamino.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { BN } from "@coral-xyz/anchor";
2
2
  import { web3 } from "@coral-xyz/anchor";
3
- import { SyEmissionRaw, SyEmissionJson } from "./common";
3
+ import { SyEmissionJson, SyEmissionRaw, SyEmissionRaw2 } from "./common";
4
4
  export interface KaminoSyState {
5
5
  selfAddress: web3.PublicKey;
6
6
  account: KaminoSyMetaAccount;
@@ -67,6 +67,6 @@ export interface KaminoSyMetaAccountRaw {
67
67
  max_sy_supply: BN;
68
68
  min_mint_size: BN;
69
69
  min_redeem_size: BN;
70
- emissions: SyEmissionRaw[];
70
+ emissions: SyEmissionRaw2[];
71
71
  }
72
72
  export {};
package/build/trade.d.ts CHANGED
@@ -13,7 +13,6 @@ export type Trade = {
13
13
  amountOutTokens: number;
14
14
  amountUsd: number;
15
15
  price: number;
16
- date: number;
17
16
  kind: "buy" | "sell";
18
17
  annualizedYield: number;
19
18
  txHash: string;
package/build/vault.d.ts CHANGED
@@ -117,6 +117,7 @@ export interface VaultEmission {
117
117
  tokenAccount: web3.PublicKey;
118
118
  initialIndex: AnchorizedPNum;
119
119
  lastSeenIndex: AnchorizedPNum;
120
+ finalIndex: AnchorizedPNum;
120
121
  treasuryTokenAccount: web3.PublicKey;
121
122
  feeBps: number;
122
123
  treasuryEmission: BN;
@@ -125,6 +126,7 @@ export interface VaultEmissionJson {
125
126
  tokenAccount: string;
126
127
  initialIndex: AnchorizedPNumJson;
127
128
  lastSeenIndex: AnchorizedPNumJson;
129
+ finalIndex: AnchorizedPNumJson;
128
130
  treasuryTokenAccount: string;
129
131
  feeBps: number;
130
132
  treasuryEmission: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exponent-labs/exponent-types",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "license": "AGPL-3.0",
@@ -8,7 +8,7 @@
8
8
  "build": "tsc --build"
9
9
  },
10
10
  "dependencies": {
11
- "@coral-xyz/anchor": "0.30.1"
11
+ "@coral-xyz/anchor": "0.31.0"
12
12
  },
13
13
  "devDependencies": {
14
14
  "typescript": "5.4.5"
package/src/common.ts CHANGED
@@ -11,6 +11,17 @@ export interface SyEmissionRaw {
11
11
  lastSeenIndex: AnchorizedPNum
12
12
  }
13
13
 
14
+ export interface SyEmissionRaw2 {
15
+ mint: web3.PublicKey
16
+ index: AnchorizedPNum
17
+ last_seen_total_accrued_emissions: BN
18
+ total_claimed_emissions: BN
19
+ token_program: web3.PublicKey
20
+ escrow_account: web3.PublicKey
21
+ treasury_emission: BN
22
+ last_seen_index: AnchorizedPNum
23
+ }
24
+
14
25
  export interface SyEmissionJson {
15
26
  mint: string
16
27
  tokenProgram: string
package/src/generic.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { BN, web3 } from "@coral-xyz/anchor"
2
- import { AnchorizedPNum, SyEmissionRaw, SyEmissionJson } from "./common"
2
+
3
+ import { AnchorizedPNum, SyEmissionJson, SyEmissionRaw } from "./common"
3
4
 
4
5
  export type InterfaceTypeGeneric =
5
6
  | {
@@ -23,7 +24,40 @@ export type InterfaceTypeGeneric =
23
24
  | {
24
25
  fragmetricSupportedAsset: Record<string, never>
25
26
  }
26
-
27
+ | {
28
+ sanctum: Record<string, never>
29
+ }
30
+ | {
31
+ jupiterPerps: {
32
+ lastFeeUsdResetUnixTimestamp: number
33
+ lastRealizedFeeUsd: BN
34
+ lastAumUsd: BN
35
+ lastRealizedFeeUsdUpdateUnixTimestamp: number
36
+ }
37
+ }
38
+ | {
39
+ adrena: {
40
+ previousTotalFees: BN
41
+ }
42
+ }
43
+ | {
44
+ hyloLpToken: Record<string, never>
45
+ }
46
+ | {
47
+ jupiterLend: {
48
+ padding: number[]
49
+ }
50
+ }
51
+ | {
52
+ kaminoVault: {
53
+ padding: number[]
54
+ }
55
+ }
56
+ | {
57
+ solstice: {
58
+ padding: number[]
59
+ }
60
+ }
27
61
  export type InterfaceTypeGenericJson =
28
62
  | {
29
63
  pyth: {
@@ -43,6 +77,88 @@ export type InterfaceTypeGenericJson =
43
77
  | {
44
78
  meteora: Record<string, never>
45
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
+ }
46
162
 
47
163
  export interface Hook {
48
164
  enabled: boolean
@@ -65,10 +181,7 @@ export interface GenericSyState {
65
181
  account: GenericSyMetaAccount
66
182
  tokenProgramBase: web3.PublicKey
67
183
  syRate: number
68
- fragmetricData?: {
69
- receiptTokenMint: web3.PublicKey
70
- wrappedTokenMint: web3.PublicKey
71
- }
184
+ additionalData?: AdditionalDataGeneric
72
185
  }
73
186
 
74
187
  export interface GenericSyStateJson {
@@ -76,6 +189,12 @@ export interface GenericSyStateJson {
76
189
  account: GenericSyMetaAccountJson
77
190
  tokenProgramBase: string
78
191
  syRate: number
192
+ additionalData?: AdditionalDataGenericJson
193
+ /** @deprecated Use additionalData.fragmetricData instead */
194
+ fragmetricData?: {
195
+ receiptTokenMint: string
196
+ wrappedTokenMint: string
197
+ }
79
198
  }
80
199
 
81
200
  export interface GenericSyMetaAccountJson {
@@ -153,6 +272,38 @@ export function toInterfaceTypeGenericJson(interfaceType: InterfaceTypeGeneric):
153
272
  },
154
273
  }
155
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
+ }
156
307
  return interfaceType as InterfaceTypeGenericJson
157
308
  }
158
309
 
@@ -166,5 +317,76 @@ export function fromInterfaceTypeGenericJson(json: InterfaceTypeGenericJson): In
166
317
  },
167
318
  }
168
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
+ }
169
351
  return json as InterfaceTypeGeneric
170
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
+ }
package/src/kamino.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { BN } from "@coral-xyz/anchor"
2
2
  import { web3 } from "@coral-xyz/anchor"
3
- import { SyEmissionRaw, SyEmissionJson } from "./common"
3
+
4
+ import { SyEmissionJson, SyEmissionRaw, SyEmissionRaw2 } from "./common"
4
5
 
5
6
  export interface KaminoSyState {
6
7
  selfAddress: web3.PublicKey
@@ -72,5 +73,5 @@ export interface KaminoSyMetaAccountRaw {
72
73
  max_sy_supply: BN
73
74
  min_mint_size: BN
74
75
  min_redeem_size: BN
75
- emissions: SyEmissionRaw[]
76
+ emissions: SyEmissionRaw2[]
76
77
  }
package/src/trade.ts CHANGED
@@ -14,7 +14,6 @@ export type Trade = {
14
14
  amountOutTokens: number
15
15
  amountUsd: number
16
16
  price: number
17
- date: number
18
17
  kind: "buy" | "sell"
19
18
  annualizedYield: number
20
19
  txHash: string
package/src/vault.ts CHANGED
@@ -176,6 +176,7 @@ export interface VaultEmission {
176
176
  tokenAccount: web3.PublicKey
177
177
  initialIndex: AnchorizedPNum
178
178
  lastSeenIndex: AnchorizedPNum
179
+ finalIndex: AnchorizedPNum
179
180
  treasuryTokenAccount: web3.PublicKey
180
181
  feeBps: number
181
182
  treasuryEmission: BN
@@ -185,6 +186,7 @@ export interface VaultEmissionJson {
185
186
  tokenAccount: string
186
187
  initialIndex: AnchorizedPNumJson
187
188
  lastSeenIndex: AnchorizedPNumJson
189
+ finalIndex: AnchorizedPNumJson
188
190
  treasuryTokenAccount: string
189
191
  feeBps: number
190
192
  treasuryEmission: string