import { BlockStore } from './block-store';
import { LinkCodec, ValueCodec } from './codecs';
import { Block, Link, RootIndex, Version } from './types';
interface VersionStoreDiff {
    last: Version | undefined;
    common: Version[];
    missing: Version[];
}
interface VersionStore {
    id: () => string;
    versionStoreRoot: () => Link;
    currentRoot: () => Link;
    rootSet: ({ root, index, parent, mergeParent, }: {
        root: Link;
        index?: RootIndex;
        parent?: Link;
        mergeParent?: Link;
    }) => Promise<Link>;
    versionSet: ({ version, index, }: {
        version: Version;
        index?: RootIndex;
    }) => Promise<Link | undefined>;
    rootGet: () => Promise<{
        root: Link;
        index: RootIndex;
    } | undefined>;
    versionGet: () => Promise<{
        version: Version;
        index: RootIndex;
    } | undefined>;
    checkout: (root: Link) => void;
    log: () => Version[];
    blocksExtract: () => Promise<{
        root: any;
        index: {
            indexStruct: {
                startOffsets: Map<number, any>;
                indexSize: number;
                byteArraySize: number;
            };
            indexBuffer: Uint8Array;
        };
        blocks: {
            cid: any;
            bytes: Uint8Array;
        }[];
    }>;
    diff: (other: VersionStore) => VersionStoreDiff;
    packMissingBlocks: (other: VersionStore, otherBlockStore: BlockStore) => Promise<Block>;
    mergeVersions: (other: VersionStore) => Promise<{
        root: Link;
        index: RootIndex;
        blocks: Block[];
    }>;
}
declare const versionStoreFactory: ({ readOnly, storeRoot, versionRoot, chunk, linkCodec, valueCodec, blockStore, }: {
    readOnly?: boolean;
    storeRoot?: Link;
    versionRoot?: Link;
    chunk: (buffer: Uint8Array) => Uint32Array;
    linkCodec: LinkCodec;
    valueCodec: ValueCodec;
    blockStore: BlockStore;
}) => Promise<VersionStore>;
export { versionStoreFactory, VersionStore, VersionStoreDiff };
//# sourceMappingURL=version-store.d.ts.map