"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PinoLoggerAdapter = void 0;
const pino_1 = __importDefault(require("pino"));
/**
 * Pino-based logging adapter.
 *
 * JSON output by default, sub-millisecond serialization, first-class
 * TypeScript types, and native OpenTelemetry integration via
 * `@opentelemetry/instrumentation-pino`.
 *
 * Usage:
 * ```typescript
 * import { loggerRegistry, PinoLoggerAdapter } from '@hotmeshio/long-tail';
 *
 * loggerRegistry.register(new PinoLoggerAdapter({ level: 'debug' }));
 * ```
 */
class PinoLoggerAdapter {
    constructor(options) {
        this.logger = (0, pino_1.default)(options);
    }
    info(msg, context) {
        if (context) {
            this.logger.info(context, msg);
        }
        else {
            this.logger.info(msg);
        }
    }
    warn(msg, context) {
        if (context) {
            this.logger.warn(context, msg);
        }
        else {
            this.logger.warn(msg);
        }
    }
    error(msg, context) {
        if (context) {
            this.logger.error(context, msg);
        }
        else {
            this.logger.error(msg);
        }
    }
    debug(msg, context) {
        if (context) {
            this.logger.debug(context, msg);
        }
        else {
            this.logger.debug(msg);
        }
    }
}
exports.PinoLoggerAdapter = PinoLoggerAdapter;
