import { Readable } from 'stream'; import { EventEmitter } from 'events'; declare namespace JSFtp { interface JSFtpOptions { host: string; port?: number | 21; user?: string | 'anonymous'; pass?: string | '@anonymous'; useList?: boolean } interface Callback { (err: any, result: T): void; } interface Entry { name: string; size: number; time: number; type: 0 | 1; } } interface JSFtp extends EventEmitter { auth(user: string, password: string, callback: JSFtp.Callback): void keepAlive(wait?: number): void; ls(path: string, callback: JSFtp.Callback): void; list(path: string, callback: JSFtp.Callback): void; put(buffer: Buffer, path: string, callback: JSFtp.Callback): void; get(path: string, callback: JSFtp.Callback): void; setType(type: 'A' | 'AN' | 'AT' | 'AC' | 'E' | 'I' | 'L', callback: JSFtp.Callback): void; raw(command: string, args: any[], callback: JSFtp.Callback): void; raw(command: string, args: any[], callback: JSFtp.Callback): void; } interface JSFtpConstructor { new(options: JSFtp.JSFtpOptions): JSFtp; } declare const JSFtp: JSFtpConstructor; export = JSFtp;