@ai-matrx/meet 0.7.3 → 0.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -121,6 +121,12 @@ interface MeetParticipant {
121
121
  readonly screenSharing: boolean;
122
122
  readonly speaking: boolean;
123
123
  readonly handRaised: boolean;
124
+ /**
125
+ * When the hand went up (epoch ms), or null. The HAND QUEUE is ordered by it —
126
+ * first raised, first called on (Meet wave 2). Optional so a roster built by a
127
+ * host before 0.8 still type-checks.
128
+ */
129
+ readonly handRaisedAt?: number | null | undefined;
124
130
  readonly quality: ConnectionQuality;
125
131
  readonly joinedAt: string;
126
132
  /**
@@ -881,7 +887,33 @@ interface RoomChatMessage {
881
887
  readonly displayName: string;
882
888
  readonly text: string;
883
889
  readonly at: string;
890
+ /**
891
+ * Set for a PRIVATE message: the one identity it was addressed to (from the
892
+ * sender's side) or this participant (from the receiver's). Private messages
893
+ * travel the data plane only and are never saved (Meet wave 2).
894
+ */
895
+ readonly to?: ParticipantIdentity | null | undefined;
896
+ /** True once the server has SAVED it — a message everyone sees, late joiners too. */
897
+ readonly saved?: boolean | undefined;
898
+ /** A send the server refused, with its sentence. The message stays visible, marked. */
899
+ readonly failed?: string | undefined;
900
+ }
901
+ /**
902
+ * A HOST ACTED ON *ME* (Meet wave 2) — the server's own `matrx.meet.moderation`
903
+ * packet, addressed to this participant. Rendered once, dismissible, in words.
904
+ */
905
+ interface ModerationNotice {
906
+ readonly kind: "muted" | "ask-unmute" | "removed" | "role";
907
+ readonly text: string;
908
+ readonly at: number;
909
+ }
910
+ /** What this participant chose for their own media. Remembered per browser. */
911
+ interface MediaEffects {
912
+ readonly noiseSuppression: boolean;
913
+ readonly background: "none" | "blur" | "image";
914
+ readonly backgroundImage: string | null;
884
915
  }
