import type { ProfilerTag } from '../analysis/profiler-tag.interface.js'; import type { SourceCodeFrame } from '../utils/source-context.util.js'; import type { SummaryPrimitive } from '../storage/profile-summary.js'; export type LogLevel = 'log' | 'warn' | 'error' | 'debug' | 'verbose' | 'fatal'; export interface LogEntry { level: LogLevel; message: string; context?: string; data?: unknown; spanId?: string; timestamp: number; } export interface ExceptionEntry { name: string; message: string; code?: string; stack?: string; cause?: ExceptionEntry; frames?: SourceCodeFrame[]; details?: unknown; handled?: boolean; timestamp: number; } export interface GraphQLInfo { operationType: 'query' | 'mutation' | 'subscription'; operationName?: string; query?: string; variables?: Record; fieldName: string; } export declare const HTTP_ENTRYPOINT_TYPE = "http"; export interface ProfileEntrypoint { type: string; data: TData; } export interface HttpRequestData { method: string; url: string; headers: Record; query: Record; ip?: string; body?: unknown; cookies?: Record; session?: Record; graphql?: GraphQLInfo; } export interface ResponseStreamData { chunks: number; bytes: number; timeToFirstChunk: number; duration: number; interval?: number; aborted: boolean; contentType?: string; } export interface ResponseData { statusCode: number; headers: Record; body?: unknown; stream?: ResponseStreamData; } export interface PerformanceData { startTime: number; duration?: number; heapUsed: number; cpu?: { user: number; system: number; total: number; }; memory?: { heapUsedAfter: number; heapDelta: number; rss: number; rssDelta: number; external?: number; }; eventLoop?: { utilization: number; idle: number; active: number; }; gc?: { count: number; duration: number; }; } export interface RouteInfo { controller: string; handler: string; path: string; method: string; } export type TraceSpanKind = 'entrypoint' | 'phase' | 'http' | 'db' | 'cache' | 'graphql-field' | 'method' | 'custom' | (string & {}); export type TraceSpanStatus = 'ok' | 'error'; export type TraceSpanLane = 'trace' | 'lifecycle'; export interface TraceSpan { id: string; parentId?: string; kind: TraceSpanKind; label: string; startedAt: number; duration: number; status?: TraceSpanStatus; lane?: TraceSpanLane; source?: { collector: string; index?: number; tab?: string; }; tags?: ProfilerTag[]; meta?: Record; } export interface SecurityContext { isAuthenticated: boolean; user?: Record; roles?: string[]; jwtClaims?: Record; } export interface Profile { token: string; traceId: string; createdAt: number; version?: string; entrypoint: ProfileEntrypoint; response?: ResponseData; performance: PerformanceData; logs: LogEntry[]; exceptions: ExceptionEntry[]; collectors: Record; route?: RouteInfo; trace?: TraceSpan[]; security?: SecurityContext; tags?: ProfilerTag[]; attributes?: Record; }