/**
 * Phase 11 — centralized logger.
 *
 * Single import surface for every log call site:
 *
 *   import { log } from '../../utils/log.js';
 *   log.info('starting up');
 *   log.warn('something looks off:', err);
 *
 * All output flows through `sanitize()` from the server middleware so
 * registry-listed secrets, prefix-shaped tokens, URL credentials, and
 * JSON-quoted secret fields are redacted before reaching stdout/stderr.
 *
 * Modes:
 *   - Production (`NODE_ENV === 'production'` or `RAILWAY_ENVIRONMENT` set):
 *     sanitize() is always applied.
 *   - Development (anything else): raw passthrough — easier to debug
 *     with real values visible in your own terminal.
 *   - Escape hatch (`STUDIOGRAPH_LOG_RAW=1`): force raw mode regardless of
 *     environment. Useful when troubleshooting redaction itself.
 *
 * Why expose `log.*` instead of patching console.* directly here? Two
 * reasons. First, the console patch (in serve.ts) is only safe to apply
 * in production — local dev needs real console for debugging. Second,
 * the explicit `log.*` import surface is what the `no-raw-console` lint
 * rule keys off of: any direct `console.*` call outside this file is a
 * lint warning telling the author to migrate.
 */
/**
 * The exported logger. Mirrors console's API one-to-one so migration is
 * a search-and-replace: `console.X(...) → log.X(...)`.
 *
 * `log.debug` exists for symmetry; it's silenced in production unless
 * `STUDIOGRAPH_VERBOSE=1`.
 */
export declare const log: {
    info: (...args: unknown[]) => void;
    warn: (...args: unknown[]) => void;
    error: (...args: unknown[]) => void;
    debug: (...args: unknown[]) => void;
};
export declare function installConsolePatch(): void;
