@signalwire/js 4.0.0-dev-20260413184938 → 4.0.0-dev-20260416174405

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.cts CHANGED
@@ -262,7 +262,6 @@ declare abstract class Destroyable {
262
262
  protected subjects: Subject<unknown>[];
263
263
  protected _destroyed$: Subject<void>;
264
264
  private _observableCache?;
265
- private _change$;
266
265
  destroy(): void;
267
266
  protected cachedObservable<T>(key: string, factory: () => Observable<T>): Observable<T>;
268
267
  /**
@@ -292,7 +291,6 @@ declare abstract class Destroyable {
292
291
  protected createSubject<T>(): Subject<T>;
293
292
  protected createReplaySubject<T>(bufferSize?: number, windowTime?: number): ReplaySubject<T>;
294
293
  protected createBehaviorSubject<T>(initialValue: T): BehaviorSubject<T>;
295
- get $(): Observable<this>;
296
294
  /**
297
295
  * Observable that emits when the instance is destroyed
298
296
  */
@@ -667,6 +665,8 @@ interface GetSubscriberInfoResponse {
667
665
  }
668
666
  //#endregion
669
667
  //#region src/core/entities/Subscriber.d.ts
668
+ /** Subscriber online presence state. */
669
+ type SubscriberPresence = 'online' | 'offline' | 'busy';
670
670
  /**
671
671
  * Authenticated subscriber profile.
672
672
  *
@@ -757,6 +757,20 @@ interface CallDevicePhone {
757
757
  }
758
758
  /** Discriminated union of call device types (WebRTC, SIP, or phone). */
759
759
  type CallDevice = CallDeviceWebRTCOrSIP | CallDevicePhone;
760
+ /**
761
+ * Feature capability string that controls what actions a participant can perform.
762
+ *
763
+ * Capabilities are organized into categories:
764
+ * - **self.\*** — Actions the local participant can perform on themselves (mute, deaf, volume, position, meta).
765
+ * - **member.\*** — Actions that can be performed on other participants.
766
+ * - **layout.\*** — Layout management for the video canvas.
767
+ * - **digit.\*** — DTMF digit sending.
768
+ * - **vmuted.\*** — Visibility control for muted video participants.
769
+ * - **lock.\*** — Room lock/unlock control.
770
+ * - **device** / **screenshare** — Device and screen share capabilities.
771
+ * - **end** — Permission to end the call or room.
772
+ */
773
+ type Capability = 'self' | 'self.mute' | 'self.mute.audio' | 'self.mute.audio.on' | 'self.mute.audio.off' | 'self.mute.video' | 'self.mute.video.on' | 'self.mute.video.off' | 'self.deaf' | 'self.deaf.on' | 'self.deaf.off' | 'self.microphone' | 'self.microphone.volume.set' | 'self.microphone.sensitivity.set' | 'self.speaker' | 'self.speaker.volume.set' | 'self.position.set' | 'self.meta' | 'self.audioflags.set' | 'member' | 'member.mute' | 'member.mute.audio' | 'member.mute.audio.on' | 'member.mute.audio.off' | 'member.mute.video' | 'member.mute.video.on' | 'member.mute.video.off' | 'member.deaf' | 'member.deaf.on' | 'member.deaf.off' | 'member.microphone' | 'member.microphone.volume.set' | 'member.microphone.sensitivity.set' | 'member.speaker' | 'member.speaker.volume.set' | 'member.position.set' | 'member.meta' | 'member.audioflags.set' | 'layout' | 'layout.set' | 'digit' | 'digit.send' | 'vmuted' | 'vmuted.hide' | 'vmuted.hide.on' | 'vmuted.hide.off' | 'lock' | 'lock.on' | 'lock.off' | 'device' | 'screenshare' | 'end';
760
774
  /**
761
775
  * Position of a participant's video within the layout canvas.
762
776
  *
@@ -996,17 +1010,17 @@ declare class EntityCollection<T extends Entity = Entity> extends Destroyable im
996
1010
  private fetchController;
997
1011
  private update$;
998
1012
  private readonly onError?;
999
- loading$: rxjs0.BehaviorSubject<boolean>;
1000
- values$: ReplaySubject<T[]>;
1001
1013
  hasMore$: Observable<boolean>;
1002
1014
  private collectionData;
1003
1015
  private observablesRegistry;
1004
- private updateSubscription;
1005
1016
  private upsertData;
1017
+ private _loading$;
1018
+ private _values$;
1006
1019
  private _hasMore$;
1007
- private _destroy$;
1008
1020
  constructor(fetchController: FetchController<T>, update$: Observable<Partial<T>>, onError?: ((error: Error) => void) | undefined);
1021
+ get loading$(): Observable<boolean>;
1009
1022
  get loading(): boolean;
1023
+ get values$(): Observable<T[]>;
1010
1024
  get hasMore(): boolean;
1011
1025
  get updated$(): Observable<void>;
1012
1026
  get values(): T[];
@@ -1036,6 +1050,12 @@ declare class EntityCollectionTransformed<O extends Entity = Entity, T extends E
1036
1050
  destroy(): void;
1037
1051
  }
1038
1052
  //#endregion
1053
+ //#region src/core/entities/types/participant.types.d.ts
1054
+ /** Options for selecting a media device. */
1055
+ interface SelectDeviceOptions {
1056
+ savePreference?: boolean;
1057
+ }
1058
+ //#endregion
1039
1059
  //#region src/controllers/RTCStatsMonitor.d.ts
1040
1060
  interface NetworkIssue {
1041
1061
  type: 'no_inbound_audio' | 'no_inbound_video' | 'high_rtt' | 'high_packet_loss' | 'high_jitter' | 'ice_disconnected';
@@ -1557,12 +1577,6 @@ declare class SelfCapabilities extends Destroyable {
1557
1577
  get state(): CallCapabilitiesState;
1558
1578
  }
1559
1579
  //#endregion
1560
- //#region src/core/entities/types/participant.types.d.ts
1561
- /** Options for selecting a media device. */
1562
- interface SelectDeviceOptions {
1563
- savePreference?: boolean;
1564
- }
1565
- //#endregion
1566
1580
  //#region src/interfaces/DeviceController.d.ts
1567
1581
  /**
1568
1582
  * Interface for media device management.
@@ -1715,45 +1729,45 @@ declare class Participant extends Destroyable implements CallParticipant {
1715
1729
  /** @internal */
1716
1730
  upnext(data: Partial<ParticipantState>): void;
1717
1731
  /** Observable of the participant's display name. */
1718
- get name$(): Observable<string>;
1732
+ get name$(): Observable<string | undefined>;
1719
1733
  /** Observable of the participant type (e.g. `'member'`, `'screen'`). */
1720
- get type$(): Observable<string>;
1734
+ get type$(): Observable<string | undefined>;
1721
1735
  /** Observable indicating whether the participant has raised their hand. */
1722
- get handraised$(): Observable<boolean>;
1736
+ get handraised$(): Observable<boolean | undefined>;
1723
1737
  /** Observable indicating whether the participant is visible in the layout. */
1724
- get visible$(): Observable<boolean>;
1738
+ get visible$(): Observable<boolean | undefined>;
1725
1739
  /** Observable indicating whether the participant's audio is muted. */
1726
- get audioMuted$(): Observable<boolean>;
1740
+ get audioMuted$(): Observable<boolean | undefined>;
1727
1741
  /** Observable indicating whether the participant's video is muted. */
1728
- get videoMuted$(): Observable<boolean>;
1742
+ get videoMuted$(): Observable<boolean | undefined>;
1729
1743
  /** Observable indicating whether the participant is deafened. */
1730
- get deaf$(): Observable<boolean>;
1744
+ get deaf$(): Observable<boolean | undefined>;
1731
1745
  /** Observable of the participant's microphone input volume. */
1732
- get inputVolume$(): Observable<number>;
1746
+ get inputVolume$(): Observable<number | undefined>;
1733
1747
  /** Observable of the participant's speaker output volume. */
1734
- get outputVolume$(): Observable<number>;
1748
+ get outputVolume$(): Observable<number | undefined>;
1735
1749
  /** Observable of the microphone input sensitivity level. */
1736
- get inputSensitivity$(): Observable<number>;
1750
+ get inputSensitivity$(): Observable<number | undefined>;
1737
1751
  /** Observable indicating whether echo cancellation is enabled. */
1738
- get echoCancellation$(): Observable<boolean>;
1752
+ get echoCancellation$(): Observable<boolean | undefined>;
1739
1753
  /** Observable indicating whether auto-gain control is enabled. */
1740
- get autoGain$(): Observable<boolean>;
1754
+ get autoGain$(): Observable<boolean | undefined>;
1741
1755
  /** Observable indicating whether noise suppression is enabled. */
1742
- get noiseSuppression$(): Observable<boolean>;
1756
+ get noiseSuppression$(): Observable<boolean | undefined>;
1743
1757
  /** Observable indicating whether low-bitrate mode is active. */
1744
- get lowbitrate$(): Observable<boolean>;
1758
+ get lowbitrate$(): Observable<boolean | undefined>;
1745
1759
  /** Observable indicating whether noise reduction is active. */
1746
- get denoise$(): Observable<boolean>;
1760
+ get denoise$(): Observable<boolean | undefined>;
1747
1761
  /** Observable of custom metadata for this participant. */
1748
- get meta$(): Observable<Record<string, unknown>>;
1762
+ get meta$(): Observable<Record<string, unknown> | undefined>;
1749
1763
  /** Observable of the participant's subscriber ID. */
1750
- get subscriberId$(): Observable<string>;
1764
+ get subscriberId$(): Observable<string | undefined>;
1751
1765
  /** Observable of the participant's address ID. */
1752
- get addressId$(): Observable<string>;
1766
+ get addressId$(): Observable<string | undefined>;
1753
1767
  /** Observable of the server node ID for this participant. */
1754
- get nodeId$(): Observable<string>;
1768
+ get nodeId$(): Observable<string | undefined>;
1755
1769
  /** Observable indicating whether the participant is currently speaking. */
1756
- get isTalking$(): Observable<boolean>;
1770
+ get isTalking$(): Observable<boolean | undefined>;
1757
1771
  /** Whether the participant is currently speaking. */
1758
1772
  get isTalking(): boolean;
1759
1773
  /** Observable of the participant's layout position. */
@@ -1972,26 +1986,26 @@ declare const isSelfParticipant: (participant: Participant) => participant is Se
1972
1986
  */
1973
1987
  interface CallParticipant {
1974
1988
  readonly id: string;
1975
- readonly name$: Observable<string>;
1976
- readonly type$: Observable<string>;
1977
- readonly handraised$: Observable<boolean>;
1978
- readonly visible$: Observable<boolean>;
1979
- readonly audioMuted$: Observable<boolean>;
1980
- readonly videoMuted$: Observable<boolean>;
1981
- readonly deaf$: Observable<boolean>;
1982
- readonly inputVolume$: Observable<number>;
1983
- readonly outputVolume$: Observable<number>;
1984
- readonly inputSensitivity$: Observable<number>;
1985
- readonly echoCancellation$: Observable<boolean>;
1986
- readonly autoGain$: Observable<boolean>;
1987
- readonly noiseSuppression$: Observable<boolean>;
1988
- readonly lowbitrate$: Observable<boolean>;
1989
- readonly denoise$: Observable<boolean>;
1990
- readonly meta$: Observable<Record<string, unknown>>;
1991
- readonly subscriberId$: Observable<string>;
1992
- readonly addressId$: Observable<string>;
1993
- readonly nodeId$: Observable<string>;
1994
- readonly isTalking$: Observable<boolean>;
1989
+ readonly name$: Observable<string | undefined>;
1990
+ readonly type$: Observable<string | undefined>;
1991
+ readonly handraised$: Observable<boolean | undefined>;
1992
+ readonly visible$: Observable<boolean | undefined>;
1993
+ readonly audioMuted$: Observable<boolean | undefined>;
1994
+ readonly videoMuted$: Observable<boolean | undefined>;
1995
+ readonly deaf$: Observable<boolean | undefined>;
1996
+ readonly inputVolume$: Observable<number | undefined>;
1997
+ readonly outputVolume$: Observable<number | undefined>;
1998
+ readonly inputSensitivity$: Observable<number | undefined>;
1999
+ readonly echoCancellation$: Observable<boolean | undefined>;
2000
+ readonly autoGain$: Observable<boolean | undefined>;
2001
+ readonly noiseSuppression$: Observable<boolean | undefined>;
2002
+ readonly lowbitrate$: Observable<boolean | undefined>;
2003
+ readonly denoise$: Observable<boolean | undefined>;
2004
+ readonly meta$: Observable<Record<string, unknown> | undefined>;
2005
+ readonly subscriberId$: Observable<string | undefined>;
2006
+ readonly addressId$: Observable<string | undefined>;
2007
+ readonly nodeId$: Observable<string | undefined>;
2008
+ readonly isTalking$: Observable<boolean | undefined>;
1995
2009
  readonly position$: Observable<LayoutLayer | undefined>;
1996
2010
  readonly name: string | undefined;
1997
2011
  readonly type: string | undefined;
@@ -2041,17 +2055,34 @@ interface CallParticipant {
2041
2055
  * Extends CallParticipant with methods for controlling the local participant
2042
2056
  */
2043
2057
  interface CallSelfParticipant extends CallParticipant {
2044
- readonly screenShareStatus$: Observable<string>;
2045
- readonly screenShareStatus: string;
2058
+ readonly screenShareStatus$: Observable<ScreenShareStatus>;
2059
+ readonly screenShareStatus: ScreenShareStatus;
2046
2060
  readonly studioAudio$: Observable<boolean>;
2047
2061
  readonly studioAudio: boolean;
2048
2062
  enableStudioAudio(): Promise<void>;
2049
2063
  disableStudioAudio(): Promise<void>;
2050
2064
  startScreenShare(): Promise<void>;
2051
2065
  stopScreenShare(): Promise<void>;
2052
- selectAudioInputDevice(device: MediaDeviceInfo): void;
2053
- selectVideoInputDevice(device: MediaDeviceInfo): void;
2054
- selectAudioOutputDevice(device: MediaDeviceInfo): void;
2066
+ selectAudioInputDevice(device: MediaDeviceInfo, options?: SelectDeviceOptions): void;
2067
+ selectVideoInputDevice(device: MediaDeviceInfo, options?: SelectDeviceOptions): void;
2068
+ selectAudioOutputDevice(device: MediaDeviceInfo, options?: SelectDeviceOptions): void;
2069
+ addAdditionalDevice(options: MediaOptions): Promise<void>;
2070
+ removeAdditionalDevice(id: string): Promise<void>;
2071
+ addAudioInputDevice(options?: {
2072
+ constraints?: MediaTrackConstraints;
2073
+ stream?: MediaStream;
2074
+ }): Promise<void>;
2075
+ addVideoInputDevice(options?: {
2076
+ constraints?: MediaTrackConstraints;
2077
+ stream?: MediaStream;
2078
+ }): Promise<void>;
2079
+ addInputDevices(options?: MediaOptions): Promise<void>;
2080
+ setAudioInputDeviceConstraints(constraints: MediaTrackConstraints): Promise<void>;
2081
+ setVideoInputDeviceConstraints(constraints: MediaTrackConstraints): Promise<void>;
2082
+ setInputDevicesConstraints(constraints: {
2083
+ audio: MediaTrackConstraints;
2084
+ video: MediaTrackConstraints;
2085
+ }): Promise<void>;
2055
2086
  }
2056
2087
  /**
2057
2088
  * Minimal interface for a collection with pagination
@@ -2130,23 +2161,26 @@ interface CallState {
2130
2161
  * and control actions (hangup, mute, transfer, etc.).
2131
2162
  */
2132
2163
  interface Call extends CallState {
2133
- readonly capabilities$: Observable<string[]>;
2134
- readonly capabilities: string[];
2164
+ readonly capabilities$: Observable<Capability[]>;
2165
+ readonly capabilities: Capability[];
2135
2166
  readonly mediaDirections$: Observable<MediaDirections>;
2136
2167
  readonly mediaDirections: MediaDirections;
2137
2168
  readonly self$: Observable<CallSelfParticipant | null>;
2138
2169
  readonly self: CallSelfParticipant | null;
2139
2170
  readonly to?: string;
2140
- readonly direction: 'inbound' | 'outbound';
2171
+ readonly direction: CallDirection;
2141
2172
  readonly layouts$: Observable<string[]>;
2142
2173
  readonly layouts: string[];
2143
2174
  readonly layout$: Observable<string>;
2144
2175
  readonly layout?: string;
2145
2176
  readonly layoutLayers$: Observable<LayoutLayer[]>;
2146
2177
  readonly layoutLayers: LayoutLayer[];
2147
- readonly localStream$: Observable<MediaStream | null>;
2178
+ /** Observable that emits only non-null MediaStreams (waits until the stream exists). */
2179
+ readonly localStream$: Observable<MediaStream>;
2180
+ /** Sync getter — returns null before the stream is created. */
2148
2181
  readonly localStream: MediaStream | null;
2149
- readonly remoteStream$: Observable<MediaStream | null>;
2182
+ /** Observable that emits only non-null MediaStreams (waits until the stream exists). */
2183
+ readonly remoteStream$: Observable<MediaStream>;
2150
2184
  readonly remoteStream: MediaStream | null;
2151
2185
  readonly rtcPeerConnection: RTCPeerConnection | undefined;
2152
2186
  readonly errors$: Observable<CallError>;
@@ -2748,9 +2782,24 @@ interface SessionState extends ClientSession {
2748
2782
  * and `false` after disconnect.
2749
2783
  */
2750
2784
  readonly authenticated$: Observable<boolean>;
2785
+ /**
2786
+ * Current authentication state.
2787
+ * Returns `true` if the session is currently authenticated.
2788
+ */
2789
+ readonly authenticated: boolean;
2751
2790
  }
2752
2791
  //#endregion
2753
2792
  //#region src/managers/ClientSessionManager.d.ts
2793
+ /**
2794
+ * Discriminated union for session authentication state.
2795
+ * clientBound is tracked separately via _wasClientBound (sticky flag)
2796
+ * to avoid dual sources of truth.
2797
+ */
2798
+ type SessionAuthState = {
2799
+ kind: 'unauthenticated';
2800
+ } | {
2801
+ kind: 'authenticated';
2802
+ };
2754
2803
  declare class ClientSessionManager extends Destroyable implements SessionState {
2755
2804
  private readonly getCredential;
2756
2805
  private readonly transport;
@@ -2774,8 +2823,9 @@ declare class ClientSessionManager extends Destroyable implements SessionState {
2774
2823
  private _authorization$;
2775
2824
  private _errors$;
2776
2825
  private _directory?;
2777
- private _authenticated$;
2778
- private _clientBound;
2826
+ private _authState$;
2827
+ /** Sticky flag — once true, stays true for the session lifetime. */
2828
+ private _wasClientBound;
2779
2829
  private _subscriberInfo$;
2780
2830
  private _calls$;
2781
2831
  private _iceServers$;
@@ -2799,6 +2849,8 @@ declare class ClientSessionManager extends Destroyable implements SessionState {
2799
2849
  * @internal
2800
2850
  */
2801
2851
  get clientBound(): boolean;
2852
+ /** @internal Current auth state for debugging/testing. */
2853
+ get authState(): SessionAuthState;
2802
2854
  /**
2803
2855
  * Set the directory instance
2804
2856
  * Called by SignalWire after directory is created
@@ -3155,6 +3207,35 @@ declare class ClientSessionWrapper implements SessionState {
3155
3207
  get calls(): Call[];
3156
3208
  }
3157
3209
  //#endregion
3210
+ //#region src/utils/logger.d.ts
3211
+ /** Log level names supported by the SDK. */
3212
+ type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent';
3213
+ /**
3214
+ * Logger interface that consumers can implement to replace the built-in logger.
3215
+ * All methods accept variadic arguments matching the browser console API.
3216
+ */
3217
+ interface SDKLogger {
3218
+ error(...args: unknown[]): void;
3219
+ warn(...args: unknown[]): void;
3220
+ info(...args: unknown[]): void;
3221
+ debug(...args: unknown[]): void;
3222
+ trace(...args: unknown[]): void;
3223
+ }
3224
+ /** Debug options that control verbose SDK logging. */
3225
+ interface DebugOptions {
3226
+ /** Log all WebSocket send/recv traffic to the console. */
3227
+ logWsTraffic?: boolean;
3228
+ }
3229
+ /** Replace the built-in logger with a custom implementation. Pass `null` to restore defaults. */
3230
+ declare const setLogger: (logger: SDKLogger | null) => void;
3231
+ /** Configure debug options (e.g., `{ logWsTraffic: true }`). */
3232
+ declare const setDebugOptions: (options: DebugOptions | null) => void;
3233
+ /**
3234
+ * Set the log level for the built-in logger.
3235
+ * Has no effect when a custom logger is set via `setLogger()`.
3236
+ */
3237
+ declare const setLogLevel: (level: LogLevel) => void;
3238
+ //#endregion
3158
3239
  //#region src/clients/SignalWire.d.ts
3159
3240
  /** Options for constructing a {@link SignalWire}. */
3160
3241
  interface SignalWireOptions {
@@ -3189,6 +3270,23 @@ interface SignalWireOptions {
3189
3270
  webSocketConstructor?: WebSocketAdapter | NodeSocketAdapter;
3190
3271
  /** Custom WebRTC API provider */
3191
3272
  webRTCApiProvider?: WebRTCApiProvider;
3273
+ /**
3274
+ * Custom logger implementation. Must implement the {@link SDKLogger} interface.
3275
+ * Pass `null` to restore the built-in logger.
3276
+ *
3277
+ * **Note:** Logger configuration is global — setting it on one instance affects all instances.
3278
+ */
3279
+ logger?: SDKLogger | null;
3280
+ /**
3281
+ * Log level for the built-in logger.
3282
+ * Default: `'warn'`. Set to `'debug'` for verbose SDK output.
3283
+ * Has no effect when a custom `logger` is provided.
3284
+ *
3285
+ * **Note:** Logger configuration is global — setting it on one instance affects all instances.
3286
+ */
3287
+ logLevel?: LogLevel;
3288
+ /** Debug options for verbose SDK diagnostics (e.g., `{ logWsTraffic: true }`). */
3289
+ debug?: DebugOptions;
3192
3290
  }
3193
3291
  /** Options for {@link SignalWire.dial}. Extends {@link MediaOptions} with dial-specific settings. */
3194
3292
  interface DialOptions extends MediaOptions {
@@ -3257,6 +3355,12 @@ declare class SignalWire extends Destroyable implements DeviceController {
3257
3355
  */
3258
3356
  private resolveCredentials;
3259
3357
  private validateCredentials;
3358
+ /**
3359
+ * Schedules credential refresh with exponential backoff retry on failure.
3360
+ * On success, resets attempt counter and schedules the next refresh.
3361
+ * After exhausting retries, emits TokenRefreshError and disconnects.
3362
+ */
3363
+ private scheduleCredentialRefresh;
3260
3364
  /** Persist credential to localStorage when persistSession is enabled. */
3261
3365
  private persistCredential;
3262
3366
  private init;
@@ -3271,9 +3375,9 @@ declare class SignalWire extends Destroyable implements DeviceController {
3271
3375
  * unexpectedly (e.g. network change, server restart). Reconnection uses an
3272
3376
  * **exponential back-off** strategy:
3273
3377
  *
3274
- * - First retry after `reconnectDelayMin` (default **1 s**).
3378
+ * - First retry after `reconnectDelayMin` (default **0.1 s**).
3275
3379
  * - Each subsequent retry doubles the delay up to `reconnectDelayMax`
3276
- * (default **30 s**).
3380
+ * (default **3 s**).
3277
3381
  * - The delay resets to `reconnectDelayMin` once a connection succeeds.
3278
3382
  * - A per-attempt `connectionTimeout` (default **10 s**) aborts the
3279
3383
  * attempt and schedules the next retry if the server does not respond.
@@ -3837,7 +3941,7 @@ declare class CallEventsManager extends Destroyable {
3837
3941
  get raiseHandPriority$(): Observable<boolean>;
3838
3942
  get locked$(): Observable<boolean>;
3839
3943
  get meta$(): Observable<Record<string, unknown>>;
3840
- get capabilities$(): Observable<string[]>;
3944
+ get capabilities$(): Observable<Capability[]>;
3841
3945
  get layout$(): Observable<string>;
3842
3946
  get layouts$(): Observable<string[]>;
3843
3947
  get layoutLayers$(): Observable<LayoutLayer[]>;
@@ -3850,7 +3954,7 @@ declare class CallEventsManager extends Destroyable {
3850
3954
  get meta(): Record<string, unknown>;
3851
3955
  get layout(): string | undefined;
3852
3956
  get layouts(): string[];
3853
- get capabilities(): string[];
3957
+ get capabilities(): Capability[];
3854
3958
  isSessionEvent(id: string): boolean;
3855
3959
  protected initSubscriptions(): void;
3856
3960
  private updateParticipantPositions;
@@ -3981,7 +4085,7 @@ declare class WebRTCCall extends Destroyable implements CallManager {
3981
4085
  /** @internal Registers an additional call ID for event routing. */
3982
4086
  addCallId(callId: string): void;
3983
4087
  /** List of capabilities available in the current call. */
3984
- get capabilities(): string[];
4088
+ get capabilities(): Capability[];
3985
4089
  /** Current snapshot of all participants in the call. */
3986
4090
  get participants(): CallParticipant[];
3987
4091
  /** The local participant, or `null` if not yet joined. */
@@ -4044,7 +4148,7 @@ declare class WebRTCCall extends Destroyable implements CallManager {
4044
4148
  /** Observable of custom metadata associated with the call. */
4045
4149
  get meta$(): Observable<Record<string, unknown>>;
4046
4150
  /** Observable of the call's capability flags. */
4047
- get capabilities$(): Observable<string[]>;
4151
+ get capabilities$(): Observable<Capability[]>;
4048
4152
  /** Observable of the current layout name. */
4049
4153
  get layout$(): Observable<string>;
4050
4154
  /** Current call status. */
@@ -4293,5 +4397,5 @@ declare const version: string;
4293
4397
  */
4294
4398
  declare const ready: boolean;
4295
4399
  //#endregion
4296
- export { Address, type AddressHistory, type AudioConstraintsEvent, type AuthenticateContext, type Call, type CallAddress, type CallCapabilitiesState, CallCreateError, type CallDiagnosticSummary, type CallError, type CallErrorKind, type NetworkIssue as CallNetworkIssue, type NetworkIssue, type NetworkMetrics as CallNetworkMetrics, type NetworkMetrics, type CallOptions, type CallParticipant, type CallSelfParticipant, type CallState, type CallStatus, ClientPreferences, CollectionFetchError, type ConstraintFallbackEvent, type CredentialProvider, DPoPInitError, type DeviceController, type DeviceRecoveryEvent, DeviceTokenError, type DiagnosticEvent, type DialOptions, type Directory, type ExecuteMethod, InvalidCredentialsError, type JSONRPCErrorResponse, type JSONRPCRequest, type JSONRPCResponse, type JSONRPCSuccessResponse, type LayoutLayer, type MediaDirection, type MediaDirections, type MediaOptions, type MediaParamsEvent, MediaTrackError, type MemberCapabilities, MessageParseError, type NodeSocketAdapter, type OnOffCapability, OverconstrainedFallbackError, Participant, type PendingRPCOptions, type PermissionResult, type PlatformCapabilities, PreflightError, type PreflightOptions, type PreflightResult, type QualityLevel, RecoveryError, type RecoveryEvent, type RecoveryState, type ResilienceCallStatus, type SATClaims, type SDKCredential, SelfCapabilities, SelfParticipant, type SessionDiagnostics, type SessionState, SignalWire, type SignalWireOptions, StaticCredentialProvider, type Storage, type StoredDevicePreference, Subscriber, type TextMessage, TokenRefreshError, type TransferOptions, UnexpectedError, VertoPongError, type VideoPosition, type WebRTCApiProvider, WebRTCCall, type WebRTCMediaDevices, type WebSocketAdapter, embeddableCall, isSelfParticipant, ready, version };
4400
+ export { Address, type AddressHistory, type AudioConstraintsEvent, type AuthenticateContext, type Call, type CallAddress, type CallCapabilitiesState, CallCreateError, type CallDiagnosticSummary, type CallDirection, type CallError, type CallErrorKind, type NetworkIssue as CallNetworkIssue, type NetworkIssue, type NetworkMetrics as CallNetworkMetrics, type NetworkMetrics, type CallOptions, type CallParticipant, type CallSelfParticipant, type CallState, type CallStatus, type Capability, ClientPreferences, CollectionFetchError, type ConstraintFallbackEvent, type CredentialProvider, DPoPInitError, type DebugOptions, type DeviceController, type DeviceRecoveryEvent, DeviceTokenError, type DiagnosticEvent, type DialOptions, type Directory, type ExecuteMethod, InvalidCredentialsError, type JSONRPCErrorResponse, type JSONRPCRequest, type JSONRPCResponse, type JSONRPCSuccessResponse, type LayoutLayer, type LogLevel, type MediaDirection, type MediaDirections, type MediaOptions, type MediaParamsEvent, MediaTrackError, type MemberCapabilities, MessageParseError, type NodeSocketAdapter, type OnOffCapability, OverconstrainedFallbackError, Participant, type PendingRPCOptions, type PermissionResult, type PlatformCapabilities, PreflightError, type PreflightOptions, type PreflightResult, type QualityLevel, RecoveryError, type RecoveryEvent, type RecoveryState, type ResilienceCallStatus, type SATClaims, type SDKCredential, type SDKLogger, type ScreenShareStatus, type SelectDeviceOptions, SelfCapabilities, SelfParticipant, type SessionDiagnostics, type SessionState, SignalWire, type SignalWireOptions, StaticCredentialProvider, type Storage, type StoredDevicePreference, Subscriber, type SubscriberPresence, type TextMessage, TokenRefreshError, type TransferOptions, UnexpectedError, VertoPongError, type VideoPosition, type WebRTCApiProvider, WebRTCCall, type WebRTCMediaDevices, type WebSocketAdapter, embeddableCall, isSelfParticipant, ready, setDebugOptions, setLogLevel, setLogger, version };
4297
4401
  //# sourceMappingURL=index.d.cts.map