/// <reference types="node" />
import { Hash } from 'crypto';
import * as XXHash from 'xxhash';
import { XXHash64 } from 'xxhash';
export declare type ChecksumType = 'crc32' | 'sha1' | 'sha256' | 'xxhash32' | 'xxhash64';
export interface Block {
    offset: number;
    length: number;
}
export interface BlocksWithChecksum {
    checksumType?: ChecksumType;
    checksum?: string;
    blocks: Block[];
}
export interface SparseStreamChunk {
    buffer: Buffer;
    position: number;
}
export interface SparseReadable extends NodeJS.ReadableStream {
    blocks: BlocksWithChecksum[];
    push(chunk: SparseStreamChunk): boolean;
}
declare class CRC32Hasher {
    private value;
    update(data: Buffer): void;
    digest(_encoding: 'hex'): string;
}
declare type AnyHasher = CRC32Hasher | Hash | XXHash | XXHash64;
export interface SparseReaderState {
    block: BlocksWithChecksum;
    subBlock: Block;
    hasher?: AnyHasher;
}
export declare function createSparseReaderStateIterator(blocks: BlocksWithChecksum[], verify: boolean, generateChecksums: boolean): Iterator<SparseReaderState>;
export declare function blocksLength(blocks: BlocksWithChecksum[]): number;
export {};
