import { AuthAdapter } from './adapters/auth';
import { DatabaseAdapter } from "./adapters/database";
export declare type BFastOptions = {
    useLocalIpfs?: boolean;
    port: string;
    masterKey: string;
    applicationId: string;
    projectId: string;
    logs?: boolean;
    databaseURI: string;
    taarifaToken?: string;
    rsaKeyPairInJson?: any;
    rsaPublicKeyInJson?: any;
    web3Token?: string;
    adapters?: {
        auth?: (config: BFastOptions) => AuthAdapter;
        database?: (config: BFastOptions) => DatabaseAdapter;
        s3Storage?: {
            accessKey: string;
            bucket: string;
            direct?: boolean;
            endPoint: string;
            prefix?: string;
            region?: string;
            useSSL?: boolean;
            port?: null;
            secretKey: string;
        } | undefined;
    };
};
export declare type BFastOptionsFn = (request: any) => BFastOptions;
export declare function isBFastOptions(options: BFastOptions, onReason?: (reason: string) => void): options is BFastOptions;
export declare const BFastOptionsSchema: {
    type: string;
    properties: {
        useLocalIpfs: {
            type: string;
        };
        port: {
            type: string;
            minLength: number;
        };
        masterKey: {
            type: string;
            minLength: number;
        };
        applicationId: {
            type: string;
            minLength: number;
        };
        projectId: {
            type: string;
            minLength: number;
        };
        logs: {
            type: string;
        };
        databaseURI: {
            type: string;
            minLength: number;
        };
        taarifaToken: {
            type: string;
            minLength: number;
        };
        web3Token: {
            type: string;
            minLength: number;
        };
        adapters: {
            type: string;
            properties: {
                auth: {};
                email: {};
                s3Storage: {
                    type: string;
                    properties: {
                        accessKey: {
                            type: string;
                            minLength: number;
                        };
                        bucket: {
                            type: string;
                            minLength: number;
                        };
                        direct: {
                            type: string;
                        };
                        endPoint: {
                            type: string;
                            minLength: number;
                        };
                        prefix: {
                            type: string;
                            minLength: number;
                        };
                        region: {
                            type: string;
                            minLength: number;
                        };
                        useSSL: {
                            type: string;
                        };
                        secretKey: {
                            type: string;
                            minLength: number;
                        };
                    };
                    required: string[];
                };
            };
        };
    };
    required: string[];
};
