@exponent-labs/exponent-sdk 0.1.7 → 0.1.8

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 (92) hide show
  1. package/build/EventDecoderV2.d.ts +31 -0
  2. package/build/EventDecoderV2.js +76 -0
  3. package/build/EventDecoderV2.js.map +1 -0
  4. package/build/addressLookupTableUtil.d.ts +17 -1
  5. package/build/addressLookupTableUtil.js +35 -1
  6. package/build/addressLookupTableUtil.js.map +1 -1
  7. package/build/clmm/events.d.ts +10 -0
  8. package/build/clmm/events.js +10 -0
  9. package/build/clmm/events.js.map +1 -0
  10. package/build/clmm/index.d.ts +1 -0
  11. package/build/clmm/index.js +18 -0
  12. package/build/clmm/index.js.map +1 -0
  13. package/build/events.d.ts +200 -9
  14. package/build/events.js +73 -24
  15. package/build/events.js.map +1 -1
  16. package/build/eventsV2.d.ts +7 -0
  17. package/build/eventsV2.js +10 -0
  18. package/build/eventsV2.js.map +1 -0
  19. package/build/flavors.d.ts +2 -0
  20. package/build/flavors.js +81 -27
  21. package/build/flavors.js.map +1 -1
  22. package/build/index.d.ts +6 -0
  23. package/build/index.js +14 -4
  24. package/build/index.js.map +1 -1
  25. package/build/lpPosition.js +4 -1
  26. package/build/lpPosition.js.map +1 -1
  27. package/build/market.d.ts +14 -2
  28. package/build/market.js +70 -29
  29. package/build/market.js.map +1 -1
  30. package/build/marketThree.d.ts +664 -0
  31. package/build/marketThree.js +1415 -0
  32. package/build/marketThree.js.map +1 -0
  33. package/build/marketThree.test.d.ts +1 -0
  34. package/build/marketThree.test.js +166 -0
  35. package/build/marketThree.test.js.map +1 -0
  36. package/build/orderbook/events.d.ts +7 -0
  37. package/build/orderbook/events.js +10 -0
  38. package/build/orderbook/events.js.map +1 -0
  39. package/build/orderbook/index.d.ts +4 -0
  40. package/build/orderbook/index.js +41 -0
  41. package/build/orderbook/index.js.map +1 -0
  42. package/build/orderbook/math.d.ts +26 -0
  43. package/build/orderbook/math.js +111 -0
  44. package/build/orderbook/math.js.map +1 -0
  45. package/build/orderbook/orderbook.d.ts +175 -0
  46. package/build/orderbook/orderbook.js +756 -0
  47. package/build/orderbook/orderbook.js.map +1 -0
  48. package/build/orderbook/types.d.ts +49 -0
  49. package/build/orderbook/types.js +27 -0
  50. package/build/orderbook/types.js.map +1 -0
  51. package/build/orderbook/utils.d.ts +18 -0
  52. package/build/orderbook/utils.js +74 -0
  53. package/build/orderbook/utils.js.map +1 -0
  54. package/build/router.d.ts +92 -0
  55. package/build/router.js +214 -0
  56. package/build/router.js.map +1 -0
  57. package/build/syPosition.js +6 -0
  58. package/build/syPosition.js.map +1 -1
  59. package/build/utils/index.d.ts +3 -2
  60. package/build/utils/index.js +22 -1
  61. package/build/utils/index.js.map +1 -1
  62. package/build/vault.d.ts +3 -1
  63. package/build/vault.js +98 -62
  64. package/build/vault.js.map +1 -1
  65. package/build/ytPosition.d.ts +2 -0
  66. package/build/ytPosition.js +18 -5
  67. package/build/ytPosition.js.map +1 -1
  68. package/package.json +28 -23
  69. package/src/EventDecoderV2.ts +96 -0
  70. package/src/addressLookupTableUtil.ts +42 -1
  71. package/src/clmm/events.ts +17 -0
  72. package/src/clmm/index.ts +1 -0
  73. package/src/events.ts +280 -27
  74. package/src/eventsV2.ts +13 -0
  75. package/src/flavors.ts +97 -27
  76. package/src/index.ts +6 -0
  77. package/src/lpPosition.ts +5 -2
  78. package/src/market.ts +100 -31
  79. package/src/marketThree.test.ts +208 -0
  80. package/src/marketThree.ts +2430 -0
  81. package/src/orderbook/events.ts +13 -0
  82. package/src/orderbook/index.ts +12 -0
  83. package/src/orderbook/math.ts +122 -0
  84. package/src/orderbook/orderbook.ts +1153 -0
  85. package/src/orderbook/types.ts +45 -0
  86. package/src/orderbook/utils.ts +74 -0
  87. package/src/router.ts +360 -0
  88. package/src/syPosition.ts +4 -0
  89. package/src/utils/index.ts +27 -2
  90. package/src/vault.ts +100 -62
  91. package/src/ytPosition.ts +28 -7
  92. package/tsconfig.json +4 -1
