/**
 * @file 日志上报处理
 * @desc 参考文档 https://cf.qiniu.io/pages/viewpage.action?pageId=107318296
 * @todo - 日志持久化存储
 */
import type { AppInfo } from '../common/index';
import { Fetch } from '../utils/fetch/index';
export type LogData = Record<string, unknown>;
type BufferedLogData = LogData & {
    /** 时间戳，单位 ms */
    ts: number;
};
type GroupedLogs = {
    schema: string;
    logs: BufferedLogData[];
};
export declare const apiPrefix: string;
export default class Logger {
    /** 应用信息 */
    private appInfo;
    /** 请求发送实现 */
    private fetch;
    /** 最大累计待上报条数 */
    private flushNum;
    /** 最大上报延迟，单位秒 */
    private flushWait;
    constructor(
    /** 应用信息 */
    appInfo: AppInfo, 
    /** 请求发送实现 */
    fetch?: Fetch, 
    /** 最大累计待上报条数 */
    flushNum?: number, 
    /** 最大上报延迟，单位秒 */
    flushWait?: number);
    private env;
    private callApiLog;
    /** 上报行为的互斥控制 */
    private flushMutex;
    /** 累计待上报的日志，从老到新排 */
    private buffer;
    /** 把所有记录下的日志进行上报 */
    private flush;
    /**
     * 检查是否要上报，满足以下条件之一则上报：
     * 1. 累计未上报 $flushNum 条
     * 2. $flushWait 秒
     */
    private tryFlush;
    /** 记录单条日志 */
    log(schemaName: string, logData: LogData): void;
}
/** 组装打点请求的 body，多个 Schema 日志以空行间隔 */
export declare function getLogBody(logs: GroupedLogs[]): string;
export {};
