/** * Unified Error System * Based on backend error mapper patterns */ /** * Canonical error types for the player SDK */ export type UnifiedErrorType = 'validation' | 'client' | 'server' | 'network' | 'media' | 'storage' | 'security' | 'ads' | 'unknown'; /** * Business context for errors - provides semantic meaning */ export type ErrorContext = 'unauthorized' | 'forbidden' | 'notFound' | 'sourceOffline' | 'sessionExpired' | 'geoRestricted' | 'deviceLimitReached' | 'subscriptionRequired' | 'mediaUnavailable' | 'manifestError' | 'fragmentError' | 'drmError' | 'bufferError' | 'storageError' | 'cryptoError' | 'networkTimeout' | 'networkUnavailable' | 'adBlockDetected' | 'adLoadFailed' | 'implementationError' | 'configurationError'; /** * Severity levels for error display */ export type ErrorSeverity = 'fatal' | 'recoverable' | 'warning'; /** * Retry strategy for recoverable errors */ export interface RetryStrategy { maxAttempts: number; delayMs: number; backoffMultiplier?: number; } /** * Unified error structure - all errors are mapped to this shape */ export interface UnifiedError { /** Canonical error type */ type: UnifiedErrorType; /** Business context */ context: ErrorContext; /** Human-readable message */ message: string; /** Error severity */ severity: ErrorSeverity; /** Whether this is a network-related issue */ isNetworkRelated: boolean; /** Whether this error can be retried */ isRetryable: boolean; /** Retry strategy if retryable */ retryStrategy?: RetryStrategy; /** Structured error details */ details?: unknown; /** Validation-specific details (field name -> error message) */ validationDetails?: Record; /** HTTP status code if applicable */ statusCode?: number; /** Original error for debugging */ originalError?: unknown; /** Timestamp when error occurred */ timestamp: number; /** Unique error ID for tracking */ errorId: string; } /** * UI action that can be taken in response to an error */ export interface ErrorAction { label: string; handler: () => void | Promise; isPrimary?: boolean; } /** * Custom error messages for specific contexts */ export interface CustomErrorMessages { title?: string; message?: string; suggestion?: string; } /** * Error display configuration */ export interface ErrorDisplayConfig { error: UnifiedError; title?: string; actions?: ErrorAction[]; dismissible?: boolean; autoHideDuration?: number; customMessages?: CustomErrorMessages; } /** * Custom error classes for domain-specific errors * Based on Dart backend error models */ /** * Base backend error class * Corresponds to backend_error.dart */ export declare class BackendError extends Error { status: number; details?: Record | undefined; constructor(message: string, status: number, details?: Record | undefined); } /** * Validation error (422) * Corresponds to validation_error.dart * Extends BackendError and adds validation-specific fields */ export declare class ValidationError extends BackendError { error?: string | undefined; validationDetails?: Record | undefined; constructor(message: string, status: number, error?: string | undefined, validationDetails?: Record | undefined); } /** * Ecto changeset error (422 with errors array) * Corresponds to ecto_changeset_error.dart */ export declare class EctoChangesetError extends BackendError { errors: Array>; constructor(message: string, status: number, errors: Array>, details?: Record); } /** * Server error (500) * Corresponds to server_error.dart */ export declare class ServerError extends BackendError { constructor(message: string, status: number, details?: Record); } /** * Client error (400) * Corresponds to client_error.dart */ export declare class ClientError extends BackendError { constructor(message: string, status: number, details?: Record); } export declare class NetworkError extends Error { code?: string | undefined; details?: unknown | undefined; constructor(message: string, code?: string | undefined, details?: unknown | undefined); } export declare class MediaError extends Error { mediaErrorType: string; fatal: boolean; details?: unknown | undefined; constructor(message: string, mediaErrorType: string, fatal: boolean, details?: unknown | undefined); } export declare class StorageError extends Error { details?: unknown | undefined; constructor(message: string, details?: unknown | undefined); } export declare class SecurityError extends Error { details?: unknown | undefined; constructor(message: string, details?: unknown | undefined); } export declare class AdsError extends Error { details?: unknown | undefined; constructor(message: string, details?: unknown | undefined); } //# sourceMappingURL=types.d.ts.map