916
+ declare const DEFAULT_EFFECTS: MediaEffects;
885
917
  interface RoomReaction {
886
918
  readonly id: string;
887
919
  readonly identity: ParticipantIdentity;
@@ -941,7 +973,29 @@ interface MeetSnapshot {
941
973
  */
942
974
  readonly recordingId: string | null;
943
975
  readonly chat: readonly RoomChatMessage[];
976
+ /** Whether the SAVED chat has been read for this meeting (late joiners see history). */
977
+ readonly chatLoaded: boolean;
978
+ /** Why the saved chat could not be read on join, in words — or null. */
979
+ readonly chatHistoryError: string | null;
944
980
  readonly reactions: readonly RoomReaction[];
981
+ /**
982
+ * The participant a HOST spotlighted for everyone, from the room's metadata
983
+ * (server-set, delivered on join). A local pin outranks it on this screen only.
984
+ */
985
+ readonly spotlight: ParticipantIdentity | null;
986
+ /** The last thing a host did to THIS participant, in words. Dismissible. */
987
+ readonly moderationNotice: ModerationNotice | null;
988
+ /**
989
+ * The server's answer to the last host action THIS participant took ("Muted 3
990
+ * people", or the refusal). One place, so whichever surface acted — a tile's
991
+ * menu, the People panel, More options — the sentence survives the menu closing.
992
+ */
993
+ readonly actionNotice: {
994
+ readonly text: string;
995
+ readonly failed: boolean;
996
+ readonly at: number;
997
+ } | null;
998
+ readonly effects: MediaEffects;
945
999
  /**
946
1000
  * Captions AND durable rows, reconciled into one list (D16). A record
947
1001
  * replaces the caption it supersedes; a caption never overwrites a record.
@@ -989,8 +1043,18 @@ interface MeetStore {
989
1043
  setParticipants(participants: readonly MeetParticipant[]): void;
990
1044
  setSpeaking(identities: readonly ParticipantIdentity[]): void;
991
1045
  setQuality(identity: ParticipantIdentity, quality: ConnectionQuality): void;
992
- setHand(identity: ParticipantIdentity, raised: boolean): void;
1046
+ /**
1047
+ * Raise or lower a hand. `at` is WHEN it went up, which is the hand queue's
1048
+ * order — first raised, first called on, the way Meet orders it.
1049
+ */
1050
+ setHand(identity: ParticipantIdentity, raised: boolean, at?: number): void;
993
1051
  addChat(message: RoomChatMessage): void;
1052
+ /** The saved chat, read once per join. Merged with anything that arrived live. */
1053
+ loadChat(messages: readonly RoomChatMessage[]): void;
1054
+ /** Replace a pending message (by id) with what the server saved, or mark it failed. */
1055
+ settleChat(localId: string, next: RoomChatMessage | {
1056
+ failed: string;
1057
+ }): void;
994
1058
  addReaction(reaction: RoomReaction): void;
995
1059
  /** Drops reactions past their TTL. Called by the UI's animation frame. */
996
1060
  expireReactions(now: number): void;
@@ -1648,6 +1712,18 @@ declare const ROOM_EVENTS: {
1648
1712
  * host recorded (MRI-C8).
1649
1713
  */
1650
1714
  readonly recording: "matrx.meet.recording";
1715
+ /**
1716
+ * A chat message to everyone was SAVED (Meet wave 2). Payload
1717
+ * `{ message: { id, meeting_id, sender_identity, sender_name, body, created_at } }`.
1718
+ */
1719
+ readonly chat: "matrx.meet.chat";
1720
+ /**
1721
+ * A host or co-host acted (Meet wave 2). Payload `{ meeting_id, kind, … }`:
1722
+ * `muted {source, by}` · `ask-unmute {by}` · `removed {by}` — addressed to the
1723
+ * person concerned; `lower-hands {identities: [...] | "*"}` · `role {identity,
1724
+ * role}` — to everyone.
1725
+ */
1726
+ readonly moderation: "matrx.meet.moderation";
1651
1727
  };
1652
1728
  type RoomEventTopic = (typeof ROOM_EVENTS)[keyof typeof ROOM_EVENTS];
1653
1729
  declare function isRoomEventTopic(topic: string): boolean;
@@ -1889,6 +1965,11 @@ interface StageArgs {
1889
1965
  readonly layout: StageLayout;
1890
1966
  readonly pinned: ParticipantIdentity | null;
1891
1967
  readonly activeSpeakers: readonly ParticipantIdentity[];
1968
+ /**
1969
+ * The participant a HOST spotlighted for everyone (Meet wave 2). A local pin
1970
+ * outranks it on this screen; a screen share outranks both.
1971
+ */
1972
+ readonly spotlight?: ParticipantIdentity | null | undefined;
1892
1973
  /** How many tiles this viewport can honestly render. Default 12. */
1893
1974
  readonly pageSize?: number;
1894
1975
  readonly page?: number;
@@ -1989,6 +2070,29 @@ interface RoomDriverHandlers {
1989
2070
  transcription(event: DriverTranscription): void;
1990
2071
  /** The room ended for this client. `reason` is shown to the user verbatim. */
1991
2072
  disconnected(reason: string | null): void;
2073
+ /**
2074
+ * The ROOM's metadata — set only by the server (`UpdateRoomMetadata`), and
2075
+ * delivered to every joiner ON JOIN, which is why the spotlight rides it: a
2076
+ * data packet reaches only the people already in the room. Called once after
2077
+ * connect and on every change. Optional so an older host driver still works.
2078
+ */
2079
+ roomMetadata?(metadata: string): void;
2080
+ }
2081
+ /** A camera background effect. `image` replaces the background with `imageUrl`. */
2082
+ type VideoEffect = {
2083
+ readonly kind: "none";
2084
+ } | {
2085
+ readonly kind: "blur";
2086
+ readonly radius?: number;
2087
+ } | {
2088
+ readonly kind: "image";
2089
+ readonly imageUrl: string;
2090
+ };
2091
+ /** Microphone processing the browser applies before anything is sent. */
2092
+ interface AudioProcessing {
2093
+ readonly noiseSuppression: boolean;
2094
+ readonly echoCancellation: boolean;
2095
+ readonly autoGainControl: boolean;
1992
2096
  }
1993
2097
  interface MeetRoomDriver {
1994
2098
  connect(serverUrl: string, token: string): Promise<void>;
@@ -1996,8 +2100,23 @@ interface MeetRoomDriver {
1996
2100
  setMicrophoneEnabled(enabled: boolean): Promise<void>;
1997
2101
  setCameraEnabled(enabled: boolean): Promise<void>;
1998
2102
  setScreenShareEnabled(enabled: boolean): Promise<void>;
1999
- /** Reliable, topic-addressed data. The in-room control plane. */
2000
- publishData(topic: string, payload: string): Promise<void>;
2103
+ /**
2104
+ * Reliable, topic-addressed data. The in-room control plane. `to` addresses
2105
+ * named identities only (a private chat message); absent = everyone.
2106
+ */
2107
+ publishData(topic: string, payload: string, to?: readonly string[]): Promise<void>;
2108
+ /**
2109
+ * Apply microphone processing to the live track and to every future one.
2110
+ * Optional: a driver without it makes the control ABSENT, never dead.
2111
+ */
2112
+ setAudioProcessing?(processing: AudioProcessing): Promise<void>;
2113
+ /**
2114
+ * Apply a background effect to the live camera and to every future one.
2115
+ * Rejects with a sentence when this browser cannot run it.
2116
+ */
2117
+ setVideoEffect?(effect: VideoEffect): Promise<void>;
2118
+ /** Whether this browser can run background effects at all. */
2119
+ supportsVideoEffects?(): boolean;
2001
2120
  /**
2002
2121
  * Attach a participant's track to a media element. Returns the detach
2003
2122
  * function — returning it (rather than exposing `detach`) is what makes a
@@ -2015,7 +2134,6 @@ declare const DATA_TOPICS: {
2015
2134
  readonly hand: "mx.hand";
2016
2135
  readonly reaction: "mx.reaction";
2017
2136
  readonly chat: "mx.chat";
2018
- readonly hostAction: "mx.host";
2019
2137
  };
2020
2138
  /**
2021
2139
  * 🚨 `mx.ai.note` and `mx.ai.transcript` WERE declared here and emitted by
@@ -2428,6 +2546,15 @@ declare const MEET_ROUTES: {
2428
2546
  readonly meetingAnnounce: "/api/v1/meet/meetings/{meeting_id}/announce";
2429
2547
  /** Put a one-off meeting on the caller's own Google Calendar (gated by the server). */
2430
2548
  readonly meetingGoogleCalendar: "/api/v1/meet/meetings/{meeting_id}/google-calendar";
2549
+ /**
2550
+ * Meet wave 2: EVERY in-meeting host power (mute, stop video, mute all, ask to
2551
+ * unmute, spotlight, lower hands, co-host, hand over, rename, remove, report).
2552
+ * Decided by the server from the meeting itself; a guest's pass rides
2553
+ * `x-meet-room-token`.
2554
+ */
2555
+ readonly moderate: "/api/v1/meet/moderate";
2556
+ /** Meet wave 2: the SAVED chat — `POST` sends to everyone, `GET ?meeting_id=` reads history. */
2557
+ readonly chat: "/api/v1/meet/chat";
2431
2558
  };
2432
2559
  /** A `MEET_ROUTES` template with its `{meeting_id}` filled in, URL-encoded. */
2433
2560
  declare function meetingPath(template: string, meetingId: string): string;
@@ -2488,6 +2615,15 @@ interface RoomEngineOptions {
2488
2615
  /** Fired when the local participant leaves for any reason, including kicked. */
2489
2616
  onLeft?: ((reason: string | null) => void) | undefined;
2490
2617
  now?: (() => number) | undefined;
2618
+ /** Remembered noise suppression / background choice (Meet wave 2). */
2619
+ effectsStorage?: EffectsStorage | undefined;
2620
+ /**
2621
+ * The device the person PICKED for each kind (the pre-join pickers, the
2622
+ * settings panel). Applied before any track is created — through 0.7.x the
2623
+ * pickers stored a choice nothing ever read, so every join used the browser
2624
+ * default whatever the screen said.
2625
+ */
2626
+ resolveDevice?: ((kind: "audioinput" | "videoinput" | "audiooutput") => string | null) | undefined;
2491
2627
  }
2492
2628
  interface RoomEngine {
2493
2629
  join(request: JoinRequest): Promise<void>;
@@ -2508,31 +2644,33 @@ interface RoomEngine {
2508
2644
  setScreenShareEnabled(enabled: boolean): Promise<void>;
2509
2645
  raiseHand(raised: boolean): Promise<void>;
2510
2646
  react(emoji: string): Promise<void>;
2511
- sendChat(text: string): Promise<void>;
2512
- /** Host-only in effect: the server ignores an unauthorized host action. */
2513
- publishHostAction(action: HostAction): Promise<void>;
2647
+ /**
2648
+ * A PRIVATE message to one person (Meet wave 2). Data plane only, addressed
2649
+ * to that identity, NEVER saved — see `core/chat.ts` for the saved,
2650
+ * everyone-chat, which goes through the server.
2651
+ */
2652
+ sendPrivateChat(to: ParticipantIdentity, text: string): Promise<void>;
2653
+ /**
2654
+ * Change this participant's own media processing — noise suppression and the
2655
+ * camera background — on the live tracks, and remember it in this browser.
2656
+ * A refused effect is a diagnostic and a revert, never a lost camera.
2657
+ */
2658
+ setEffects(next: Partial<MediaEffects>): Promise<void>;
2659
+ /** Whether this browser can run a background effect at all (absent, never dead). */
2660
+ supportsVideoEffects(): boolean;
2661
+ /** Choose the speaker (audio output) for this meeting. */
2662
+ switchDevice(kind: "audioinput" | "videoinput" | "audiooutput", deviceId: string): Promise<void>;
2514
2663
  pin(identity: ParticipantIdentity | null): void;
2515
2664
  setLayout(layout: StageLayout): void;
2516
2665
  attach(identity: ParticipantIdentity, kind: "camera" | "microphone" | "screen", element: HTMLMediaElement): () => void;
2517
2666
  token(): RoomToken | null;
2518
2667
  dispose(): Promise<void>;
2519
2668
  }
2520
- type HostAction = {
2521
- readonly kind: "mute";
2522
- readonly identity: ParticipantIdentity;
2523
- } | {
2524
- readonly kind: "request-unmute";
2525
- readonly identity: ParticipantIdentity;
2526
- } | {
2527
- readonly kind: "remove";
2528
- readonly identity: ParticipantIdentity;
2529
- } | {
2530
- readonly kind: "spotlight";
2531
- readonly identity: ParticipantIdentity | null;
2532
- } | {
2533
- readonly kind: "lock";
2534
- readonly locked: boolean;
2535
- };
2669
+ /** Where this browser keeps a participant's media choices. */
2670
+ interface EffectsStorage {
2671
+ load(): MediaEffects;
2672
+ save(effects: MediaEffects): void;
2673
+ }
2536
2674
  /**
2537
2675
  * 🚨 THE SERVER'S WORD, ON TWO CARRIERS (MRI-A11, feedback `7418ef78`).
2538
2676
  *
@@ -2560,6 +2698,63 @@ declare function createRoomEngine(options: RoomEngineOptions): RoomEngine;
2560
2698
  declare function canModerate(participant: MeetParticipant | undefined): boolean;
2561
2699
  declare function hostUserIds(participants: readonly MeetParticipant[]): readonly UserId[];
2562
2700
 
2701
+ /**
2702
+ * A PARTICIPANT'S OWN MEDIA CHOICES, REMEMBERED (Meet wave 2).
2703
+ *
2704
+ * Noise suppression and the camera background are personal and per device —
2705
+ * Zoom and Meet both remember them — so they live in this browser, never on a
2706
+ * server. Blocked storage means the defaults (suppression on, no background),
2707
+ * never a failed join.
2708
+ */
2709
+
2710
+ declare function createWebEffectsStorage(key?: string): EffectsStorage;
2711
+
2712
+ /**
2713
+ * THE IN-ROOM SERVER CALLS (Meet wave 2) — host moderation and the SAVED chat.
2714
+ *
2715
+ * 🚨 **Why these are server calls and not data packets.** Through 0.7.x a host's
2716
+ * "Mute" and "Remove" were published on the room's data plane (`mx.host`) and
2717
+ * nothing anywhere listened: the buttons did nothing. A client cannot be the
2718
+ * authority on host power, and a guest cannot write the database. So both go to
2719
+ * aidream (`POST /v1/meet/moderate`, `POST|GET /v1/meet/chat`), which decides the
2720
+ * actor's role from the meeting itself, performs the act through LiveKit's server
2721
+ * API, writes what is durable, and tells the room on its own `matrx.meet.*` topic.
2722
+ *
2723
+ * A guest proves who they are with the room pass this server signed for them, in
2724
+ * `x-meet-room-token` — a header, never a URL.
2725
+ */
2726
+
2727
+ /** Every host power the server performs. One vocabulary with `services/meet/moderation.py`. */
2728
+ type ModerationAction = "mute" | "stop_video" | "stop_screen" | "mute_all" | "ask_unmute" | "ask_all_unmute" | "spotlight" | "lower_hand" | "lower_all_hands" | "make_cohost" | "revoke_cohost" | "transfer_host" | "rename" | "remove" | "report";
2729
+ declare const MODERATION_ACTIONS: readonly ModerationAction[];
2730
+ interface ModerationRequest {
2731
+ readonly action: ModerationAction;
2732
+ readonly identity?: ParticipantIdentity | null | undefined;
2733
+ readonly name?: string | undefined;
2734
+ readonly reason?: string | undefined;
2735
+ }
2736
+ interface ModerationResult {
2737
+ readonly action: ModerationAction;
2738
+ readonly affected: readonly string[];
2739
+ /** The server's sentence for the actor. */
2740
+ readonly message: string;
2741
+ }
2742
+ interface InRoomClient {
2743
+ moderate(request: ModerationRequest): Promise<ModerationResult>;
2744
+ /** Send a message to EVERYONE. Saved; shows at once as pending, then as saved. */
2745
+ sendChat(text: string): Promise<void>;
2746
+ /** Read the saved chat once per join, so a late joiner sees what was said. */
2747
+ loadChat(): Promise<void>;
2748
+ }
2749
+ interface InRoomClientOptions {
2750
+ api: MeetApi;
2751
+ store: MeetStore;
2752
+ /** The room pass for THIS meeting, or null (a signed-in member needs none). */
2753
+ resolveRoomToken: () => string | null;
2754
+ now?: (() => number) | undefined;
2755
+ }
2756
+ declare function createInRoomClient(options: InRoomClientOptions): InRoomClient;
2757
+
2563
2758
  /**
2564
2759
  * THE MEETING RECORD — what a meeting IS once the room is gone (MRI-D2).
2565
2760
  *
@@ -2754,4 +2949,4 @@ declare function setGuestRecordAccess(args: {
2754
2949
  /** What a guest is told when the level shares nothing. Rendered, never hidden. */
2755
2950
  declare const GUEST_RECORD_NOT_SHARED: Readonly<Record<"recording" | "transcript" | "notes" | "attendance", string>>;
2756
2951
 
2757
- export { type AccessTokenSource, type AdmissionState, type AnnounceResult, type ApplyRoomEventArgs, type AskArgs, CALL_INVITE_KIND, CALL_INVITE_VERSION, CONSENT_NOTICE_ATTRIBUTE, type CallCenter, type CallCenterOptions, type CallId, type CallInvite, type CallInviteHandlerOptions, type CallInvitePayload, type CallMode, type CallState, type CallablePerson, type ConnectionQuality, type CreateCallInviteInput, type CreateMeetingInput, DATA_TOPICS, DEFAULT_PAGE_SIZE, type DataTopic, type DeviceKind, type DeviceManager, type DeviceManagerOptions, type DeviceSnapshot, type DeviceStorage, type DriverConnectionState, type DriverParticipant, type DriverTrackKind, type DriverTranscription, END_MEETING_NOT_SERVED, type EndMeetingResult, FILE_SESSION_PATH, GUEST_RECORD_ACCESS_CHOICES, GUEST_RECORD_ACCESS_LEVELS, GUEST_RECORD_ACCESS_METADATA_KEY, GUEST_RECORD_NOT_SHARED, type GuestRecordAccess, type GuestRecordAccessResolution, type GuestRecordAccessSetting, type HostAction, IDLE_MEDIA, IDLE_TRACK, type InviteeInput, type InviteeRole, type JoinRequest, type JsonObject, type JsonValue, LISTEN_ONLY_NOTICE, type LiveKitDriverOptions, type LobbyEntry, type LocalMediaState, type LocalTrackState, MEETING_INVITE_KIND, MEETING_INVITE_VERSION, MEET_ANSWER_CONTEXT_EVENT, MEET_ANSWER_EVENTS, MEET_EVENTS, MEET_ROUTES, MEET_SCHEMA, type MediaDevicesLike, type MediaUnavailable, type MeetAi, type MeetAiAnswer, type MeetAiOptions, type MeetAnswerCoverage, type MeetApi, type MeetApiOptions, type MeetApiRequest, type MeetDevice, MeetError, type MeetErrorCode, type MeetEvent, type MeetFileMedia, type MeetGrants, type MeetIdentity, type MeetParticipant, type MeetRepository, type MeetRoomDriver, type MeetSnapshot, type MeetStore, type MeetingAttendee, type MeetingChanges, type MeetingId, type MeetingInviteHandlerOptions, type MeetingInvitePayload, type MeetingInvitee, type MeetingKind, type MeetingNote, type MeetingNoteKind, type MeetingOccurrence, type MeetingRecord, type MeetingRecordBundle, type MeetingRecordRestriction, type MeetingSession, type MeetingSessionOptions, type MeetingSettings, NOTE_TAKER_IDENTITY_PREFIX, NOTE_TAKER_METADATA_KEY, NO_GRANTS, type NameBook, type NoteTakerDispatch, type NoteTakerRefusal, type NoteTakerState, type NoteTakerStatus, ORGANIZATION_HEADER, type OccurrenceOverride, type OccurrenceState, type OrganizationId, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, type ParticipantIdentity, type ParticipantRole, REACTION_TTL_MS, REFUSED_ABSENCE, ROLE_RANK, ROOM_EVENTS, ROOM_EVENT_PREFIX, ROOM_TOKEN_HEADER, RPCS, type RecordingController, type RecordingControllerOptions, type RecordingPolicy, type RecordingRecord, type RecordingState, type RepositoryOptions, type RoomChatMessage, type RoomDriverFactory, type RoomDriverHandlers, type RoomEngine, type RoomEngineOptions, type RoomEventOutcome, type RoomEventTopic, type RoomName, type RoomPhase, type RoomReaction, type RoomToken, type RoomTokenStorage, type RsvpAnswer, type RsvpInvitation, type RsvpState, type ScheduleMeetingInput, type Stage, type StageArgs, type StageLayout, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, type TokenClient, type TokenClientOptions, type TokenRequest, type TranscriptBlock, type TranscriptSegment, type TranscriptSource, type UpcomingOccurrence, type UserId, type WrapUpAnnouncement, absenceSentence, announceMeeting, applyRoomEvent, asCallId, asMeetingId, asOrganizationId, asParticipantIdentity, asRoomName, asUserId, callInviteAction, callInviteText, callStateLabel, canModerate, canModerateParticipant, canTransition, captionSegment, changesPatch, computeStage, countLabel, createCallCenter, createCallInviteHandler, createDeviceManager, createLiveKitDriver, createMeetAi, createMeetApi, createMeetRepository, createMeetStore, createMeetingInviteHandler, createMeetingSession, createMemoryDeviceStorage, createRecordingController, createRoomEngine, createTokenClient, createWebDeviceStorage, createWebRoomTokenStorage, displayNameFor, fileDownloadPath, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, invalidResponse, isGuest, isGuestIdentity, isHostRole, isListenOnly, isNoteTaker, isRealName, isRoomEventTopic, learnName, learnNames, listenOnlyNotice, loadGuestMeetingRecord, loadMeetingRecord, mapConnectionState, mapQuality, meetingInviteAction, meetingLink, meetingPath, meetingSlug, meetingTopic, meetingWhen, mergeCaption, mergeRecord, normalizeDeviceError, normalizeMeetError, normalizeSpoken, noteTakerIdentity, noteTakerLabel, noteTakerParticipant, noteTakerStatus, orderParticipants, parseRoomToken, participantSummary, playableRecordingFileId, projectInvitee, projectNote, projectOccurrence, projectOverride, projectParticipant, projectRsvpInvitation, projectSegment, projectUpcoming, pushMeetingToGoogleCalendar, readServerRefusal, readableTranscript, recordingLabel, recordingNotice, roleOf, roomTopic, setGuestRecordAccess, settingsPatch, snapshotParticipant, unavailableFrom, userTopic, wasRefused };
2952
+ export { type AccessTokenSource, type AdmissionState, type AnnounceResult, type ApplyRoomEventArgs, type AskArgs, type AudioProcessing, CALL_INVITE_KIND, CALL_INVITE_VERSION, CONSENT_NOTICE_ATTRIBUTE, type CallCenter, type CallCenterOptions, type CallId, type CallInvite, type CallInviteHandlerOptions, type CallInvitePayload, type CallMode, type CallState, type CallablePerson, type ConnectionQuality, type CreateCallInviteInput, type CreateMeetingInput, DATA_TOPICS, DEFAULT_EFFECTS, DEFAULT_PAGE_SIZE, type DataTopic, type DeviceKind, type DeviceManager, type DeviceManagerOptions, type DeviceSnapshot, type DeviceStorage, type DriverConnectionState, type DriverParticipant, type DriverTrackKind, type DriverTranscription, END_MEETING_NOT_SERVED, type EffectsStorage, type EndMeetingResult, FILE_SESSION_PATH, GUEST_RECORD_ACCESS_CHOICES, GUEST_RECORD_ACCESS_LEVELS, GUEST_RECORD_ACCESS_METADATA_KEY, GUEST_RECORD_NOT_SHARED, type GuestRecordAccess, type GuestRecordAccessResolution, type GuestRecordAccessSetting, IDLE_MEDIA, IDLE_TRACK, type InRoomClient, type InRoomClientOptions, type InviteeInput, type InviteeRole, type JoinRequest, type JsonObject, type JsonValue, LISTEN_ONLY_NOTICE, type LiveKitDriverOptions, type LobbyEntry, type LocalMediaState, type LocalTrackState, MEETING_INVITE_KIND, MEETING_INVITE_VERSION, MEET_ANSWER_CONTEXT_EVENT, MEET_ANSWER_EVENTS, MEET_EVENTS, MEET_ROUTES, MEET_SCHEMA, MODERATION_ACTIONS, type MediaDevicesLike, type MediaEffects, type MediaUnavailable, type MeetAi, type MeetAiAnswer, type MeetAiOptions, type MeetAnswerCoverage, type MeetApi, type MeetApiOptions, type MeetApiRequest, type MeetDevice, MeetError, type MeetErrorCode, type MeetEvent, type MeetFileMedia, type MeetGrants, type MeetIdentity, type MeetParticipant, type MeetRepository, type MeetRoomDriver, type MeetSnapshot, type MeetStore, type MeetingAttendee, type MeetingChanges, type MeetingId, type MeetingInviteHandlerOptions, type MeetingInvitePayload, type MeetingInvitee, type MeetingKind, type MeetingNote, type MeetingNoteKind, type MeetingOccurrence, type MeetingRecord, type MeetingRecordBundle, type MeetingRecordRestriction, type MeetingSession, type MeetingSessionOptions, type MeetingSettings, type ModerationAction, type ModerationNotice, type ModerationRequest, type ModerationResult, NOTE_TAKER_IDENTITY_PREFIX, NOTE_TAKER_METADATA_KEY, NO_GRANTS, type NameBook, type NoteTakerDispatch, type NoteTakerRefusal, type NoteTakerState, type NoteTakerStatus, ORGANIZATION_HEADER, type OccurrenceOverride, type OccurrenceState, type OrganizationId, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, type ParticipantIdentity, type ParticipantRole, REACTION_TTL_MS, REFUSED_ABSENCE, ROLE_RANK, ROOM_EVENTS, ROOM_EVENT_PREFIX, ROOM_TOKEN_HEADER, RPCS, type RecordingController, type RecordingControllerOptions, type RecordingPolicy, type RecordingRecord, type RecordingState, type RepositoryOptions, type RoomChatMessage, type RoomDriverFactory, type RoomDriverHandlers, type RoomEngine, type RoomEngineOptions, type RoomEventOutcome, type RoomEventTopic, type RoomName, type RoomPhase, type RoomReaction, type RoomToken, type RoomTokenStorage, type RsvpAnswer, type RsvpInvitation, type RsvpState, type ScheduleMeetingInput, type Stage, type StageArgs, type StageLayout, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, type TokenClient, type TokenClientOptions, type TokenRequest, type TranscriptBlock, type TranscriptSegment, type TranscriptSource, type UpcomingOccurrence, type UserId, type VideoEffect, type WrapUpAnnouncement, absenceSentence, announceMeeting, applyRoomEvent, asCallId, asMeetingId, asOrganizationId, asParticipantIdentity, asRoomName, asUserId, callInviteAction, callInviteText, callStateLabel, canModerate, canModerateParticipant, canTransition, captionSegment, changesPatch, computeStage, countLabel, createCallCenter, createCallInviteHandler, createDeviceManager, createInRoomClient, createLiveKitDriver, createMeetAi, createMeetApi, createMeetRepository, createMeetStore, createMeetingInviteHandler, createMeetingSession, createMemoryDeviceStorage, createRecordingController, createRoomEngine, createTokenClient, createWebDeviceStorage, createWebEffectsStorage, createWebRoomTokenStorage, displayNameFor, fileDownloadPath, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, invalidResponse, isGuest, isGuestIdentity, isHostRole, isListenOnly, isNoteTaker, isRealName, isRoomEventTopic, learnName, learnNames, listenOnlyNotice, loadGuestMeetingRecord, loadMeetingRecord, mapConnectionState, mapQuality, meetingInviteAction, meetingLink, meetingPath, meetingSlug, meetingTopic, meetingWhen, mergeCaption, mergeRecord, normalizeDeviceError, normalizeMeetError, normalizeSpoken, noteTakerIdentity, noteTakerLabel, noteTakerParticipant, noteTakerStatus, orderParticipants, parseRoomToken, participantSummary, playableRecordingFileId, projectInvitee, projectNote, projectOccurrence, projectOverride, projectParticipant, projectRsvpInvitation, projectSegment, projectUpcoming, pushMeetingToGoogleCalendar, readServerRefusal, readableTranscript, recordingLabel, recordingNotice, roleOf, roomTopic, setGuestRecordAccess, settingsPatch, snapshotParticipant, unavailableFrom, userTopic, wasRefused };