import type { StackFrame } from 'error-stack-parser';
import { ConsoleMethods } from '../types/client';
import { ConsoleMessage } from '../types/shared-types';
export type StringifyOptions = {
    stringLengthLimit?: number;
    /**
     * limit of number of keys in an object
     * if an object contains more keys than this limit, we would call its toString function directly
     */
    numOfKeysLimit: number;
    /**
     * limit number of depth in an object
     * if an object is too deep, toString process may cause browser OOM
     */
    depthOfLimit: number;
};
export type LogRecordOptions = {
    level: ConsoleMethods[];
    stringifyOptions: StringifyOptions;
    /**
     * Set to try to serialize console object arguments into the message body.
     */
    serializeConsoleAttributes?: boolean;
    logger: Logger | 'console';
};
export type Logger = {
    assert?: typeof console.assert;
    clear?: typeof console.clear;
    count?: typeof console.count;
    countReset?: typeof console.countReset;
    debug?: typeof console.debug;
    dir?: typeof console.dir;
    dirxml?: typeof console.dirxml;
    error?: typeof console.error;
    group?: typeof console.group;
    groupCollapsed?: typeof console.groupCollapsed;
    groupEnd?: () => void;
    info?: typeof console.info;
    log?: typeof console.log;
    table?: typeof console.table;
    time?: typeof console.time;
    timeEnd?: typeof console.timeEnd;
    timeLog?: typeof console.timeLog;
    trace?: typeof console.trace;
    warn?: typeof console.warn;
};
export declare const defaultLogOptions: LogRecordOptions;
export declare function ConsoleListener(callback: (c: ConsoleMessage) => void, logOptions: LogRecordOptions): () => void;
export declare function createLog(level: string, logOptions: LogRecordOptions, ...data: Array<any>): {
    type: string;
    trace: StackFrame[];
    value: any[];
    attributes: string;
    time: number;
};
