import { EventEmitter } from 'events';
import { FileHandler } from '../fs';
import { FileFormat } from './formats';
export declare abstract class StructuredFile<T> extends EventEmitter {
    private _fileHandler;
    private _fileFormat;
    protected _fileContent: T | null;
    private _modified;
    private _readingPromise;
    private _writingPromise;
    private _nextWritingPromise;
    private _lastReadModifiedTime;
    private _lastReadSize;
    private _busyState;
    constructor(_fileHandler: FileHandler, _fileFormat: FileFormat);
    private _markBusy;
    private _markNonBusy;
    protected _markModified(): void;
    protected _afterRead(): void;
    private _doRead;
    protected _read(): Promise<void>;
    private _doWrite;
    private _waitAndWriteAgain;
    protected _write(): Promise<void>;
    get path(): string;
}
