export interface SpyClientOption {
    /**
     * 模块ID
     */
    pid: string;
    /**
     * 日志ID
     */
    lid?: string;
    /**
     * 全局抽样配置，默认是 1，取值从[0, 1]
     */
    sample?: number;
    /**
     * 是否校验发送字段符合规范，默认是 true
     */
    check?: boolean;
    /**
     * 日志服务器，默认是webb服务器，尾部需要加?
     */
    logServer?: string;
    /**
     * 本地日志cache对象，是指独立的spy-local-cache模块实例
     */
    localCache?: any;
}
export declare class Module {
    load?: () => void;
    leave?: () => void;
    destroy?: () => void;
}
export interface FIDMetric {
    fid: number;
}
export declare type FIDCB = (metric: FIDMetric) => void;
export interface LCPMetric {
    lcp: number;
}
export declare type LCPCB = (metric: LCPMetric) => void;
export declare enum ResType {
    JS = "js",
    CSS = "css",
    IMG = "img",
    FONT = "font"
}
export interface ResourceMetric {
    allSize: number;
    docSize: number;
    headerSize: number;
    jsNum: number;
    cssNum: number;
    imgNum: number;
    fontNum: number;
    jsSize: number;
    cssSize: number;
    imgSize: number;
    fontSize: number;
    allTransferSize: number;
    docTransferSize: number;
    jsTransferSize: number;
    cssTransferSize: number;
    imgTransferSize: number;
    fontTransferSize: number;
    jsDuration: number;
    cssDuration: number;
    imgDuration: number;
    fontDuration: number;
    jsCacheRate: number;
    cssCacheRate: number;
    imgCacheRate: number;
}
export interface ResourceHostMetric {
    [host: string]: {
        hostNum: number;
        hostSize: number;
        hostTransferSize: number;
        hostDuration: number;
        hostCacheRate: number;
    };
}
export declare type ResourceCB = (metric: ResourceMetric, hostMetric: ResourceHostMetric) => void;
export interface ResourceErrorInfo {
    msg: string;
    xpath: string;
    host: string;
    type: string;
    dur?: number;
}
export declare type ResourceErrorCB = (info: ResourceErrorInfo) => void;
export interface TimingMetric {
    dns: number;
    tcp: number;
    request: number;
    response: number;
    parseHtml: number;
    domReady: number;
    loadEventHandle: number;
    load: number;
    fp?: number;
    fcp?: number;
    t7FirstPaint?: number;
    t7FirstScreen?: number;
}
export declare type TimingCB = (metric: TimingMetric) => void;
export interface TTIMetric {
    tti: number;
}
export declare type TTICB = (metric: TTIMetric) => void;
export interface TTIOption {
    interval?: number;
    filterRequest?: (entry: PerformanceEntry) => boolean;
}
export interface LayoutShiftMetric {
    layoutShift: number;
}
export declare type LayoutShiftCB = (metric: LayoutShiftMetric) => void;
export interface MemoryMetric {
    usedJSHeapSize: number;
    totalJSHeapSize: number;
    jsHeapSizeLimit: number;
    usedJSHeapRate: number;
}
export declare type MemoryCB = (metric: MemoryMetric) => void;
export interface NavigatorInfoMetric {
    downlink?: number;
    effectiveType?: '2g' | '3g' | '4g' | 'slow-2g';
    rtt?: number;
    saveData?: boolean;
    deviceMemory?: number;
    hardwareConcurrency?: number;
}
export declare type NavigatorInfoCB = (metric: NavigatorInfoMetric) => void;
export interface FSPLongtaskMetric {
    fspLongtaskTime: number;
    fspTBT: number;
    fspTotalTime: number;
    fspLongtaskRate: number;
    fspLongtaskNum: number;
}
export declare type FSPLongtaskCB = (metric: FSPLongtaskMetric) => void;
export interface LCPLongtaskMetric {
    lcpLongtaskTime: number;
    lcpTBT: number;
    lcpTotalTime: number;
    lcpLongtaskRate: number;
    lcpLongtaskNum: number;
}
export declare type LCPLongtaskCB = (metric: LCPLongtaskMetric) => void;
export interface LoadLongtaskMetric {
    loadLongtaskTime: number;
    loadTBT: number;
    loadTotalTime: number;
    loadLongtaskRate: number;
    loadLongtaskNum: number;
}
export declare type LoadLongtaskCB = (metric: LoadLongtaskMetric) => void;
export interface PageLongtaskMetric {
    pageLongtaskTime: number;
    pageTBT: number;
    pageTotalTime: number;
    pageLongtaskRate: number;
    pageLongtaskNum: number;
    pageIframeLongtaskTime: number;
    pageIframeLongtaskRate: number;
    pageIframeLongtaskNum: number;
}
export declare type PageLongtaskCB = (metric: PageLongtaskMetric) => void;
export interface ResOption {
    ignorePaths?: string[];
    trigger?: 'load' | 'leave';
}
export interface BigImgOption {
    /**
     * 体积大于该阈值，就认为是大图，默认150，单位是kb
     */
    maxSize?: number;
    /**
     * 忽略指定path的资源
     */
    ignorePaths?: string[];
    /**
     * 触发时机，在load事件触发后，还是在用户离开页面后，收集出现的加载慢的资源。，默认是load
     */
    trigger?: 'load' | 'leave';
}
export interface HttpResOption {
    /**
     * 忽略指定path的资源
     */
    ignorePaths?: string[];
    /**
     * 触发时机，在load事件触发后，还是在用户离开页面后，收集出现的加载慢的资源。，默认是load
     */
    trigger?: 'load' | 'leave';
}
export interface SlowOption {
    /**
     * 加载时长大于该阈值，就认为是慢资源，默认1000，单位是ms
     */
    threshold?: number;
    /**
     * 忽略指定path的资源
     */
    ignorePaths?: string[];
    /**
     * 触发时机，在load事件触发后，还是在用户离开页面后，收集出现的加载慢的资源。，默认是load
     */
    trigger?: 'load' | 'leave';
}
