import { Address } from '@ethereumjs/util';
import type { BlockHeader } from '../index.ts';
export declare const CLIQUE_EXTRA_VANITY = 32;
export declare const CLIQUE_EXTRA_SEAL = 65;
export declare function requireClique(header: BlockHeader, name: string): void;
/**
 * PoA clique signature hash without the seal.
 */
export declare function cliqueSigHash(header: BlockHeader): Uint8Array<ArrayBufferLike>;
/**
 * Checks if the block header is an epoch transition
 * header (only clique PoA, throws otherwise)
 */
export declare function cliqueIsEpochTransition(header: BlockHeader): boolean;
/**
 * Returns extra vanity data
 * (only clique PoA, throws otherwise)
 */
export declare function cliqueExtraVanity(header: BlockHeader): Uint8Array;
/**
 * Returns extra seal data
 * (only clique PoA, throws otherwise)
 */
export declare function cliqueExtraSeal(header: BlockHeader): Uint8Array;
/**
 * Returns a list of signers
 * (only clique PoA, throws otherwise)
 *
 * This function throws if not called on an epoch
 * transition block and should therefore be used
 * in conjunction with {@link BlockHeader.cliqueIsEpochTransition}
 */
export declare function cliqueEpochTransitionSigners(header: BlockHeader): Address[];
/**
 * Returns the signer address
 */
export declare function cliqueSigner(header: BlockHeader): Address;
/**
 * Verifies the signature of the block (last 65 bytes of extraData field)
 * (only clique PoA, throws otherwise)
 *
 *  Method throws if signature is invalid
 */
export declare function cliqueVerifySignature(header: BlockHeader, signerList: Address[]): boolean;
/**
 * Generates the extraData from a sealed block header
 * @param header block header from which to retrieve extraData
 * @param cliqueSigner clique signer key used for creating sealed block
 * @returns clique seal (i.e. extradata) for the block
 */
export declare function generateCliqueBlockExtraData(header: BlockHeader, cliqueSigner: Uint8Array): Uint8Array;
//# sourceMappingURL=clique.d.ts.map