import { RunPollingJob } from "./actions/RunPollingJob"; import { EvmBlock, EvmLog, EvmLogFilter, EvmTag, Handler, JobDefinition, ReceiptTransaction, solana, } from "./entities"; import { ConfirmedSignatureInfo } from "./entities/solana"; import { Fallible, SolanaFailure } from "./errors"; export interface EvmBlockRepository { getBlockHeight(chain: string, finality: string): Promise; getBlocks(chain: string, blockNumbers: Set): Promise>; getFilteredLogs(chain: string, filter: EvmLogFilter): Promise; getTransactionReceipt( chain: string, hashNumbers: Set ): Promise>; getBlock( chain: string, blockNumberOrTag: EvmTag | bigint, isTransactionsPresent: boolean ): Promise; } export interface SolanaSlotRepository { getLatestSlot(commitment: string): Promise; getBlock(slot: number, finality?: string): Promise>; getSignaturesForAddress( address: string, beforeSig: string, afterSig: string, limit: number, finality?: string ): Promise; getTransactions(sigs: ConfirmedSignatureInfo[], finality?: string): Promise; } export interface MetadataRepository { get(id: string): Promise; save(id: string, metadata: Metadata): Promise; } export interface StatRepository { count(id: string, labels: Record, increase?: number): void; measure(id: string, value: bigint, labels: Record): void; report: () => Promise; } export interface JobRepository { getJobDefinitions(): Promise; getSource(jobDef: JobDefinition): RunPollingJob; getHandlers(jobDef: JobDefinition): Promise; }