@fatsolutions/privacy-pools-core-starknet-sdk 0.0.29 → 0.0.31
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/contracts/contracts.service.d.ts +31 -23
- package/dist/contracts/contracts.service.js +9 -10
- package/dist/contracts/contracts.service.js.map +1 -1
- package/dist/contracts/transactionHandler.d.ts +2 -2
- package/dist/contracts/transactionHandler.js.map +1 -1
- package/dist/data.service.d.ts +3 -1
- package/dist/data.service.js +17 -15
- package/dist/data.service.js.map +1 -1
- package/package.json +4 -2
- package/src/contracts/contracts.service.ts +46 -28
- package/src/contracts/transactionHandler.ts +2 -2
- package/src/data.service.ts +165 -69
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Hash } from "@0xbow/privacy-pools-core-sdk";
|
|
2
|
-
import { AllowArray, Call, InvokeFunctionResponse, RpcProvider,
|
|
2
|
+
import { AllowArray, Call, InvokeFunctionResponse, RpcProvider, SimulateTransaction, Account as SNAccount, TypedContractV2, UniversalDetails } from "starknet";
|
|
3
3
|
import { EntryPointABI } from "../abis/EntryPoint.abi.js";
|
|
4
4
|
import { ERC20ABI } from "../abis/ERC20.abi.js";
|
|
5
5
|
import { PrivacyPoolABI } from "../abis/PrivacyPool.abi.js";
|
|
@@ -20,23 +20,31 @@ export type Erc20Type = TypedContractV2<typeof ERC20ABI>;
|
|
|
20
20
|
/**
|
|
21
21
|
* Execution modes for contract interactions.
|
|
22
22
|
*/
|
|
23
|
-
export declare
|
|
23
|
+
export declare const Mode: {
|
|
24
24
|
/** Simulate the transaction without executing it */
|
|
25
|
-
SIMULATE
|
|
25
|
+
readonly SIMULATE: "simulate";
|
|
26
26
|
/** Execute the transaction on-chain */
|
|
27
|
-
EXECUTE
|
|
28
|
-
}
|
|
27
|
+
readonly EXECUTE: "execute";
|
|
28
|
+
};
|
|
29
|
+
export type Mode = typeof Mode[keyof typeof Mode];
|
|
30
|
+
/** Option type for simulation mode */
|
|
31
|
+
export type OptionSimulate = {};
|
|
32
|
+
/** Option type for execution mode with optional transaction details */
|
|
33
|
+
export type OptionExecute = {
|
|
34
|
+
details?: UniversalDetails;
|
|
35
|
+
};
|
|
29
36
|
/** Option type for simulation mode */
|
|
30
37
|
export type OptionModeSimulate = {
|
|
31
|
-
mode: Mode.SIMULATE;
|
|
38
|
+
mode: typeof Mode.SIMULATE;
|
|
39
|
+
modeOptions?: OptionSimulate;
|
|
32
40
|
};
|
|
33
41
|
/** Option type for execution mode with optional transaction details */
|
|
34
42
|
export type OptionModeExecute = {
|
|
35
|
-
mode: Mode.EXECUTE;
|
|
36
|
-
|
|
43
|
+
mode: typeof Mode.EXECUTE;
|
|
44
|
+
modeOptions?: OptionExecute;
|
|
37
45
|
};
|
|
38
46
|
/** Union type for all possible call results */
|
|
39
|
-
type CallResult = AllowArray<Call> |
|
|
47
|
+
type CallResult = AllowArray<Call> | Omit<SimulateTransaction, 'fee_estimation'> | TransactionResponse;
|
|
40
48
|
/**
|
|
41
49
|
* Service class for interacting with Privacy Pool contracts on Starknet.
|
|
42
50
|
*
|
|
@@ -100,7 +108,7 @@ export declare class SNContractInteractionsService {
|
|
|
100
108
|
* @param options - Simulation options
|
|
101
109
|
* @returns A simulated transaction result
|
|
102
110
|
*/
|
|
103
|
-
depositERC20(asset: StarknetAddress, amount: bigint, precommitment: bigint, options: OptionModeSimulate): Promise<
|
|
111
|
+
depositERC20(asset: StarknetAddress, amount: bigint, precommitment: bigint, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
104
112
|
/**
|
|
105
113
|
* Deposits an ERC20 token into a privacy pool and executes the transaction.
|
|
106
114
|
*
|
|
@@ -127,7 +135,7 @@ export declare class SNContractInteractionsService {
|
|
|
127
135
|
* @param options - Simulation options
|
|
128
136
|
* @returns A simulated transaction result
|
|
129
137
|
*/
|
|
130
|
-
depositETH(amount: bigint, precommitment: bigint, options: OptionModeSimulate): Promise<
|
|
138
|
+
depositETH(amount: bigint, precommitment: bigint, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
131
139
|
/**
|
|
132
140
|
* Deposits ETH into a privacy pool and executes the transaction.
|
|
133
141
|
*
|
|
@@ -155,7 +163,7 @@ export declare class SNContractInteractionsService {
|
|
|
155
163
|
* @param options - Simulation options
|
|
156
164
|
* @returns A simulated transaction result
|
|
157
165
|
*/
|
|
158
|
-
withdraw(withdrawal: Withdrawal, withdrawalProofGaraga: bigint[], scope: Hash, options: OptionModeSimulate): Promise<
|
|
166
|
+
withdraw(withdrawal: Withdrawal, withdrawalProofGaraga: bigint[], scope: Hash, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
159
167
|
/**
|
|
160
168
|
* Withdraws funds from a privacy pool and executes the transaction.
|
|
161
169
|
*
|
|
@@ -184,7 +192,7 @@ export declare class SNContractInteractionsService {
|
|
|
184
192
|
* @param options - Simulation options
|
|
185
193
|
* @returns A simulated transaction result
|
|
186
194
|
*/
|
|
187
|
-
relay(withdrawal: Withdrawal, withdrawalProofGaraga: bigint[], scope: Hash, options: OptionModeSimulate): Promise<
|
|
195
|
+
relay(withdrawal: Withdrawal, withdrawalProofGaraga: bigint[], scope: Hash, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
188
196
|
/**
|
|
189
197
|
* Relays a withdrawal transaction through the EntryPoint contract and executes it.
|
|
190
198
|
*
|
|
@@ -211,7 +219,7 @@ export declare class SNContractInteractionsService {
|
|
|
211
219
|
* @param options - Simulation options
|
|
212
220
|
* @returns A simulated transaction result
|
|
213
221
|
*/
|
|
214
|
-
ragequit(ragequitProofGaraga: bigint[], privacyPoolAddress: StarknetAddress, options: OptionModeSimulate): Promise<
|
|
222
|
+
ragequit(ragequitProofGaraga: bigint[], privacyPoolAddress: StarknetAddress, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
215
223
|
/**
|
|
216
224
|
* Performs a ragequit operation to exit a privacy pool and executes the transaction.
|
|
217
225
|
*
|
|
@@ -271,10 +279,10 @@ export declare class SNContractInteractionsService {
|
|
|
271
279
|
* @todo Implement ERC20 approval functionality
|
|
272
280
|
*/
|
|
273
281
|
approveERC20(spenderAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint): Promise<Call>;
|
|
274
|
-
approveERC20(spenderAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, options: OptionModeSimulate): Promise<
|
|
282
|
+
approveERC20(spenderAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
275
283
|
approveERC20(spenderAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, options: OptionModeExecute): Promise<TransactionResponse>;
|
|
276
284
|
approveAndDeposit(entrypointAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, precommitment: bigint): Promise<CallResult>;
|
|
277
|
-
approveAndDeposit(entrypointAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, precommitment: bigint, options: OptionModeSimulate): Promise<
|
|
285
|
+
approveAndDeposit(entrypointAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, precommitment: bigint, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
278
286
|
approveAndDeposit(entrypointAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, precommitment: bigint, options: OptionModeExecute): Promise<TransactionResponse>;
|
|
279
287
|
}
|
|
280
288
|
export declare class AdminContractInteractions {
|
|
@@ -282,25 +290,25 @@ export declare class AdminContractInteractions {
|
|
|
282
290
|
entrypoint: EntryPointType;
|
|
283
291
|
constructor(contractService: SNContractInteractionsService);
|
|
284
292
|
registerPool(asset: StarknetAddress, pool: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint): Promise<Call>;
|
|
285
|
-
registerPool(asset: StarknetAddress, pool: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options: OptionModeSimulate): Promise<
|
|
293
|
+
registerPool(asset: StarknetAddress, pool: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
286
294
|
registerPool(asset: StarknetAddress, pool: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
287
295
|
updateRoot(root: bigint, ipfsCID: string): Promise<Call>;
|
|
288
|
-
updateRoot(root: bigint, ipfsCID: string, options: OptionModeSimulate): Promise<
|
|
296
|
+
updateRoot(root: bigint, ipfsCID: string, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
289
297
|
updateRoot(root: bigint, ipfsCID: string, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
290
298
|
removePool(asset: StarknetAddress): Promise<Call>;
|
|
291
|
-
removePool(asset: StarknetAddress, options: OptionModeSimulate): Promise<
|
|
299
|
+
removePool(asset: StarknetAddress, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
292
300
|
removePool(asset: StarknetAddress, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
293
301
|
updatePoolConfiguration(asset: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint): Promise<Call>;
|
|
294
|
-
updatePoolConfiguration(asset: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options: OptionModeSimulate): Promise<
|
|
302
|
+
updatePoolConfiguration(asset: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
295
303
|
updatePoolConfiguration(asset: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
296
304
|
windDownPool(pool: StarknetAddress): Promise<Call>;
|
|
297
|
-
windDownPool(pool: StarknetAddress, options: OptionModeSimulate): Promise<
|
|
305
|
+
windDownPool(pool: StarknetAddress, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
298
306
|
windDownPool(pool: StarknetAddress, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
299
307
|
withdrawFees(asset: StarknetAddress, recipient: StarknetAddress): Promise<Call>;
|
|
300
|
-
withdrawFees(asset: StarknetAddress, recipient: StarknetAddress, options: OptionModeSimulate): Promise<
|
|
308
|
+
withdrawFees(asset: StarknetAddress, recipient: StarknetAddress, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
301
309
|
withdrawFees(asset: StarknetAddress, recipient: StarknetAddress, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
302
310
|
upgrade(newClassHash: string): Promise<Call>;
|
|
303
|
-
upgrade(newClassHash: string, options: OptionModeSimulate): Promise<
|
|
311
|
+
upgrade(newClassHash: string, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
304
312
|
upgrade(newClassHash: string, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
305
313
|
}
|
|
306
314
|
export {};
|
|
@@ -9,14 +9,12 @@ import { executeIntent, simulateIntent } from "./transactionHandler.js";
|
|
|
9
9
|
/**
|
|
10
10
|
* Execution modes for contract interactions.
|
|
11
11
|
*/
|
|
12
|
-
export
|
|
13
|
-
(function (Mode) {
|
|
12
|
+
export const Mode = {
|
|
14
13
|
/** Simulate the transaction without executing it */
|
|
15
|
-
|
|
14
|
+
SIMULATE: "simulate",
|
|
16
15
|
/** Execute the transaction on-chain */
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
;
|
|
16
|
+
EXECUTE: "execute"
|
|
17
|
+
};
|
|
20
18
|
/** Helper function for asserting instances */
|
|
21
19
|
function _isAccount(x) {
|
|
22
20
|
return (x.simulateTransaction !== undefined) && (x.execute !== undefined);
|
|
@@ -37,7 +35,8 @@ function _intentOptionWrapper(calls, options) {
|
|
|
37
35
|
return simulateIntent(options.account, calls);
|
|
38
36
|
}
|
|
39
37
|
else if (options.mode === Mode.EXECUTE) {
|
|
40
|
-
|
|
38
|
+
const details = options.modeOptions?.details;
|
|
39
|
+
return executeIntent(options.account, calls, details);
|
|
41
40
|
}
|
|
42
41
|
else {
|
|
43
42
|
throw StarknetSDKError.unreachable();
|
|
@@ -81,7 +80,7 @@ export class SNContractInteractionsService {
|
|
|
81
80
|
*/
|
|
82
81
|
constructor(entrypointAddress, providerOrAccount) {
|
|
83
82
|
this.providerOrAccount = providerOrAccount;
|
|
84
|
-
this.entrypoint = new Contract(EntryPointABI, entrypointAddress, this.providerOrAccount).typedv2(EntryPointABI);
|
|
83
|
+
this.entrypoint = new Contract({ abi: EntryPointABI, address: entrypointAddress, providerOrAccount: this.providerOrAccount }).typedv2(EntryPointABI);
|
|
85
84
|
}
|
|
86
85
|
/**
|
|
87
86
|
* Creates a typed PrivacyPool contract instance for the given address.
|
|
@@ -90,10 +89,10 @@ export class SNContractInteractionsService {
|
|
|
90
89
|
* @returns A typed contract instance for the PrivacyPool
|
|
91
90
|
*/
|
|
92
91
|
pool(address) {
|
|
93
|
-
return new Contract(PrivacyPoolABI, address, this.providerOrAccount).typedv2(PrivacyPoolABI);
|
|
92
|
+
return new Contract({ abi: PrivacyPoolABI, address, providerOrAccount: this.providerOrAccount }).typedv2(PrivacyPoolABI);
|
|
94
93
|
}
|
|
95
94
|
erc20(address) {
|
|
96
|
-
return new Contract(ERC20ABI, address, this.providerOrAccount).typedv2(ERC20ABI);
|
|
95
|
+
return new Contract({ abi: ERC20ABI, address, providerOrAccount: this.providerOrAccount }).typedv2(ERC20ABI);
|
|
97
96
|
}
|
|
98
97
|
depositERC20(asset, amount, precommitment, options) {
|
|
99
98
|
const call = this.entrypoint.populate("deposit", [asset, amount, precommitment]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.service.js","sourceRoot":"","sources":["../../src/contracts/contracts.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,QAAQ,EAA0B,GAAG,
|
|
1
|
+
{"version":3,"file":"contracts.service.js","sourceRoot":"","sources":["../../src/contracts/contracts.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { AllowArray, Call, InvokeFunctionResponse, Account as SNAccount,
|
|
1
|
+
import { AllowArray, Call, InvokeFunctionResponse, Account as SNAccount, SimulateTransaction, UniversalDetails } from "starknet";
|
|
2
2
|
export declare function executeIntent(account: SNAccount, calls: AllowArray<Call>, transactionDetails?: UniversalDetails): Promise<InvokeFunctionResponse>;
|
|
3
|
-
export declare function simulateIntent(account: SNAccount, calls: AllowArray<Call>): Promise<
|
|
3
|
+
export declare function simulateIntent(account: SNAccount, calls: AllowArray<Call>): Promise<Omit<SimulateTransaction, 'fee_estimation'>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionHandler.js","sourceRoot":"","sources":["../../src/contracts/transactionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"transactionHandler.js","sourceRoot":"","sources":["../../src/contracts/transactionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuF,eAAe,EAAoB,MAAM,UAAU,CAAC;AAClJ,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAkB,EAAE,KAAuB,EAAE,kBAAqC;IAElF,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAkB,EAAE,KAAuB;IAE3C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC;QAC/C,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;KACjD,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEtB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,iBAAiB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjE,MAAM,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;IACnE,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC;QAC/E,MAAM,eAAe,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/data.service.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare const AbiEventName: {
|
|
|
11
11
|
readonly Withdraw: "privacy_pools::interfaces::IPool::Withdrawn";
|
|
12
12
|
readonly Ragequit: "privacy_pools::interfaces::IPool::RageQuit";
|
|
13
13
|
};
|
|
14
|
-
type AbiEventName = typeof AbiEventName[keyof typeof AbiEventName];
|
|
14
|
+
type AbiEventName = (typeof AbiEventName)[keyof typeof AbiEventName];
|
|
15
15
|
export interface StarknetDepositedEventData {
|
|
16
16
|
depositor: bigint;
|
|
17
17
|
commitment: bigint;
|
|
@@ -46,6 +46,8 @@ export type StarknetEvent = StarknetDepositedEventData | StarknetWithdrawnEventD
|
|
|
46
46
|
*/
|
|
47
47
|
export declare class StarknetDataService {
|
|
48
48
|
private readonly provider;
|
|
49
|
+
private static readonly abiParser;
|
|
50
|
+
private readonly abiParser;
|
|
49
51
|
/**
|
|
50
52
|
* Initialize the Starknet data service with an RPC provider
|
|
51
53
|
*
|
package/dist/data.service.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { events, hash, num } from "starknet";
|
|
1
|
+
import { AbiParser2, events, hash, num, } from "starknet";
|
|
2
2
|
import { PrivacyPoolABI } from "./abis/PrivacyPool.abi.js";
|
|
3
|
-
import { SNBaseErrorCode, SNDataError, StarknetSDKError } from "./errors/index.js";
|
|
3
|
+
import { SNBaseErrorCode, SNDataError, StarknetSDKError, } from "./errors/index.js";
|
|
4
4
|
// Calculate event selectors using Starknet keccak
|
|
5
5
|
export const DEPOSIT_EVENT_SELECTOR = num.toHex(hash.starknetKeccak("Deposited")); // 0x69105484e3b5f553164aa6de1f67321ea2757275a5e614365c90b9ed0a5e9b
|
|
6
6
|
export const WITHDRAWAL_EVENT_SELECTOR = num.toHex(hash.starknetKeccak("Withdrawn")); // 0x36a4d15ab9e146faab90d4abc1c0cad17c4ded24551c781ba100392b5a70248
|
|
7
7
|
export const RAGEQUIT_EVENT_SELECTOR = num.toHex(hash.starknetKeccak("RageQuit")); // 0x2a2469e4569da9d3c3df9bc1a2ddece1e640a89b8ecd537da96f064d64c8183
|
|
8
8
|
// ABI event names for direct selection
|
|
9
|
-
export const DEPOSIT_EVENT_ABI_NAME =
|
|
10
|
-
export const WITHDRAWAL_EVENT_ABI_NAME =
|
|
11
|
-
export const RAGEQUIT_EVENT_ABI_NAME =
|
|
9
|
+
export const DEPOSIT_EVENT_ABI_NAME = "privacy_pools::interfaces::IPool::Deposited";
|
|
10
|
+
export const WITHDRAWAL_EVENT_ABI_NAME = "privacy_pools::interfaces::IPool::Withdrawn";
|
|
11
|
+
export const RAGEQUIT_EVENT_ABI_NAME = "privacy_pools::interfaces::IPool::RageQuit";
|
|
12
12
|
export const AbiEventName = {
|
|
13
13
|
Deposit: DEPOSIT_EVENT_ABI_NAME,
|
|
14
14
|
Withdraw: WITHDRAWAL_EVENT_ABI_NAME,
|
|
@@ -23,6 +23,8 @@ export const AbiEventName = {
|
|
|
23
23
|
*/
|
|
24
24
|
export class StarknetDataService {
|
|
25
25
|
provider;
|
|
26
|
+
static abiParser = new AbiParser2(PrivacyPoolABI);
|
|
27
|
+
abiParser = StarknetDataService.abiParser;
|
|
26
28
|
/**
|
|
27
29
|
* Initialize the Starknet data service with an RPC provider
|
|
28
30
|
*
|
|
@@ -59,13 +61,13 @@ export class StarknetDataService {
|
|
|
59
61
|
});
|
|
60
62
|
// Parse all events at once using starknet.js event parser
|
|
61
63
|
const abiEvents = events.getAbiEvents(PrivacyPoolABI);
|
|
62
|
-
const parsedEvents = events.parseEvents(eventsResult, abiEvents, {}, {});
|
|
64
|
+
const parsedEvents = events.parseEvents(eventsResult, abiEvents, {}, {}, this.abiParser);
|
|
63
65
|
return parsedEvents
|
|
64
66
|
.filter((parsedEvent) => parsedEvent[DEPOSIT_EVENT_ABI_NAME] !== undefined)
|
|
65
67
|
.map((parsedEvent) => ({
|
|
66
68
|
eventData: parsedEvent[DEPOSIT_EVENT_ABI_NAME],
|
|
67
69
|
blockNumber: parsedEvent.block_number,
|
|
68
|
-
transactionHash: parsedEvent.transaction_hash
|
|
70
|
+
transactionHash: parsedEvent.transaction_hash,
|
|
69
71
|
}))
|
|
70
72
|
.map(({ eventData, blockNumber, transactionHash }) => ({
|
|
71
73
|
depositor: num.toHex(eventData.depositor),
|
|
@@ -102,13 +104,13 @@ export class StarknetDataService {
|
|
|
102
104
|
});
|
|
103
105
|
// Parse all events at once using starknet.js event parser
|
|
104
106
|
const abiEvents = events.getAbiEvents(PrivacyPoolABI);
|
|
105
|
-
const parsedEvents = events.parseEvents(eventsResult.events, abiEvents, {}, {});
|
|
107
|
+
const parsedEvents = events.parseEvents(eventsResult.events, abiEvents, {}, {}, this.abiParser);
|
|
106
108
|
return parsedEvents
|
|
107
109
|
.filter((parsedEvent) => parsedEvent[WITHDRAWAL_EVENT_ABI_NAME] !== undefined)
|
|
108
110
|
.map((parsedEvent) => ({
|
|
109
111
|
eventData: parsedEvent[WITHDRAWAL_EVENT_ABI_NAME],
|
|
110
112
|
blockNumber: parsedEvent.block_number,
|
|
111
|
-
transactionHash: parsedEvent.transaction_hash
|
|
113
|
+
transactionHash: parsedEvent.transaction_hash,
|
|
112
114
|
}))
|
|
113
115
|
.map(({ eventData, blockNumber, transactionHash }) => ({
|
|
114
116
|
withdrawn: eventData.withdrawnValue,
|
|
@@ -143,13 +145,13 @@ export class StarknetDataService {
|
|
|
143
145
|
});
|
|
144
146
|
// Parse all events at once using starknet.js event parser
|
|
145
147
|
const abiEvents = events.getAbiEvents(PrivacyPoolABI);
|
|
146
|
-
const parsedEvents = events.parseEvents(eventsResult.events, abiEvents, {}, {});
|
|
148
|
+
const parsedEvents = events.parseEvents(eventsResult.events, abiEvents, {}, {}, this.abiParser);
|
|
147
149
|
return parsedEvents
|
|
148
150
|
.filter((parsedEvent) => parsedEvent[RAGEQUIT_EVENT_ABI_NAME] !== undefined)
|
|
149
151
|
.map((parsedEvent) => ({
|
|
150
152
|
eventData: parsedEvent[RAGEQUIT_EVENT_ABI_NAME],
|
|
151
153
|
blockNumber: parsedEvent.block_number,
|
|
152
|
-
transactionHash: parsedEvent.transaction_hash
|
|
154
|
+
transactionHash: parsedEvent.transaction_hash,
|
|
153
155
|
}))
|
|
154
156
|
.map(({ eventData, blockNumber, transactionHash }) => ({
|
|
155
157
|
ragequitter: num.toHex(eventData.depositor),
|
|
@@ -168,7 +170,7 @@ export class StarknetDataService {
|
|
|
168
170
|
}
|
|
169
171
|
static parseGenericEvents(abiEventName, emittedEvents, pool) {
|
|
170
172
|
const poolAbiEvents = events.getAbiEvents(PrivacyPoolABI);
|
|
171
|
-
const parsedEvents = events.parseEvents(emittedEvents.filter(e => num.toBigInt(e.from_address) === num.toBigInt(pool.address)), poolAbiEvents, {}, {});
|
|
173
|
+
const parsedEvents = events.parseEvents(emittedEvents.filter((e) => num.toBigInt(e.from_address) === num.toBigInt(pool.address)), poolAbiEvents, {}, {}, StarknetDataService.abiParser);
|
|
172
174
|
return parsedEvents
|
|
173
175
|
.filter((parsedEvent) => parsedEvent[abiEventName] !== undefined)
|
|
174
176
|
.map((parsedEvent) => {
|
|
@@ -176,7 +178,7 @@ export class StarknetDataService {
|
|
|
176
178
|
return {
|
|
177
179
|
...parsedEvent[abiEventName],
|
|
178
180
|
blockNumber: parsedEvent.block_number,
|
|
179
|
-
transactionHash: parsedEvent.transaction_hash
|
|
181
|
+
transactionHash: parsedEvent.transaction_hash,
|
|
180
182
|
};
|
|
181
183
|
});
|
|
182
184
|
}
|
|
@@ -193,12 +195,12 @@ export class StarknetDataService {
|
|
|
193
195
|
const receipt = await this.provider.getTransactionReceipt(transactionHash);
|
|
194
196
|
if (!receipt.isSuccess())
|
|
195
197
|
throw SNDataError.noEventsToParse("Tx was not succesful");
|
|
196
|
-
const emmitedEvents = receipt.value.events.map(e => {
|
|
198
|
+
const emmitedEvents = receipt.value.events.map((e) => {
|
|
197
199
|
return {
|
|
198
200
|
...e,
|
|
199
201
|
block_hash: receipt.value.block_hash,
|
|
200
202
|
block_number: receipt.value.block_number,
|
|
201
|
-
transaction_hash: transactionHash
|
|
203
|
+
transaction_hash: transactionHash,
|
|
202
204
|
};
|
|
203
205
|
});
|
|
204
206
|
return StarknetDataService.parseGenericEvents(abiEventName, emmitedEvents, pool);
|
package/dist/data.service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.service.js","sourceRoot":"","sources":["../src/data.service.ts"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"data.service.js","sourceRoot":"","sources":["../src/data.service.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.
|
|
3
|
+
"version": "0.0.31",
|
|
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",
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
"package.json",
|
|
13
13
|
"!**/*.tsbuildinfo"
|
|
14
14
|
],
|
|
15
|
+
"main": "./dist/index.js",
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
15
17
|
"exports": {
|
|
16
18
|
".": {
|
|
17
19
|
"types": "./dist/index.d.ts",
|
|
@@ -23,7 +25,7 @@
|
|
|
23
25
|
"@0xbow/privacy-pools-core-sdk": "0.1.22",
|
|
24
26
|
"@scure/starknet": "1.1.2",
|
|
25
27
|
"garaga": "0.18.1",
|
|
26
|
-
"starknet": "
|
|
28
|
+
"starknet": "8.5.4",
|
|
27
29
|
"viem": "2.22.14"
|
|
28
30
|
},
|
|
29
31
|
"devDependencies": {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Hash } from "@0xbow/privacy-pools-core-sdk";
|
|
2
|
-
import { AllowArray, Call, Contract, InvokeFunctionResponse, num, RpcProvider,
|
|
2
|
+
import { AllowArray, Call, Contract, InvokeFunctionResponse, num, RpcProvider, SimulateTransaction, Account as SNAccount, TypedContractV2, UniversalDetails } from "starknet";
|
|
3
3
|
|
|
4
4
|
import { EntryPointABI } from "../abis/EntryPoint.abi.js";
|
|
5
5
|
import { ERC20ABI } from "../abis/ERC20.abi.js";
|
|
@@ -30,27 +30,44 @@ export type Erc20Type = TypedContractV2<typeof ERC20ABI>;
|
|
|
30
30
|
/**
|
|
31
31
|
* Execution modes for contract interactions.
|
|
32
32
|
*/
|
|
33
|
-
export
|
|
33
|
+
export const Mode = {
|
|
34
34
|
/** Simulate the transaction without executing it */
|
|
35
|
-
SIMULATE
|
|
35
|
+
SIMULATE: "simulate",
|
|
36
36
|
/** Execute the transaction on-chain */
|
|
37
|
-
EXECUTE
|
|
38
|
-
};
|
|
37
|
+
EXECUTE: "execute"
|
|
38
|
+
} as const;
|
|
39
|
+
|
|
40
|
+
export type Mode = typeof Mode[keyof typeof Mode];
|
|
39
41
|
|
|
40
42
|
/** Option type for simulation mode */
|
|
41
|
-
export type
|
|
43
|
+
export type OptionSimulate = {};
|
|
42
44
|
|
|
43
45
|
/** Option type for execution mode with optional transaction details */
|
|
44
|
-
export type
|
|
46
|
+
export type OptionExecute = { details?: UniversalDetails; };
|
|
45
47
|
|
|
46
|
-
/**
|
|
47
|
-
type
|
|
48
|
+
/** Option type for simulation mode */
|
|
49
|
+
export type OptionModeSimulate = { mode: typeof Mode.SIMULATE; modeOptions?: OptionSimulate; };
|
|
50
|
+
|
|
51
|
+
/** Option type for execution mode with optional transaction details */
|
|
52
|
+
export type OptionModeExecute = { mode: typeof Mode.EXECUTE; modeOptions?: OptionExecute; };
|
|
53
|
+
|
|
54
|
+
type OptionModesMap = {
|
|
55
|
+
[Mode.EXECUTE]: OptionExecute;
|
|
56
|
+
[Mode.SIMULATE]: OptionSimulate;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
type OptionModes = {
|
|
60
|
+
[K in keyof OptionModesMap]: {
|
|
61
|
+
mode: K;
|
|
62
|
+
modeOptions?: OptionModesMap[K];
|
|
63
|
+
}
|
|
64
|
+
}[keyof OptionModesMap];
|
|
48
65
|
|
|
49
66
|
/** Call options including account and execution mode */
|
|
50
67
|
type CallOptions = { account: SNAccount | RpcProvider; } & OptionModes;
|
|
51
68
|
|
|
52
69
|
/** Union type for all possible call results */
|
|
53
|
-
type CallResult = AllowArray<Call> |
|
|
70
|
+
type CallResult = AllowArray<Call> | Omit<SimulateTransaction, 'fee_estimation'> | TransactionResponse;
|
|
54
71
|
|
|
55
72
|
/** Helper function for asserting instances */
|
|
56
73
|
function _isAccount(x: SNAccount | RpcProvider): x is SNAccount {
|
|
@@ -73,7 +90,8 @@ function _intentOptionWrapper(calls: AllowArray<Call>, options?: CallOptions): P
|
|
|
73
90
|
return simulateIntent(options.account, calls);
|
|
74
91
|
}
|
|
75
92
|
else if (options.mode === Mode.EXECUTE) {
|
|
76
|
-
|
|
93
|
+
const details = options.modeOptions?.details;
|
|
94
|
+
return executeIntent(options.account, calls, details);
|
|
77
95
|
}
|
|
78
96
|
else {
|
|
79
97
|
throw StarknetSDKError.unreachable();
|
|
@@ -121,7 +139,7 @@ export class SNContractInteractionsService {
|
|
|
121
139
|
entrypointAddress: StarknetAddress,
|
|
122
140
|
readonly providerOrAccount: SNAccount | RpcProvider,
|
|
123
141
|
) {
|
|
124
|
-
this.entrypoint = new Contract(EntryPointABI, entrypointAddress, this.providerOrAccount).typedv2(EntryPointABI);
|
|
142
|
+
this.entrypoint = new Contract({ abi: EntryPointABI, address: entrypointAddress, providerOrAccount: this.providerOrAccount}).typedv2(EntryPointABI);
|
|
125
143
|
}
|
|
126
144
|
|
|
127
145
|
/**
|
|
@@ -131,11 +149,11 @@ export class SNContractInteractionsService {
|
|
|
131
149
|
* @returns A typed contract instance for the PrivacyPool
|
|
132
150
|
*/
|
|
133
151
|
pool(address: StarknetAddress): PrivacyPoolType {
|
|
134
|
-
return new Contract(PrivacyPoolABI, address, this.providerOrAccount).typedv2(PrivacyPoolABI);
|
|
152
|
+
return new Contract({ abi: PrivacyPoolABI, address, providerOrAccount: this.providerOrAccount}).typedv2(PrivacyPoolABI);
|
|
135
153
|
}
|
|
136
154
|
|
|
137
155
|
erc20(address: StarknetAddress): Erc20Type {
|
|
138
|
-
return new Contract(ERC20ABI, address, this.providerOrAccount).typedv2(ERC20ABI);
|
|
156
|
+
return new Contract({ abi: ERC20ABI, address, providerOrAccount: this.providerOrAccount }).typedv2(ERC20ABI);
|
|
139
157
|
}
|
|
140
158
|
|
|
141
159
|
/**
|
|
@@ -156,7 +174,7 @@ export class SNContractInteractionsService {
|
|
|
156
174
|
* @param options - Simulation options
|
|
157
175
|
* @returns A simulated transaction result
|
|
158
176
|
*/
|
|
159
|
-
depositERC20(asset: StarknetAddress, amount: bigint, precommitment: bigint, options: OptionModeSimulate): Promise<
|
|
177
|
+
depositERC20(asset: StarknetAddress, amount: bigint, precommitment: bigint, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
160
178
|
/**
|
|
161
179
|
* Deposits an ERC20 token into a privacy pool and executes the transaction.
|
|
162
180
|
*
|
|
@@ -188,7 +206,7 @@ export class SNContractInteractionsService {
|
|
|
188
206
|
* @param options - Simulation options
|
|
189
207
|
* @returns A simulated transaction result
|
|
190
208
|
*/
|
|
191
|
-
depositETH(amount: bigint, precommitment: bigint, options: OptionModeSimulate): Promise<
|
|
209
|
+
depositETH(amount: bigint, precommitment: bigint, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
192
210
|
/**
|
|
193
211
|
* Deposits ETH into a privacy pool and executes the transaction.
|
|
194
212
|
*
|
|
@@ -221,7 +239,7 @@ export class SNContractInteractionsService {
|
|
|
221
239
|
* @param options - Simulation options
|
|
222
240
|
* @returns A simulated transaction result
|
|
223
241
|
*/
|
|
224
|
-
withdraw(withdrawal: Withdrawal, withdrawalProofGaraga: bigint[], scope: Hash, options: OptionModeSimulate): Promise<
|
|
242
|
+
withdraw(withdrawal: Withdrawal, withdrawalProofGaraga: bigint[], scope: Hash, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
225
243
|
/**
|
|
226
244
|
* Withdraws funds from a privacy pool and executes the transaction.
|
|
227
245
|
*
|
|
@@ -256,7 +274,7 @@ export class SNContractInteractionsService {
|
|
|
256
274
|
* @param options - Simulation options
|
|
257
275
|
* @returns A simulated transaction result
|
|
258
276
|
*/
|
|
259
|
-
relay(withdrawal: Withdrawal, withdrawalProofGaraga: bigint[], scope: Hash, options: OptionModeSimulate): Promise<
|
|
277
|
+
relay(withdrawal: Withdrawal, withdrawalProofGaraga: bigint[], scope: Hash, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
260
278
|
/**
|
|
261
279
|
* Relays a withdrawal transaction through the EntryPoint contract and executes it.
|
|
262
280
|
*
|
|
@@ -288,7 +306,7 @@ export class SNContractInteractionsService {
|
|
|
288
306
|
* @param options - Simulation options
|
|
289
307
|
* @returns A simulated transaction result
|
|
290
308
|
*/
|
|
291
|
-
ragequit(ragequitProofGaraga: bigint[], privacyPoolAddress: StarknetAddress, options: OptionModeSimulate): Promise<
|
|
309
|
+
ragequit(ragequitProofGaraga: bigint[], privacyPoolAddress: StarknetAddress, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
292
310
|
/**
|
|
293
311
|
* Performs a ragequit operation to exit a privacy pool and executes the transaction.
|
|
294
312
|
*
|
|
@@ -373,7 +391,7 @@ export class SNContractInteractionsService {
|
|
|
373
391
|
* @todo Implement ERC20 approval functionality
|
|
374
392
|
*/
|
|
375
393
|
approveERC20(spenderAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint): Promise<Call>;
|
|
376
|
-
approveERC20(spenderAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, options: OptionModeSimulate): Promise<
|
|
394
|
+
approveERC20(spenderAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
377
395
|
approveERC20(spenderAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, options: OptionModeExecute): Promise<TransactionResponse>;
|
|
378
396
|
approveERC20(spenderAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, options?: OptionModes): Promise<CallResult> {
|
|
379
397
|
const call = this.erc20(tokenAddress).populate("approve", [spenderAddress, amount]);
|
|
@@ -381,7 +399,7 @@ export class SNContractInteractionsService {
|
|
|
381
399
|
}
|
|
382
400
|
|
|
383
401
|
approveAndDeposit(entrypointAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, precommitment: bigint): Promise<CallResult>;
|
|
384
|
-
approveAndDeposit(entrypointAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, precommitment: bigint, options: OptionModeSimulate): Promise<
|
|
402
|
+
approveAndDeposit(entrypointAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, precommitment: bigint, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
385
403
|
approveAndDeposit(entrypointAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, precommitment: bigint, options: OptionModeExecute): Promise<TransactionResponse>;
|
|
386
404
|
async approveAndDeposit(entrypointAddress: StarknetAddress, tokenAddress: StarknetAddress, amount: bigint, precommitment: bigint, options?: OptionModes): Promise<CallResult> {
|
|
387
405
|
const assetConfig = await this.entrypoint.assetConfig(tokenAddress);
|
|
@@ -403,7 +421,7 @@ export class AdminContractInteractions {
|
|
|
403
421
|
}
|
|
404
422
|
|
|
405
423
|
registerPool(asset: StarknetAddress, pool: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint): Promise<Call>;
|
|
406
|
-
registerPool(asset: StarknetAddress, pool: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options: OptionModeSimulate): Promise<
|
|
424
|
+
registerPool(asset: StarknetAddress, pool: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
407
425
|
registerPool(asset: StarknetAddress, pool: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
408
426
|
async registerPool(asset: StarknetAddress, pool: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options?: OptionModes) {
|
|
409
427
|
const call = this.entrypoint.populate("registerPool", [asset, pool, minimumDepositAmount, vettingFeeBPS, maxRelayFeeBPS]);
|
|
@@ -411,7 +429,7 @@ export class AdminContractInteractions {
|
|
|
411
429
|
}
|
|
412
430
|
|
|
413
431
|
updateRoot(root: bigint, ipfsCID: string): Promise<Call>;
|
|
414
|
-
updateRoot(root: bigint, ipfsCID: string, options: OptionModeSimulate): Promise<
|
|
432
|
+
updateRoot(root: bigint, ipfsCID: string, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
415
433
|
updateRoot(root: bigint, ipfsCID: string, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
416
434
|
async updateRoot(root: bigint, ipfsCID: string, options?: OptionModes) {
|
|
417
435
|
_assertIpfsCID(ipfsCID);
|
|
@@ -420,7 +438,7 @@ export class AdminContractInteractions {
|
|
|
420
438
|
}
|
|
421
439
|
|
|
422
440
|
removePool(asset: StarknetAddress): Promise<Call>;
|
|
423
|
-
removePool(asset: StarknetAddress, options: OptionModeSimulate): Promise<
|
|
441
|
+
removePool(asset: StarknetAddress, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
424
442
|
removePool(asset: StarknetAddress, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
425
443
|
async removePool(asset: StarknetAddress, options?: OptionModes) {
|
|
426
444
|
const call = this.entrypoint.populate("removePool", [asset]);
|
|
@@ -428,7 +446,7 @@ export class AdminContractInteractions {
|
|
|
428
446
|
}
|
|
429
447
|
|
|
430
448
|
updatePoolConfiguration(asset: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint): Promise<Call>;
|
|
431
|
-
updatePoolConfiguration(asset: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options: OptionModeSimulate): Promise<
|
|
449
|
+
updatePoolConfiguration(asset: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
432
450
|
updatePoolConfiguration(asset: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
433
451
|
async updatePoolConfiguration(asset: StarknetAddress, minimumDepositAmount: bigint, vettingFeeBPS: bigint, maxRelayFeeBPS: bigint, options?: OptionModes) {
|
|
434
452
|
const call = this.entrypoint.populate("updatePoolConfiguration", [asset, minimumDepositAmount, vettingFeeBPS, maxRelayFeeBPS]);
|
|
@@ -436,7 +454,7 @@ export class AdminContractInteractions {
|
|
|
436
454
|
}
|
|
437
455
|
|
|
438
456
|
windDownPool(pool: StarknetAddress): Promise<Call>;
|
|
439
|
-
windDownPool(pool: StarknetAddress, options: OptionModeSimulate): Promise<
|
|
457
|
+
windDownPool(pool: StarknetAddress, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
440
458
|
windDownPool(pool: StarknetAddress, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
441
459
|
async windDownPool(pool: StarknetAddress, options?: OptionModes) {
|
|
442
460
|
const call = this.entrypoint.populate("windDownPool", [pool]);
|
|
@@ -444,7 +462,7 @@ export class AdminContractInteractions {
|
|
|
444
462
|
}
|
|
445
463
|
|
|
446
464
|
withdrawFees(asset: StarknetAddress, recipient: StarknetAddress): Promise<Call>;
|
|
447
|
-
withdrawFees(asset: StarknetAddress, recipient: StarknetAddress, options: OptionModeSimulate): Promise<
|
|
465
|
+
withdrawFees(asset: StarknetAddress, recipient: StarknetAddress, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
448
466
|
withdrawFees(asset: StarknetAddress, recipient: StarknetAddress, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
449
467
|
async withdrawFees(asset: StarknetAddress, recipient: StarknetAddress, options?: OptionModes) {
|
|
450
468
|
const call = this.entrypoint.populate("withdrawFees", [asset, recipient]);
|
|
@@ -452,7 +470,7 @@ export class AdminContractInteractions {
|
|
|
452
470
|
}
|
|
453
471
|
|
|
454
472
|
upgrade(newClassHash: string): Promise<Call>;
|
|
455
|
-
upgrade(newClassHash: string, options: OptionModeSimulate): Promise<
|
|
473
|
+
upgrade(newClassHash: string, options: OptionModeSimulate): Promise<SimulateTransaction>;
|
|
456
474
|
upgrade(newClassHash: string, options: OptionModeExecute): Promise<InvokeFunctionResponse>;
|
|
457
475
|
async upgrade(newClassHash: string, options?: OptionModes) {
|
|
458
476
|
const call = this.entrypoint.populate("upgrade", [newClassHash]);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AllowArray, Call, InvokeFunctionResponse, Account as SNAccount,
|
|
1
|
+
import { AllowArray, Call, InvokeFunctionResponse, Account as SNAccount, SimulateTransaction, TransactionType, UniversalDetails } from "starknet";
|
|
2
2
|
import { SNContractError, StarknetSDKError } from "../errors/index.js";
|
|
3
3
|
import { parseContractError } from "../errors/contracts.errors.js";
|
|
4
4
|
|
|
@@ -11,7 +11,7 @@ export async function executeIntent(
|
|
|
11
11
|
|
|
12
12
|
export async function simulateIntent(
|
|
13
13
|
account: SNAccount, calls: AllowArray<Call>
|
|
14
|
-
): Promise<
|
|
14
|
+
): Promise<Omit<SimulateTransaction, 'fee_estimation'>> {
|
|
15
15
|
const simRes = await account.simulateTransaction([
|
|
16
16
|
{ type: TransactionType.INVOKE, payload: calls },
|
|
17
17
|
]);
|
package/src/data.service.ts
CHANGED
|
@@ -3,21 +3,39 @@ import {
|
|
|
3
3
|
Hash,
|
|
4
4
|
PoolInfo,
|
|
5
5
|
RagequitEvent,
|
|
6
|
-
WithdrawalEvent
|
|
6
|
+
WithdrawalEvent,
|
|
7
7
|
} from "@0xbow/privacy-pools-core-sdk";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
AbiParser2,
|
|
10
|
+
EmittedEvent,
|
|
11
|
+
EventFilter,
|
|
12
|
+
RpcProvider,
|
|
13
|
+
events,
|
|
14
|
+
hash,
|
|
15
|
+
num,
|
|
16
|
+
} from "starknet";
|
|
9
17
|
import { PrivacyPoolABI } from "./abis/PrivacyPool.abi.js";
|
|
10
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
SNBaseErrorCode,
|
|
20
|
+
SNDataError,
|
|
21
|
+
StarknetSDKError,
|
|
22
|
+
} from "./errors/index.js";
|
|
11
23
|
|
|
12
24
|
// Calculate event selectors using Starknet keccak
|
|
13
|
-
export const DEPOSIT_EVENT_SELECTOR = num.toHex(
|
|
14
|
-
|
|
15
|
-
|
|
25
|
+
export const DEPOSIT_EVENT_SELECTOR = num.toHex(
|
|
26
|
+
hash.starknetKeccak("Deposited")
|
|
27
|
+
); // 0x69105484e3b5f553164aa6de1f67321ea2757275a5e614365c90b9ed0a5e9b
|
|
28
|
+
export const WITHDRAWAL_EVENT_SELECTOR = num.toHex(
|
|
29
|
+
hash.starknetKeccak("Withdrawn")
|
|
30
|
+
); // 0x36a4d15ab9e146faab90d4abc1c0cad17c4ded24551c781ba100392b5a70248
|
|
31
|
+
export const RAGEQUIT_EVENT_SELECTOR = num.toHex(
|
|
32
|
+
hash.starknetKeccak("RageQuit")
|
|
33
|
+
); // 0x2a2469e4569da9d3c3df9bc1a2ddece1e640a89b8ecd537da96f064d64c8183
|
|
16
34
|
|
|
17
35
|
// ABI event names for direct selection
|
|
18
|
-
export const DEPOSIT_EVENT_ABI_NAME =
|
|
19
|
-
export const WITHDRAWAL_EVENT_ABI_NAME =
|
|
20
|
-
export const RAGEQUIT_EVENT_ABI_NAME =
|
|
36
|
+
export const DEPOSIT_EVENT_ABI_NAME = "privacy_pools::interfaces::IPool::Deposited";
|
|
37
|
+
export const WITHDRAWAL_EVENT_ABI_NAME = "privacy_pools::interfaces::IPool::Withdrawn";
|
|
38
|
+
export const RAGEQUIT_EVENT_ABI_NAME = "privacy_pools::interfaces::IPool::RageQuit";
|
|
21
39
|
|
|
22
40
|
export const AbiEventName = {
|
|
23
41
|
Deposit: DEPOSIT_EVENT_ABI_NAME,
|
|
@@ -25,7 +43,7 @@ export const AbiEventName = {
|
|
|
25
43
|
Ragequit: RAGEQUIT_EVENT_ABI_NAME,
|
|
26
44
|
} as const;
|
|
27
45
|
|
|
28
|
-
type AbiEventName = typeof AbiEventName[keyof typeof AbiEventName];
|
|
46
|
+
type AbiEventName = (typeof AbiEventName)[keyof typeof AbiEventName];
|
|
29
47
|
|
|
30
48
|
// Event data interfaces with correct types
|
|
31
49
|
export interface StarknetDepositedEventData {
|
|
@@ -56,7 +74,8 @@ type AbiToEvent = {
|
|
|
56
74
|
[AbiEventName.Ragequit]: StarknetRageQuitEventData;
|
|
57
75
|
};
|
|
58
76
|
|
|
59
|
-
export type StarknetEvent =
|
|
77
|
+
export type StarknetEvent =
|
|
78
|
+
| StarknetDepositedEventData
|
|
60
79
|
| StarknetWithdrawnEventData
|
|
61
80
|
| StarknetRageQuitEventData;
|
|
62
81
|
|
|
@@ -69,6 +88,8 @@ export type StarknetEvent = StarknetDepositedEventData
|
|
|
69
88
|
*/
|
|
70
89
|
export class StarknetDataService {
|
|
71
90
|
private readonly provider: RpcProvider;
|
|
91
|
+
private static readonly abiParser = new AbiParser2(PrivacyPoolABI);
|
|
92
|
+
private readonly abiParser = StarknetDataService.abiParser;
|
|
72
93
|
|
|
73
94
|
/**
|
|
74
95
|
* Initialize the Starknet data service with an RPC provider
|
|
@@ -80,19 +101,22 @@ export class StarknetDataService {
|
|
|
80
101
|
}
|
|
81
102
|
|
|
82
103
|
private async getEvents(eventFilter: EventFilter) {
|
|
83
|
-
let { continuation_token, events} = await this.provider.getEvents(
|
|
104
|
+
let { continuation_token, events } = await this.provider.getEvents(
|
|
105
|
+
eventFilter
|
|
106
|
+
);
|
|
84
107
|
while (continuation_token) {
|
|
85
|
-
const {continuation_token: newToken, events: newEvents} =
|
|
108
|
+
const { continuation_token: newToken, events: newEvents } =
|
|
109
|
+
await this.provider.getEvents({ ...eventFilter, continuation_token });
|
|
86
110
|
events = [...events, ...newEvents];
|
|
87
111
|
continuation_token = newToken;
|
|
88
112
|
}
|
|
89
|
-
|
|
113
|
+
|
|
90
114
|
return events;
|
|
91
115
|
}
|
|
92
116
|
|
|
93
117
|
/**
|
|
94
118
|
* Get deposit events for a specific Starknet pool
|
|
95
|
-
*
|
|
119
|
+
*
|
|
96
120
|
* @param pool - The pool information to fetch deposits from
|
|
97
121
|
* @returns Array of deposit events compatible with AccountService interface
|
|
98
122
|
* @throws {StarknetSDKError} If provider is not configured or network error occurs
|
|
@@ -102,7 +126,6 @@ export class StarknetDataService {
|
|
|
102
126
|
fromBlock: bigint = pool.deploymentBlock
|
|
103
127
|
): Promise<DepositEvent[]> {
|
|
104
128
|
try {
|
|
105
|
-
|
|
106
129
|
// Fetch events using Starknet provider
|
|
107
130
|
const eventsResult = await this.getEvents({
|
|
108
131
|
from_block: { block_number: Number(fromBlock) },
|
|
@@ -114,28 +137,42 @@ export class StarknetDataService {
|
|
|
114
137
|
|
|
115
138
|
// Parse all events at once using starknet.js event parser
|
|
116
139
|
const abiEvents = events.getAbiEvents(PrivacyPoolABI);
|
|
117
|
-
const parsedEvents = events.parseEvents(
|
|
140
|
+
const parsedEvents = events.parseEvents(
|
|
141
|
+
eventsResult,
|
|
142
|
+
abiEvents,
|
|
143
|
+
{},
|
|
144
|
+
{},
|
|
145
|
+
this.abiParser
|
|
146
|
+
);
|
|
118
147
|
|
|
119
148
|
return parsedEvents
|
|
120
|
-
.filter(
|
|
149
|
+
.filter(
|
|
150
|
+
(parsedEvent) => parsedEvent[DEPOSIT_EVENT_ABI_NAME] !== undefined
|
|
151
|
+
)
|
|
121
152
|
.map((parsedEvent) => ({
|
|
122
|
-
eventData: parsedEvent[
|
|
153
|
+
eventData: parsedEvent[
|
|
154
|
+
DEPOSIT_EVENT_ABI_NAME
|
|
155
|
+
] as unknown as StarknetDepositedEventData,
|
|
123
156
|
blockNumber: parsedEvent.block_number,
|
|
124
|
-
transactionHash: parsedEvent.transaction_hash
|
|
157
|
+
transactionHash: parsedEvent.transaction_hash,
|
|
125
158
|
}))
|
|
126
|
-
.map(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
159
|
+
.map(
|
|
160
|
+
({ eventData, blockNumber, transactionHash }) =>
|
|
161
|
+
({
|
|
162
|
+
depositor: num.toHex(eventData.depositor),
|
|
163
|
+
commitment: eventData.commitment as Hash,
|
|
164
|
+
label: eventData.label as Hash,
|
|
165
|
+
value: eventData.value,
|
|
166
|
+
precommitment: eventData.preCommitmentHash as Hash,
|
|
167
|
+
blockNumber: BigInt(blockNumber || 0),
|
|
168
|
+
transactionHash: transactionHash || "0x0",
|
|
169
|
+
} as DepositEvent)
|
|
170
|
+
);
|
|
135
171
|
} catch (error) {
|
|
136
172
|
if (error instanceof StarknetSDKError) throw error;
|
|
137
173
|
throw new StarknetSDKError(
|
|
138
|
-
`Failed to fetch deposits: ${error instanceof Error ? error.message : "Unknown error"
|
|
174
|
+
`Failed to fetch deposits: ${error instanceof Error ? error.message : "Unknown error"
|
|
175
|
+
}`,
|
|
139
176
|
SNBaseErrorCode.UNKNOWN
|
|
140
177
|
);
|
|
141
178
|
}
|
|
@@ -143,7 +180,7 @@ export class StarknetDataService {
|
|
|
143
180
|
|
|
144
181
|
/**
|
|
145
182
|
* Get withdrawal events for a specific Starknet pool
|
|
146
|
-
*
|
|
183
|
+
*
|
|
147
184
|
* @param pool - The pool information to fetch withdrawals from
|
|
148
185
|
* @param fromBlock - Optional starting block number
|
|
149
186
|
* @returns Array of withdrawal events compatible with AccountService interface
|
|
@@ -164,26 +201,40 @@ export class StarknetDataService {
|
|
|
164
201
|
|
|
165
202
|
// Parse all events at once using starknet.js event parser
|
|
166
203
|
const abiEvents = events.getAbiEvents(PrivacyPoolABI);
|
|
167
|
-
const parsedEvents = events.parseEvents(
|
|
204
|
+
const parsedEvents = events.parseEvents(
|
|
205
|
+
eventsResult.events,
|
|
206
|
+
abiEvents,
|
|
207
|
+
{},
|
|
208
|
+
{},
|
|
209
|
+
this.abiParser
|
|
210
|
+
);
|
|
168
211
|
|
|
169
212
|
return parsedEvents
|
|
170
|
-
.filter(
|
|
213
|
+
.filter(
|
|
214
|
+
(parsedEvent) => parsedEvent[WITHDRAWAL_EVENT_ABI_NAME] !== undefined
|
|
215
|
+
)
|
|
171
216
|
.map((parsedEvent) => ({
|
|
172
|
-
eventData: parsedEvent[
|
|
217
|
+
eventData: parsedEvent[
|
|
218
|
+
WITHDRAWAL_EVENT_ABI_NAME
|
|
219
|
+
] as unknown as StarknetWithdrawnEventData,
|
|
173
220
|
blockNumber: parsedEvent.block_number,
|
|
174
|
-
transactionHash: parsedEvent.transaction_hash
|
|
221
|
+
transactionHash: parsedEvent.transaction_hash,
|
|
175
222
|
}))
|
|
176
|
-
.map(
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
223
|
+
.map(
|
|
224
|
+
({ eventData, blockNumber, transactionHash }) =>
|
|
225
|
+
({
|
|
226
|
+
withdrawn: eventData.withdrawnValue,
|
|
227
|
+
spentNullifier: eventData.existingNullifierHash as Hash,
|
|
228
|
+
newCommitment: eventData.newCommitmentHash as Hash,
|
|
229
|
+
blockNumber: BigInt(blockNumber || 0),
|
|
230
|
+
transactionHash: transactionHash || "0x0",
|
|
231
|
+
} as WithdrawalEvent)
|
|
232
|
+
);
|
|
183
233
|
} catch (error) {
|
|
184
234
|
if (error instanceof StarknetSDKError) throw error;
|
|
185
235
|
throw new StarknetSDKError(
|
|
186
|
-
`Failed to fetch withdrawals: ${error instanceof Error ? error.message : "Unknown error"
|
|
236
|
+
`Failed to fetch withdrawals: ${error instanceof Error ? error.message : "Unknown error"
|
|
237
|
+
}`,
|
|
187
238
|
SNBaseErrorCode.UNKNOWN
|
|
188
239
|
);
|
|
189
240
|
}
|
|
@@ -191,7 +242,7 @@ export class StarknetDataService {
|
|
|
191
242
|
|
|
192
243
|
/**
|
|
193
244
|
* Get ragequit events for a specific Starknet pool
|
|
194
|
-
*
|
|
245
|
+
*
|
|
195
246
|
* @param pool - The pool information to fetch ragequits from
|
|
196
247
|
* @param fromBlock - Optional starting block number
|
|
197
248
|
* @returns Array of ragequit events compatible with AccountService interface
|
|
@@ -212,73 +263,118 @@ export class StarknetDataService {
|
|
|
212
263
|
|
|
213
264
|
// Parse all events at once using starknet.js event parser
|
|
214
265
|
const abiEvents = events.getAbiEvents(PrivacyPoolABI);
|
|
215
|
-
const parsedEvents = events.parseEvents(
|
|
266
|
+
const parsedEvents = events.parseEvents(
|
|
267
|
+
eventsResult.events,
|
|
268
|
+
abiEvents,
|
|
269
|
+
{},
|
|
270
|
+
{},
|
|
271
|
+
this.abiParser
|
|
272
|
+
);
|
|
216
273
|
|
|
217
274
|
return parsedEvents
|
|
218
|
-
.filter(
|
|
275
|
+
.filter(
|
|
276
|
+
(parsedEvent) => parsedEvent[RAGEQUIT_EVENT_ABI_NAME] !== undefined
|
|
277
|
+
)
|
|
219
278
|
.map((parsedEvent) => ({
|
|
220
|
-
eventData: parsedEvent[
|
|
279
|
+
eventData: parsedEvent[
|
|
280
|
+
RAGEQUIT_EVENT_ABI_NAME
|
|
281
|
+
] as unknown as StarknetRageQuitEventData,
|
|
221
282
|
blockNumber: parsedEvent.block_number,
|
|
222
|
-
transactionHash: parsedEvent.transaction_hash
|
|
283
|
+
transactionHash: parsedEvent.transaction_hash,
|
|
223
284
|
}))
|
|
224
|
-
.map(
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
285
|
+
.map(
|
|
286
|
+
({ eventData, blockNumber, transactionHash }) =>
|
|
287
|
+
({
|
|
288
|
+
ragequitter: num.toHex(eventData.depositor),
|
|
289
|
+
commitment: eventData.commitment as Hash,
|
|
290
|
+
label: eventData.label as Hash,
|
|
291
|
+
value: eventData.value,
|
|
292
|
+
blockNumber: BigInt(blockNumber || 0),
|
|
293
|
+
transactionHash: transactionHash || "0x0",
|
|
294
|
+
} as RagequitEvent)
|
|
295
|
+
);
|
|
232
296
|
} catch (error) {
|
|
233
297
|
if (error instanceof StarknetSDKError) throw error;
|
|
234
298
|
throw new StarknetSDKError(
|
|
235
|
-
`Failed to fetch ragequits: ${error instanceof Error ? error.message : "Unknown error"
|
|
299
|
+
`Failed to fetch ragequits: ${error instanceof Error ? error.message : "Unknown error"
|
|
300
|
+
}`,
|
|
236
301
|
SNBaseErrorCode.UNKNOWN
|
|
237
302
|
);
|
|
238
303
|
}
|
|
239
304
|
}
|
|
240
305
|
|
|
241
|
-
private static parseGenericEvents<K extends AbiEventName>(
|
|
306
|
+
private static parseGenericEvents<K extends AbiEventName>(
|
|
307
|
+
abiEventName: K,
|
|
308
|
+
emittedEvents: EmittedEvent[],
|
|
309
|
+
pool: PoolInfo
|
|
310
|
+
) {
|
|
242
311
|
const poolAbiEvents = events.getAbiEvents(PrivacyPoolABI);
|
|
243
|
-
const parsedEvents = events.parseEvents(
|
|
312
|
+
const parsedEvents = events.parseEvents(
|
|
313
|
+
emittedEvents.filter(
|
|
314
|
+
(e) => num.toBigInt(e.from_address) === num.toBigInt(pool.address)
|
|
315
|
+
),
|
|
316
|
+
poolAbiEvents,
|
|
317
|
+
{},
|
|
318
|
+
{},
|
|
319
|
+
StarknetDataService.abiParser
|
|
320
|
+
);
|
|
244
321
|
return parsedEvents
|
|
245
322
|
.filter((parsedEvent) => parsedEvent[abiEventName] !== undefined)
|
|
246
323
|
.map((parsedEvent) => {
|
|
247
324
|
console.log("PARSED", parsedEvent);
|
|
248
325
|
return {
|
|
249
|
-
...parsedEvent[abiEventName] as unknown as AbiToEvent[K],
|
|
326
|
+
...(parsedEvent[abiEventName] as unknown as AbiToEvent[K]),
|
|
250
327
|
blockNumber: parsedEvent.block_number,
|
|
251
|
-
transactionHash: parsedEvent.transaction_hash
|
|
328
|
+
transactionHash: parsedEvent.transaction_hash,
|
|
252
329
|
};
|
|
253
330
|
});
|
|
254
331
|
}
|
|
255
332
|
|
|
256
333
|
static parseDepositEvents(emittedEvents: EmittedEvent[], pool: PoolInfo) {
|
|
257
|
-
return StarknetDataService.parseGenericEvents(
|
|
334
|
+
return StarknetDataService.parseGenericEvents(
|
|
335
|
+
AbiEventName.Deposit,
|
|
336
|
+
emittedEvents,
|
|
337
|
+
pool
|
|
338
|
+
);
|
|
258
339
|
}
|
|
259
340
|
|
|
260
341
|
static parseWithdrawalEvents(emittedEvents: EmittedEvent[], pool: PoolInfo) {
|
|
261
|
-
return StarknetDataService.parseGenericEvents(
|
|
342
|
+
return StarknetDataService.parseGenericEvents(
|
|
343
|
+
AbiEventName.Withdraw,
|
|
344
|
+
emittedEvents,
|
|
345
|
+
pool
|
|
346
|
+
);
|
|
262
347
|
}
|
|
263
348
|
|
|
264
349
|
static parseRagequitEvents(emittedEvents: EmittedEvent[], pool: PoolInfo) {
|
|
265
|
-
return StarknetDataService.parseGenericEvents(
|
|
350
|
+
return StarknetDataService.parseGenericEvents(
|
|
351
|
+
AbiEventName.Ragequit,
|
|
352
|
+
emittedEvents,
|
|
353
|
+
pool
|
|
354
|
+
);
|
|
266
355
|
}
|
|
267
356
|
|
|
268
|
-
async getTxEvents<K extends AbiEventName>(
|
|
357
|
+
async getTxEvents<K extends AbiEventName>(
|
|
358
|
+
abiEventName: K,
|
|
359
|
+
transactionHash: string,
|
|
360
|
+
pool: PoolInfo
|
|
361
|
+
): Promise<AbiToEvent[K][]> {
|
|
269
362
|
const receipt = await this.provider.getTransactionReceipt(transactionHash);
|
|
270
363
|
if (!receipt.isSuccess())
|
|
271
364
|
throw SNDataError.noEventsToParse("Tx was not succesful");
|
|
272
365
|
|
|
273
|
-
const emmitedEvents: EmittedEvent[] = receipt.value.events.map(e => {
|
|
366
|
+
const emmitedEvents: EmittedEvent[] = receipt.value.events.map((e) => {
|
|
274
367
|
return {
|
|
275
368
|
...e,
|
|
276
369
|
block_hash: receipt.value.block_hash,
|
|
277
370
|
block_number: receipt.value.block_number,
|
|
278
|
-
transaction_hash: transactionHash
|
|
371
|
+
transaction_hash: transactionHash,
|
|
279
372
|
};
|
|
280
373
|
});
|
|
281
|
-
return StarknetDataService.parseGenericEvents<K>(
|
|
374
|
+
return StarknetDataService.parseGenericEvents<K>(
|
|
375
|
+
abiEventName,
|
|
376
|
+
emmitedEvents,
|
|
377
|
+
pool
|
|
378
|
+
);
|
|
282
379
|
}
|
|
283
|
-
|
|
284
380
|
}
|