import { ToString } from '@ipld/dag-json';
import { AnyBlock, AnyLink, DbMeta } from './types';
export declare const STORAGE_VERSION: string;
declare abstract class VersionedStore {
    VERSION: string;
}
export declare abstract class HeaderStore extends VersionedStore {
    tag: string;
    name: string;
    constructor(name: string);
    makeHeader({ car, key }: DbMeta): ToString<DbMeta>;
    parseHeader(headerData: ToString<DbMeta>): DbMeta;
    abstract load(branch?: string): Promise<DbMeta | null>;
    abstract save(dbMeta: DbMeta, branch?: string): Promise<void>;
}
export declare abstract class CarStore extends VersionedStore {
    tag: string;
    name: string;
    constructor(name: string);
    abstract load(cid: AnyLink): Promise<AnyBlock>;
    abstract save(car: AnyBlock): Promise<void>;
    abstract remove(cid: AnyLink): Promise<void>;
}
export {};
