/// <reference types="node" resolution-mode="require"/>
import type { Envelope } from '@devvit/protos/types/devvit/runtime/envelope.js';
export type EnvelopeLoggerConfig = {
    /**
     * Abbreviation includes UUIDs and is unsafe for production. A truncated
     * stream ID is enough to visually disambiguate most streams in low-traffic
     * dev environments only.
     */
    abbreviateStrings: boolean;
    showClientAddress: boolean;
    showServerAddress: boolean;
    showAllRequestMessages: boolean;
    showAllResponseMessages: boolean;
    showAllErrorMessages: boolean;
    showAllSuccessMessages: boolean;
    showMetadata: boolean;
    stringifyObjects: boolean;
    point: string;
};
type Console = {
    debug(...args: unknown[]): void;
    info(...args: unknown[]): void;
    log(...args: unknown[]): void;
    warn(...args: unknown[]): void;
    error(...args: unknown[]): void;
};
/** No buffer console logger for Node.js. */
export declare const nodeDebugConsole: Console;
export declare const voidConsole: Console;
export declare const Log: {
    verbose: (...args: unknown[]) => void;
    info: (...args: unknown[]) => void;
    debug: (...args: unknown[]) => void;
    warn: (...args: unknown[]) => void;
    error: (...args: unknown[]) => void;
    /**
     * Update the base envelope config for all invocations of `Log.envelope()`
     */
    setDefaultConfig(config: Partial<EnvelopeLoggerConfig>): void;
    /**
     * Dump the contents of an envelope to the debug logs.
     *
     * Accepts a logger config partial, which will be mixed with the default logger config
     */
    envelope(envelope: Readonly<Envelope>, config?: Partial<EnvelopeLoggerConfig>): void;
    setLogger(console: Console): void;
};
/** @internal */
export declare function abbreviateClientHostname(hostname: string): string;
/** @internal */
export declare function abbreviateUUID(uuid: string): string;
/** @internal */
export declare function extractHostnameUUID(hostname: string): string[];
/** @internal */
export declare function isUUID(str: string): boolean;
/**
 * @internal
 *
 * There is no fflush() for Node.js. Write an empty string to the stream and
 * wait for that specific string to be written to guarantee that all prior
 * writes have been written. Other runtimes can `await Logger.Log()`.
 */
export declare function flush(stream: NodeJS.WriteStream): Promise<void>;
export {};
//# sourceMappingURL=Log.d.ts.map