import { PrefixedHexString } from 'ethereumjs-util'; import { Address, LoggerInterface } from '@opengsn/common'; import { ServerAction, StoredTransaction } from './StoredTransaction'; export declare const TXSTORE_FILENAME = "txstore.db"; export declare class TxStoreManager { private readonly txstore; private readonly logger; constructor({ workdir, inMemory, autoCompactionInterval, recentActionAvoidRepeatDistanceBlocks }: { workdir?: string | undefined; inMemory?: boolean | undefined; autoCompactionInterval?: number | undefined; recentActionAvoidRepeatDistanceBlocks?: number | undefined; }, logger: LoggerInterface); putTx(tx: StoredTransaction, updateExisting?: boolean): Promise; /** * Only for testing */ getTxByNonce(signer: PrefixedHexString, nonce: number): Promise; /** * Only for testing */ getTxById(txId: string): Promise; getTxsInNonceRange(signer: PrefixedHexString, fromNonce: number, toNonce?: number): Promise; /** * NOTE: the transaction must satisfy *both* criteria to be removed */ removeArchivedTransactions(upToMinedBlockNumber: number, upToMinedTimestamp: number): Promise; clearAll(): Promise; getAll(): Promise; /** * The server is originally written to fully rely on blockchain events to determine its state. * However, on real networks the server's actions propagate slowly and server considers its state did not change. * To mitigate this, server should not repeat its actions for at least {@link recencyBlockCount} blocks. */ isActionPendingOrRecentlyMined(serverAction: ServerAction, currentBlock: number, recencyBlockCount: number, destination?: Address | undefined): Promise; }