import { Link, Block, IndexedValue } from './types';
interface SearchIndex {
    create: (values: IndexedValue[], blockPut: (block: Block) => Promise<void>, blockGet: (cid: any) => Promise<Uint8Array>) => Promise<Link>;
    search: (link: Link, blockGet: (cid: any) => Promise<Uint8Array>, value: any) => Promise<IndexedValue>;
}
interface LinkCodec {
    encode: (blockBytes: Uint8Array) => Promise<Link>;
    decode: (linkBytes: Uint8Array) => Link;
    parseString: (encoded: string) => Link;
    encodeString: (link: Link) => string;
}
interface BlockCodec {
    encode: (json: any, blockPut: (block: Block) => Promise<void>) => Promise<Link>;
    decode: (link: Link, blockGet: (cid: any) => Promise<Uint8Array>) => Promise<any>;
}
interface ValueCodec {
    encode: (value: any) => Uint8Array;
    decode: (valueBytes: Uint8Array) => any;
}
declare const valueCodecFactory: () => ValueCodec;
declare const linkCodecFactory: () => LinkCodec;
declare const blockCodecFactory: () => BlockCodec;
declare const multiBlockCodecFactory: (chunk: (data: Uint8Array) => Uint32Array) => BlockCodec;
export { LinkCodec, BlockCodec, ValueCodec, SearchIndex, valueCodecFactory, linkCodecFactory, blockCodecFactory, multiBlockCodecFactory, };
//# sourceMappingURL=codecs.d.ts.map