@fatsolutions/privacy-pools-core-starknet-sdk 0.0.7 → 0.0.9

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.
@@ -1,24 +1,42 @@
1
- import { RpcProvider, EmittedEvent } from "starknet";
2
- import { DepositEvent, WithdrawalEvent, RagequitEvent, PoolInfo } from "@0xbow/privacy-pools-core-sdk";
3
- interface StarknetDepositedEventData {
1
+ import { DepositEvent, PoolInfo, RagequitEvent, WithdrawalEvent } from "@0xbow/privacy-pools-core-sdk";
2
+ import { EmittedEvent, RpcProvider } from "starknet";
3
+ export declare const DEPOSIT_EVENT_SELECTOR: string;
4
+ export declare const WITHDRAWAL_EVENT_SELECTOR: string;
5
+ export declare const RAGEQUIT_EVENT_SELECTOR: string;
6
+ export declare const DEPOSIT_EVENT_ABI_NAME = "privacy_pools::interfaces::IPool::Deposited";
7
+ export declare const WITHDRAWAL_EVENT_ABI_NAME = "privacy_pools::interfaces::IPool::Withdrawn";
8
+ export declare const RAGEQUIT_EVENT_ABI_NAME = "privacy_pools::interfaces::IPool::RageQuit";
9
+ export declare const AbiEventName: {
10
+ readonly Deposit: "privacy_pools::interfaces::IPool::Deposited";
11
+ readonly Withdraw: "privacy_pools::interfaces::IPool::Withdrawn";
12
+ readonly Ragequit: "privacy_pools::interfaces::IPool::RageQuit";
13
+ };
14
+ type AbiEventName = typeof AbiEventName[keyof typeof AbiEventName];
15
+ export interface StarknetDepositedEventData {
4
16
  depositor: bigint;
5
17
  commitment: bigint;
6
18
  label: bigint;
7
19
  value: bigint;
8
20
  preCommitmentHash: bigint;
9
21
  }
10
- interface StarknetWithdrawnEventData {
22
+ export interface StarknetWithdrawnEventData {
11
23
  procesoor: bigint;
12
24
  newCommitmentHash: bigint;
13
25
  withdrawnValue: bigint;
14
26
  existingNullifierHash: bigint;
15
27
  }
16
- interface StarknetRageQuitEventData {
28
+ export interface StarknetRageQuitEventData {
17
29
  depositor: bigint;
18
30
  commitment: bigint;
19
31
  label: bigint;
20
32
  value: bigint;
21
33
  }
34
+ type AbiToEvent = {
35
+ [AbiEventName.Deposit]: StarknetDepositedEventData;
36
+ [AbiEventName.Withdraw]: StarknetWithdrawnEventData;
37
+ [AbiEventName.Ragequit]: StarknetRageQuitEventData;
38
+ };
39
+ export type StarknetEvent = StarknetDepositedEventData | StarknetWithdrawnEventData | StarknetRageQuitEventData;
22
40
  /**
23
41
  * Starknet implementation of DataService for privacy pool event fetching.
24
42
  *
@@ -41,7 +59,7 @@ export declare class StarknetDataService {
41
59
  * @returns Array of deposit events compatible with AccountService interface
42
60
  * @throws {StarknetSDKError} If provider is not configured or network error occurs
43
61
  */
44
- getDeposits(pool: PoolInfo): Promise<DepositEvent[]>;
62
+ getDeposits(pool: PoolInfo, fromBlock?: bigint): Promise<DepositEvent[]>;
45
63
  /**
46
64
  * Get withdrawal events for a specific Starknet pool
47
65
  *
@@ -61,20 +79,18 @@ export declare class StarknetDataService {
61
79
  */
62
80
  getRagequits(pool: PoolInfo, fromBlock?: bigint): Promise<RagequitEvent[]>;
63
81
  private static parseGenericEvents;
64
- static parseDepositEvents(rawEvents: EmittedEvent[]): {
65
- eventData: StarknetDepositedEventData;
82
+ static parseDepositEvents(emittedEvents: EmittedEvent[], pool: PoolInfo): (StarknetDepositedEventData & {
66
83
  blockNumber: import("starknet").BlockNumber | undefined;
67
84
  transactionHash: string | undefined;
68
- }[];
69
- static parseWithdrawalEvents(rawEvents: EmittedEvent[]): {
70
- eventData: StarknetWithdrawnEventData;
85
+ })[];
86
+ static parseWithdrawalEvents(emittedEvents: EmittedEvent[], pool: PoolInfo): (StarknetWithdrawnEventData & {
71
87
  blockNumber: import("starknet").BlockNumber | undefined;
72
88
  transactionHash: string | undefined;
73
- }[];
74
- static parseRagequitEvents(rawEvents: EmittedEvent[]): {
75
- eventData: StarknetRageQuitEventData;
89
+ })[];
90
+ static parseRagequitEvents(emittedEvents: EmittedEvent[], pool: PoolInfo): (StarknetRageQuitEventData & {
76
91
  blockNumber: import("starknet").BlockNumber | undefined;
77
92
  transactionHash: string | undefined;
78
- }[];
93
+ })[];
94
+ getTxEvents<K extends AbiEventName>(abiEventName: K, transactionHash: string, pool: PoolInfo): Promise<AbiToEvent[K][]>;
79
95
  }
80
96
  export {};
@@ -1,17 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StarknetDataService = void 0;
3
+ exports.StarknetDataService = exports.AbiEventName = exports.RAGEQUIT_EVENT_ABI_NAME = exports.WITHDRAWAL_EVENT_ABI_NAME = exports.DEPOSIT_EVENT_ABI_NAME = exports.RAGEQUIT_EVENT_SELECTOR = exports.WITHDRAWAL_EVENT_SELECTOR = exports.DEPOSIT_EVENT_SELECTOR = void 0;
4
4
  const starknet_1 = require("starknet");
5
- const index_js_1 = require("./errors/index.js");
6
5
  const PrivacyPool_abi_js_1 = require("./abis/PrivacyPool.abi.js");
6
+ const index_js_1 = require("./errors/index.js");
7
7
  // Calculate event selectors using Starknet keccak
8
- const DEPOSIT_EVENT_SELECTOR = starknet_1.num.toHex(starknet_1.hash.starknetKeccak("Deposited"));
9
- const WITHDRAWAL_EVENT_SELECTOR = starknet_1.num.toHex(starknet_1.hash.starknetKeccak("Withdrawn"));
10
- const RAGEQUIT_EVENT_SELECTOR = starknet_1.num.toHex(starknet_1.hash.starknetKeccak("RageQuit"));
8
+ exports.DEPOSIT_EVENT_SELECTOR = starknet_1.num.toHex(starknet_1.hash.starknetKeccak("Deposited")); // 0x69105484e3b5f553164aa6de1f67321ea2757275a5e614365c90b9ed0a5e9b
9
+ exports.WITHDRAWAL_EVENT_SELECTOR = starknet_1.num.toHex(starknet_1.hash.starknetKeccak("Withdrawn")); // 0x36a4d15ab9e146faab90d4abc1c0cad17c4ded24551c781ba100392b5a70248
10
+ exports.RAGEQUIT_EVENT_SELECTOR = starknet_1.num.toHex(starknet_1.hash.starknetKeccak("RageQuit")); // 0x2a2469e4569da9d3c3df9bc1a2ddece1e640a89b8ecd537da96f064d64c8183
11
11
  // ABI event names for direct selection
12
- const DEPOSIT_EVENT_ABI_NAME = 'privacy_pools::interfaces::IPool::Deposited';
13
- const WITHDRAWAL_EVENT_ABI_NAME = 'privacy_pools::interfaces::IPool::Withdrawn';
14
- const RAGEQUIT_EVENT_ABI_NAME = 'privacy_pools::interfaces::IPool::RageQuit';
12
+ exports.DEPOSIT_EVENT_ABI_NAME = 'privacy_pools::interfaces::IPool::Deposited';
13
+ exports.WITHDRAWAL_EVENT_ABI_NAME = 'privacy_pools::interfaces::IPool::Withdrawn';
14
+ exports.RAGEQUIT_EVENT_ABI_NAME = 'privacy_pools::interfaces::IPool::RageQuit';
15
+ exports.AbiEventName = {
16
+ Deposit: exports.DEPOSIT_EVENT_ABI_NAME,
17
+ Withdraw: exports.WITHDRAWAL_EVENT_ABI_NAME,
18
+ Ragequit: exports.RAGEQUIT_EVENT_ABI_NAME,
19
+ };
15
20
  /**
16
21
  * Starknet implementation of DataService for privacy pool event fetching.
17
22
  *
@@ -36,25 +41,23 @@ class StarknetDataService {
36
41
  * @returns Array of deposit events compatible with AccountService interface
37
42
  * @throws {StarknetSDKError} If provider is not configured or network error occurs
38
43
  */
39
- async getDeposits(pool) {
44
+ async getDeposits(pool, fromBlock = pool.deploymentBlock) {
40
45
  try {
41
46
  // Fetch events using Starknet provider
42
47
  const eventsResult = await this.provider.getEvents({
43
- from_block: { block_number: Number(pool.deploymentBlock) },
48
+ from_block: { block_number: Number(fromBlock) },
44
49
  to_block: "latest",
45
50
  address: pool.address,
46
- keys: [[DEPOSIT_EVENT_SELECTOR]], // Filter by deposit event selector
51
+ keys: [[exports.DEPOSIT_EVENT_SELECTOR]], // Filter by deposit event selector
47
52
  chunk_size: 1000, // Starknet pagination
48
53
  });
49
54
  // Parse all events at once using starknet.js event parser
50
55
  const abiEvents = starknet_1.events.getAbiEvents(PrivacyPool_abi_js_1.PrivacyPoolABI);
51
- const abiStructs = {}; // Could extract from ABI if needed
52
- const abiEnums = {}; // Could extract from ABI if needed
53
- const parsedEvents = starknet_1.events.parseEvents(eventsResult.events, abiEvents, abiStructs, abiEnums);
56
+ const parsedEvents = starknet_1.events.parseEvents(eventsResult.events, abiEvents, {}, {});
54
57
  return parsedEvents
55
- .filter((parsedEvent) => parsedEvent[DEPOSIT_EVENT_ABI_NAME] !== undefined)
58
+ .filter((parsedEvent) => parsedEvent[exports.DEPOSIT_EVENT_ABI_NAME] !== undefined)
56
59
  .map((parsedEvent) => ({
57
- eventData: parsedEvent[DEPOSIT_EVENT_ABI_NAME],
60
+ eventData: parsedEvent[exports.DEPOSIT_EVENT_ABI_NAME],
58
61
  blockNumber: parsedEvent.block_number,
59
62
  transactionHash: parsedEvent.transaction_hash
60
63
  }))
@@ -88,18 +91,16 @@ class StarknetDataService {
88
91
  from_block: { block_number: Number(fromBlock) },
89
92
  to_block: "latest",
90
93
  address: pool.address,
91
- keys: [[WITHDRAWAL_EVENT_SELECTOR]],
94
+ keys: [[exports.WITHDRAWAL_EVENT_SELECTOR]],
92
95
  chunk_size: 1000,
93
96
  });
94
97
  // Parse all events at once using starknet.js event parser
95
98
  const abiEvents = starknet_1.events.getAbiEvents(PrivacyPool_abi_js_1.PrivacyPoolABI);
96
- const abiStructs = {}; // Could extract from ABI if needed
97
- const abiEnums = {}; // Could extract from ABI if needed
98
- const parsedEvents = starknet_1.events.parseEvents(eventsResult.events, abiEvents, abiStructs, abiEnums);
99
+ const parsedEvents = starknet_1.events.parseEvents(eventsResult.events, abiEvents, {}, {});
99
100
  return parsedEvents
100
- .filter((parsedEvent) => parsedEvent[WITHDRAWAL_EVENT_ABI_NAME] !== undefined)
101
+ .filter((parsedEvent) => parsedEvent[exports.WITHDRAWAL_EVENT_ABI_NAME] !== undefined)
101
102
  .map((parsedEvent) => ({
102
- eventData: parsedEvent[WITHDRAWAL_EVENT_ABI_NAME],
103
+ eventData: parsedEvent[exports.WITHDRAWAL_EVENT_ABI_NAME],
103
104
  blockNumber: parsedEvent.block_number,
104
105
  transactionHash: parsedEvent.transaction_hash
105
106
  }))
@@ -131,10 +132,19 @@ class StarknetDataService {
131
132
  from_block: { block_number: Number(fromBlock) },
132
133
  to_block: "latest",
133
134
  address: pool.address,
134
- keys: [[RAGEQUIT_EVENT_SELECTOR]],
135
+ keys: [[exports.RAGEQUIT_EVENT_SELECTOR]],
135
136
  chunk_size: 1000,
136
137
  });
137
- return StarknetDataService.parseRagequitEvents(eventsResult.events)
138
+ // Parse all events at once using starknet.js event parser
139
+ const abiEvents = starknet_1.events.getAbiEvents(PrivacyPool_abi_js_1.PrivacyPoolABI);
140
+ const parsedEvents = starknet_1.events.parseEvents(eventsResult.events, abiEvents, {}, {});
141
+ return parsedEvents
142
+ .filter((parsedEvent) => parsedEvent[exports.RAGEQUIT_EVENT_ABI_NAME] !== undefined)
143
+ .map((parsedEvent) => ({
144
+ eventData: parsedEvent[exports.RAGEQUIT_EVENT_ABI_NAME],
145
+ blockNumber: parsedEvent.block_number,
146
+ transactionHash: parsedEvent.transaction_hash
147
+ }))
138
148
  .map(({ eventData, blockNumber, transactionHash }) => ({
139
149
  ragequitter: starknet_1.num.toHex(eventData.depositor),
140
150
  commitment: eventData.commitment,
@@ -150,25 +160,42 @@ class StarknetDataService {
150
160
  throw new index_js_1.StarknetSDKError(`Failed to fetch ragequits: ${error instanceof Error ? error.message : "Unknown error"}`, index_js_1.SNBaseErrorCode.UNKNOWN);
151
161
  }
152
162
  }
153
- static parseGenericEvents(rawEvents, abiEventName) {
154
- const abiEvents = starknet_1.events.getAbiEvents(PrivacyPool_abi_js_1.PrivacyPoolABI);
155
- const parsedEvents = starknet_1.events.parseEvents(rawEvents, abiEvents, {}, {});
163
+ static parseGenericEvents(abiEventName, emittedEvents, pool) {
164
+ const poolAbiEvents = starknet_1.events.getAbiEvents(PrivacyPool_abi_js_1.PrivacyPoolABI);
165
+ const parsedEvents = starknet_1.events.parseEvents(emittedEvents.filter(e => e.from_address === pool.address), poolAbiEvents, {}, {});
156
166
  return parsedEvents
157
167
  .filter((parsedEvent) => parsedEvent[abiEventName] !== undefined)
158
- .map((parsedEvent) => ({
159
- eventData: parsedEvent[abiEventName],
160
- blockNumber: parsedEvent.block_number,
161
- transactionHash: parsedEvent.transaction_hash
162
- }));
168
+ .map((parsedEvent) => {
169
+ console.log("PARSED", parsedEvent);
170
+ return {
171
+ ...parsedEvent[abiEventName],
172
+ blockNumber: parsedEvent.block_number,
173
+ transactionHash: parsedEvent.transaction_hash
174
+ };
175
+ });
176
+ }
177
+ static parseDepositEvents(emittedEvents, pool) {
178
+ return StarknetDataService.parseGenericEvents(exports.AbiEventName.Deposit, emittedEvents, pool);
163
179
  }
164
- static parseDepositEvents(rawEvents) {
165
- return StarknetDataService.parseGenericEvents(rawEvents, DEPOSIT_EVENT_ABI_NAME);
180
+ static parseWithdrawalEvents(emittedEvents, pool) {
181
+ return StarknetDataService.parseGenericEvents(exports.AbiEventName.Withdraw, emittedEvents, pool);
166
182
  }
167
- static parseWithdrawalEvents(rawEvents) {
168
- return StarknetDataService.parseGenericEvents(rawEvents, WITHDRAWAL_EVENT_ABI_NAME);
183
+ static parseRagequitEvents(emittedEvents, pool) {
184
+ return StarknetDataService.parseGenericEvents(exports.AbiEventName.Ragequit, emittedEvents, pool);
169
185
  }
170
- static parseRagequitEvents(rawEvents) {
171
- return StarknetDataService.parseGenericEvents(rawEvents, RAGEQUIT_EVENT_ABI_NAME);
186
+ async getTxEvents(abiEventName, transactionHash, pool) {
187
+ const receipt = await this.provider.getTransactionReceipt(transactionHash);
188
+ if (!receipt.isSuccess())
189
+ throw index_js_1.SNDataError.noEventsToParse("Tx was not succesful");
190
+ const emmitedEvents = receipt.value.events.map(e => {
191
+ return {
192
+ ...e,
193
+ block_hash: receipt.value.block_hash,
194
+ block_number: receipt.value.block_number,
195
+ transaction_hash: transactionHash
196
+ };
197
+ });
198
+ return StarknetDataService.parseGenericEvents(abiEventName, emmitedEvents, pool);
172
199
  }
173
200
  }
174
201
  exports.StarknetDataService = StarknetDataService;
@@ -1 +1 @@
1
- {"version":3,"file":"data.service.js","sourceRoot":"","sources":["../src/data.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.service.js","sourceRoot":"","sources":["../src/data.service.ts"],"names":[],"mappings":"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"}
@@ -18,8 +18,11 @@ export declare enum SNContractErrorCode {
18
18
  export declare enum SNFormatErrorCode {
19
19
  CONVERSION = 0
20
20
  }
21
+ export declare enum SNDataErrorCode {
22
+ NO_EVENTS = 0
23
+ }
21
24
  /** Union type of all possible error codes in the Starknet SDK */
22
- export type SNErrorCode = SNBaseErrorCode | SNPoolErrorCode | SNContractErrorCode | SNFormatErrorCode;
25
+ export type SNErrorCode = SNBaseErrorCode | SNPoolErrorCode | SNContractErrorCode | SNFormatErrorCode | SNDataErrorCode;
23
26
  /**
24
27
  * Base error class for all Starknet SDK errors.
25
28
  *
@@ -107,3 +110,11 @@ export declare class SNContractError extends StarknetSDKError {
107
110
  */
108
111
  static revert(reason: string): SNContractError;
109
112
  }
113
+ export declare class SNDataError extends StarknetSDKError {
114
+ /**
115
+ * Creates a conversion error instance.
116
+ * @param context - Optional context about what conversion failed
117
+ * @returns SNFormatError with CONVERSION code
118
+ */
119
+ static noEventsToParse(context?: string): SNDataError;
120
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SNContractError = exports.SNPoolError = exports.SNFormatError = exports.StarknetSDKError = exports.SNFormatErrorCode = exports.SNContractErrorCode = exports.SNPoolErrorCode = exports.SNBaseErrorCode = void 0;
3
+ exports.SNDataError = exports.SNContractError = exports.SNPoolError = exports.SNFormatError = exports.StarknetSDKError = exports.SNDataErrorCode = exports.SNFormatErrorCode = exports.SNContractErrorCode = exports.SNPoolErrorCode = exports.SNBaseErrorCode = void 0;
4
4
  /** Base error codes for fundamental SDK errors */
5
5
  var SNBaseErrorCode;
6
6
  (function (SNBaseErrorCode) {
@@ -25,6 +25,10 @@ var SNFormatErrorCode;
25
25
  (function (SNFormatErrorCode) {
26
26
  SNFormatErrorCode[SNFormatErrorCode["CONVERSION"] = 0] = "CONVERSION";
27
27
  })(SNFormatErrorCode || (exports.SNFormatErrorCode = SNFormatErrorCode = {}));
28
+ var SNDataErrorCode;
29
+ (function (SNDataErrorCode) {
30
+ SNDataErrorCode[SNDataErrorCode["NO_EVENTS"] = 0] = "NO_EVENTS";
31
+ })(SNDataErrorCode || (exports.SNDataErrorCode = SNDataErrorCode = {}));
28
32
  /**
29
33
  * Base error class for all Starknet SDK errors.
30
34
  *
@@ -140,4 +144,16 @@ class SNContractError extends StarknetSDKError {
140
144
  }
141
145
  }
142
146
  exports.SNContractError = SNContractError;
147
+ class SNDataError extends StarknetSDKError {
148
+ /**
149
+ * Creates a conversion error instance.
150
+ * @param context - Optional context about what conversion failed
151
+ * @returns SNFormatError with CONVERSION code
152
+ */
153
+ static noEventsToParse(context) {
154
+ const _context = context || "Tx may be incomplete";
155
+ return new this(_context, SNDataErrorCode.NO_EVENTS);
156
+ }
157
+ }
158
+ exports.SNDataError = SNDataError;
143
159
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AACA,kDAAkD;AAClD,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,2DAAO,CAAA;IACP,mEAAW,CAAA;IACX,6DAAQ,CAAA;AACV,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED,sDAAsD;AACtD,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,6EAAgB,CAAA;AAClB,CAAC,EAFW,eAAe,+BAAf,eAAe,QAE1B;AAED,oDAAoD;AACpD,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,iFAAc,CAAA;IACd,qFAAgB,CAAA;IAChB,iEAAM,CAAA;AACR,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B;AAED,wDAAwD;AACxD,IAAY,iBAEX;AAFD,WAAY,iBAAiB;IAC3B,qEAAU,CAAA;AACZ,CAAC,EAFW,iBAAiB,iCAAjB,iBAAiB,QAE5B;AAKD;;;;;GAKG;AACH,MAAa,gBAAiB,SAAQ,KAAK;IAWH;IATpB,IAAI,CAAS;IACtB,OAAO,CAAS;IAEzB;;;;;OAKG;IACH,YAAY,OAAe,EAAW,IAAiB;QACrD,KAAK,EAAE,CAAC;QAD4B,SAAI,GAAJ,IAAI,CAAa;QAErD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,OAAO;QACnB,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,WAAW;QACvB,OAAO,IAAI,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,QAAQ,CAAC,GAAY;QACjC,OAAO,IAAI,IAAI,CAAC,GAAG,IAAI,gBAAgB,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;CAEF;AA3CD,4CA2CC;AAED;;;;;GAKG;AACH,MAAa,aAAc,SAAQ,gBAAgB;IAEjD;;;;OAIG;IACI,MAAM,CAAC,UAAU,CAAC,OAAgB;QACvC,MAAM,QAAQ,GAAG,OAAO,IAAI,mBAAmB,CAAC;QAChD,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;CAEF;AAZD,sCAYC;AAED;;;;;GAKG;AACH,MAAa,WAAY,SAAQ,gBAAgB;IAE/C;;;;OAIG;IACI,MAAM,CAAC,cAAc,CAAC,OAAgB;QAC3C,MAAM,QAAQ,GAAG,OAAO,IAAI,sCAAsC,CAAC;QACnE,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAC9D,CAAC;CAEF;AAZD,kCAYC;AAED;;;;;GAKG;AACH,MAAa,eAAgB,SAAQ,gBAAgB;IAEnD;;;OAGG;IACI,MAAM,CAAC,aAAa;QACzB,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,eAAe,CAAC,OAAe;QAC3C,OAAO,IAAI,IAAI,CAAC,kDAAkD,OAAO,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC5H,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,MAAM,CAAC,MAAc;QACjC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;CAEF;AA5BD,0CA4BC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fatsolutions/privacy-pools-core-starknet-sdk",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Starknet SDK for Privacy Pool protocol with Garaga proof verification support",
6
6
  "author": "Fat Solutions",
@@ -1,29 +1,34 @@
1
- import { Provider, Contract, RpcProvider, num, hash, events, uint256, EmittedEvent } from "starknet";
2
- import { StarknetSDKError, SNBaseErrorCode } from "./errors/index.js";
3
- import { PrivacyPoolABI } from "./abis/PrivacyPool.abi.js";
4
1
  import {
5
- Hash,
6
2
  DepositEvent,
7
- WithdrawalEvent,
3
+ Hash,
4
+ PoolInfo,
8
5
  RagequitEvent,
9
- PoolInfo
6
+ WithdrawalEvent
10
7
  } from "@0xbow/privacy-pools-core-sdk";
8
+ import { EmittedEvent, RpcProvider, events, hash, num } from "starknet";
9
+ import { PrivacyPoolABI } from "./abis/PrivacyPool.abi.js";
10
+ import { SNBaseErrorCode, SNDataError, StarknetSDKError } from "./errors/index.js";
11
11
 
12
12
  // Calculate event selectors using Starknet keccak
13
- const DEPOSIT_EVENT_SELECTOR = num.toHex(hash.starknetKeccak("Deposited"));
14
- const WITHDRAWAL_EVENT_SELECTOR = num.toHex(hash.starknetKeccak("Withdrawn"));
15
- const RAGEQUIT_EVENT_SELECTOR = num.toHex(hash.starknetKeccak("RageQuit"));
13
+ export const DEPOSIT_EVENT_SELECTOR = num.toHex(hash.starknetKeccak("Deposited")); // 0x69105484e3b5f553164aa6de1f67321ea2757275a5e614365c90b9ed0a5e9b
14
+ export const WITHDRAWAL_EVENT_SELECTOR = num.toHex(hash.starknetKeccak("Withdrawn")); // 0x36a4d15ab9e146faab90d4abc1c0cad17c4ded24551c781ba100392b5a70248
15
+ export const RAGEQUIT_EVENT_SELECTOR = num.toHex(hash.starknetKeccak("RageQuit")); // 0x2a2469e4569da9d3c3df9bc1a2ddece1e640a89b8ecd537da96f064d64c8183
16
16
 
17
17
  // ABI event names for direct selection
18
- const DEPOSIT_EVENT_ABI_NAME = 'privacy_pools::interfaces::IPool::Deposited';
19
- const WITHDRAWAL_EVENT_ABI_NAME = 'privacy_pools::interfaces::IPool::Withdrawn';
20
- const RAGEQUIT_EVENT_ABI_NAME = 'privacy_pools::interfaces::IPool::RageQuit';
21
- type AbiEventName = 'privacy_pools::interfaces::IPool::Deposited'
22
- | 'privacy_pools::interfaces::IPool::Withdrawn'
23
- | 'privacy_pools::interfaces::IPool::RageQuit';
18
+ export const DEPOSIT_EVENT_ABI_NAME = 'privacy_pools::interfaces::IPool::Deposited';
19
+ export const WITHDRAWAL_EVENT_ABI_NAME = 'privacy_pools::interfaces::IPool::Withdrawn';
20
+ export const RAGEQUIT_EVENT_ABI_NAME = 'privacy_pools::interfaces::IPool::RageQuit';
21
+
22
+ export const AbiEventName = {
23
+ Deposit: DEPOSIT_EVENT_ABI_NAME,
24
+ Withdraw: WITHDRAWAL_EVENT_ABI_NAME,
25
+ Ragequit: RAGEQUIT_EVENT_ABI_NAME,
26
+ } as const;
27
+
28
+ type AbiEventName = typeof AbiEventName[keyof typeof AbiEventName];
24
29
 
25
30
  // Event data interfaces with correct types
26
- interface StarknetDepositedEventData {
31
+ export interface StarknetDepositedEventData {
27
32
  depositor: bigint;
28
33
  commitment: bigint;
29
34
  label: bigint;
@@ -31,23 +36,33 @@ interface StarknetDepositedEventData {
31
36
  preCommitmentHash: bigint;
32
37
  }
33
38
 
34
- interface StarknetWithdrawnEventData {
39
+ export interface StarknetWithdrawnEventData {
35
40
  procesoor: bigint; // Note: typo in ABI
36
41
  newCommitmentHash: bigint;
37
42
  withdrawnValue: bigint;
38
43
  existingNullifierHash: bigint;
39
44
  }
40
45
 
41
- interface StarknetRageQuitEventData {
46
+ export interface StarknetRageQuitEventData {
42
47
  depositor: bigint; // ragequitter is called 'depositor' in ABI
43
48
  commitment: bigint;
44
49
  label: bigint;
45
50
  value: bigint;
46
51
  }
47
52
 
53
+ type AbiToEvent = {
54
+ [AbiEventName.Deposit]: StarknetDepositedEventData;
55
+ [AbiEventName.Withdraw]: StarknetWithdrawnEventData;
56
+ [AbiEventName.Ragequit]: StarknetRageQuitEventData;
57
+ };
58
+
59
+ export type StarknetEvent = StarknetDepositedEventData
60
+ | StarknetWithdrawnEventData
61
+ | StarknetRageQuitEventData;
62
+
48
63
  /**
49
64
  * Starknet implementation of DataService for privacy pool event fetching.
50
- *
65
+ *
51
66
  * @remarks
52
67
  * This service uses a single Starknet.js RpcProvider to fetch blockchain events and translates
53
68
  * them to the interface expected by AccountService. The returned events are compatible with the EVM SDK interfaces.
@@ -57,7 +72,7 @@ export class StarknetDataService {
57
72
 
58
73
  /**
59
74
  * Initialize the Starknet data service with an RPC provider
60
- *
75
+ *
61
76
  * @param provider - Starknet RPC provider instance
62
77
  */
63
78
  constructor(provider: RpcProvider) {
@@ -71,12 +86,15 @@ export class StarknetDataService {
71
86
  * @returns Array of deposit events compatible with AccountService interface
72
87
  * @throws {StarknetSDKError} If provider is not configured or network error occurs
73
88
  */
74
- async getDeposits(pool: PoolInfo): Promise<DepositEvent[]> {
89
+ async getDeposits(
90
+ pool: PoolInfo,
91
+ fromBlock: bigint = pool.deploymentBlock
92
+ ): Promise<DepositEvent[]> {
75
93
  try {
76
94
 
77
95
  // Fetch events using Starknet provider
78
96
  const eventsResult = await this.provider.getEvents({
79
- from_block: { block_number: Number(pool.deploymentBlock) },
97
+ from_block: { block_number: Number(fromBlock) },
80
98
  to_block: "latest",
81
99
  address: pool.address,
82
100
  keys: [[DEPOSIT_EVENT_SELECTOR]], // Filter by deposit event selector
@@ -85,10 +103,7 @@ export class StarknetDataService {
85
103
 
86
104
  // Parse all events at once using starknet.js event parser
87
105
  const abiEvents = events.getAbiEvents(PrivacyPoolABI);
88
- const abiStructs = {}; // Could extract from ABI if needed
89
- const abiEnums = {}; // Could extract from ABI if needed
90
-
91
- const parsedEvents = events.parseEvents(eventsResult.events, abiEvents, abiStructs, abiEnums);
106
+ const parsedEvents = events.parseEvents(eventsResult.events, abiEvents, {}, {});
92
107
 
93
108
  return parsedEvents
94
109
  .filter((parsedEvent) => parsedEvent[DEPOSIT_EVENT_ABI_NAME] !== undefined)
@@ -138,10 +153,7 @@ export class StarknetDataService {
138
153
 
139
154
  // Parse all events at once using starknet.js event parser
140
155
  const abiEvents = events.getAbiEvents(PrivacyPoolABI);
141
- const abiStructs = {}; // Could extract from ABI if needed
142
- const abiEnums = {}; // Could extract from ABI if needed
143
-
144
- const parsedEvents = events.parseEvents(eventsResult.events, abiEvents, abiStructs, abiEnums);
156
+ const parsedEvents = events.parseEvents(eventsResult.events, abiEvents, {}, {});
145
157
 
146
158
  return parsedEvents
147
159
  .filter((parsedEvent) => parsedEvent[WITHDRAWAL_EVENT_ABI_NAME] !== undefined)
@@ -186,7 +198,18 @@ export class StarknetDataService {
186
198
  keys: [[RAGEQUIT_EVENT_SELECTOR]],
187
199
  chunk_size: 1000,
188
200
  });
189
- return StarknetDataService.parseRagequitEvents(eventsResult.events)
201
+
202
+ // Parse all events at once using starknet.js event parser
203
+ const abiEvents = events.getAbiEvents(PrivacyPoolABI);
204
+ const parsedEvents = events.parseEvents(eventsResult.events, abiEvents, {}, {});
205
+
206
+ return parsedEvents
207
+ .filter((parsedEvent) => parsedEvent[RAGEQUIT_EVENT_ABI_NAME] !== undefined)
208
+ .map((parsedEvent) => ({
209
+ eventData: parsedEvent[RAGEQUIT_EVENT_ABI_NAME] as unknown as StarknetRageQuitEventData,
210
+ blockNumber: parsedEvent.block_number,
211
+ transactionHash: parsedEvent.transaction_hash
212
+ }))
190
213
  .map(({ eventData, blockNumber, transactionHash }) => ({
191
214
  ragequitter: num.toHex(eventData.depositor),
192
215
  commitment: eventData.commitment as Hash,
@@ -204,28 +227,47 @@ export class StarknetDataService {
204
227
  }
205
228
  }
206
229
 
207
- private static parseGenericEvents<T>(rawEvents: EmittedEvent[], abiEventName: AbiEventName) {
208
- const abiEvents = events.getAbiEvents(PrivacyPoolABI);
209
- const parsedEvents = events.parseEvents(rawEvents, abiEvents, {}, {});
230
+ private static parseGenericEvents<K extends AbiEventName>(abiEventName: K, emittedEvents: EmittedEvent[], pool: PoolInfo) {
231
+ const poolAbiEvents = events.getAbiEvents(PrivacyPoolABI);
232
+ const parsedEvents = events.parseEvents(emittedEvents.filter(e => e.from_address === pool.address), poolAbiEvents, {}, {});
210
233
  return parsedEvents
211
234
  .filter((parsedEvent) => parsedEvent[abiEventName] !== undefined)
212
- .map((parsedEvent) => ({
213
- eventData: parsedEvent[abiEventName] as unknown as T,
214
- blockNumber: parsedEvent.block_number,
215
- transactionHash: parsedEvent.transaction_hash
216
- }));
235
+ .map((parsedEvent) => {
236
+ console.log("PARSED", parsedEvent);
237
+ return {
238
+ ...parsedEvent[abiEventName] as unknown as AbiToEvent[K],
239
+ blockNumber: parsedEvent.block_number,
240
+ transactionHash: parsedEvent.transaction_hash
241
+ };
242
+ });
217
243
  }
218
244
 
219
- static parseDepositEvents(rawEvents: EmittedEvent[]) {
220
- return StarknetDataService.parseGenericEvents<StarknetDepositedEventData>(rawEvents, DEPOSIT_EVENT_ABI_NAME);
245
+ static parseDepositEvents(emittedEvents: EmittedEvent[], pool: PoolInfo) {
246
+ return StarknetDataService.parseGenericEvents(AbiEventName.Deposit, emittedEvents, pool);
221
247
  }
222
248
 
223
- static parseWithdrawalEvents(rawEvents: EmittedEvent[]) {
224
- return StarknetDataService.parseGenericEvents<StarknetWithdrawnEventData>(rawEvents, WITHDRAWAL_EVENT_ABI_NAME);
249
+ static parseWithdrawalEvents(emittedEvents: EmittedEvent[], pool: PoolInfo) {
250
+ return StarknetDataService.parseGenericEvents(AbiEventName.Withdraw, emittedEvents, pool);
225
251
  }
226
252
 
227
- static parseRagequitEvents(rawEvents: EmittedEvent[]) {
228
- return StarknetDataService.parseGenericEvents<StarknetRageQuitEventData>(rawEvents, RAGEQUIT_EVENT_ABI_NAME);
253
+ static parseRagequitEvents(emittedEvents: EmittedEvent[], pool: PoolInfo) {
254
+ return StarknetDataService.parseGenericEvents(AbiEventName.Ragequit, emittedEvents, pool);
255
+ }
256
+
257
+ async getTxEvents<K extends AbiEventName>(abiEventName: K, transactionHash: string, pool: PoolInfo): Promise<AbiToEvent[K][]> {
258
+ const receipt = await this.provider.getTransactionReceipt(transactionHash);
259
+ if (!receipt.isSuccess())
260
+ throw SNDataError.noEventsToParse("Tx was not succesful");
261
+
262
+ const emmitedEvents: EmittedEvent[] = receipt.value.events.map(e => {
263
+ return {
264
+ ...e,
265
+ block_hash: receipt.value.block_hash,
266
+ block_number: receipt.value.block_number,
267
+ transaction_hash: transactionHash
268
+ };
269
+ });
270
+ return StarknetDataService.parseGenericEvents<K>(abiEventName, emmitedEvents, pool);
229
271
  }
230
272
 
231
273
  }
@@ -23,8 +23,13 @@ export enum SNFormatErrorCode {
23
23
  CONVERSION
24
24
  }
25
25
 
26
+
27
+ export enum SNDataErrorCode {
28
+ NO_EVENTS
29
+ }
30
+
26
31
  /** Union type of all possible error codes in the Starknet SDK */
27
- export type SNErrorCode = SNBaseErrorCode | SNPoolErrorCode | SNContractErrorCode | SNFormatErrorCode;
32
+ export type SNErrorCode = SNBaseErrorCode | SNPoolErrorCode | SNContractErrorCode | SNFormatErrorCode | SNDataErrorCode;
28
33
 
29
34
  /**
30
35
  * Base error class for all Starknet SDK errors.
@@ -152,3 +157,17 @@ export class SNContractError extends StarknetSDKError {
152
157
  }
153
158
 
154
159
  }
160
+
161
+ export class SNDataError extends StarknetSDKError {
162
+
163
+ /**
164
+ * Creates a conversion error instance.
165
+ * @param context - Optional context about what conversion failed
166
+ * @returns SNFormatError with CONVERSION code
167
+ */
168
+ public static noEventsToParse(context?: string) {
169
+ const _context = context || "Tx may be incomplete";
170
+ return new this(_context, SNDataErrorCode.NO_EVENTS);
171
+ }
172
+
173
+ }