import { Server } from "../../server"; import { GlobalFifoPromise } from "./GlobalFifoPromise"; import { BlockchainContext } from "../lib/computation/BlockchainContext"; import { ConfDTO } from "../lib/dto/ConfDTO"; import { FileDAL } from "../lib/dal/fileDAL"; import { BlockDTO } from "../lib/dto/BlockDTO"; import { DBBlock } from "../lib/db/DBBlock"; import { HttpIdentityRequirement } from "../modules/bma/lib/dtos"; import { FIFOService } from "./FIFOService"; import { SwitcherDao } from "../lib/blockchain/Switcher"; export interface IdentityForRequirements { hash: string; member: boolean; wasMember: boolean; pubkey: string; uid: string; buid: string; sig: string; revocation_sig: string | null; revoked: boolean; revoked_on: number; } export interface ValidCert { from: string; to: string; sig: string; timestamp: number; expiresIn: number; } export declare class BlockchainService extends FIFOService { private server; mainContext: BlockchainContext; conf: ConfDTO; dal: FileDAL; logger: any; selfPubkey: string; switcherDao: SwitcherDao; invalidForks: string[]; constructor(server: Server, fifoPromiseHandler: GlobalFifoPromise); /** * Mandatory with stream.Readable * @private */ _read(): void; getContext(): BlockchainContext; setConfDAL(newConf: ConfDTO, newDAL: FileDAL, newKeyPair: any): void; current(): Promise; promoted(number: number): Promise; checkBlock(block: any, withPoWAndSignature?: boolean, ignoreIssuer?: boolean): Promise; /** * Return the potential HEADs we could fork to (necessarily above us, since we don't fork on older branches). * @returns {Promise} */ branches(): Promise; submitBlock(blockToAdd: any, noResolution?: boolean): Promise; blockResolution(filterFunc?: (b: DBBlock) => boolean): Promise; forkResolution(): Promise; revertCurrentBlock(): Promise; revertCurrentHead(): Promise; applyNextAvailableFork(): Promise; requirementsOfIdentities(identities: IdentityForRequirements[], computeDistance?: boolean): Promise; requirementsOfIdentity(idty: IdentityForRequirements, current: DBBlock | null, computeDistance?: boolean): Promise; getValidCerts(newcomer: string, newCerts: any, currentTime: number): Promise; getCountOfSelfMadePoW(): Promise; saveParametersForRootBlock(block: BlockDTO): Promise; blocksBetween(from: number, count: number): Promise; trimIndexes(): Promise; }