import type { UploadMetaFnParams, UploadDataFnParams, DownloadMetaFnParams, DownloadDataFnParams } from './types';
import type { AnyLink, Loader } from '@fireproof/core';
import { MemoryBlockstore } from '@alanshaw/pail/block';
import type { BlockView, Link } from 'multiformats';
import { EventView } from '@alanshaw/pail/clock';
export type CarClockHead = Link<EventView<{
    dbMeta: Uint8Array;
}>, number, number, 1>[];
export declare abstract class Connection {
    ready: Promise<any>;
    loaded: Promise<any>;
    abstract metaUpload(bytes: Uint8Array, params: UploadMetaFnParams): Promise<Uint8Array[] | null>;
    abstract dataUpload(bytes: Uint8Array, params: UploadDataFnParams, opts?: {
        public?: boolean;
    }): Promise<void | AnyLink>;
    abstract metaDownload(params: DownloadMetaFnParams): Promise<Uint8Array[] | null>;
    abstract dataDownload(params: DownloadDataFnParams): Promise<Uint8Array | null>;
    eventBlocks: MemoryBlockstore;
    parents: CarClockHead;
    constructor();
    loader?: Loader | null;
    refresh(): Promise<void>;
    connect(loader: Loader): void;
    connectMeta(loader: Loader): void;
    connectStorage(loader: Loader): void;
    createEventBlock(bytes: Uint8Array): Promise<BlockView<EventView<{
        dbMeta: Uint8Array;
    }>, number, number, 1>>;
}
