import { Cid } from '@atproto/lex-data';
import { BlockMap } from './block-map.js';
import { CarBlock } from './types.js';
export declare function writeCarStream(root: Cid | null, blocks: AsyncIterable<CarBlock>): AsyncIterable<Uint8Array>;
export declare function blocksToCarFile(root: Cid | null, blocks: BlockMap): Promise<Uint8Array>;
export declare const blocksToCarStream: (root: Cid | null, blocks: BlockMap) => AsyncIterable<Uint8Array>;
export type ReadCarOptions = {
    /**
     * When true, does not verify CID-to-content mapping within CAR.
     */
    skipCidVerification?: boolean;
};
export declare const readCar: (bytes: Uint8Array, opts?: ReadCarOptions) => Promise<{
    roots: Cid[];
    blocks: BlockMap;
}>;
export declare const readCarWithRoot: (bytes: Uint8Array, opts?: ReadCarOptions) => Promise<{
    root: Cid;
    blocks: BlockMap;
}>;
export type CarBlockIterable = AsyncGenerator<CarBlock, void, unknown> & {
    dump: () => Promise<void>;
};
export declare const readCarStream: (car: Iterable<Uint8Array> | AsyncIterable<Uint8Array>, opts?: ReadCarOptions) => Promise<{
    roots: Cid[];
    blocks: CarBlockIterable;
}>;
export declare const readCarReader: (reader: BytesReader, opts?: ReadCarOptions) => Promise<{
    roots: Cid[];
    blocks: CarBlockIterable;
}>;
export declare function verifyIncomingCarBlocks(car: AsyncIterable<CarBlock>): AsyncGenerator<CarBlock, void, unknown>;
interface BytesReader {
    isDone: boolean;
    read(bytesToRead: number): Promise<Uint8Array>;
    close(): Promise<void>;
}
export {};
//# sourceMappingURL=car.d.ts.map