import { inferType, loggable_type } from './type'; import { Composition } from './compose'; import { LogContext, LoggableData } from './context'; import { LogTokens } from './token'; export interface TypeMap { readonly [loggable_type.any]: any; readonly [loggable_type.other]: any; readonly [loggable_type.undefined]: undefined; readonly [loggable_type.null]: null; readonly [loggable_type.boolean]: boolean; readonly [loggable_type.number]: number; readonly [loggable_type.bigint]: bigint; readonly [loggable_type.string]: string; readonly [loggable_type.symbol]: symbol; readonly [loggable_type.function]: (...args: any[]) => any; readonly [loggable_type.error]: Error; readonly [loggable_type.array]: any[]; readonly [loggable_type.bytes]: Uint8Array; readonly [loggable_type.object]: object; readonly [loggable_type.composition]: Composition; readonly [loggable_type.message]: string; } export declare type parse

= (loggable: T, context: ParseContext) => LogTokens; export declare type Parsers = { [P in loggable_type]?: parse

; }; declare type selectParser = (type: loggable_type) => parse; declare type parseInferred = (data: LoggableData, context: LogContext) => LogTokens; declare type parseUnknown = (loggable: unknown) => LogTokens; export interface ParseConfig { readonly maxDepth: number; readonly maxBytes: number; readonly tailBytes: number; } export interface ParseHost { readonly settings: ParseConfig; readonly inferType: inferType; readonly selectParser: selectParser; readonly parse: parseInferred; } export interface ParseContext { readonly context: LogContext; readonly depthLeft: number; readonly bytesHead: number; readonly bytesTail: number; readonly references: ReadonlyArray; readonly inferAndParse: parseUnknown; } export declare const parsers: Parsers; export declare function createParseConfig(settings: T): ParseConfig; export declare function createParseHost(settings: ParseConfig, infer: inferType, select: selectParser): ParseHost; export declare function createParseContext(host: ParseHost, context: LogContext): ParseContext; export declare function getParser

(parserCollection: Parsers, type: P): parse

; export {};