@exponent-labs/exponent-sdk 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/build/addressLookupTableUtil.d.ts +12 -0
  3. package/build/addressLookupTableUtil.js +32 -0
  4. package/build/addressLookupTableUtil.js.map +1 -0
  5. package/build/environment.d.ts +10 -0
  6. package/build/environment.js +13 -0
  7. package/build/environment.js.map +1 -0
  8. package/build/events.d.ts +339 -0
  9. package/build/events.js +231 -0
  10. package/build/events.js.map +1 -0
  11. package/build/flavors.d.ts +24 -0
  12. package/build/flavors.js +713 -0
  13. package/build/flavors.js.map +1 -0
  14. package/build/index.d.ts +11 -0
  15. package/build/index.js +45 -0
  16. package/build/index.js.map +1 -0
  17. package/build/lpPosition.d.ts +35 -0
  18. package/build/lpPosition.js +103 -0
  19. package/build/lpPosition.js.map +1 -0
  20. package/build/market.d.ts +567 -0
  21. package/build/market.js +1445 -0
  22. package/build/market.js.map +1 -0
  23. package/build/syPosition.d.ts +6 -0
  24. package/build/syPosition.js +115 -0
  25. package/build/syPosition.js.map +1 -0
  26. package/build/tokenUtil.d.ts +3 -0
  27. package/build/tokenUtil.js +23 -0
  28. package/build/tokenUtil.js.map +1 -0
  29. package/build/utils/altUtil.d.ts +8 -0
  30. package/build/utils/altUtil.js +35 -0
  31. package/build/utils/altUtil.js.map +1 -0
  32. package/build/utils/binSolver.d.ts +1 -0
  33. package/build/utils/binSolver.js +45 -0
  34. package/build/utils/binSolver.js.map +1 -0
  35. package/build/utils/binSolver.test.d.ts +1 -0
  36. package/build/utils/binSolver.test.js +15 -0
  37. package/build/utils/binSolver.test.js.map +1 -0
  38. package/build/utils/index.d.ts +6 -0
  39. package/build/utils/index.js +31 -0
  40. package/build/utils/index.js.map +1 -0
  41. package/build/utils/ix.d.ts +6 -0
  42. package/build/utils/ix.js +3 -0
  43. package/build/utils/ix.js.map +1 -0
  44. package/build/vault.d.ts +289 -0
  45. package/build/vault.js +615 -0
  46. package/build/vault.js.map +1 -0
  47. package/build/ytPosition.d.ts +86 -0
  48. package/build/ytPosition.js +231 -0
  49. package/build/ytPosition.js.map +1 -0
  50. package/jest.config.js +5 -0
  51. package/package.json +42 -0
  52. package/src/addressLookupTableUtil.ts +34 -0
  53. package/src/environment.ts +19 -0
  54. package/src/events.ts +595 -0
  55. package/src/flavors.ts +773 -0
  56. package/src/index.ts +11 -0
  57. package/src/lpPosition.ts +129 -0
  58. package/src/market.ts +2338 -0
  59. package/src/syPosition.ts +151 -0
  60. package/src/tokenUtil.ts +20 -0
  61. package/src/utils/altUtil.ts +47 -0
  62. package/src/utils/binSolver.test.ts +15 -0
  63. package/src/utils/binSolver.ts +44 -0
  64. package/src/utils/index.ts +32 -0
  65. package/src/utils/ix.ts +7 -0
  66. package/src/vault.ts +999 -0
  67. package/src/ytPosition.ts +313 -0
  68. package/tsconfig.json +38 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,16 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
