import { HttpClient } from 'aurelia-fetch-client';
import { Config } from './../config';
export declare namespace RemoteFileStorage {
    interface IServiceConfig {
        controller: string;
        secure?: boolean;
        canDownloadFiles?: boolean;
        ignoreUris?: Array<string>;
    }
    interface IService {
        rotate(fileName: string, clockwise: boolean): Promise<string>;
        duplicate(fileName: string, newFolderName: string): Promise<string>;
        exists(fileName: string): Promise<boolean>;
        download(fileName: string): Promise<void>;
        fileUrl(fileName: string): Promise<string>;
        previewToken?(): Promise<string>;
        uploadBase64?(fileName: string, dataBase64: string): Promise<string>;
        readonly controller: string;
        readonly secure: boolean;
        readonly canDownloadFiles: boolean;
    }
    abstract class Service implements IService {
        abstract rotate(fileName: string, clockwise: boolean): Promise<string>;
        abstract duplicate(fileName: string, newFolderName: string): Promise<string>;
        abstract exists(fileName: string): Promise<boolean>;
        abstract download(fileName: string): Promise<void>;
        abstract fileUrl(fileName: string): Promise<string>;
        abstract previewToken?(): Promise<string>;
        abstract uploadBase64?(fileName: string, dataBase64: string): Promise<string>;
        controller: string;
        secure: boolean;
        canDownloadFiles: boolean;
    }
    class ServiceValidator {
        static implementsInterface(service: IService): boolean;
    }
    class DWService extends Service {
        httpClient: HttpClient;
        config: Config;
        controller: string;
        canDownloadFiles: boolean;
        ignoreUris: Array<string>;
        constructor(httpClient: HttpClient, config: Config);
        download(fileName: string): Promise<void>;
        fileUrl(fileName: string): Promise<string>;
        previewToken(): Promise<string>;
        rotate(fileName: string, clockwise?: boolean): Promise<string>;
        duplicate(fileName: string, newFolderName: string): Promise<string>;
        exists(fileName: string): Promise<boolean>;
        uploadBase64(fileName: string, dataBase64: string): Promise<string>;
        get remoteFileControllerUri(): string;
        get remoteFileExistsUri(): string;
        get remoteFileRotateUri(): string;
        get remoteFileDuplicateUri(): string;
        get remoteFileReadUri(): string;
        get remoteFileGetTokenUri(): string;
        get remoteFilePreviewUri(): string;
        get remoteFileUploadBase64(): string;
        protected getRemoteActionUriByName(name: string): string;
    }
}
