/// import { ImageMessage } from '@dytesdk/web-core'; import { RoomLeftState } from './dyte-client'; import { DesignTokens } from './ui-config/design-tokens'; export type Size = 'sm' | 'md' | 'lg' | 'xl'; export type ButtonVariant = 'button' | 'horizontal'; export type SidebarSection = 'chat' | 'polls' | 'participants' | 'plugins' | 'none'; export interface UserPreferences { mirrorVideo?: boolean; muteNotificationSounds?: boolean; autoScroll?: boolean; } export interface EmojiMetaData { name: string; emoji: string; } export interface States { meeting?: 'idle' | 'setup' | 'joined' | 'ended' | 'waiting'; page?: number; maxPeers?: number; activeMoreMenu?: boolean; activeSettings?: boolean; activeSidebar?: boolean; activeLeaveConfirmation?: boolean; activeStageConfirmation?: boolean; activeJoinStageConfirmation?: boolean; activeHostControlID?: string; activeFullscreen?: boolean; image?: ImageMessage; fullscreenImageID?: string; prefs?: UserPreferences; permissionGranted?: boolean; roomLeftState?: RoomLeftState; disconnectTimeout?: NodeJS.Timeout; designSystem?: DesignTokens; [state: string]: any; } export interface Notification { id: string; message: string; image?: string; /** Duration in milliseconds, don't pass this if you want a stagnant notification */ duration?: number; icon?: string; button?: { text: string; variant?: ButtonVariant; onClick: () => void; }; } export type NetworkError = 'disconnected' | 'poorConnection' | 'connected'; export interface PollObject { question: string; options: string[]; anonymous: boolean; hideVotes: boolean; } export interface PollOption { text: string; votes: { id: string; name: string; }[]; count: number; } export interface Poll { id: string; question: string; options: PollOption[]; anonymous: boolean; hideVotes: boolean; createdBy: string; createdByUserId: string; voted: string[]; }