@@ -0,0 +1,31 @@
1
+ import { Program as AnchorProgram, Idl, web3 } from "@coral-xyz/anchor";
2
+ export type GenericEvent = {
3
+ name: string;
4
+ data: unknown;
5
+ };
6
+ type OnErrorHandler = (error: Error) => void | Promise<void>;
7
+ /**
8
+ * Works with any anchor idl
9
+ * Provides only one method: parseEvents which takes instructions and accountKeys and returns GenericEvent[]
10
+ * GenericEvent: {name: string, data: unknown }
11
+ * Can determine only events from the provided idl
12
+ */
13
+ export declare class EventDecoderV2<IdlType extends Idl> {
14
+ private program;
15
+ private static eventIxTagBuffer;
16
+ private onError?;
17
+ constructor(program: AnchorProgram<IdlType>, params?: {
18
+ onError?: OnErrorHandler;
19
+ });
20
+ private getEventDataFromIxn;
21
+ private parseEvent;
22
+ static ixnHasProgramId(instruction: web3.CompiledInstruction, accountKeys: web3.MessageAccountKeys, programId: web3.PublicKey): boolean;
23
+ /**
24
+ * Function to check if transaction contains instruction with given programId
25
+ * As decoding events from transaction is very performance-intensive operation,
26
+ * we need to filter first and then apply only necessary event decoder(s)
27
+ */
28
+ static txnHasProgramId(instructions: web3.CompiledInstruction[], accountKeys: web3.MessageAccountKeys, programId: web3.PublicKey): boolean;
29
+ parseEvents(instructions: web3.CompiledInstruction[], accountKeys: web3.MessageAccountKeys): GenericEvent[];
30
+ }
31
+ export {};
@@ -0,0 +1,76 @@
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.EventDecoderV2 = void 0;
7
+ const anchor_1 = require("@coral-xyz/anchor");
8
+ const bs58_1 = __importDefault(require("bs58"));
9
+ const EVENT_IX_TAG = new anchor_1.BN("1d9acb512ea545e4", 16);
10
+ /**
11
+ * Works with any anchor idl
12
+ * Provides only one method: parseEvents which takes instructions and accountKeys and returns GenericEvent[]
13
+ * GenericEvent: {name: string, data: unknown }
14
+ * Can determine only events from the provided idl
15
+ */
16
+ class EventDecoderV2 {
17
+ program;
18
+ static eventIxTagBuffer = Buffer.from(EVENT_IX_TAG.toArray("le", 8));
19
+ onError;
20
+ constructor(program, params) {
21
+ this.program = program;
22
+ this.onError = params?.onError;
23
+ }
24
+ getEventDataFromIxn(ixnData, ixnIdx) {
25
+ const encodedLog = typeof ixnData === "string" ? Buffer.from(bs58_1.default.decode(ixnData)) : Buffer.from(ixnData);
26
+ const discriminator = encodedLog.subarray(0, 8);
27
+ if (discriminator.equals(EventDecoderV2.eventIxTagBuffer)) {
28
+ return Buffer.from(Uint8Array.from(encodedLog.subarray(8))).toString("base64");
29
+ }
30
+ throw new Error("Discriminator not found", { cause: { ixnData, instructionIndex: ixnIdx } });
31
+ }
32
+ parseEvent(ixnData, ixnIdx) {
33
+ try {
34
+ const eventData = this.getEventDataFromIxn(ixnData, ixnIdx);
35
+ const event = this.program.coder.events.decode(eventData);
36
+ return {
37
+ name: event.name,
38
+ data: event.data,
39
+ };
40
+ }
41
+ catch (error) {
42
+ this.onError?.(error);
43
+ return null;
44
+ }
45
+ }
46
+ static ixnHasProgramId(instruction, accountKeys, programId) {
47
+ const programPubkey = accountKeys.get(instruction.programIdIndex);
48
+ if (!!programPubkey && programPubkey.equals(programId)) {
49
+ return true;
50
+ }
51
+ return false;
52
+ }
53
+ /**
54
+ * Function to check if transaction contains instruction with given programId
55
+ * As decoding events from transaction is very performance-intensive operation,
56
+ * we need to filter first and then apply only necessary event decoder(s)
57
+ */
58
+ static txnHasProgramId(instructions, accountKeys, programId) {
59
+ return instructions.some((ixn) => {
60
+ return EventDecoderV2.ixnHasProgramId(ixn, accountKeys, new anchor_1.web3.PublicKey(programId));
61
+ });
62
+ }
63
+ parseEvents(instructions, accountKeys) {
64
+ const events = instructions
65
+ .map((ixn, ixnIdx) => {
66
+ if (EventDecoderV2.ixnHasProgramId(ixn, accountKeys, this.program.programId)) {
67
+ return this.parseEvent(ixn.data, ixnIdx) || null;
68
+ }
69
+ return null;
70
+ })
71
+ .filter((ev) => !!ev);
72
+ return events;
73
+ }
74
+ }
75
+ exports.EventDecoderV2 = EventDecoderV2;
76
+ //# sourceMappingURL=EventDecoderV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventDecoderV2.js","sourceRoot":"","sources":["../src/EventDecoderV2.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { web3 } from "@coral-xyz/anchor";
2
- import { CpiAccountIndexes } from "@exponent-labs/exponent-types";
2
+ import { CpiAccountIndexes, ExponentCoreCpiIndexes, MarketCpiCoreIndexes } from "@exponent-labs/exponent-types";
3
3
  /** Fetch and deserialize the ALT */
