///
import { IAddress, IEvent, IMiddlewareMap, Session } from "botbuilder";
import { EventEmitter } from "events";
import { Blob } from './serialization';
export declare const LOGGER_SERVICE_ID: unique symbol;
export interface LogEntry {
date: Date;
conversation: Partial;
type: string;
data: any;
}
export interface BotLogWriterOptions {
/** Number of simultaneous writes before queueing (default: 1) */
concurrency?: number;
/** Any properties that should NOT be visible in logs (e.g. "state.user.private.password"). For supported syntax, see `lodash.get` module. */
maskedProperties?: string[];
}
export interface WriteOperation {
value: any;
blobs: Blob[];
}
export interface DocumentWriter {
write: (op: WriteOperation, callback: DocumentWriteCallback) => void;
}
export interface BlobWriter {
write: (blob: Blob, callback: BlobWriteCallback) => void;
locate: (blob: Blob) => string;
}
export declare type LogWriter = (type: string, data: any) => void;
export declare type DocumentWriteCallback = (err?: Error) => void;
export declare type BlobWriteCallback = (err?: Error) => void;
export declare function getLogger(session: Session): LogWriter;
export declare function writeLog(session: Session, type: string, data: any): void;
export declare class BaseBotLogger implements IMiddlewareMap {
protected documentWriter: DocumentWriter;
protected blobWriter: BlobWriter;
protected loggerOptions: BotLogWriterOptions;
events: EventEmitter;
private documentQueue;
private blobQueue;
constructor(documentWriter: DocumentWriter, blobWriter: BlobWriter, loggerOptions: BotLogWriterOptions);
receive(event: IEvent, next: () => void): void;
send(event: IEvent, next: () => void): void;
botbuilder(session: Session, next: () => void): void;
write(session: Session, type: string, data: any): void;
private enqueue;
private onWrite;
private applyMask;
}