import { Configuration, ErrorContext, HttpContext, InternalMonitoring, Omit, ResourceKind } from '@keitoaino/datadog-browser-core'; import { LifeCycle } from './lifeCycle'; import { ActionContext, ViewContext } from './parentContexts'; import { RumGlobal } from './rum.entry'; import { RumSession } from './rumSession'; import { UserActionMeasures, UserActionType } from './userActionCollection'; import { ViewLoadingType, ViewMeasures } from './viewCollection'; export interface PerformancePaintTiming extends PerformanceEntry { entryType: 'paint'; name: 'first-paint' | 'first-contentful-paint'; startTime: number; duration: 0; } export declare type PerformanceLongTaskTiming = PerformanceEntry; export declare enum RumEventCategory { USER_ACTION = "user_action", ERROR = "error", LONG_TASK = "long_task", VIEW = "view", RESOURCE = "resource" } interface PerformanceResourceDetailsElement { duration: number; start: number; } export interface PerformanceResourceDetails { redirect?: PerformanceResourceDetailsElement; dns?: PerformanceResourceDetailsElement; connect?: PerformanceResourceDetailsElement; ssl?: PerformanceResourceDetailsElement; firstByte: PerformanceResourceDetailsElement; download: PerformanceResourceDetailsElement; } export interface RumResourceEvent { date: number; duration: number; evt: { category: RumEventCategory.RESOURCE; }; http: { performance?: PerformanceResourceDetails; method?: string; statusCode?: number; url: string; }; network: { bytesWritten?: number; }; resource: { kind: ResourceKind; }; traceId?: string | number; } export interface RumErrorEvent { date: number; http?: HttpContext; error: ErrorContext; evt: { category: RumEventCategory.ERROR; }; message: string; } export interface RumViewEvent { date: number; duration: number; evt: { category: RumEventCategory.VIEW; }; rum: { documentVersion: number; }; view: { loadingTime?: number; loadingType: ViewLoadingType; measures: ViewMeasures; }; } export interface RumLongTaskEvent { date: number; duration: number; evt: { category: RumEventCategory.LONG_TASK; }; } export interface RumUserActionEvent { date?: number; duration?: number; evt: { category: RumEventCategory.USER_ACTION; name: string; }; userAction: { id?: string; type: UserActionType; measures?: UserActionMeasures; }; } interface RumContext { applicationId: string; date: number; session: { type: string; }; view: { referrer: string; }; } export declare type RawRumEvent = RumErrorEvent | RumResourceEvent | RumViewEvent | RumLongTaskEvent | RumUserActionEvent; export declare type RumEvent = RumErrorEvent & ActionContext & ViewContext & RumContext | RumResourceEvent & ActionContext & ViewContext & RumContext | RumViewEvent & ViewContext & RumContext | RumLongTaskEvent & ActionContext & ViewContext & RumContext | RumUserActionEvent & ViewContext & RumContext; export declare function startRum(applicationId: string, location: Location, lifeCycle: LifeCycle, configuration: Configuration, session: RumSession, internalMonitoring: InternalMonitoring): { globalApi: Omit; stop: () => void; }; export declare function handleResourceEntry(configuration: Configuration, entry: PerformanceResourceTiming, handler: (startTime: number, event: RumResourceEvent) => void, lifeCycle: LifeCycle): void; export {};