import { MaximLogsAPI } from "../apis/logs";
import { MaximCache } from "../cache/cache";
import { CommitLog } from "./components/types";
export type LogWriterConfig = {
    baseUrl: string;
    apiKey: string;
    repositoryId: string;
    autoFlush?: boolean;
    flushInterval?: number;
    isDebug?: boolean;
    maxInMemoryLogs?: number;
};
export declare class LogWriter {
    private readonly id;
    private config;
    private queue;
    private attachmentQueue;
    private mutex;
    private readonly isDebug;
    private flushInterval;
    private readonly logsDir;
    private logsAPIService;
    private attachmentAPIService;
    private readonly maxInMemoryLogs;
    private readonly cache;
    private readonly _raiseExceptions;
    constructor(config: LogWriterConfig & {
        cache: MaximCache;
        raiseExceptions: boolean;
    });
    get writerConfig(): LogWriterConfig;
    get raiseExceptions(): boolean;
    get writerLogsAPIService(): MaximLogsAPI;
    get writerCache(): MaximCache;
    private isOnAWSLambda;
    private hasAccessToFilesystem;
    private writeToFile;
    private flushLogFiles;
    private uploadFile;
    private uploadFileData;
    private uploadAttachment;
    private flushAttachments;
    private flushLogs;
    private getAttachmentKey;
    commit(log: CommitLog): void;
    flush(): Promise<void>;
    cleanup(): Promise<void>;
}