4
4
  export declare function fetchAddressLookupTable(connection: web3.Connection, address: web3.PublicKey): Promise<web3.PublicKey[]>;
5
5
  /** Create the CPI accounts lists from the Address Lookup Table and the on-chain stored CPI account indexes */
@@ -10,3 +10,19 @@ export declare function makeCpiAccountMetaLists(altAddresses: web3.PublicKey[],
10
10
  claimEmission: web3.AccountMeta[][];
11
11
  getPositionState: web3.AccountMeta[];
12
12
  };
13
+ /** Create the CPI accounts lists from the Address Lookup Table and the on-chain stored CPI account indexes (for Orderbook/full core CPI) */
14
+ export declare function makeCoreCpiAccountMetaLists(altAddresses: web3.PublicKey[], cpiIndexes: ExponentCoreCpiIndexes): {
15
+ depositYt: web3.AccountMeta[];
16
+ withdrawYt: web3.AccountMeta[];
17
+ stripSy: web3.AccountMeta[];
18
+ mergeSy: web3.AccountMeta[];
19
+ collectInterest: web3.AccountMeta[];
20
+ };
21
+ /** Create the CPI accounts lists from the Address Lookup Table for MarketThree (only stripSy and mergeSy, others empty) */
22
+ export declare function makeMarketCoreCpiAccountMetaLists(altAddresses: web3.PublicKey[], cpiIndexes: MarketCpiCoreIndexes): {
23
+ depositYt: any[];
24
+ withdrawYt: any[];
25
+ stripSy: web3.AccountMeta[];
26
+ mergeSy: web3.AccountMeta[];
27
+ collectInterest: any[];
28
+ };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeCpiAccountMetaLists = exports.fetchAddressLookupTable = void 0;
3
+ exports.makeMarketCoreCpiAccountMetaLists = exports.makeCoreCpiAccountMetaLists = exports.makeCpiAccountMetaLists = exports.fetchAddressLookupTable = void 0;
4
4
  const anchor_1 = require("@coral-xyz/anchor");
5
5
  /** Fetch and deserialize the ALT */
6
6
  async function fetchAddressLookupTable(connection, address) {
@@ -29,4 +29,38 @@ function makeCpiAccountMetaLists(altAddresses, cpiIndexes) {
29
29
  };
30
30
  }
31
31
  exports.makeCpiAccountMetaLists = makeCpiAccountMetaLists;
