import type { LoggerTransport } from '@mastra/core/logger';
import { LogLevel, MastraLogger } from '@mastra/core/logger';
import pino from 'pino';
type TransportMap = Record<string, LoggerTransport>;
export type { LogLevel } from '@mastra/core/logger';
export interface PinoLoggerOptions<CustomLevels extends string = never> {
    name?: string;
    level?: LogLevel;
    transports?: TransportMap;
    overrideDefaultTransports?: boolean;
    formatters?: pino.LoggerOptions['formatters'];
    redact?: pino.LoggerOptions['redact'];
    mixin?: pino.MixinFn<CustomLevels>;
    customLevels?: {
        [level in CustomLevels]: number;
    };
    /**
     * When false, disables pino-pretty and outputs raw JSON.
     * Useful when sending logs to aggregators like Datadog,
     * Loki, or CloudWatch that expect single-line JSON per entry.
     * @default true
     */
    prettyPrint?: boolean;
    /**
     * Override the key used for the log message.
     * Defaults to Pino's built-in 'msg' key.
     * Set to 'message' for compatibility with Google Cloud Logging,
     * Elastic Common Schema (ECS), Datadog, and AWS CloudWatch.
     * @example 'message'
     */
    messageKey?: string;
}
export declare class PinoLogger<CustomLevels extends string = never> extends MastraLogger {
    protected logger: pino.Logger<CustomLevels>;
    constructor(options?: PinoLoggerOptions<CustomLevels>);
    /**
     * Creates a child logger with additional bound context.
     * All logs from the child logger will include the bound context.
     *
     * @param bindings - Key-value pairs to include in all logs from this child logger
     * @returns A new PinoLogger instance with the bound context
     *
     * @example
     * ```typescript
     * const baseLogger = new PinoLogger({ name: 'MyApp' });
     *
     * // Create module-scoped logger
     * const serviceLogger = baseLogger.child({ module: 'UserService' });
     * serviceLogger.info('User created', { userId: '123' });
     * // Output includes: { module: 'UserService', userId: '123', msg: 'User created' }
     *
     * // Create request-scoped logger
     * const requestLogger = baseLogger.child({ requestId: req.id });
     * requestLogger.error('Request failed', { err: error });
     * // Output includes: { requestId: 'abc', msg: 'Request failed', err: {...} }
     * ```
     */
    child(bindings: Record<string, unknown>): PinoLogger<CustomLevels>;
    debug(message: string, args?: Record<string, any>): void;
    info(message: string, args?: Record<string, any>): void;
    warn(message: string, args?: Record<string, any>): void;
    error(message: string, args?: Record<string, any>): void;
}
//# sourceMappingURL=pino.d.ts.map