import { ModuleDesc, ModuleName, ModuleEventMap, ModuleCmdMap, CmdFun } from '../types/protocol';
import { InitConfig, NormalCounterKey, CounterEventMap, SlardarLogParam, SlardarTimelineParam, TimerEventMap, TrackItem } from '../types/eventTracker';
export declare enum EventEnum {
}
export type EventMap = ModuleEventMap<never>;
export declare enum CmdEnum {
    Counter = "EventTracker.Counter",
    Timer = "EventTracker.Timer",
    Log = "EventTracker.Log",
    Init = "EventTracker.Init",
    End = "EventTracker.End",
    TimeLine = "EventTracker.TimeLine",
    Track = "Tea.Track",
    PerformanceTrack = "Performance.Track",
    PerformanceTrackV2 = "Performance.Track2",
    ResultReport = "EventTrack.ResultReport"
}
export type CmdCounter = <K extends NormalCounterKey, Args extends CounterEventMap[K]>(m: ModuleName.eventTracker, cmd: CmdEnum.Counter, eventName: K, opt?: Args) => void;
export type CmdCounterP = <K extends Exclude<keyof CounterEventMap, NormalCounterKey>, Args extends CounterEventMap[K]>(m: ModuleName.eventTracker, cmd: CmdEnum.Counter, eventName: K, opt: Args) => void;
export type CmdTimer = <K extends keyof TimerEventMap, Args extends TimerEventMap[K]>(m: ModuleName.eventTracker, cmd: CmdEnum.Timer, eventName: K, opt: Args) => void;
export type CmdLog = (m: ModuleName.eventTracker, cmd: CmdEnum.Log, param: SlardarLogParam) => void;
export type CmdTimeLine = (m: ModuleName.eventTracker, cmd: CmdEnum.TimeLine, param: SlardarTimelineParam) => void;
export type CmdInit = (m: ModuleName.eventTracker, cmd: CmdEnum.Init, config?: InitConfig) => void;
export type CmdEnd = (m: ModuleName.eventTracker, cmd: CmdEnum.End) => void;
export type CmdTrack = (m: ModuleName.eventTracker, cmd: CmdEnum.Track, eventName: string, params: Record<string, any>) => void;
export type CmdPerformanceTrack = (m: ModuleName.eventTracker, cmd: CmdEnum.PerformanceTrack, eventName: string, params: {}) => void;
export type CmdPerformanceTrackV2 = (m: ModuleName.eventTracker, cmd: CmdEnum.PerformanceTrackV2, eventName: string, tags: TrackItem['tags'], traceId?: string, timingName?: string) => void;
export type CmdResultReport = (m: ModuleName.eventTracker, cmd: CmdEnum.ResultReport, eventName: string, result: 'success' | 'fail', tags?: Record<string, string | number>, traceId?: string) => void;
export type Command = CmdCounter & CmdCounterP & CmdTimer & CmdLog & CmdTimeLine & CmdInit & CmdEnd & CmdTrack & CmdPerformanceTrack & CmdPerformanceTrackV2 & CmdResultReport;
export interface CmdMap extends ModuleCmdMap<CmdEnum> {
    [CmdEnum.Counter]: CmdFun<CmdCounter & CmdCounterP>;
    [CmdEnum.Timer]: CmdFun<CmdTimer>;
    [CmdEnum.Log]: CmdFun<CmdLog>;
    [CmdEnum.Init]: CmdFun<CmdInit>;
    [CmdEnum.End]: CmdFun<CmdEnd>;
    [CmdEnum.TimeLine]: CmdFun<CmdTimeLine>;
    [CmdEnum.Track]: CmdFun<CmdTrack>;
    [CmdEnum.PerformanceTrack]: CmdFun<CmdPerformanceTrack>;
    [CmdEnum.PerformanceTrackV2]: CmdFun<CmdPerformanceTrackV2>;
    [CmdEnum.ResultReport]: CmdFun<CmdResultReport>;
}
export declare const EventTrackerDesc: ModuleDesc<EventMap, CmdMap, ModuleName.storage>;
