import retry from "async-retry";
import BaseDownloadEngineWriteStream from "./base-download-engine-write-stream.js";
export type DownloadEngineWriteStreamOptionsNodeJS = {
    retry?: retry.Options;
    mode: string;
    debounceWrite?: {
        maxTime?: number;
        maxSize?: number;
    };
};
export default class DownloadEngineWriteStreamNodejs extends BaseDownloadEngineWriteStream {
    path: string;
    finalPath: string;
    private _fd;
    private _fileWriteFinished;
    private _writeDebounce;
    private _fileSize;
    readonly options: DownloadEngineWriteStreamOptionsNodeJS;
    autoDebounceMaxSize: boolean;
    constructor(path: string, finalPath: string, options?: Partial<DownloadEngineWriteStreamOptionsNodeJS>);
    get fileSize(): number;
    set fileSize(value: number);
    private _ensureFileOpen;
    write(cursor: number, buffers: Uint8Array[]): Promise<void>;
    _writeWithoutDebounce(cursor: number, buffers: Uint8Array[]): Promise<void>;
    ensureBytesSynced(): Promise<void>;
    ftruncate(size?: number): Promise<void>;
    saveMetadataAfterFile(data: any): Promise<void>;
    loadMetadataAfterFileWithoutRetry(): Promise<any>;
    private _writeWithoutRetry;
    close(): Promise<void>;
}
