import { AdapterConfig, IAdapter, Options, Provider, StreamOptions } from "./types/general";
import { FileBufferParams, FilePathParams, FileStreamParams } from "./types/add_file_params";
import { ResultObject, ResultObjectBoolean, ResultObjectBuckets, ResultObjectFiles, ResultObjectNumber, ResultObjectObject, ResultObjectStream } from "./types/result";
export declare abstract class AbstractAdapter implements IAdapter {
    protected _provider: Provider;
    protected _config: AdapterConfig;
    protected _client: any;
    protected _configError: null | string;
    protected _bucketName: null | string;
    constructor(config: string | AdapterConfig);
    get provider(): Provider;
    getProvider(): Provider;
    get config(): AdapterConfig;
    getConfig(): AdapterConfig;
    get configError(): null | string;
    getConfigError(): null | string;
    get serviceClient(): any;
    getServiceClient(): any;
    setSelectedBucket(bucketName: null | string): void;
    getSelectedBucket(): null | string;
    set selectedBucket(bucketName: null | string);
    get selectedBucket(): null | string;
    set bucketName(bucketName: null | string);
    get bucketName(): null | string;
    private getFileAndBucketAndOptions;
    private checkBucket;
    private checkFile;
    protected abstract _listBuckets(): Promise<ResultObjectBuckets>;
    protected abstract _createBucket(name: string, options: Options): Promise<ResultObject>;
    protected abstract _clearBucket(name: string): Promise<ResultObject>;
    protected abstract _deleteBucket(name: string): Promise<ResultObject>;
    protected abstract _bucketExists(name: string): Promise<ResultObjectBoolean>;
    protected abstract _bucketIsPublic(name: string): Promise<ResultObjectBoolean>;
    protected abstract _listFiles(bucketName: string, numFiles: number): Promise<ResultObjectFiles>;
    protected abstract _sizeOf(bucketName: string, fileName: string): Promise<ResultObjectNumber>;
    protected abstract _addFile(params: FilePathParams | FileBufferParams | FileStreamParams): Promise<ResultObject>;
    protected abstract _fileExists(bucketName: string, fileName: string): Promise<ResultObjectBoolean>;
    protected abstract _getFileAsStream(bucketName: string, fileName: string, options: StreamOptions): Promise<ResultObjectStream>;
    protected abstract _getPublicURL(bucketName: string, fileName: string, options: Options): Promise<ResultObject>;
    protected abstract _getSignedURL(bucketName: string, fileName: string, options: Options): Promise<ResultObject>;
    protected abstract _removeFile(bucketName: string, fileName: string): Promise<ResultObject>;
    protected abstract _getPresignedUploadURL(bucketName: string, fileName: string, options: Options): Promise<ResultObjectObject>;
    listBuckets(): Promise<ResultObjectBuckets>;
    createBucket(...args: [bucketName?: string, options?: Options] | [options?: Options]): Promise<ResultObject>;
    clearBucket(name?: string): Promise<ResultObject>;
    deleteBucket(name?: string): Promise<ResultObject>;
    bucketExists(name?: string): Promise<ResultObjectBoolean>;
    bucketIsPublic(name?: string): Promise<ResultObjectBoolean>;
    listFiles(...args: [bucketName?: string, numFiles?: number] | [numFiles?: number] | [bucketName?: string]): Promise<ResultObjectFiles>;
    addFileFromPath(params: FilePathParams): Promise<ResultObject>;
    addFileFromBuffer(params: FileBufferParams): Promise<ResultObject>;
    addFileFromStream(params: FileStreamParams): Promise<ResultObject>;
    addFile(params: FilePathParams | FileBufferParams | FileStreamParams): Promise<ResultObject>;
    getFileAsStream(...args: [bucketName: string, fileName: string, options?: StreamOptions] | [fileName: string, options?: StreamOptions]): Promise<ResultObjectStream>;
    getPublicURL(...args: [bucketName: string, fileName: string, options?: Options] | [fileName: string, options?: Options]): Promise<ResultObject>;
    getSignedURL(...args: [bucketName: string, fileName: string, options?: Options] | [fileName: string, options?: Options]): Promise<ResultObject>;
    sizeOf(...args: [bucketName: string, fileName: string] | [fileName: string]): Promise<ResultObjectNumber>;
    fileExists(...args: [bucketName: string, fileName: string] | [fileName: string]): Promise<ResultObjectBoolean>;
    removeFile(...args: [bucketName: string, fileName: string] | [fileName: string]): Promise<ResultObject>;
    getPresignedUploadURL(...args: [bucketName: string, fileName: string, options?: Options] | [fileName: string, options?: Options]): Promise<ResultObjectObject>;
}
