import { Block } from './Block'; import { Blockchain, VerifyTransactionResult } from './Blockchain'; import { Endpoint } from './net'; import { ConsensusPayload } from './payload'; import { Transaction } from './transaction'; export interface Consensus { readonly runConsensusNow: () => Promise; readonly fastForwardOffset: (seconds: number) => Promise; readonly fastForwardToTime: (seconds: number) => Promise; readonly nowSeconds: () => number; readonly pause: () => Promise; readonly reset: () => Promise; readonly resume: () => Promise; } export interface RelayTransactionResult { readonly verifyResult?: VerifyTransactionResult; } export interface Node { readonly blockchain: Blockchain; readonly relayTransaction: (transaction: Transaction, options?: { readonly throwVerifyError?: boolean; readonly forceAdd?: boolean; }) => Promise; readonly relayConsensusPayload: (payload: ConsensusPayload) => void; readonly relayBlock: (block: Block) => Promise; readonly connectedPeers: readonly Endpoint[]; readonly memPool: { readonly [hash: string]: Transaction; }; readonly syncMemPool: () => void; readonly consensus: Consensus | undefined; readonly reset: () => Promise; }