///
import { Writable, Readable } from 'stream';
import { Socket } from 'net';
import { Client, SFTPWrapper } from 'ssh2';
import { Stats, FileEntry } from 'ssh2-streams';
import { FileInfo } from 'basic-ftp';
import { Strategy } from './strategy';
import { IFile, ITransferOptions, IFtpConfig, ISFtpOptions, ITransferInfo } from '../interfaces';
export declare interface SftpStrategy {
config: IFtpConfig;
options: ISFtpOptions;
}
export declare class SftpStrategy extends Strategy {
protected client: Client;
protected wrapper: SFTPWrapper;
connected: boolean;
protected get socket(): Socket;
protected getWrapper(): SFTPWrapper;
connect: () => Promise;
protected onKeyboardInteractive: (name: any, instructions: any, instructionsLang: any, prompts: any, finish: any) => void;
protected onDisconnect: () => void;
disconnect: () => Promise;
download: (dest: Writable, info: ITransferInfo, options?: ITransferOptions) => Promise;
upload: (source: Readable, info: ITransferInfo, options?: ITransferOptions) => Promise;
list: (path?: string) => Promise;
protected formatFile: (file: FileInfo, entry: FileEntry) => IFile;
protected _list(path: string): Promise;
protected _stat(path: string): 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;
protected _open(path: string, mode: string | number): Promise;
protected _close(buffer: Buffer): Promise;
pwd: () => Promise;
send: (command: any) => Promise;
protected handle: (fn: Function, ...args: any[]) => Promise;
protected handleTransfer: (source: Readable, dest: Writable, info: ITransferInfo, options: ITransferOptions) => Promise;
}