import { LumberjackLogLevel } from '../logs/lumberjack-log-level';
import { LumberjackLogPayload } from '../logs/lumberjack-log-payload';
import { LumberjackLog } from '../logs/lumberjack.log';
import { LumberjackTimeService } from '../time/lumberjack-time.service';
/**
 * The generic parameter of `LumberjackLogBuilder` is evaluated to this type
 * when the `LumberjackLogBuilder#withPayload` method is used.
 */
type InternalWithStaticPayload = '__LUMBERJACK_INTERNAL_WITH_STATIC_PAYLOAD__' & LumberjackLogPayload;
/**
 * Builder for a log with the specified log level and message.
 *
 * Use this to create a log before passing it to `LumberjackService`.
 */
export declare class LumberjackLogBuilder<TPayload extends LumberjackLogPayload | void = void> {
    #private;
    /**
     * Create a log builder with the specified log level and message.
     *
     * @param time Pass the `LumberjackTimeService`. Used for timestamping the log.
     * @param level The log level.
     * @param message The log message.
     */
    constructor(time: LumberjackTimeService, level: LumberjackLogLevel, message: string);
    /**
     * Create a log with the specified properties and timestamp it.
     *
     * @param payloadArg Optional dynamic payload.
     */
    build(...payloadArg: Extract<TPayload, InternalWithStaticPayload> extends never ? [TPayload] : [never?]): LumberjackLog<Exclude<TPayload, InternalWithStaticPayload>>;
    /**
     * Optionally add a static payload to the log.
     */
    withPayload(...payloadArg: TPayload extends void ? [never?] : [TPayload]): LumberjackLogBuilder<InternalWithStaticPayload | TPayload>;
    /**
     * Add a scope to the log.
     */
    withScope(scope: string): LumberjackLogBuilder<TPayload>;
}
export {};
