import { ImageMessage } from '@cloudflare/realtimekit'; import { RoomLeftState } from './rtk-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; activeJoinStageConfirmation?: boolean; activeFullscreen?: boolean; activeHostControlID?: string | 'none'; initialOrientation?: 'portrait' | 'landscape'; image?: ImageMessage; fullscreenImageID?: string | number | ''; isEditing?: boolean; editingMessageId?: string | number | null; editingContent?: string | null; editingType?: 'text' | 'image' | 'file' | null; prefs?: UserPreferences; permissionGranted?: boolean; roomLeftState?: RoomLeftState; disconnectTimeout?: NodeJS.Timeout; designSystem?: DesignTokens; lastSeenChatCount?: number; lastSeenPollCount?: number; sidebar?: SidebarSection; activeBreakoutRoomsManager?: { active: boolean; destinationMeetingId?: string; }; activeBreakoutConfirmation?: { type: 'start' | 'close' | 'update'; confirmed?: boolean; }; } 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[]; } /** * Descriptor a host app passes as a plugin's `component` (`ClientPluginConfig.component`). * * The host builds the `src` (including any search params), keeps the object * reference, and passes it through. `RtkPluginMain` loads `src` in a WebView. */ export interface PluginIframe { src: string; allow?: string; title?: string; sandbox?: string; style?: string; } /** Lightweight meeting descriptor. `participants` contains participant IDs only. For full participant objects use `ConnectedMeetingState`. */ export interface ConnectedMeeting { id: string; title: string; participants: string[]; isMainRoom?: boolean; } export interface ConnectedMeetingParticipant { id: string; customParticipantId: string; presetId?: string; displayName?: string; displayPictureUrl?: string; } type ConnectedMeetingRoom = { id: string; title: string; participants: ConnectedMeetingParticipant[]; }; export interface ConnectedMeetingState { parentMeeting: ConnectedMeetingRoom; meetings: ConnectedMeetingRoom[]; } export {}; //# sourceMappingURL=props.d.ts.map