import type { LoggerLifecycle, LogSink } from "./logger/types.js"; import type { VextLogger, VextLoggerConfig, VextLoggerLike, VextRuntimeLogger } from "../types/app.js"; export interface CreateLoggerOptions { requestContextEnabled?: boolean; sink?: LogSink; } export declare function getLoggerLifecycle(logger: VextLogger): LoggerLifecycle | undefined; export declare function normalizeVextLogger(original: VextRuntimeLogger, candidate: VextLoggerLike | null | undefined, /** * Optional factory that produced `candidate` from `original`. * When present, child loggers re-invoke the factory against the child core * so wrapper methods close over the child (preserving bindings) instead of * the parent logger. Without this, partial wrappers that capture `original` * in setLogger() would drop child bindings on every child.info() call. */ wrapperFactory?: (original: VextRuntimeLogger) => VextLoggerLike): VextRuntimeLogger; export declare function createLogger(config?: VextLoggerConfig, options?: CreateLoggerOptions): VextRuntimeLogger;