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 };