import { ConnectS3 } from './connect-s3';
import { Connection, CarClockHead, Connectable } from './connection';
import type { AnyLink } from '@fireproof/encrypted-blockstore';
export type { AnyLink };
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: ({ blockstore }: Connectable, { upload, download }: {
        upload: string;
        download: string;
    }) => ConnectS3;
    raw: ({ blockstore }: Connectable, params: RawConnectionParams) => ConnectRaw;
};
export declare function validateDataParams(params: DownloadDataFnParams | UploadDataFnParams): void;
export declare function validateMetaParams(params: DownloadMetaFnParams | UploadMetaFnParams): void;
export { Connection, ConnectS3, CarClockHead, Connectable };

export * from './types';
