import { CommonModule, ModuleName } from '../types/protocol';
import { ModuleCmdMap } from '../protocol';
export type Level = 'TRACE' | 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'FATAL';
export type LogType = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
export type Status = 'start' | 'finish' | 'success' | 'fail' | string;
export type LoggerCmd<M extends ModuleName | CommonModule> = ((scene: ModuleCmdMap[M] | string, step: string, status: Status, ...info: unknown[]) => void) & ((module: M, scene: ModuleCmdMap[M], step: string, status: Status, ...info: unknown[]) => void);
export type Params<M extends ModuleName | CommonModule> = LoggerCmd<M> extends {
    (...params: infer P1): void;
    (...params: infer P2): void;
} ? P1 | P2 : never;
export interface Logger<M extends ModuleName | CommonModule> {
    trace: LoggerCmd<M>;
    debug: LoggerCmd<M>;
    info: LoggerCmd<M>;
    warn: LoggerCmd<M>;
    error: LoggerCmd<M>;
    fatal: LoggerCmd<M>;
}
