/// <reference types="node" />
import { Writable, Readable } from "stream";
import { FTPContext, FTPResponse } from "./FtpContext";
import { ProgressTracker, ProgressType } from "./ProgressTracker";
export type UploadCommand = "STOR" | "APPE";
/**
* Prepare a data socket using passive mode over IPv6.
*/
export declare function enterPassiveModeIPv6(ftp: FTPContext): Promise<FTPResponse>;
/**
* Parse an EPSV response. Returns only the port as in EPSV the host of the control connection is used.
*/
export declare function parseEpsvResponse(message: string): number;
/**
* Prepare a data socket using passive mode over IPv4.
*/
export declare function enterPassiveModeIPv4(ftp: FTPContext): Promise<FTPResponse>;
/**
* Parse a PASV response.
*/
export declare function parsePasvResponse(message: string): {
host: string;
port: number;
};
export declare function connectForPassiveTransfer(host: string, port: number, ftp: FTPContext): Promise<void>;
export interface TransferConfig {
command: string;
remotePath: string;
type: ProgressType;
ftp: FTPContext;
tracker: ProgressTracker;
}
export declare function uploadFrom(source: Readable, config: TransferConfig): Promise<FTPResponse>;
export declare function downloadTo(destination: Writable, config: TransferConfig): Promise<FTPResponse>;