import { ConsoleLogger, MemoryLogger, WorkerLogLevel, WorkerOutput, Logger as WorkoutLogger } from "@webda/workout";
import { Core } from "../core.js";
import { Service, ServiceParameters } from "../services/service.js";
export declare class LoggerServiceParameters extends ServiceParameters {
    /**
     * Specify the log level of this service
     */
    logLevel: WorkerLogLevel;
    /**
     * @inheritdoc
     */
    constructor(params: any);
}
/**
 * LoggerService is useful for inheritance
 */
export declare class LoggerService<T extends LoggerServiceParameters = LoggerServiceParameters> extends Service<T> {
}
export declare class MemoryLoggerServiceParameters extends LoggerServiceParameters {
    limit?: number;
}
/**
 * Store logs within memory
 *
 * Useful for test and other last logs
 * @WebdaModda Webda/MemoryLogger
 */
export declare class MemoryLoggerService<T extends MemoryLoggerServiceParameters = MemoryLoggerServiceParameters> extends LoggerService<T> {
    workoutLogger: MemoryLogger;
    constructor(webda: Core, name: string, params: any);
    /**
     * @inheritdoc
     */
    loadParameters(params: any): MemoryLoggerServiceParameters;
}
export declare class ConsoleLoggerServiceParameters extends LoggerServiceParameters {
    format?: string;
}
/**
 * Log to the console
 *
 * Send logs to stdout
 *
 * @see @webda/workout.ConsoleLogger
 * @WebdaModda ConsoleLogger
 */
export declare class ConsoleLoggerService<T extends ConsoleLoggerServiceParameters = ConsoleLoggerServiceParameters> extends LoggerService<T> {
    workoutLogger: ConsoleLogger;
    constructor(webda: Core, name: string, params: any);
    /**
     * @inheritdoc
     */
    loadParameters(params: any): ConsoleLoggerServiceParameters;
}
export declare class FileLoggerServiceParameters extends LoggerServiceParameters {
    format?: string;
    file: string;
    sizeLimit?: number;
}
/**
 * Save logs into a file
 *
 * Can define rotation etc
 *
 * @see `@webda/workout FileLogger`
 * @WebdaModda FileLogger
 */
export declare class FileLoggerService<T extends FileLoggerServiceParameters = FileLoggerServiceParameters> extends LoggerService<T> {
    workoutLogger: ConsoleLogger;
    constructor(webda: Core, name: string, params: any);
    /**
     * @inheritdoc
     */
    loadParameters(params: any): FileLoggerServiceParameters;
}
/**
 *
 */
export declare class Logger implements WorkoutLogger {
    output: WorkerOutput;
    clazz: string;
    constructor(output: WorkerOutput, clazz: string);
    log(level: WorkerLogLevel, ...args: any[]): void;
    logWithContext(level: WorkerLogLevel, context: any, ...args: any[]): void;
    logGroupOpen(name: string): void;
    logGroupClose(): void;
    logProgressStart(uid: string, total: number, title?: string): void;
    logProgressIncrement(inc?: number, uid?: string): void;
    logProgressUpdate(current: number, uid?: string, title?: string): void;
    logTitle(title: string): void;
}
