82 lines
2.6 KiB
TypeScript
82 lines
2.6 KiB
TypeScript
import {
|
|
Checkpoint,
|
|
SuiEventFilter,
|
|
TransactionFilter as SuiTransactionFilter,
|
|
} from "@mysten/sui.js/client";
|
|
import { RunPollingJob } from "./actions/RunPollingJob";
|
|
import {
|
|
EvmBlock,
|
|
EvmLog,
|
|
EvmLogFilter,
|
|
EvmTag,
|
|
Handler,
|
|
JobDefinition,
|
|
Range,
|
|
ReceiptTransaction,
|
|
solana,
|
|
} from "./entities";
|
|
import { ConfirmedSignatureInfo } from "./entities/solana";
|
|
import { Fallible, SolanaFailure } from "./errors";
|
|
import { SuiTransactionBlockReceipt } from "./entities/sui";
|
|
|
|
export interface EvmBlockRepository {
|
|
getBlockHeight(chain: string, finality: string): Promise<bigint>;
|
|
getBlocks(chain: string, blockNumbers: Set<bigint>): Promise<Record<string, EvmBlock>>;
|
|
getFilteredLogs(chain: string, filter: EvmLogFilter): Promise<EvmLog[]>;
|
|
getTransactionReceipt(
|
|
chain: string,
|
|
hashNumbers: Set<string>
|
|
): Promise<Record<string, ReceiptTransaction>>;
|
|
getBlock(
|
|
chain: string,
|
|
blockNumberOrTag: EvmTag | bigint,
|
|
isTransactionsPresent: boolean
|
|
): Promise<EvmBlock>;
|
|
}
|
|
|
|
export interface SolanaSlotRepository {
|
|
getLatestSlot(commitment: string): Promise<number>;
|
|
getBlock(slot: number, finality?: string): Promise<Fallible<solana.Block, SolanaFailure>>;
|
|
getSignaturesForAddress(
|
|
address: string,
|
|
beforeSig: string,
|
|
afterSig: string,
|
|
limit: number,
|
|
finality?: string
|
|
): Promise<ConfirmedSignatureInfo[]>;
|
|
getTransactions(sigs: ConfirmedSignatureInfo[], finality?: string): Promise<solana.Transaction[]>;
|
|
}
|
|
|
|
export interface SuiRepository {
|
|
getLastCheckpointNumber(): Promise<bigint>;
|
|
getCheckpoint(sequence: string | bigint | number): Promise<Checkpoint>;
|
|
getLastCheckpoint(): Promise<Checkpoint>;
|
|
getCheckpoints(range: Range): Promise<Checkpoint[]>;
|
|
getTransactionBlockReceipts(digests: string[]): Promise<SuiTransactionBlockReceipt[]>;
|
|
queryTransactions(
|
|
filter?: SuiTransactionFilter,
|
|
cursor?: string
|
|
): Promise<SuiTransactionBlockReceipt[]>;
|
|
queryTransactionsByEvent(
|
|
filter: SuiEventFilter,
|
|
cursor?: string
|
|
): Promise<SuiTransactionBlockReceipt[]>;
|
|
}
|
|
|
|
export interface MetadataRepository<Metadata> {
|
|
get(id: string): Promise<Metadata | undefined>;
|
|
save(id: string, metadata: Metadata): Promise<void>;
|
|
}
|
|
|
|
export interface StatRepository {
|
|
count(id: string, labels: Record<string, any>, increase?: number): void;
|
|
measure(id: string, value: bigint, labels: Record<string, any>): void;
|
|
report: () => Promise<string>;
|
|
}
|
|
|
|
export interface JobRepository {
|
|
getJobDefinitions(): Promise<JobDefinition[]>;
|
|
getSource(jobDef: JobDefinition): RunPollingJob;
|
|
getHandlers(jobDef: JobDefinition): Promise<Handler[]>;
|
|
}
|