Compare commits

..

1 Commits

Author SHA1 Message Date
6ac1025bc1
Add BaseMultiTornadoService 2024-11-19 00:57:05 +00:00
4 changed files with 18 additions and 18 deletions

12
dist/events/base.d.ts vendored
View File

@ -9,7 +9,7 @@ import type { TovarishClient } from '../tovarishClient';
import type { ReverseRecords } from '../typechain'; import type { ReverseRecords } from '../typechain';
import type { MerkleTreeService } from '../merkleTree'; import type { MerkleTreeService } from '../merkleTree';
import type { DepositType } from '../deposits'; import type { DepositType } from '../deposits';
import type { BaseEvents, CachedEvents, MinimalEvents, DepositsEvents, WithdrawalsEvents, EncryptedNotesEvents, AllGovernanceEvents, GovernanceProposalCreatedEvents, GovernanceVotedEvents, EchoEvents, AllRelayerRegistryEvents, StakeBurnedEvents, MultiDepositsEvents, MultiWithdrawalsEvents } from './types'; import type { BaseEvents, CachedEvents, MinimalEvents, DepositsEvents, WithdrawalsEvents, EncryptedNotesEvents, AllGovernanceEvents, GovernanceProposalCreatedEvents, GovernanceVotedEvents, EchoEvents, AllRelayerRegistryEvents, StakeBurnedEvents, MultiDepositEvents, MultiWithdrawalsEvents } from './types';
export interface BaseEventsServiceConstructor { export interface BaseEventsServiceConstructor {
netId: NetIdType; netId: NetIdType;
provider: Provider; provider: Provider;
@ -101,7 +101,7 @@ export interface BaseMultiTornadoServiceConstructor extends Omit<BaseEventsServi
optionalTree?: boolean; optionalTree?: boolean;
merkleTreeService?: MerkleTreeService; merkleTreeService?: MerkleTreeService;
} }
export declare class BaseMultiTornadoService extends BaseEventsService<MultiDepositsEvents | MultiWithdrawalsEvents> { export declare class BaseMultiTornadoService extends BaseEventsService<MultiDepositEvents | MultiWithdrawalsEvents> {
instances: { instances: {
[key in string]: DepositType; [key in string]: DepositType;
}; };
@ -113,12 +113,12 @@ export declare class BaseMultiTornadoService extends BaseEventsService<MultiDepo
getInstanceName(): string; getInstanceName(): string;
getTovarishType(): string; getTovarishType(): string;
updateEventProgress({ percentage, type, fromBlock, toBlock, count }: Parameters<BatchEventOnProgress>[0]): void; updateEventProgress({ percentage, type, fromBlock, toBlock, count }: Parameters<BatchEventOnProgress>[0]): void;
formatEvents(events: EventLog[]): Promise<(MultiDepositsEvents | MultiWithdrawalsEvents)[]>; formatEvents(events: EventLog[]): Promise<(MultiDepositEvents | MultiWithdrawalsEvents)[]>;
validateEvents<S>({ events, newEvents, }: BaseEvents<MultiDepositsEvents | MultiWithdrawalsEvents> & { validateEvents<S>({ events, newEvents, }: BaseEvents<MultiDepositEvents | MultiWithdrawalsEvents> & {
newEvents: (MultiDepositsEvents | MultiWithdrawalsEvents)[]; newEvents: (MultiDepositEvents | MultiWithdrawalsEvents)[];
}): Promise<S>; }): Promise<S>;
getEvents(instanceAddress: string): Promise<{ getEvents(instanceAddress: string): Promise<{
depositEvents: MultiDepositsEvents[]; depositEvents: MultiDepositEvents[];
withdrawalEvents: MultiWithdrawalsEvents[]; withdrawalEvents: MultiWithdrawalsEvents[];
tree: MerkleTree | undefined; tree: MerkleTree | undefined;
lastBlock: number; lastBlock: number;

View File

@ -87,7 +87,7 @@ export interface BaseMultiTornadoEvents {
event: string; event: string;
instanceAddress: string; instanceAddress: string;
} }
export interface MultiDepositsEvents extends BaseMultiTornadoEvents, DepositsEvents { export interface MultiDepositEvents extends BaseMultiTornadoEvents, DepositsEvents {
} }
export interface MultiWithdrawalsEvents extends BaseMultiTornadoEvents, WithdrawalsEvents { export interface MultiWithdrawalsEvents extends BaseMultiTornadoEvents, WithdrawalsEvents {
relayerAddress: string; relayerAddress: string;

View File

@ -58,7 +58,7 @@ import type {
WorkerUnregisteredEvents, WorkerUnregisteredEvents,
AllRelayerRegistryEvents, AllRelayerRegistryEvents,
StakeBurnedEvents, StakeBurnedEvents,
MultiDepositsEvents, MultiDepositEvents,
MultiWithdrawalsEvents, MultiWithdrawalsEvents,
} from './types'; } from './types';
@ -441,7 +441,7 @@ export interface BaseMultiTornadoServiceConstructor extends Omit<BaseEventsServi
merkleTreeService?: MerkleTreeService; merkleTreeService?: MerkleTreeService;
} }
export class BaseMultiTornadoService extends BaseEventsService<MultiDepositsEvents | MultiWithdrawalsEvents> { export class BaseMultiTornadoService extends BaseEventsService<MultiDepositEvents | MultiWithdrawalsEvents> {
instances: { instances: {
[key in string]: DepositType; [key in string]: DepositType;
}; };
@ -498,7 +498,7 @@ export class BaseMultiTornadoService extends BaseEventsService<MultiDepositsEven
console.log({ percentage, type, fromBlock, toBlock, count }); console.log({ percentage, type, fromBlock, toBlock, count });
} }
async formatEvents(events: EventLog[]): Promise<(MultiDepositsEvents | MultiWithdrawalsEvents)[]> { async formatEvents(events: EventLog[]): Promise<(MultiDepositEvents | MultiWithdrawalsEvents)[]> {
const txs = await this.batchTransactionService.getBatchTransactions([ const txs = await this.batchTransactionService.getBatchTransactions([
...new Set( ...new Set(
events.filter(({ eventName }) => eventName === 'Deposit').map(({ transactionHash }) => transactionHash), events.filter(({ eventName }) => eventName === 'Deposit').map(({ transactionHash }) => transactionHash),
@ -538,7 +538,7 @@ export class BaseMultiTornadoService extends BaseEventsService<MultiDepositsEven
leafIndex: Number(leafIndex), leafIndex: Number(leafIndex),
timestamp: Number(timestamp), timestamp: Number(timestamp),
from: txs.find(({ hash }) => hash === transactionHash)?.from || '', from: txs.find(({ hash }) => hash === transactionHash)?.from || '',
} as MultiDepositsEvents; } as MultiDepositEvents;
} }
if (event === 'Withdrawal') { if (event === 'Withdrawal') {
@ -557,14 +557,14 @@ export class BaseMultiTornadoService extends BaseEventsService<MultiDepositsEven
} }
}, },
) )
.filter((e) => e) as (MultiDepositsEvents | MultiWithdrawalsEvents)[]; .filter((e) => e) as (MultiDepositEvents | MultiWithdrawalsEvents)[];
} }
async validateEvents<S>({ async validateEvents<S>({
events, events,
newEvents, newEvents,
}: BaseEvents<MultiDepositsEvents | MultiWithdrawalsEvents> & { }: BaseEvents<MultiDepositEvents | MultiWithdrawalsEvents> & {
newEvents: (MultiDepositsEvents | MultiWithdrawalsEvents)[]; newEvents: (MultiDepositEvents | MultiWithdrawalsEvents)[];
}) { }) {
const instancesWithNewEvents = [ const instancesWithNewEvents = [
...new Set( ...new Set(
@ -584,7 +584,7 @@ export class BaseMultiTornadoService extends BaseEventsService<MultiDepositsEven
for (const instance of instancesWithNewEvents) { for (const instance of instancesWithNewEvents) {
const depositEvents = events.filter( const depositEvents = events.filter(
({ instanceAddress, event }) => instanceAddress === instance && event === 'Deposit', ({ instanceAddress, event }) => instanceAddress === instance && event === 'Deposit',
) as MultiDepositsEvents[]; ) as MultiDepositEvents[];
const lastEvent = depositEvents[depositEvents.length - 1]; const lastEvent = depositEvents[depositEvents.length - 1];
@ -608,7 +608,7 @@ export class BaseMultiTornadoService extends BaseEventsService<MultiDepositsEven
(acc, curr) => { (acc, curr) => {
if (curr.instanceAddress === instanceAddress) { if (curr.instanceAddress === instanceAddress) {
if (curr.event === 'Deposit') { if (curr.event === 'Deposit') {
acc.depositEvents.push(curr as MultiDepositsEvents); acc.depositEvents.push(curr as MultiDepositEvents);
} else if (curr.event === 'Withdrawal') { } else if (curr.event === 'Withdrawal') {
acc.withdrawalEvents.push(curr as MultiWithdrawalsEvents); acc.withdrawalEvents.push(curr as MultiWithdrawalsEvents);
} }
@ -616,7 +616,7 @@ export class BaseMultiTornadoService extends BaseEventsService<MultiDepositsEven
return acc; return acc;
}, },
{} as { {} as {
depositEvents: MultiDepositsEvents[]; depositEvents: MultiDepositEvents[];
withdrawalEvents: MultiWithdrawalsEvents[]; withdrawalEvents: MultiWithdrawalsEvents[];
}, },
); );

View File

@ -118,7 +118,7 @@ export interface BaseMultiTornadoEvents {
instanceAddress: string; instanceAddress: string;
} }
export interface MultiDepositsEvents extends BaseMultiTornadoEvents, DepositsEvents {} export interface MultiDepositEvents extends BaseMultiTornadoEvents, DepositsEvents {}
export interface MultiWithdrawalsEvents extends BaseMultiTornadoEvents, WithdrawalsEvents { export interface MultiWithdrawalsEvents extends BaseMultiTornadoEvents, WithdrawalsEvents {
relayerAddress: string; relayerAddress: string;