import { ConnectS3 } from './connect-s3';
import { ConnectIPFS } from './connect-ipfs';
import { Connection } from './connection';
import type { Loader, Database, AnyLink } from '@fireproof/core';
import { UploadDataFnParams, UploadMetaFnParams, DownloadDataFnParams, DownloadMetaFnParams } from './types';
type RawConnectionParams = {
    metaUpload: (bytes: Uint8Array, params: UploadMetaFnParams) => Promise<Uint8Array[] | null>;
    dataUpload: (bytes: Uint8Array, params: UploadDataFnParams) => Promise<void | AnyLink>;
    metaDownload: (params: DownloadMetaFnParams) => Promise<Uint8Array[] | null>;
    dataDownload: (params: DownloadDataFnParams) => Promise<Uint8Array | null>;
};
declare class ConnectRaw extends Connection {
    constructor({ metaUpload, metaDownload, dataUpload, dataDownload }: RawConnectionParams);
}
export declare const connect: {
    s3: ({ _crdt: { blocks: { loader } } }: {
        _crdt: {
            blocks: {
                loader: Loader;
            };
        };
    }, { upload, download }: {
        upload: string;
        download: string;
    }) => ConnectS3;
    raw: ({ _crdt: { blocks: { loader } } }: {
        _crdt: {
            blocks: {
                loader: Loader;
            };
        };
    }, params: RawConnectionParams) => ConnectRaw;
    ipfs: (db: Database, schemaName?: string) => ConnectIPFS;
    hybrid: (db: Database, schemaName?: string) => ConnectIPFS;
};
export declare function validateDataParams(params: DownloadDataFnParams | UploadDataFnParams): void;
export declare function validateMetaParams(params: DownloadMetaFnParams | UploadMetaFnParams): void;
export {};

export * from './types';
