import { Link, UnknownLink } from 'multiformats/link' import { Writer } from './writer/api.js' import { Reader, ReadResult } from './reader/api.js' export type CARLink = Link export type MultihashCodec = number export type DigestLength = number export type Await = T | PromiseLike export interface IndexItem { digest: Uint8Array offset: number } export interface ReaderState { bytesReader: BytesReaderState } export interface BytesReaderState { pos: number have: number offset: number currentChunk: Uint8Array } export interface CloseOptions { releaseLock?: boolean closeWriter?: boolean } export interface IndexWriter { writer: Writer state: S add (cid: UnknownLink, offset: number): Await> close (options?: CloseOptions): Await } export interface IndexReader { reader: Reader state: S read (): Await> cancel (reason?: any): Await }