import { IChallengeSolution, IChallengeSubmission, IChallengeVerification, RawChallenge, RawChallengeSubmission, RawChallengeVerification } from './interfaces/IChallengeSolution.js';
import { Address } from '../keypair/Address.js';
export declare class ChallengeVerification implements IChallengeVerification {
    readonly epochHash: Buffer;
    readonly epochRoot: Buffer;
    readonly targetHash: Buffer;
    readonly targetChecksum: Buffer;
    readonly startBlock: bigint;
    readonly endBlock: bigint;
    readonly proofs: readonly Buffer[];
    constructor(data: RawChallengeVerification);
}
export declare class ChallengeSubmission implements IChallengeSubmission {
    readonly epochNumber: bigint;
    readonly publicKey: Address;
    readonly solution: Buffer;
    readonly graffiti: Buffer | undefined;
    readonly signature: Buffer;
    constructor(data: RawChallengeSubmission, epochNumber: bigint);
    verifySignature(): boolean;
}
export declare class ChallengeSolution implements IChallengeSolution {
    readonly epochNumber: bigint;
    readonly publicKey: Address;
    readonly solution: Buffer;
    readonly salt: Buffer;
    readonly graffiti: Buffer;
    readonly difficulty: number;
    readonly verification: ChallengeVerification;
    private readonly submission?;
    constructor(data: RawChallenge);
    static validateRaw(data: RawChallenge): boolean;
    verifySubmissionSignature(): boolean;
    getSubmission(): ChallengeSubmission | undefined;
    verify(): boolean;
    toBuffer(): Buffer;
    toHex(): string;
    toRaw(): RawChallenge;
    calculateSolution(): Buffer;
    checkDifficulty(minDifficulty: number): {
        valid: boolean;
        difficulty: number;
    };
    getMiningTargetBlock(): bigint | null;
}
