import { Expression, LocalLogger, LogLevel } from "../shared";
import { LogsHandler, Logs, RemoteLoggingMode } from "../shared/types";
/**
 * Logger provides a high level API for Node and generic SDK logs. It emits
 * these logs using the `localLogger` and it also forwards them to the
 * `remoteLogger` based on the provided `remoteLoggingMode`.
 */
export default class Logger {
    readonly id: string;
    private readonly remoteLoggingMode;
    private readonly remoteLogCache;
    private readonly remoteLogger;
    private readonly localLogger;
    private readonly logsHandler;
    constructor({ id, traceId, token, remoteLoggingMode, remoteFlushIntervalMs, remoteLoggingEndpointUrl, localLogger, logsHandler, }: {
        id: string;
        traceId: string;
        token: string;
        remoteLoggingMode: RemoteLoggingMode;
        remoteFlushIntervalMs: number | null;
        remoteLoggingEndpointUrl: string;
        logsHandler: LogsHandler;
        localLogger: LocalLogger;
    });
    nodeLog({ commitId, initDataHash, nodeTypeName, nodePath, nodeExpression, reductionLogs, }: {
        commitId: string | null;
        initDataHash: string | null;
        nodeTypeName: string;
        nodePath: string;
        nodeExpression: Expression | null;
        reductionLogs: Logs;
    }): void;
    private shouldRemoteNodeLog;
    log(level: LogLevel, commitId: string | null, message: string, metadata: object): void;
    flush(traceId: string): Promise<void>;
    close(traceId: string): Promise<void>;
}
//# sourceMappingURL=Logger.d.ts.map