///
import { Persistence, PersistenceEvent } from "../core/persistence";
import * as fs from "fs";
import { appendFile, exists, readFile, rename, unlink, writeFile } from "fs";
declare const _storage: {
lock: (filename: string) => Promise;
unlock: (filename: string) => Promise;
appendFile: typeof appendFile.__promisify__;
exists: typeof exists.__promisify__;
readFile: typeof readFile.__promisify__;
rename: typeof rename.__promisify__;
unlink: typeof unlink.__promisify__;
writeFile: typeof writeFile.__promisify__;
mkdirp: (targetDir: string) => Promise;
ensureFileDoesntExist: (file: string) => Promise;
/**
* Flush data in OS buffer to storage if corresponding option is set
* If options is a string, it is assumed that the flush of the file (not dir) called options was requested
*/
flushToStorage: (options: string | {
filename: string;
isDir: boolean;
}) => Promise;
createWriteableStream: (filename: string) => Promise;
writeSingleLine: (stream: fs.WriteStream, line: string) => Promise;
endStream: (stream: fs.WriteStream) => Promise;
readByLine: (filename: string, onLine: (line: string) => void, onClose: () => void) => void;
beforeWriteFile: (filename: string) => Promise;
afterWritingFile: (filename: string) => Promise;
/**
* Ensure the data file contains all the data, even if there was a crash during a full file write
*/
ensureDataFileIntegrity: (filename: string) => Promise;
};
declare const storage: typeof _storage;
export { storage };
export declare class FS_Persistence_Adapter extends Persistence {
indexesFilenameExtension: string;
readFileByLine(event: PersistenceEvent, filename: string): Promise;
writeFileByLine(event: PersistenceEvent, filename: string): Promise;
init(): Promise;
readIndexes(event: PersistenceEvent): Promise;
readData(event: PersistenceEvent): Promise;
rewriteIndexes(event: PersistenceEvent): Promise;
rewriteData(event: PersistenceEvent): Promise;
appendIndex(data: string): Promise;
appendData(data: string): Promise;
forcefulUnlock(): Promise;
}