32
+ /** Create the CPI accounts lists from the Address Lookup Table and the on-chain stored CPI account indexes (for Orderbook/full core CPI) */
33
+ function makeCoreCpiAccountMetaLists(altAddresses, cpiIndexes) {
34
+ const pluckAddress = (index) => altAddresses[index];
35
+ const transform = (a) => ({
36
+ isSigner: false,
37
+ isWritable: a.isWritable,
38
+ pubkey: pluckAddress(a.altIndex),
39
+ });
40
+ return {
41
+ depositYt: cpiIndexes.depositYt.map(transform),
42
+ withdrawYt: cpiIndexes.withdrawYt.map(transform),
43
+ stripSy: cpiIndexes.stripSy.map(transform),
44
+ mergeSy: cpiIndexes.mergeSy.map(transform),
45
+ collectInterest: cpiIndexes.collectInterest.map(transform),
46
+ };
47
+ }
48
+ exports.makeCoreCpiAccountMetaLists = makeCoreCpiAccountMetaLists;
49
+ /** Create the CPI accounts lists from the Address Lookup Table for MarketThree (only stripSy and mergeSy, others empty) */
50
+ function makeMarketCoreCpiAccountMetaLists(altAddresses, cpiIndexes) {
51
+ const pluckAddress = (index) => altAddresses[index];
52
+ const transform = (a) => ({
53
+ isSigner: false,
54
+ isWritable: a.isWritable,
55
+ pubkey: pluckAddress(a.altIndex),
56
+ });
57
+ return {
58
+ depositYt: [],
59
+ withdrawYt: [],
60
+ stripSy: cpiIndexes.stripSy.map(transform),
61
+ mergeSy: cpiIndexes.mergeSy.map(transform),
62
+ collectInterest: [],
63
+ };
64
+ }
65
+ exports.makeMarketCoreCpiAccountMetaLists = makeMarketCoreCpiAccountMetaLists;
32
66
  //# sourceMappingURL=addressLookupTableUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"addressLookupTableUtil.js","sourceRoot":"","sources":["../src/addressLookupTableUtil.ts"],"names":[],"mappings":";;;AAAA,8CAAwC;AAIxC,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"}
