import type { MerkleProofNode } from '../types/passport.js';
export interface ReceiptBatch {
    batchId: string;
    merkleRoot: string;
    receiptCount: number;
    receiptHashes: string[];
    epoch: number;
    previousBatchId: string | null;
    previousMerkleRoot: string | null;
    committedAt: string;
    committedBy: string;
    signature: string;
}
export interface ReceiptInclusionProof {
    batchId: string;
    merkleRoot: string;
    receiptHash: string;
    proof: MerkleProofNode[];
    leafIndex: number;
    verified: boolean;
}
export interface ReceiptLedger {
    batches: ReceiptBatch[];
    pendingReceipts: string[];
}
export interface BatchVerification {
    valid: boolean;
    errors: string[];
    signatureValid: boolean;
    rootValid: boolean;
    chainValid: boolean;
}
export interface BatchChainVerification {
    valid: boolean;
    errors: string[];
    batchCount: number;
    totalReceipts: number;
}
export declare function createReceiptLedger(): ReceiptLedger;
export declare function addReceipt(ledger: ReceiptLedger, receiptHash: string): void;
export declare function commitBatch(_opts: {
    ledger: ReceiptLedger;
    committerPrivateKey: string;
    committerPublicKey: string;
}): ReceiptBatch;
export declare function proveInclusion(batch: ReceiptBatch, receiptHash: string): ReceiptInclusionProof;
export declare function verifyInclusion(proof: ReceiptInclusionProof): boolean;
export declare function verifyBatch(batch: ReceiptBatch, previousBatch?: ReceiptBatch | null): BatchVerification;
export declare function verifyBatchChain(batches: ReceiptBatch[]): BatchChainVerification;
//# sourceMappingURL=receipt-ledger.d.ts.map