@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.
- package/dist/data.service.d.ts +31 -15
- package/dist/data.service.js +65 -38
- package/dist/data.service.js.map +1 -1
- package/dist/errors/index.d.ts +12 -1
- package/dist/errors/index.js +17 -1
- package/dist/errors/index.js.map +1 -1
- package/package.json +1 -1
- package/src/data.service.ts +87 -45
- package/src/errors/index.ts +20 -1
package/dist/data.service.d.ts
CHANGED
|
@@ -1,24 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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 {};
|
package/dist/data.service.js
CHANGED
|
@@ -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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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(
|
|
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
|
|
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
|
|
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
|
-
|
|
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(
|
|
154
|
-
const
|
|
155
|
-
const parsedEvents = starknet_1.events.parseEvents(
|
|
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
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
|
165
|
-
return StarknetDataService.parseGenericEvents(
|
|
180
|
+
static parseWithdrawalEvents(emittedEvents, pool) {
|
|
181
|
+
return StarknetDataService.parseGenericEvents(exports.AbiEventName.Withdraw, emittedEvents, pool);
|
|
166
182
|
}
|
|
167
|
-
static
|
|
168
|
-
return StarknetDataService.parseGenericEvents(
|
|
183
|
+
static parseRagequitEvents(emittedEvents, pool) {
|
|
184
|
+
return StarknetDataService.parseGenericEvents(exports.AbiEventName.Ragequit, emittedEvents, pool);
|
|
169
185
|
}
|
|
170
|
-
|
|
171
|
-
|
|
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;
|
package/dist/data.service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.service.js","sourceRoot":"","sources":["../src/data.service.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"data.service.js","sourceRoot":"","sources":["../src/data.service.ts"],"names":[],"mappings":"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"}
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -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
|
+
}
|
package/dist/errors/index.js
CHANGED
|
@@ -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
|
package/dist/errors/index.js.map
CHANGED
|
@@ -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
package/src/data.service.ts
CHANGED
|
@@ -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
|
-
|
|
3
|
+
Hash,
|
|
4
|
+
PoolInfo,
|
|
8
5
|
RagequitEvent,
|
|
9
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
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
|
-
|
|
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<
|
|
208
|
-
const
|
|
209
|
-
const parsedEvents = events.parseEvents(
|
|
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
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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(
|
|
220
|
-
return StarknetDataService.parseGenericEvents
|
|
245
|
+
static parseDepositEvents(emittedEvents: EmittedEvent[], pool: PoolInfo) {
|
|
246
|
+
return StarknetDataService.parseGenericEvents(AbiEventName.Deposit, emittedEvents, pool);
|
|
221
247
|
}
|
|
222
248
|
|
|
223
|
-
static parseWithdrawalEvents(
|
|
224
|
-
return StarknetDataService.parseGenericEvents
|
|
249
|
+
static parseWithdrawalEvents(emittedEvents: EmittedEvent[], pool: PoolInfo) {
|
|
250
|
+
return StarknetDataService.parseGenericEvents(AbiEventName.Withdraw, emittedEvents, pool);
|
|
225
251
|
}
|
|
226
252
|
|
|
227
|
-
static parseRagequitEvents(
|
|
228
|
-
return StarknetDataService.parseGenericEvents
|
|
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
|
}
|
package/src/errors/index.ts
CHANGED
|
@@ -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
|
+
}
|