///
import { MethodContext } from '../../state_machine';
export interface BFTHeader {
id: Buffer;
previousBlockID: Buffer;
generatorAddress: Buffer;
timestamp: number;
height: number;
maxHeightPrevoted: number;
maxHeightGenerated: number;
receivedAt?: number;
}
export interface Validator {
address: Buffer;
bftWeight: bigint;
blsKey: Buffer;
}
export interface ActiveValidator {
bftWeight: bigint;
blsKey: Buffer;
}
export interface PkSigPair {
publicKey: Buffer;
signature: Buffer;
}
export interface AggregateCommit {
readonly height: number;
readonly aggregationBits: Buffer;
readonly certificateSignature: Buffer;
}
export interface CommitPool {
verifyAggregateCommit: (methodContext: MethodContext, aggregateCommit: AggregateCommit) => Promise;
getAggregateCommit: (methodContext: MethodContext) => Promise;
}
export interface ValidatorUpdate {
preCommitThreshold: bigint;
certificateThreshold: bigint;
nextValidators: (Validator & {
generatorKey: Buffer;
})[];
}