import { FileTransferState } from "./proto/reach";
export declare const enum FileTransferDirection {
    DOWNLOAD = 0,
    UPLOAD = 1
}
export interface FileTransferConfig {
    /**
     * The number of messages sent before an acknowledgement is expected from the server.
     */
    ackRate: number;
    /**
     * The timeout for receiving responses from the server upon the last client message in a transaction, in ms.
     */
    timeout: number;
    requireChecksum: boolean;
    transferID: number;
    transferLength: number;
    offset: number;
    /**
     * Whether the full data for a file transfer is being provided, including data before the offset and/or data past the transfer length.
     * If true, data will be read from/inserted beginning at the index specified by the offset.
     */
    fullDataProvided: boolean;
}
export declare class FileTransfer {
    protected _transferID: number;
    protected _fileID: number;
    protected _offset: number;
    /**
    * The length of the file being transferred
    */
    protected _transferLength: number;
    /**
     * Whether the full data for a file transfer has been provided, including data before the offset and/or data past the transfer length.
     * If true, data will be read from/inserted beginning at the index specified by the offset.  Defaults to false.
     */
    protected _fullDataProvided: boolean;
    protected _direction: FileTransferDirection;
    protected _ackRate: number;
    protected _timeout: number;
    protected _state: FileTransferState;
    /**
     * Keeps track of how many file data messages have been transferred between acks
     */
    protected _transferDataCount: number;
    /**
    * The amount of bytes that have been read
    */
    protected _bytesTransferred: number;
    protected _fileData: number[];
    constructor(direction: FileTransferDirection, fileID: number, config?: Partial<FileTransferConfig>, data?: number[]);
    /** Setters & Getters */
    get transferID(): number;
    get fileID(): number;
    get direction(): FileTransferDirection;
    get transferLength(): number;
    get offset(): number;
    /**
     * Whether the full data for a file transfer has been provided, including data before the offset and/or data past the transfer length.
     * If true, data will be read from/inserted beginning at the index specified by the offset.  Defaults to false.
     */
    get fullDataProvided(): boolean;
    get ackRate(): number;
    set ackRate(rate: number);
    get timeout(): number;
    set timeout(timeout: number);
    get state(): FileTransferState;
    set state(state: FileTransferState);
    protected get configLocked(): boolean;
    get fileData(): number[];
    set fileData(data: number[]);
    get bytesTransferred(): number;
    set bytesTransferred(bytes: number);
    addFileData(data: number[]): void;
}