+
6
+ ## [0.0.3](https://github.com/exponent-finance/exponent-core/compare/@exponent-labs/exponent-sdk@0.0.2...@exponent-labs/exponent-sdk@0.0.3) (2025-03-03)
7
+
8
+ **Note:** Version bump only for package @exponent-labs/exponent-sdk
9
+
10
+
11
+
12
+
13
+
14
+ ## [0.0.2](https://github.com/exponent-finance/exponent-core/compare/@exponent-labs/exponent-sdk@0.0.1...@exponent-labs/exponent-sdk@0.0.2) (2025-03-03)
15
+
16
+ **Note:** Version bump only for package @exponent-labs/exponent-sdk
@@ -0,0 +1,12 @@
1
+ import { web3 } from "@coral-xyz/anchor";
2
+ import { CpiAccountIndexes } from "@exponent-labs/exponent-types";
3
+ /** Fetch and deserialize the ALT */
4
+ export declare function fetchAddressLookupTable(connection: web3.Connection, address: web3.PublicKey): Promise<web3.PublicKey[]>;
5
+ /** Create the CPI accounts lists from the Address Lookup Table and the on-chain stored CPI account indexes */
6
+ export declare function makeCpiAccountMetaLists(altAddresses: web3.PublicKey[], cpiIndexes: CpiAccountIndexes): {
7
+ getSyState: web3.AccountMeta[];
8
+ withdrawSy: web3.AccountMeta[];
9
+ depositSy: web3.AccountMeta[];
10
+ claimEmission: web3.AccountMeta[][];
11
+ getPositionState: web3.AccountMeta[];
12
+ };
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeCpiAccountMetaLists = exports.fetchAddressLookupTable = void 0;
4
+ const anchor_1 = require("@coral-xyz/anchor");
5
+ /** Fetch and deserialize the ALT */
6
+ async function fetchAddressLookupTable(connection, address) {
7
+ const accountInfo = await connection.getAccountInfo(address);
8
+ if (accountInfo === null) {
9
+ throw new Error("Failed to find address lookup table");
10
+ }
11
+ const alt = anchor_1.web3.AddressLookupTableAccount.deserialize(new Uint8Array(accountInfo.data));
12
+ return alt.addresses;
13
+ }
14
+ exports.fetchAddressLookupTable = fetchAddressLookupTable;
15
+ /** Create the CPI accounts lists from the Address Lookup Table and the on-chain stored CPI account indexes */
16
+ function makeCpiAccountMetaLists(altAddresses, cpiIndexes) {
17
+ const pluckAddress = (index) => altAddresses[index];
18
+ const transform = (a) => ({
19
+ isSigner: false,
20
+ isWritable: a.isWritable,
21
+ pubkey: pluckAddress(a.altIndex),
22
+ });
23
+ return {
24
+ getSyState: cpiIndexes.getSyState.map(transform),
25
+ withdrawSy: cpiIndexes.withdrawSy.map(transform),
26
+ depositSy: cpiIndexes.depositSy.map(transform),
27
+ claimEmission: cpiIndexes.claimEmission.map((a) => a.map(transform)),
28
+ getPositionState: cpiIndexes.getPositionState.map(transform),
29
+ };
30
+ }
31
+ exports.makeCpiAccountMetaLists = makeCpiAccountMetaLists;
32
+ //# sourceMappingURL=addressLookupTableUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addressLookupTableUtil.js","sourceRoot":"","sources":["../src/addressLookupTableUtil.ts"],"names":[],"mappings":";;;AAAA,8CAAwC;AAGxC,oCAAoC;AAC7B,KAAK,UAAU,uBAAuB,CAC3C,UAA2B,EAC3B,OAAuB;IAEvB,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC5D,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,GAAG,GAAG,aAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;IACxF,OAAO,GAAG,CAAC,SAAS,CAAA;AACtB,CAAC;AAXD,0DAWC;AAED,8GAA8G;AAC9G,SAAgB,uBAAuB,CAAC,YAA8B,EAAE,UAA6B;IACnG,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,SAAS,GAAG,CAAC,CAAkB,EAAoB,EAAE,CAAC,CAAC;QAC3D,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;KACjC,CAAC,CAAA;IAEF,OAAO;QACL,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;QAChD,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;QAChD,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;QAC9C,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpE,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;KAC7D,CAAA;AACH,CAAC;AAfD,0DAeC"}
@@ -0,0 +1,10 @@
1
+ import { web3 } from "@coral-xyz/anchor";
2
+ export type Environment = {
3
+ marginfiSyProgramId: web3.PublicKey;
4
+ kaminoSyProgramId: web3.PublicKey;
5
+ coreProgramId: web3.PublicKey;
6
+ jitoRestakingSyProgramId: web3.PublicKey;
7
+ perenaSyProgramId: web3.PublicKey;
8
+ genericSyProgramId: web3.PublicKey;
9
+ };
10
+ export declare const LOCAL_ENV: Environment;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LOCAL_ENV = void 0;
4
+ const anchor_1 = require("@coral-xyz/anchor");
5
+ exports.LOCAL_ENV = {
6
+ marginfiSyProgramId: new anchor_1.web3.PublicKey("XPMfipyhcbq3DBvgvxkbZY7GekwmGNJLMD3wdiCkBc7"),
7
+ kaminoSyProgramId: new anchor_1.web3.PublicKey("XPK1ndTK1xrgRg99ifvdPP1exrx8D1mRXTuxBkkroCx"),
8
+ coreProgramId: new anchor_1.web3.PublicKey("ExponentnaRg3CQbW6dqQNZKXp7gtZ9DGMp1cwC4HAS7"),
9
+ jitoRestakingSyProgramId: new anchor_1.web3.PublicKey("XPJitopeUEhMZVF72CvswnwrS2U2akQvk5s26aEfWv2"),
10
+ perenaSyProgramId: new anchor_1.web3.PublicKey("XPerenaJPyvnjseLCn7rgzxFEum6zX1k89C13SPTyGZ"),
11
+ genericSyProgramId: new anchor_1.web3.PublicKey("XP1BRLn8eCYSygrd8er5P4GKdzqKbC3DLoSsS5UYVZy"),
12
+ };
13
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":";;;AAAA,8CAAwC;AAW3B,QAAA,SAAS,GAAgB;IACpC,mBAAmB,EAAE,IAAI,aAAI,CAAC,SAAS,CAAC,6CAA6C,CAAC;IACtF,iBAAiB,EAAE,IAAI,aAAI,CAAC,SAAS,CAAC,6CAA6C,CAAC;IACpF,aAAa,EAAE,IAAI,aAAI,CAAC,SAAS,CAAC,8CAA8C,CAAC;IACjF,wBAAwB,EAAE,IAAI,aAAI,CAAC,SAAS,CAAC,6CAA6C,CAAC;IAC3F,iBAAiB,EAAE,IAAI,aAAI,CAAC,SAAS,CAAC,6CAA6C,CAAC;IACpF,kBAAkB,EAAE,IAAI,aAAI,CAAC,SAAS,CAAC,6CAA6C,CAAC;CACtF,CAAA"}
@@ -0,0 +1,339 @@
1
+ /// <reference types="bn.js" />
2
+ import { web3, BN } from "@coral-xyz/anchor";
3
+ import { ExponentCore } from "@exponent-labs/exponent-idl";
4
+ import { AnchorizedPNum } from "@exponent-labs/exponent-types";
5
+ export declare class EventDecoder {
6
+ private coder;
7
+ private eventDecoder;
8
+ programId: web3.PublicKey;
9
+ private static eventIxTag;
10
+ private discriminators;
11
+ constructor(idl?: ExponentCore);
12
+ parseAsTransactionCpiData(log: string): string | null;
13
+ decode(log: string): GenericEvent | null;
14
+ parseCpiEvents(transactionResponse: web3.VersionedTransactionResponse | web3.TransactionResponse): CategorizedEvents;
15
+ parseHeliusWebsocketCpiEvents(transactionResponse: web3.VersionedTransactionResponse | web3.TransactionResponse): CategorizedEvents;
16
+ }
17
+ interface GenericEvent {
18
+ name: string;
19
+ data: any;
20
+ }
21
+ export interface CategorizedEvents {
22
+ tradePtEvents: TradePtEvent[];
23
+ stripEvents: StripEvent[];
24
+ mergeEvents: MergeEvent[];
25
+ depositYtEvents: DepositYtEvent[];
26
+ withdrawYtEvents: WithdrawYtEvent[];
27
+ collectInterestEvents: CollectInterestEvent[];
28
+ collectEmissionEvents: CollectEmissionEvent[];
29
+ stageYieldEvents: StageYieldEvent[];
30
+ initializeYieldPositionEvents: InitializeYieldPositionEvent[];
31
+ withdrawLpEvents: WithdrawLpEvent[];
32
+ withdrawLiquidityEvents: WithdrawLiquidityEvent[];
33
+ sellYtEvents: SellYtEvent[];
34
+ marketCollectEmissionEvents: MarketCollectEmissionEvent[];
35
+ initLpPositionEvents: InitLpPositionEvent[];
36
+ depositLpEvents: DepositLpEvent[];
37
+ depositLiquidityEvents: DepositLiquidityEvent[];
38
+ claimFarmEmissionsEvents: ClaimFarmEmissionsEvent[];
39
+ buyYtEvents: BuyYtEvent[];
40
+ wrapperBuyYtEvents: WrapperBuyYtEvent[];
41
+ wrapperSellYtEvents: WrapperSellYtEvent[];
42
+ sellPtEvents: SellPtEvent[];
43
+ buyPtEvents: BuyPtEvent[];
44
+ wrapperProvideLiquidityEvents: WrapperProvideLiquidityEvent[];
45
+ wrapperCollectInterestEvents: WrapperCollectInterestEvent[];
46
+ wrapperWithdrawLiquidityEvents: WrapperWithdrawLiquidityEvent[];
47
+ wrapperWithdrawLiquidityClassicEvents: WrapperWithdrawLiquidityClassicEvent[];
48
+ }
49
+ export interface TradePtEvent {
50
+ trader: web3.PublicKey;
51
+ market: web3.PublicKey;
52
+ token_sy_trader: web3.PublicKey;
53
+ token_pt_trader: web3.PublicKey;
54
+ token_sy_escrow: web3.PublicKey;
55
+ token_pt_escrow: web3.PublicKey;
56
+ net_trader_pt: BN;
57
+ net_trader_sy: BN;
58
+ fee_sy: BN;
59
+ sy_exchange_rate: AnchorizedPNum;
60
+ timestamp: BN;
61
+ }
62
+ export interface StripEvent {
63
+ depositor: web3.PublicKey;
64
+ vault: web3.PublicKey;
65
+ authority: web3.PublicKey;
66
+ sy_src: web3.PublicKey;
67
+ escrow_sy: web3.PublicKey;
68
+ yt_dst: web3.PublicKey;
69
+ pt_dst: web3.PublicKey;
70
+ mint_yt: web3.PublicKey;
71
+ mint_pt: web3.PublicKey;
72
+ yield_position: web3.PublicKey;
73
+ amount_sy_in: BN;
74
+ amount_py_out: BN;
75
+ sy_exchange_rate: AnchorizedPNum;
76
+ total_sy_in_escrow: BN;
77
+ pt_supply: BN;
78
+ yt_balance: BN;
79
+ all_time_high_sy_exchange_rate: AnchorizedPNum;
80
+ sy_for_pt: BN;
81
+ unix_timestamp: BN;
82
+ }
83
+ export interface MergeEvent {
84
+ owner: web3.PublicKey;
85
+ vault: web3.PublicKey;
86
+ sy_dst: web3.PublicKey;
87
+ escrow_sy: web3.PublicKey;
88
+ yt_src: web3.PublicKey;
89
+ pt_src: web3.PublicKey;
90
+ mint_yt: web3.PublicKey;
91
+ mint_pt: web3.PublicKey;
92
+ yield_position: web3.PublicKey;
93
+ amount_py_in: BN;
94
+ amount_sy_out: BN;
95
+ sy_exchange_rate: AnchorizedPNum;
96
+ pt_redemption_rate: AnchorizedPNum;
97
+ total_sy_in_escrow: BN;
98
+ pt_supply: BN;
99
+ yt_balance: BN;
100
+ sy_for_pt: BN;
101
+ is_vault_active: boolean;
102
+ unix_timestamp: BN;
103
+ }
104
+ export interface DepositYtEvent {
105
+ depositor: web3.PublicKey;
106
+ vault: web3.PublicKey;
107
+ user_yield_position: web3.PublicKey;
108
+ vault_yield_position: web3.PublicKey;
109
+ yt_src: web3.PublicKey;
110
+ escrow_yt: web3.PublicKey;
111
+ amount: BN;
112
+ sy_exchange_rate: AnchorizedPNum;
113
+ user_yt_balance_after: BN;
114
+ vault_yt_balance_after: BN;
115
+ user_staged_yield: BN;
116
+ unix_timestamp: BN;
117
+ }
118
+ export interface WithdrawYtEvent {
119
+ owner: web3.PublicKey;
120
+ vault: web3.PublicKey;
121
+ user_yield_position: web3.PublicKey;
122
+ vault_yield_position: web3.PublicKey;
123
+ yt_dst: web3.PublicKey;
124
+ escrow_yt: web3.PublicKey;
125
+ amount: BN;
126
+ sy_exchange_rate: AnchorizedPNum;
127
+ user_yt_balance_after: BN;
128
+ vault_yt_balance_after: BN;
129
+ user_staged_yield: BN;
130
+ unix_timestamp: BN;
131
+ }
132
+ export interface CollectInterestEvent {
133
+ user: web3.PublicKey;
134
+ vault: web3.PublicKey;
135
+ user_yield_position: web3.PublicKey;
136
+ amount_to_user: BN;
137
+ amount_to_treasury: BN;
138
+ unix_timestamp: BN;
139
+ }
140
+ export interface CollectEmissionEvent {
141
+ user: web3.PublicKey;
142
+ vault: web3.PublicKey;
143
+ position: web3.PublicKey;
144
+ emission_index: number;
145
+ amount_to_user: BN;
146
+ amount_to_treasury: BN;
147
+ unix_timestamp: BN;
148
+ }
149
+ export interface StageYieldEvent {
150
+ payer: web3.PublicKey;
151
+ vault: web3.PublicKey;
152
+ user_yield_position: web3.PublicKey;
153
+ vault_yield_position: web3.PublicKey;
154
+ sy_exchange_rate: AnchorizedPNum;
155
+ user_yt_balance: BN;
156
+ user_staged_yield: BN;
157
+ user_staged_emissions: BN[];
158
+ unix_timestamp: BN;
159
+ }
160
+ export interface InitializeYieldPositionEvent {
161
+ owner: web3.PublicKey;
162
+ vault: web3.PublicKey;
163
+ yield_position: web3.PublicKey;
164
+ unix_timestamp: BN;
165
+ }
166
+ export interface WithdrawLpEvent {
167
+ owner: web3.PublicKey;
168
+ market: web3.PublicKey;
169
+ lp_position: web3.PublicKey;
170
+ mint_lp: web3.PublicKey;
171
+ token_lp_dst: web3.PublicKey;
172
+ token_lp_escrow: web3.PublicKey;
173
+ amount: BN;
174
+ new_lp_balance: BN;
175
+ unix_timestamp: BN;
176
+ }
177
+ export interface WithdrawLiquidityEvent {
178
+ withdrawer: web3.PublicKey;
179
+ market: web3.PublicKey;
180
+ token_pt_dst: web3.PublicKey;
181
+ token_sy_dst: web3.PublicKey;
182
+ token_pt_escrow: web3.PublicKey;
183
+ token_sy_escrow: web3.PublicKey;
184
+ token_lp_src: web3.PublicKey;
185
+ mint_lp: web3.PublicKey;
186
+ lp_in: BN;
187
+ pt_out: BN;
188
+ sy_out: BN;
189
+ new_lp_supply: BN;
190
+ timestamp: BN;
191
+ }
192
+ export interface SellYtEvent {
193
+ trader: web3.PublicKey;
194
+ market: web3.PublicKey;
195
+ token_yt_trader: web3.PublicKey;
196
+ token_pt_trader: web3.PublicKey;
197
+ token_sy_trader: web3.PublicKey;
198
+ token_sy_escrow: web3.PublicKey;
199
+ token_pt_escrow: web3.PublicKey;
200
+ amount_yt_in: BN;
201
+ amount_sy_received_from_merge: BN;
202
+ amount_sy_spent_buying_pt: BN;
203
+ amount_sy_out: BN;
204
+ pt_borrowed_and_repaid: BN;
205
+ timestamp: BN;
206
+ }
207
+ export interface MarketCollectEmissionEvent {
208
+ owner: web3.PublicKey;
209
+ market: web3.PublicKey;
210
+ lp_position: web3.PublicKey;
211
+ token_emission_escrow: web3.PublicKey;
212
+ token_emission_dst: web3.PublicKey;
213
+ emission_index: number;
214
+ amount_collected: BN;
215
+ timestamp: BN;
216
+ }
217
+ export interface InitLpPositionEvent {
218
+ fee_payer: web3.PublicKey;
219
+ owner: web3.PublicKey;
220
+ market: web3.PublicKey;
221
+ lp_position: web3.PublicKey;
222
+ num_emission_trackers: number;
223
+ num_farm_emissions: number;
224
+ timestamp: BN;
225
+ }
226
+ export interface DepositLpEvent {
227
+ owner: web3.PublicKey;
228
+ market: web3.PublicKey;
229
+ lp_position: web3.PublicKey;
230
+ token_lp_src: web3.PublicKey;
231
+ token_lp_escrow: web3.PublicKey;
232
+ mint_lp: web3.PublicKey;
233
+ amount: BN;
234
+ new_lp_balance: BN;
235
+ timestamp: BN;
236
+ }
237
+ export interface DepositLiquidityEvent {
238
+ depositor: web3.PublicKey;
239
+ market: web3.PublicKey;
240
+ token_pt_src: web3.PublicKey;
241
+ token_sy_src: web3.PublicKey;
242
+ token_pt_escrow: web3.PublicKey;
243
+ token_sy_escrow: web3.PublicKey;
244
+ token_lp_dst: web3.PublicKey;
245
+ mint_lp: web3.PublicKey;
246
+ pt_intent: BN;
247
+ sy_intent: BN;
248
+ pt_in: BN;
249
+ sy_in: BN;
250
+ lp_out: BN;
251
+ new_lp_supply: BN;
252
+ timestamp: BN;
253
+ }
254
+ export interface ClaimFarmEmissionsEvent {
255
+ owner: web3.PublicKey;
256
+ market: web3.PublicKey;
257
+ lp_position: web3.PublicKey;
258
+ token_dst: web3.PublicKey;
259
+ mint: web3.PublicKey;
260
+ token_farm: web3.PublicKey;
261
+ farm_index: number;
262
+ amount_claimed: BN;
263
+ remaining_staged: BN;
264
+ }
265
+ export interface BuyYtEvent {
266
+ trader: web3.PublicKey;
267
+ market: web3.PublicKey;
268
+ token_sy_trader: web3.PublicKey;
269
+ token_yt_trader: web3.PublicKey;
270
+ token_pt_trader: web3.PublicKey;
271
+ token_sy_escrow: web3.PublicKey;
272
+ token_pt_escrow: web3.PublicKey;
273
+ max_sy_in: BN;
274
+ yt_out: BN;
275
+ sy_exchange_rate: AnchorizedPNum;
276
+ sy_to_strip: BN;
277
+ sy_borrowed: BN;
278
+ pt_out: BN;
279
+ sy_repaid: BN;
280
+ timestamp: BN;
281
+ }
282
+ export interface WrapperBuyYtEvent {
283
+ market: web3.PublicKey;
284
+ buyer: web3.PublicKey;
285
+ yt_out_amount: BN;
286
+ base_in_amount: BN;
287
+ unix_timestamp: BN;
288
+ }
289
+ export interface WrapperSellYtEvent {
290
+ seller: web3.PublicKey;
291
+ market: web3.PublicKey;
292
+ yt_in_amount: BN;
293
+ base_out_amount: BN;
294
+ unix_timestamp: BN;
295
+ }
296
+ export interface SellPtEvent {
297
+ market: web3.PublicKey;
298
+ seller: web3.PublicKey;
299
+ pt_amount_in: BN;
300
+ base_amount_out: BN;
301
+ unix_timestamp: BN;
302
+ }
303
+ export interface BuyPtEvent {
304
+ market: web3.PublicKey;
305
+ buyer: web3.PublicKey;
306
+ base_amount_in: BN;
307
+ pt_amount_out: BN;
308
+ unix_timestamp: BN;
309
+ }
310
+ export interface WrapperProvideLiquidityEvent {
311
+ user_address: web3.PublicKey;
312
+ market_address: web3.PublicKey;
313
+ amount_base_in: BN;
314
+ amount_lp_out: BN;
315
+ amount_yt_out: BN;
316
+ lp_price: number;
317
+ }
318
+ export interface WrapperCollectInterestEvent {
319
+ depositor: web3.PublicKey;
320
+ vault: web3.PublicKey;
321
+ amount_base_collected: BN;
322
+ unix_timestamp: BN;
323
+ }
324
+ export interface WrapperWithdrawLiquidityEvent {
325
+ user_address: web3.PublicKey;
326
+ market_address: web3.PublicKey;
327
+ amount_base_out: BN;
328
+ amount_lp_in: BN;
329
+ lp_price: number;
330
+ }
331
+ export interface WrapperWithdrawLiquidityClassicEvent {
332
+ user_address: web3.PublicKey;
333
+ market_address: web3.PublicKey;
334
+ amount_base_out: BN;
335
+ amount_lp_in: BN;
336
+ amount_pt_out: BN;
337
+ lp_price: number;
338
+ }
339
+ export {};
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EventDecoder = void 0;
7
+ const anchor_1 = require("@coral-xyz/anchor");
8
+ const exponent_idl_1 = require("@exponent-labs/exponent-idl");
9
+ const bs58_1 = __importDefault(require("bs58"));
10
+ class EventDecoder {
11
+ coder;
12
+ eventDecoder;
13
+ programId;
14
+ static eventIxTag = new anchor_1.BN("1d9acb512ea545e4", 16);
15
+ discriminators;
16
+ constructor(idl = exponent_idl_1.IDL) {
17
+ this.programId = new anchor_1.web3.PublicKey(idl.address);
18
+ this.coder = new anchor_1.BorshCoder(idl);
19
+ this.discriminators = new Map((idl.events ?? []).map((ev) => [Buffer.from(ev.discriminator).toString("hex"), ev.name]));
20
+ }
21
+ parseAsTransactionCpiData(log) {
22
+ let encodedLog;
23
+ try {
24
+ encodedLog = bs58_1.default.decode(log);
25
+ }
26
+ catch (e) {
27
+ return null;
28
+ }
29
+ const disc = encodedLog.slice(0, 8);
30
+ if (disc.equals(Uint8Array.from(EventDecoder.eventIxTag.toBuffer("le", 8)))) {
31
+ return Buffer.from(Uint8Array.from(encodedLog.slice(8))).toString("base64");
32
+ }
33
+ else {
34
+ return null;
35
+ }
36
+ }
37
+ decode(log) {
38
+ const cpiData = this.parseAsTransactionCpiData(log);
39
+ if (!cpiData) {
40
+ return null;
41
+ }
42
+ try {
43
+ const event = this.coder.events.decode(cpiData);
44
+ return {
45
+ name: event.name,
46
+ data: event,
47
+ };
48
+ }
49
+ catch (e) {
50
+ console.error(`Failed to decode event:`, e);
51
+ return null;
52
+ }
53
+ }
54
+ parseCpiEvents(transactionResponse) {
55
+ const events = [];
56
+ const inner = transactionResponse?.meta?.innerInstructions ?? [];
57
+ for (let i = 0; i < inner.length; i++) {
58
+ for (let j = 0; j < inner[i].instructions.length; j++) {
59
+ const ix = inner[i].instructions[j];
60
+ const programPubkey = transactionResponse?.transaction.message.staticAccountKeys[ix.programIdIndex];
61
+ if (programPubkey === undefined || !programPubkey.equals(this.programId)) {
62
+ continue;
63
+ }
64
+ const event = this.decode(ix.data);
65
+ if (event) {
66
+ events.push(event.data);
67
+ }
68
+ }
69
+ }
70
+ return categorizeEvents(events);
71
+ }
72
+ parseHeliusWebsocketCpiEvents(transactionResponse) {
73
+ const events = [];
74
+ const inner = transactionResponse?.meta?.innerInstructions ?? [];
75
+ for (let i = 0; i < inner.length; i++) {
76
+ for (let j = 0; j < inner[i].instructions.length; j++) {
77
+ const ix = inner[i].instructions[j];
78
+ // @ts-ignore
79
+ const programPubkey = new anchor_1.web3.PublicKey(ix.programId);
80
+ if (programPubkey === undefined || !programPubkey.equals(this.programId)) {
81
+ continue;
82
+ }
83
+ const event = this.decode(ix.data);
84
+ if (event) {
85
+ events.push(event.data);
86
+ }
87
+ }
88
+ }
89
+ return categorizeEvents(events);
90
+ }
91
+ }
92
+ exports.EventDecoder = EventDecoder;
93
+ function categorizeEvents(events) {
94
+ const tradePtEvents = [];
95
+ const stripEvents = [];
96
+ const mergeEvents = [];
97
+ const depositYtEvents = [];
98
+ const withdrawYtEvents = [];
99
+ const collectInterestEvents = [];
100
+ const collectEmissionEvents = [];
101
+ const stageYieldEvents = [];
102
+ const initializeYieldPositionEvents = [];
103
+ const withdrawLpEvents = [];
104
+ const withdrawLiquidityEvents = [];
105
+ const sellYtEvents = [];
106
+ const marketCollectEmissionEvents = [];
107
+ const initLpPositionEvents = [];
108
+ const depositLpEvents = [];
109
+ const depositLiquidityEvents = [];
110
+ const claimFarmEmissionsEvents = [];
111
+ const buyYtEvents = [];
112
+ const wrapperBuyYtEvents = [];
113
+ const wrapperSellYtEvents = [];
114
+ const sellPtEvents = [];
115
+ const buyPtEvents = [];
116
+ const wrapperProvideLiquidityEvents = [];
117
+ const wrapperCollectInterestEvents = [];
118
+ const wrapperWithdrawLiquidityEvents = [];
119
+ const wrapperWithdrawLiquidityClassicEvents = [];
120
+ for (const ev of events) {
121
+ switch (ev.name) {
122
+ case "TradePtEvent":
123
+ tradePtEvents.push(ev.data);
124
+ break;
125
+ case "StripEvent":
126
+ stripEvents.push(ev.data);
127
+ break;
128
+ case "MergeEvent":
129
+ mergeEvents.push(ev.data);
130
+ break;
131
+ case "DepositYtEvent":
132
+ depositYtEvents.push(ev.data);
133
+ break;
134
+ case "WithdrawYtEvent":
135
+ withdrawYtEvents.push(ev.data);
136
+ break;
137
+ case "CollectInterestEvent":
138
+ collectInterestEvents.push(ev.data);
139
+ break;
140
+ case "CollectEmissionEvent":
141
+ collectEmissionEvents.push(ev.data);
142
+ break;
143
+ case "StageYieldEvent":
144
+ stageYieldEvents.push(ev.data);
145
+ break;
146
+ case "InitializeYieldPositionEvent":
147
+ initializeYieldPositionEvents.push(ev.data);
148
+ break;
149
+ case "WithdrawLpEvent":
150
+ withdrawLpEvents.push(ev.data);
151
+ break;
152
+ case "WithdrawLiquidityEvent":
153
+ withdrawLiquidityEvents.push(ev.data);
154
+ break;
155
+ case "SellYtEvent":
156
+ sellYtEvents.push(ev.data);
157
+ break;
158
+ case "MarketCollectEmissionEvent":
159
+ marketCollectEmissionEvents.push(ev.data);
160
+ break;
161
+ case "InitLpPositionEvent":
162
+ initLpPositionEvents.push(ev.data);
163
+ break;
164
+ case "DepositLpEvent":
165
+ depositLpEvents.push(ev.data);
166
+ break;
167
+ case "DepositLiquidityEvent":
168
+ depositLiquidityEvents.push(ev.data);
169
+ break;
170
+ case "ClaimFarmEmissionsEvent":
171
+ claimFarmEmissionsEvents.push(ev.data);
172
+ break;
173
+ case "BuyYtEvent":
174
+ buyYtEvents.push(ev.data);
175
+ break;
176
+ case "WrapperBuyYtEvent":
177
+ wrapperBuyYtEvents.push(ev.data);
178
+ break;
179
+ case "WrapperSellYtEvent":
180
+ wrapperSellYtEvents.push(ev.data);
181
+ break;
182
+ case "SellPtEvent":
183
+ sellPtEvents.push(ev.data);
184
+ break;
185
+ case "BuyPtEvent":
186
+ buyPtEvents.push(ev.data);
187
+ break;
188
+ case "WrapperProvideLiquidityEvent":
189
+ wrapperProvideLiquidityEvents.push(ev.data);
190
+ break;
191
+ case "WrapperCollectInterestEvent":
192
+ wrapperCollectInterestEvents.push(ev.data);
193
+ break;
194
+ case "WrapperWithdrawLiquidityEvent":
195
+ wrapperWithdrawLiquidityEvents.push(ev.data);
196
+ break;
197
+ case "WrapperWithdrawLiquidityClassicEvent":
198
+ wrapperWithdrawLiquidityClassicEvents.push(ev.data);
199
+ break;
200
+ }
201
+ }
202
+ return {
203
+ tradePtEvents,
204
+ stripEvents,
205
+ mergeEvents,
206
+ depositYtEvents,
207
+ withdrawYtEvents,
208
+ collectInterestEvents,
209
+ collectEmissionEvents,
210
+ stageYieldEvents,
211
+ initializeYieldPositionEvents,
212
+ withdrawLpEvents,
213
+ withdrawLiquidityEvents,
214
+ sellYtEvents,
215
+ marketCollectEmissionEvents,
216
+ initLpPositionEvents,
217
+ depositLpEvents,
218
+ depositLiquidityEvents,
219
+ claimFarmEmissionsEvents,
220
+ buyYtEvents,
221
+ wrapperBuyYtEvents,
222
+ wrapperSellYtEvents,
223
+ sellPtEvents,
224
+ buyPtEvents,
225
+ wrapperProvideLiquidityEvents,
226
+ wrapperCollectInterestEvents,
227
+ wrapperWithdrawLiquidityEvents,
228
+ wrapperWithdrawLiquidityClassicEvents,
229
+ };
230
+ }
231
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}