1
+ {"version":3,"file":"addressLookupTableUtil.js","sourceRoot":"","sources":["../src/addressLookupTableUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { IdlTypes } from "@coral-xyz/anchor";
2
+ import { ExponentClmm } from "@exponent-labs/exponent-clmm-idl";
3
+ import { EventDecoderV2 } from "../EventDecoderV2";
4
+ export declare const CLMM_PROGRAM_ID: string;
5
+ export declare const CLMM_EVENT_DECODER: EventDecoderV2<ExponentClmm>;
6
+ export type ClmmEventNames = ExponentClmm["events"][number]["name"];
7
+ export type ClmmEvent<Name extends ClmmEventNames> = IdlTypes<ExponentClmm>[Name];
8
+ export type PersonalYieldTrackers = IdlTypes<ExponentClmm>["personalYieldTrackers"];
9
+ export type PrincipalShare = IdlTypes<ExponentClmm>["principalShare"];
10
+ export type PrincipalShareTrackers = IdlTypes<ExponentClmm>["principalShareTrackers"];
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CLMM_EVENT_DECODER = exports.CLMM_PROGRAM_ID = void 0;
4
+ const exponent_clmm_idl_1 = require("@exponent-labs/exponent-clmm-idl");
5
+ const EventDecoderV2_1 = require("../EventDecoderV2");
6
+ const utils_1 = require("../utils");
7
+ exports.CLMM_PROGRAM_ID = exponent_clmm_idl_1.PROGRAM_ID;
8
+ const CLMM_PROGRAM = (0, utils_1.createAnchorProgram)(exponent_clmm_idl_1.IDL);
9
+ exports.CLMM_EVENT_DECODER = new EventDecoderV2_1.EventDecoderV2(CLMM_PROGRAM);
10
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/clmm/events.ts"],"names":[],"mappings":";;;AAEA,wEAAgF;AAEhF,sDAAkD;AAClD,oCAA8C;AAEjC,QAAA,eAAe,GAAG,8BAAU,CAAA;AACzC,MAAM,YAAY,GAAG,IAAA,2BAAmB,EAAC,uBAAmB,CAAC,CAAA;AAChD,QAAA,kBAAkB,GAAG,IAAI,+BAAc,CAAC,YAAY,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export * from "./events";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./events"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/clmm/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB"}
package/build/events.d.ts CHANGED
@@ -5,35 +5,41 @@ import { AnchorizedPNum } from "@exponent-labs/exponent-types";
5
5
  export declare class EventDecoder {
6
6
  private coder;
7
7
  programId: web3.PublicKey;
8
- private static eventIxTag;
8
+ private static eventIxTagBuffer;
9
9
  constructor(idl?: ExponentCore);
10
- parseAsTransactionCpiData(log: string): string | null;
11
- decode(log: string): GenericEvent | null;
12
- parseCpiEvents(transactionResponse: web3.VersionedTransactionResponse | web3.TransactionResponse, connection: web3.Connection): Promise<CategorizedEvents>;
10
+ private parseAsTransactionCpiData;
11
+ private decode;
12
+ parseCpiEvents(instructions: web3.CompiledInstruction[], accountKeys: web3.MessageAccountKeys): CategorizedEvents;
13
+ parseTransactionResponseCpiEvents(transactionResponse: web3.VersionedTransactionResponse | web3.TransactionResponse, connection: web3.Connection): Promise<CategorizedEvents>;
13
14
  parseHeliusWebsocketCpiEvents(transactionResponse: web3.VersionedTransactionResponse | web3.TransactionResponse): CategorizedEvents;
14
15
  }
15
- interface GenericEvent {
16
- name: string;
17
- data: any;
18
- }
19
16
  export interface CategorizedEvents {
20
17
  tradePtEvents: TradePtEvent[];
21
18
  stripEvents: StripEvent[];
22
19
  mergeEvents: MergeEvent[];
23
20
  depositYtEvents: DepositYtEvent[];
21
+ depositYtEventsV2: DepositYtEventV2[];
24
22
  withdrawYtEvents: WithdrawYtEvent[];
23
+ withdrawYtEventsV2: WithdrawYtEventV2[];
25
24
  collectInterestEvents: CollectInterestEvent[];
25
+ collectInterestEventsV2: CollectInterestEventV2[];
26
26
  collectEmissionEvents: CollectEmissionEvent[];
27
+ collectEmissionEventsV2: CollectEmissionEventV2[];
27
28
  stageYieldEvents: StageYieldEvent[];
29
+ stageYieldEventsV2: StageYieldEventV2[];
28
30
  initializeYieldPositionEvents: InitializeYieldPositionEvent[];
29
31
  withdrawLpEvents: WithdrawLpEvent[];
32
+ withdrawLpEventsV2: WithdrawLpEventV2[];
30
33
  withdrawLiquidityEvents: WithdrawLiquidityEvent[];
31
34
  sellYtEvents: SellYtEvent[];
32
35
  marketCollectEmissionEvents: MarketCollectEmissionEvent[];
36
+ marketCollectEmissionEventsV2: MarketCollectEmissionEventV2[];
33
37
  initLpPositionEvents: InitLpPositionEvent[];
34
38
  depositLpEvents: DepositLpEvent[];
39
+ depositLpEventsV2: DepositLpEventV2[];
35
40
  depositLiquidityEvents: DepositLiquidityEvent[];
36
41
  claimFarmEmissionsEvents: ClaimFarmEmissionsEvent[];
42
+ claimFarmEmissionsEventsV2: ClaimFarmEmissionsEventV2[];
37
43
  buyYtEvents: BuyYtEvent[];
38
44
  wrapperBuyYtEvents: WrapperBuyYtEvent[];
39
45
  wrapperSellYtEvents: WrapperSellYtEvent[];
@@ -117,6 +123,28 @@ export interface DepositYtEvent {
117
123
  user_staged_yield: BN;
118
124
  unix_timestamp: BN;
119
125
  }
126
+ export interface DepositYtEventV2 {
127
+ depositor: web3.PublicKey;
128
+ vault: web3.PublicKey;
129
+ user_yield_position: web3.PublicKey;
130
+ vault_yield_position: web3.PublicKey;
131
+ yt_src: web3.PublicKey;
132
+ escrow_yt: web3.PublicKey;
133
+ amount: BN;
134
+ sy_exchange_rate: AnchorizedPNum;
135
+ user_yt_balance_after: BN;
136
+ vault_yt_balance_after: BN;
137
+ user_staged_yield: BN;
138
+ unix_timestamp: BN;
139
+ user_interest: {
140
+ last_seen_index: AnchorizedPNum;
141
+ staged: BN;
142
+ };
143
+ user_emissions: {
144
+ last_seen_index: AnchorizedPNum;
145
+ staged: BN;
146
+ }[];
147
+ }
120
148
  export interface WithdrawYtEvent {
121
149
  owner: web3.PublicKey;
122
150
  vault: web3.PublicKey;
@@ -131,6 +159,28 @@ export interface WithdrawYtEvent {
131
159
  user_staged_yield: BN;
132
160
  unix_timestamp: BN;
133
161
  }
162
+ export interface WithdrawYtEventV2 {
163
+ owner: web3.PublicKey;
164
+ vault: web3.PublicKey;
165
+ user_yield_position: web3.PublicKey;
166
+ vault_yield_position: web3.PublicKey;
167
+ yt_dst: web3.PublicKey;
168
+ escrow_yt: web3.PublicKey;
169
+ amount: BN;
170
+ sy_exchange_rate: AnchorizedPNum;
171
+ user_yt_balance_after: BN;
172
+ vault_yt_balance_after: BN;
173
+ user_staged_yield: BN;
174
+ unix_timestamp: BN;
175
+ user_interest: {
176
+ last_seen_index: AnchorizedPNum;
177
+ staged: BN;
178
+ };
179
+ user_emissions: {
180
+ last_seen_index: AnchorizedPNum;
181
+ staged: BN;
182
+ }[];
183
+ }
134
184
  export interface CollectInterestEvent {
135
185
  user: web3.PublicKey;
136
186
  vault: web3.PublicKey;
@@ -139,6 +189,22 @@ export interface CollectInterestEvent {
139
189
  amount_to_treasury: BN;
140
190
  unix_timestamp: BN;
141
191
  }
192
+ export interface CollectInterestEventV2 {
193
+ user: web3.PublicKey;
194
+ vault: web3.PublicKey;
195
+ user_yield_position: web3.PublicKey;
196
+ amount_to_user: BN;
197
+ amount_to_treasury: BN;
198
+ unix_timestamp: BN;
199
+ user_interest: {
200
+ last_seen_index: AnchorizedPNum;
201
+ staged: BN;
202
+ };
203
+ user_emissions: {
204
+ last_seen_index: AnchorizedPNum;
205
+ staged: BN;
206
+ }[];
207
+ }
142
208
  export interface CollectEmissionEvent {
143
209
  user: web3.PublicKey;
144
210
  vault: web3.PublicKey;
@@ -148,6 +214,23 @@ export interface CollectEmissionEvent {
148
214
  amount_to_treasury: BN;
149
215
  unix_timestamp: BN;
150
216
  }
217
+ export interface CollectEmissionEventV2 {
218
+ user: web3.PublicKey;
219
+ vault: web3.PublicKey;
220
+ position: web3.PublicKey;
221
+ emission_index: number;
222
+ amount_to_user: BN;
223
+ amount_to_treasury: BN;
224
+ unix_timestamp: BN;
225
+ user_interest: {
226
+ last_seen_index: AnchorizedPNum;
227
+ staged: BN;
228
+ };
229
+ user_emissions: {
230
+ last_seen_index: AnchorizedPNum;
231
+ staged: BN;
232
+ }[];
233
+ }
151
234
  export interface StageYieldEvent {
152
235
  payer: web3.PublicKey;
153
236
  vault: web3.PublicKey;
@@ -159,6 +242,24 @@ export interface StageYieldEvent {
159
242
  user_staged_emissions: BN[];
160
243
  unix_timestamp: BN;
161
244
  }
245
+ export interface StageYieldEventV2 {
246
+ payer: web3.PublicKey;
247
+ vault: web3.PublicKey;
248
+ user_yield_position: web3.PublicKey;
249
+ vault_yield_position: web3.PublicKey;
250
+ sy_exchange_rate: AnchorizedPNum;
251
+ user_yt_balance: BN;
252
+ user_staged_yield: BN;
253
+ unix_timestamp: BN;
254
+ user_interest: {
255
+ last_seen_index: AnchorizedPNum;
256
+ staged: BN;
257
+ };
258
+ user_emissions: {
259
+ last_seen_index: AnchorizedPNum;
260
+ staged: BN;
261
+ }[];
262
+ }
162
263
  export interface InitializeYieldPositionEvent {
163
264
  owner: web3.PublicKey;
164
265
  vault: web3.PublicKey;
@@ -176,6 +277,29 @@ export interface WithdrawLpEvent {
176
277
  new_lp_balance: BN;
177
278
  unix_timestamp: BN;
178
279
  }
280
+ export interface WithdrawLpEventV2 {
281
+ owner: web3.PublicKey;
282
+ market: web3.PublicKey;
283
+ lp_position: web3.PublicKey;
284
+ mint_lp: web3.PublicKey;
285
+ token_lp_dst: web3.PublicKey;
286
+ token_lp_escrow: web3.PublicKey;
287
+ amount: BN;
288
+ new_lp_balance: BN;
289
+ unix_timestamp: BN;
290
+ emissions: {
291
+ trackers: {
292
+ last_seen_index: AnchorizedPNum;
293
+ staged: BN;
294
+ }[];
295
+ };
296
+ farms: {
297
+ trackers: {
298
+ last_seen_index: AnchorizedPNum;
299
+ staged: BN;
300
+ }[];
301
+ };
302
+ }
179
303
  export interface WithdrawLiquidityEvent {
180
304
  withdrawer: web3.PublicKey;
181
305
  market: web3.PublicKey;
@@ -216,6 +340,28 @@ export interface MarketCollectEmissionEvent {
216
340
  amount_collected: BN;
217
341
  timestamp: BN;
218
342
  }
343
+ export interface MarketCollectEmissionEventV2 {
344
+ owner: web3.PublicKey;
345
+ market: web3.PublicKey;
346
+ lp_position: web3.PublicKey;
347
+ token_emission_escrow: web3.PublicKey;
348
+ token_emission_dst: web3.PublicKey;
349
+ emission_index: number;
350
+ amount_collected: BN;
351
+ timestamp: BN;
352
+ emissions: {
353
+ trackers: {
354
+ last_seen_index: AnchorizedPNum;
355
+ staged: BN;
356
+ }[];
357
+ };
358
+ farms: {
359
+ trackers: {
360
+ last_seen_index: AnchorizedPNum;
361
+ staged: BN;
362
+ }[];
363
+ };
364
+ }
219
365
  export interface InitLpPositionEvent {
220
366
  fee_payer: web3.PublicKey;
221
367
  owner: web3.PublicKey;
@@ -236,6 +382,29 @@ export interface DepositLpEvent {
236
382
  new_lp_balance: BN;
237
383
  timestamp: BN;
238
384
  }
385
+ export interface DepositLpEventV2 {
386
+ owner: web3.PublicKey;
387
+ market: web3.PublicKey;
388
+ lp_position: web3.PublicKey;
389
+ token_lp_src: web3.PublicKey;
390
+ token_lp_escrow: web3.PublicKey;
391
+ mint_lp: web3.PublicKey;
392
+ amount: BN;
393
+ new_lp_balance: BN;
394
+ timestamp: BN;
395
+ emissions: {
396
+ trackers: {
397
+ last_seen_index: AnchorizedPNum;
398
+ staged: BN;
399
+ }[];
400
+ };
401
+ farms: {
402
+ trackers: {
403
+ last_seen_index: AnchorizedPNum;
404
+ staged: BN;
405
+ }[];
406
+ };
407
+ }
239
408
  export interface DepositLiquidityEvent {
240
409
  depositor: web3.PublicKey;
241
410
  market: web3.PublicKey;
@@ -264,6 +433,29 @@ export interface ClaimFarmEmissionsEvent {
264
433
  amount_claimed: BN;
265
434
  remaining_staged: BN;
266
435
  }
436
+ export interface ClaimFarmEmissionsEventV2 {
437
+ owner: web3.PublicKey;
438
+ market: web3.PublicKey;
439
+ lp_position: web3.PublicKey;
440
+ token_dst: web3.PublicKey;
441
+ mint: web3.PublicKey;
442
+ token_farm: web3.PublicKey;
443
+ farm_index: number;
444
+ amount_claimed: BN;
445
+ remaining_staged: BN;
446
+ emissions: {
447
+ trackers: {
448
+ last_seen_index: AnchorizedPNum;
449
+ staged: BN;
450
+ }[];
451
+ };
452
+ farms: {
453
+ trackers: {
454
+ last_seen_index: AnchorizedPNum;
455
+ staged: BN;
456
+ }[];
457
+ };
458
+ }
267
459
  export interface BuyYtEvent {
268
460
  trader: web3.PublicKey;
269
461
  market: web3.PublicKey;
@@ -369,4 +561,3 @@ export interface WrapperMergeEvent {
369
561
  amount_sy_redeemed: BN;
370
562
  amount_base_out: BN;
371
563
  }
372
- export {};