import { models } from "@mlcc/crypto"; import { EventEmitter, Logger } from "../index"; import { IDelegatesBusinessRepository, IWalletsBusinessRepository } from "./business-repository"; import { IDatabaseConnection } from "./database-connection"; import { IWalletManager } from "./wallet-manager"; export interface IDatabaseService { walletManager: IWalletManager; wallets: IWalletsBusinessRepository; delegates: IDelegatesBusinessRepository; connection: IDatabaseConnection; logger: Logger.ILogger; emitter: EventEmitter.EventEmitter; config: any; options: any; cache: Map; restoredDatabaseIntegrity: boolean; verifyBlockchain(): Promise<{ valid: boolean; errors: any[]; }>; getActiveDelegates(height: number, delegates?: any[]): Promise; buildWallets(height: number): Promise; saveWallets(force: boolean): Promise; saveBlock(block: models.Block): Promise; enqueueSaveBlock(block: models.Block): void; enqueueDeleteBlock(block: models.Block): void; enqueueDeleteRound(height: number): void; commitQueuedQueries(): Promise; deleteBlock(block: models.Block): Promise; getBlock(id: string): Promise; getLastBlock(): Promise; getBlocks(offset: number, limit: number): Promise; getTopBlocks(count: any): Promise; getRecentBlockIds(): Promise; saveRound(activeDelegates: object[]): Promise; deleteRound(round: any): Promise; getTransaction(id: string): Promise; getForgedTransactionsIds(ids: string[]): Promise; init(): Promise; loadBlocksFromCurrentRound(): Promise; loadTransactionsForBlocks(blocks: any): Promise; updateDelegateStats(delegates: any[]): void; applyRound(height: number): Promise; revertRound(height: number): Promise; applyBlock(block: models.Block): Promise; revertBlock(block: models.Block): Promise; verifyTransaction(transaction: models.Transaction): Promise; getBlocksForRound(round?: number): Promise; getCommonBlocks(ids: string[]): Promise; }