/// <reference types="node" />
import { BaseMethod } from '../base_method';
import { MethodContext, ImmutableMethodContext } from '../../state_machine';
import { MethodInitArgs, ValidatorAddress } from './types';
import { ValidatorKeys } from './stores/validator_keys';
import { ValidatorsParams } from './stores/validators_params';
import { NextValidatorsSetter, Validator } from '../../state_machine/types';
export type ValidatorArgs = {
    validatorAddress?: Buffer;
    blsKey?: Buffer;
    proofOfPossession?: Buffer;
    generatorKey?: Buffer;
};
export declare class ValidatorsMethod extends BaseMethod {
    private _blockTime;
    init(args: MethodInitArgs): void;
    registerValidatorKeys(methodContext: MethodContext, validatorAddress: Buffer, blsKey: Buffer, generatorKey: Buffer, proofOfPossession: Buffer): Promise<void>;
    registerValidatorWithoutBLSKey(methodContext: MethodContext, validatorAddress: Buffer, generatorKey: Buffer): Promise<boolean>;
    getAddressFromBLSKey(methodContext: MethodContext, blsKey: Buffer): Promise<ValidatorAddress>;
    getValidatorKeys(methodContext: ImmutableMethodContext, address: Buffer): Promise<ValidatorKeys>;
    setValidatorBLSKey(methodContext: MethodContext, validatorAddress: Buffer, blsKey: Buffer, proofOfPossession: Buffer): Promise<boolean>;
    setValidatorGeneratorKey(methodContext: MethodContext, validatorAddress: Buffer, generatorKey: Buffer): Promise<boolean>;
    isKeyRegistered(methodContext: ImmutableMethodContext, blsKey: Buffer): Promise<boolean>;
    getGeneratorsBetweenTimestamps(methodContext: ImmutableMethodContext, startTimestamp: number, endTimestamp: number): Promise<Record<string, number>>;
    getValidatorsParams(methodContext: ImmutableMethodContext): Promise<ValidatorsParams>;
    setValidatorsParams(methodContext: MethodContext, validatorSetter: NextValidatorsSetter, preCommitThreshold: bigint, certificateThreshold: bigint, validators: Pick<Validator, 'address' | 'bftWeight'>[]): Promise<void>;
    private _validateLengths;
}
