import { LumberjackLogLevel } from '../logs/lumberjack-log-level';
import { LumberjackLogPayload } from '../logs/lumberjack-log-payload';
import { LumberjackTimeService } from '../time/lumberjack-time.service';
import { LumberjackLoggerBuilder } from './lumberjack-logger.builder';
import { LumberjackLogger } from './lumberjack-logger.service';
import { LumberjackService } from './lumberjack.service';
import * as i0 from "@angular/core";
/**
 * A scoped logger holds methods that log a predefined log sharing a scope.
 *
 * Implement application- and library-specific loggers by extending this base
 * class. Optionally supports a log payload.
 *
 * Each protected method on this base class returns a logger builder with a
 * predefined scope.
 */
export declare abstract class ScopedLumberjackLogger<TPayload extends LumberjackLogPayload | void = void> extends LumberjackLogger<TPayload> {
    protected readonly lumberjack: LumberjackService<TPayload>;
    protected readonly time: LumberjackTimeService;
    abstract readonly scope: string;
    /**
     * Create a logger builder for a log with the shared scope as well as the
     * specified log level and message.
     */
    protected createLoggerBuilder(level: LumberjackLogLevel, message: string): LumberjackLoggerBuilder<TPayload>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ScopedLumberjackLogger<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ScopedLumberjackLogger<any>>;
}
