import { Logger, LogVerbosity } from "./logging"; import { PluginList, PluginType, Plugin, StatReporterPlugin } from "./plugins"; import { RequireKeys } from "./utils"; export declare const kLogger: unique symbol; declare const kDispatchLogger: unique symbol; export declare const kCollector: unique symbol; export declare const kAPICollector: unique symbol; export declare const kAPIReport: unique symbol; declare const kReportTimer: unique symbol; declare const kNeedAPICollector: unique symbol; export declare enum ResultType { /** 未知 */ Unknown = 0, /** 用户调用成功 */ Success = 1, /** 由于用户的原因,如参数错误导致的调用错误 */ UserFail = 2, /** 由于系统原因(SDK 或者 Server)导致用户调用失败 */ SystemFail = 3 } /** * API 调用状态(维度) */ export interface ApiStatKey { /** * 被调用的 API */ api: string; /** * 调用结果码 * 如果有错误,那么就是具体的错误码,否则为 0,表示成功 */ code: string; /** * 返回类型 */ result: ResultType; /** * 延迟范围 * 分为 5 个区间: * * [0ms,50ms) * * [50ms,100ms) * * [100ms,150ms) * * [150ms,200ms) * * [200ms,) */ delay: string; } /** * API 调用状态(指标) */ export declare type ApiStatValue = number; export declare const isStatReporterPlugin: (plugin: Plugin) => plugin is StatReporterPlugin; export declare const emitMaxInstancesExceededWarning: (name: string, current: number) => void; export declare const kDisposed: unique symbol; export declare const kMaybeAlreadyDisposed: unique symbol; /** * API 骨架类,用于 `Consumer` | `Provider` | `Limiter` */ export declare abstract class SkeletonClass, PluginType.TraceLogging | PluginType.StatReporter>> { protected [kLogger]: Logger; protected readonly plugins: Plugins; protected [kDisposed]: boolean; private [kCollector]; private [kReportTimer]; private [kNeedAPICollector]; constructor(plugins: Plugins, options: Record, logger?: Logger); [kMaybeAlreadyDisposed](): void; /** * @description * dispose order: * ... [plugins] ... -> TraceLogging * * @param sync 是否同步释放 */ dispose(sync: boolean): void; setVerbosity(verbosity: LogVerbosity): void; enableTracing(): void; disableTracing(): void; protected [kDispatchLogger](): void; protected [kAPICollector](api: string, cost: number, err?: Error): void; private [kAPIReport]; } export {};