export interface NativeFrameTiming { frameId: number; startTimestamp: number; endTimestamp: number; durationMs: number; dropped: boolean; targetTimestamp?: number; actualPresentationTimestamp?: number; } export interface NativeLongTask { startTimestamp: number; durationMs: number; name?: string; category?: string; source: 'native' | 'webview'; functionName?: string; file?: string; line?: number; column?: number; } export interface NativeDOMSignal { type: 'layout' | 'style_recalc' | 'dom_mutation'; timestamp: number; durationMs?: number; affectedNodes?: number; selector?: string; } export interface NativeTraceMetadata { bundleId?: string; appVersion?: string; osVersion?: string; deviceModel?: string; screenSize?: { width: number; height: number; }; scale?: number; timestamp: string; fpsTarget: number; url?: string; scenario?: string; sdkVersion?: string; sampled?: boolean; samplingRate?: number; } export interface NativeTraceFormat { version: string; traceId: string; name: string; durationMs: number; frames: NativeFrameTiming[]; longTasks: NativeLongTask[]; domSignals: NativeDOMSignal[]; metadata: NativeTraceMetadata; } export interface NativeTraceValidationResult { valid: boolean; errors: string[]; warnings: string[]; } export declare function validateNativeTrace(trace: unknown): NativeTraceValidationResult; export declare function isNativeTraceFormat(obj: unknown): obj is NativeTraceFormat; export declare function parseNativeTrace(json: string): NativeTraceFormat;