/**
 * Structured logger for Actuate CMS (audit issue L7).
 *
 * Why a dedicated module instead of `console.*`:
 *
 *   1. **Filterable in production.** Operators can set
 *      `ACTUATE_LOG_LEVEL=warn` to silence routine info logs without losing
 *      error visibility — `console.*` calls can't be silenced without
 *      monkey-patching.
 *
 *   2. **Structured output for log aggregators.** Setting
 *      `ACTUATE_LOG_FORMAT=json` switches to one-line JSON entries with
 *      consistent fields (`ts`, `level`, `scope`, `msg`, `details`),
 *      ready for ingestion by Datadog, Sentry, or CloudWatch.
 *
 *   3. **Scoped namespaces.** `createLogger('rate-limit')` prefixes every
 *      message with `[actuate][rate-limit]` so a grep finds related
 *      entries instantly.
 *
 * **Migration path:** existing `console.*` calls keep working. New code and
 * security-sensitive paths use the logger. Replace `console.*` callsites
 * incrementally as files are touched.
 */
export type LogLevel = 'silent' | 'error' | 'warn' | 'info' | 'debug';
export interface ScopedLogger {
    error(msg: string, details?: Record<string, unknown>): void;
    warn(msg: string, details?: Record<string, unknown>): void;
    info(msg: string, details?: Record<string, unknown>): void;
    debug(msg: string, details?: Record<string, unknown>): void;
}
/**
 * Create a logger scoped to a subsystem name (e.g. `rate-limit`, `oauth`).
 * Output format:
 *   text: `[actuate][rate-limit] Upstash failed { reason: '...' }`
 *   json: `{"ts":"...","level":"error","scope":"rate-limit","msg":"...","details":{...}}`
 */
export declare function createLogger(scope: string): ScopedLogger;
//# sourceMappingURL=logger.d.ts.map