import { EID, EVENT_TYPE } from './enums'
import { Config, LoggerParam } from './types'

export interface LoggerImpl {
    /**
     * 事件类型
     */
    EVENT_TYPE: typeof EVENT_TYPE
    /**
     * 事件id
     */
    EID: typeof EID
    /**
     * 设备id
     */
    DID: string

    /**
     * 配置项，配置log接口，元素的类名
     */
    config: Config

    /**
     * 更新全局配置
     * @param config
     */
    setGlobalConfig(config: Config): void

    /**
     * 获取log参数
     * @param eid
     * @param event_type
     * @param ext
     * @returns {LoggerParam}
     */
    getParams(eid?: string, event_type?: number, ext?: Record<string, any>): Partial<LoggerParam>

    /**
     * 曝光api，参数可以输log参数数组，或单个log参数
     * @param args {Array<LoggerParam> | LoggerParam}
     * @returns
     */
    log(args: Array<LoggerParam> | LoggerParam): Promise<any>
}
