interface Logger {
    trace: (...message: any) => void;
    debug: (...message: any) => void;
    info: (...message: any) => void;
    warn: (...message: any) => void;
    error: (...message: any) => void;
}

interface KestraFunction {
    (): void;
    format(map: Record<string, any>): string;
    _send(map: Record<string, any>): void;
    _metrics(name: string, type: string, value: any, tags: any): void;
    assets(asset: any): void;
    outputs(outputs: any): void;
    counter(name: string, value: any, tags?: any): void;
    timer(name: string, duration: number | ((callback: () => void) => void), tags?: any): void;
    gauge(name: string, value: number, tags?: any): void;
    logger(): Logger;
}

declare const Kestra: KestraFunction;

export = Kestra;
