/**
 * @file SpyClient
 * @author kaivean
 */
import { SpyClientOption } from './lib/interface';
interface Option {
    /**
     * 指标组，它的每个key就是指标名称（英文表示），在平台对应分组添加该指标名称便能实现自动统计
     */
    info: object;
    /**
     * 维度信息对象，它的每个字段就是一个维度名称（英文表示），在平台对应分组添加该维度名称便能实现自动统计
     */
    dim?: object;
    /**
     * 分组，默认：common
     */
    group?: string;
    /**
     * 抽样，会覆盖全局抽样配置，默认是 1，取值从[0, 1]
     */
    sample?: number;
    /**
     * 日志服务器，默认是webb服务器，尾部需要加?
     */
    logServer?: string;
}
interface ErrorInfo {
    /**
     * 错误唯一标识，平台会统计该错误唯一标识的数量
     */
    [propName: string]: any;
}
interface ErrorOption {
    /**
     * 错误信息对象，它必须有msg字段，是错误唯一标识，其他字段可用户随意添加用来补充错误信息
     */
    info?: ErrorInfo;
    /**
     * 维度信息对象，它的每个字段就是一个维度名称（英文表示），在平台对应分组添加该维度名称便能实现自动统计
     */
    dim?: object;
    /**
     * 分组，默认：common
     */
    group?: string;
    /**
     * 抽样，默认是 1，取值从[0, 1]，该抽样会覆盖实例初始化时的抽样配置
     */
    sample?: number;
    /**
     * 业务拓展信息
     */
    ext?: any;
}
interface SpyClientInnerOption extends SpyClientOption {
    logServer: string;
}
export default class SpyClient {
    sample: any;
    markCache: any;
    option: SpyClientInnerOption;
    constructor(option: SpyClientOption);
    handle(logItem: any): any;
    send(data: any, post?: boolean): void;
    check(query: any): boolean;
    /**
     *
     * @param option 配置
     */
    sendPerf(option: Option): void;
    /**
     *
     * @param option 错误配置项
     */
    sendExcept(option: ErrorOption): void;
    /**
     *
     * @param option 配置
     */
    sendDist(option: Option): void;
    /**
     *
     * @param option 配置
     */
    sendCount(option: Option): void;
    /**
     *
     * @param e 错误实例
     * @param option 错误配置项
     */
    sendExceptForError(e: Error, option: ErrorOption): void;
    startMark(sign: string): void;
    endMark(sign: string): number;
    clearMark(sign: string): void;
    getAllMark(): {
        [propName: string]: number;
    };
    clearAllMark(): void;
    sendPost(data: any): void;
    protected request(url: string, data?: any): void;
    protected fetch(url: string, data: any): void;
}
export {};
