/** * Session replay — rrweb-style session recordings for debugging + UX research. * * GET /session-replay/projects/:projectId/sessions * GET /session-replay/projects/:projectId/sessions/stats * GET /session-replay/projects/:projectId/sessions/:sessionId * DELETE /session-replay/projects/:projectId/sessions/:sessionId * * The full session payload (`get()`) decompresses every rrweb event into a * plain array — it can be large (MB+) for long sessions. The list endpoint * returns summary rows only; fetch the full recording only for playback. */ import type { Client } from './client.js'; export interface SessionMarker { readonly type: string; readonly timestamp: number; readonly payload?: Readonly>; } export interface SessionReplaySummary { readonly id: string; readonly sessionId: string; readonly userId: string | null; readonly url: string | null; readonly userAgent: string | null; readonly screenWidth: number | null; readonly screenHeight: number | null; readonly devicePixelRatio: number | null; readonly timezone: string | null; readonly language: string | null; readonly duration: number | null; readonly eventCount: number; readonly bytesStored: number; readonly hasErrors: boolean; readonly errorIds: readonly string[]; readonly hasRageClicks: boolean; readonly hasDeadClicks: boolean; readonly rageClickCount: number; readonly deadClickCount: number; readonly networkRequestCount: number; readonly consoleLogCount: number; readonly markers: readonly SessionMarker[]; readonly isComplete: boolean; readonly startedAt: string; readonly endedAt: string | null; readonly createdAt: string; readonly updatedAt: string; } export interface RageClick { readonly timestamp: number; readonly element: string; readonly selector?: string; readonly clickCount: number; readonly duration?: number; readonly x?: number; readonly y?: number; } export interface DeadClick { readonly timestamp: number; readonly element: string; readonly selector?: string; readonly expectedAction?: string; readonly x?: number; readonly y?: number; readonly waitTime?: number; } export interface NetworkRequest { readonly timestamp: number; readonly method: string; readonly url: string; readonly status: number; readonly duration: number; } export interface ConsoleLog { readonly timestamp: number; readonly level: 'log' | 'info' | 'warn' | 'error'; readonly message: string; readonly stack?: string; } export interface SessionReplayFull extends SessionReplaySummary { readonly events: readonly Readonly>[]; readonly rageClicks: readonly RageClick[]; readonly deadClicks: readonly DeadClick[]; readonly networkRequests: readonly NetworkRequest[]; readonly consoleLogs: readonly ConsoleLog[]; } export interface ListOptions { readonly limit?: number; readonly offset?: number; readonly hasErrors?: boolean; readonly hasRageClicks?: boolean; readonly hasDeadClicks?: boolean; readonly userId?: string; readonly startDate?: string; readonly endDate?: string; } export interface ListResult { readonly sessions: readonly SessionReplaySummary[]; readonly total: number; readonly hasMore: boolean; } export declare const list: (client: Client, projectId: string, options?: ListOptions) => Promise; export interface SessionStats { readonly totalSessions: number; readonly sessionsThisMonth: number; readonly sessionsThisWeek: number; readonly sessionsWithErrors: number; readonly sessionsWithRageClicks: number; readonly totalStorageBytes: number; } export declare const stats: (client: Client, projectId: string) => Promise; export declare const get: (client: Client, projectId: string, sessionId: string) => Promise; declare const _delete: (client: Client, projectId: string, sessionId: string) => Promise<{ success: boolean; }>; export { _delete as delete }; //# sourceMappingURL=sessionReplay.d.ts.map