import { ReactHTMLElement } from 'react'; type SettingsPane = "theme" | "integrations" | "streaming" | "effects" | "notifications" | "advanced" | "media" | null; interface WherebyEmbedElementAttributes extends ReactHTMLElement { aec: string; agc: string; audio: string; audioDenoiser: string; autoHideSelfView: string; autoSpotlight: string; avatarUrl: string; background: string; bottomToolbar: string; breakout: string; callQualityMonitoring: string; cameraAccess: string; cameraEffect: string; chat: string; displayName: string; emptyRoomInvitation: string; emojiSkinTone: string; externalId: string; floatSelf: string; groups: string; help: string; hideLegend: string; lang: string; leaveButton: string; locking: string; localization: string; logo: string; lowData: string; metadata: string; minimal: string; moreButton: string; participantCount: string; people: string; pipButton: string; precallCeremony: string; precallReview: string; precallPermissionsHelpLink: string; precallCeremonyCanSkip: string; reactions: string; recording: string; room: string; roomIntegrations: string; settingsButton: string; screenshare: string; skipMediaPermissionPrompt: string; style: { [key: string]: string; }; subgridLabels: string; timer: string; title: string; toolbarDarkText: string; toolbarText: string; topToolbar: string; video: string; virtualBackgroundUrl: string; } interface PrecallCheckCompletedStepResult { status: "passed" | "failed"; } interface WherebyEmbedElementEventMap { ready: CustomEvent; knock: CustomEvent; cancel_knock: CustomEvent; participantupdate: CustomEvent<{ count: number; }>; join: CustomEvent; leave: CustomEvent<{ removed: boolean; }>; participant_join: CustomEvent<{ participant: { metadata: string | null; externalId: string | null; }; }>; participant_leave: CustomEvent<{ participant: { metadata: string | null; externalId: string | null; }; }>; meeting_end: CustomEvent; microphone_toggle: CustomEvent<{ enabled: boolean; }>; camera_toggle: CustomEvent<{ enabled: boolean; }>; chat_toggle: CustomEvent<{ open: boolean; }>; people_toggle: CustomEvent<{ open: boolean; }>; pip_toggle: CustomEvent<{ open: boolean; }>; grant_device_permission: CustomEvent<{ granted: boolean; }>; deny_device_permission: CustomEvent<{ denied: boolean; }>; screenshare_toggle: CustomEvent<{ enabled: boolean; }>; streaming_status_change: CustomEvent<{ status: string; }>; recording_status_change: CustomEvent<{ status: "starting" | "started" | "stopped"; }>; transcription_status_change: CustomEvent<{ status: "starting" | "started" | "stopped"; }>; connection_status_change: CustomEvent<{ status: "stable" | "unstable"; }>; precall_check_skipped: CustomEvent; precall_check_completed: CustomEvent<{ status: "passed" | "failed"; steps: { camera: PrecallCheckCompletedStepResult; speaker: PrecallCheckCompletedStepResult; microphone: PrecallCheckCompletedStepResult; bandwidth: PrecallCheckCompletedStepResult; }; }>; } interface WherebyEmbedElementCommands { endMeeting: () => void; knock: () => void; cancelKnock: () => void; leaveRoom: () => void; openSettings: (settingsPane?: SettingsPane) => void; startRecording: () => void; stopRecording: () => void; startStreaming: () => void; stopStreaming: () => void; startLiveTranscription: () => void; stopLiveTranscription: () => void; toggleBreakout: (enabled?: boolean) => void; toggleCamera: (enabled?: boolean) => void; toggleMicrophone: (enabled?: boolean) => void; togglePeople: (enabled?: boolean) => void; toggleScreenshare: (enabled?: boolean) => void; toggleChat: (enabled?: boolean) => void; } interface WherebyEmbedElement extends HTMLIFrameElement, WherebyEmbedElementCommands { addEventListener(type: K, listener: (this: HTMLIFrameElement, ev: (WherebyEmbedElementEventMap & HTMLElementEventMap)[K]) => void, options?: boolean | AddEventListenerOptions | undefined): void; } declare global { namespace React.JSX { interface IntrinsicElements { ["whereby-embed"]: Partial; } } } declare const _default: { sdkVersion: string; }; export { _default as default }; export type { WherebyEmbedElement };