///
import { Client, FileInfo } from 'basic-ftp';
import { Writable, Readable } from 'stream';
import { Strategy } from './strategy';
import { IFile, IFtpConfig, ITransferOptions, IFtpOptions, ITransferInfo } from '../interfaces';
export declare interface FtpStrategy {
config: IFtpConfig;
options: IFtpOptions;
}
export declare class FtpStrategy extends Strategy {
protected client: Client;
get connected(): boolean;
protected get isFTPS(): boolean;
protected get socket(): import("net").Socket | import("tls").TLSSocket;
connect: () => Promise;
disconnect: () => Promise;
download: (dest: Writable, info: ITransferInfo, options?: ITransferOptions) => Promise;
upload: (source: Readable, info: ITransferInfo, options?: ITransferOptions) => Promise;
list: (path: any) => Promise;
size: (path: any) => Promise;
exists: (path: string) => Promise;
move: (source: any, dest: any) => Promise;
removeFile: (path: any) => Promise;
removeEmptyFolder: (path: any) => Promise;
removeFolder: (path: any) => Promise;
createFolder: (path: any) => Promise;
createEmptyFile: (path: any) => Promise;
pwd: () => Promise;
send: (command: any) => Promise;
protected formatFile: (file: FileInfo) => IFile;
protected handle: (fn: Function) => Promise;
protected handleTransfer: (fn: Function, info: ITransferInfo, options: ITransferOptions) => Promise;
}