export interface DesignSystemVariable { name: string; value: string; type: string; unit: string | null; comment: string; } export interface ComponentProperty { value: string; type: string; unit: string | null; comment: string; } export interface LinkedElement { htmlTag: string; attributes: Record; } export interface StrataNode { tag: string; role?: string; styles?: Record; stateStyles?: Record>; textContent?: string; children?: StrataNode[]; className?: string; } export interface DesignSystemComponent { nodes?: StrataNode[]; props?: Record; displayName?: string; properties?: Record; linkedElement?: LinkedElement; textContent?: string; children?: Record | null; } export interface DesignSystemData { variables: Record; components: Record; } export interface Project { id: string; name: string; color: string; createdAt: string; updatedAt: string; status: string; } export interface SyncConfig { url: string; enableRealtime: boolean; pollInterval?: number; projectId?: string; syncToken?: string; projectToken?: string; corsProxy?: string; mode?: 'production' | 'non-production'; customApiUrl?: string; environment?: 'local' | 'staging' | 'production'; } export type SyncEventType = 'connected' | 'disconnected' | 'synced' | 'error' | 'variables-updated' | 'components-updated'; export interface SyncEvent { type: SyncEventType; timestamp: Date; data?: any; error?: Error; } export type ComponentLookupErrorCode = 'AMBIGUOUS_COMPONENT_NAME' | 'COMPONENT_NOT_FOUND'; export interface ComponentLookupErrorDetail { type: 'component-lookup-error'; timestamp: Date; errorCode: ComponentLookupErrorCode; requestedName: string; normalizedName: string; matches?: string[]; }