import { EventEmitter } from 'node:events';
import { CID } from 'multiformats/cid';
import type { Blockstore } from 'interface-blockstore';
import type { AbortOptions, AwaitIterable } from 'interface-store';
import type { Logger } from 'pino';
export interface CARBlockstoreStats {
    blocksWritten: number;
    missingBlocks: Set<string>;
    totalSize: number;
    startTime: number;
    finalized: boolean;
}
export interface CARBlockstoreOptions {
    rootCID: CID;
    outputPath: string;
    logger?: Logger;
}
export declare class CARWritingBlockstore extends EventEmitter implements Blockstore {
    private readonly rootCID;
    private readonly outputPath;
    private readonly blockOffsets;
    private readonly stats;
    private readonly logger;
    private carWriter;
    private writeStream;
    private currentOffset;
    private finalized;
    private pipelinePromise;
    constructor(options: CARBlockstoreOptions);
    initialize(): Promise<void>;
    put(cid: CID, block: Uint8Array, _options?: AbortOptions): Promise<CID>;
    get(cid: CID, _options?: AbortOptions): Promise<Uint8Array>;
    has(cid: CID, _options?: AbortOptions): Promise<boolean>;
    delete(_cid: CID, _options?: AbortOptions): Promise<void>;
    putMany(source: AwaitIterable<{
        cid: CID;
        block: Uint8Array;
    }>, _options?: AbortOptions): AsyncIterable<CID>;
    getMany(source: AwaitIterable<CID>, _options?: AbortOptions): AsyncIterable<{
        cid: CID;
        block: Uint8Array;
    }>;
    deleteMany(_source: AwaitIterable<CID>, _options?: AbortOptions): AsyncIterable<CID>;
    getAll(_options?: AbortOptions): AsyncIterable<{
        cid: CID;
        block: Uint8Array;
    }>;
    /**
     * Finalize the CAR file and return statistics
     */
    finalize(): Promise<CARBlockstoreStats>;
    /**
     * Get current statistics
     */
    getStats(): CARBlockstoreStats;
    /**
     * Clean up resources (called on errors)
     */
    cleanup(): Promise<void>;
}
//# sourceMappingURL=car-blockstore.d.ts.map