@signalwire/js 4.0.0-dev-20260515133934 → 4.0.0-rc.1

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
@@ -134,8 +134,25 @@ interface AuthenticateContext {
134
134
  * - Setting `expiry_at` when the credential has a known expiration so the SDK can schedule refresh.
135
135
  * - Handling errors and never leaking sensitive data through error messages.
136
136
  *
137
- * The SDK owns the credential lifecycle: it calls `authenticate` once during initialization
138
- * and, if `refresh` is provided and `expiry_at` is set, schedules automatic refresh before expiry.
137
+ * ## Refresh precedence
138
+ *
139
+ * The SDK selects exactly one refresh mechanism per session, evaluated at connect
140
+ * time (and re-evaluated on reconnect):
141
+ *
142
+ * | `refresh` provided | SAT carries `sat:refresh` scope | Active mechanism |
143
+ * | ------------------ | -------------------------------- | ------------------------------------ |
144
+ * | yes | yes | Client Bound SAT (DPoP, internal) |
145
+ * | yes | no | Developer-provided `refresh()` |
146
+ * | no | yes | Client Bound SAT (DPoP, internal) |
147
+ * | no | no | None — session ends at `expiry_at` |
148
+ *
149
+ * When the SDK falls back to the developer-provided `refresh()` because the SAT
150
+ * lacked `sat:refresh` scope, a `credential_refresh_fallback` event is emitted on
151
+ * `SignalWire.warnings$` so application code can observe the transition.
152
+ *
153
+ * Mint a SAT via `POST /api/fabric/subscribers/tokens` with `fingerprint` and
154
+ * `scope: ["sat:refresh"]` (both currently optional on that endpoint) to enable
155
+ * the Client Bound SAT path; otherwise provide `refresh()` here.
139
156
  */
140
157
  interface CredentialProvider {
141
158
  /**
@@ -146,6 +163,8 @@ interface CredentialProvider {
146
163
  * - Reject (throw) on failure — this will cause client initialization to fail.
147
164
  * - When `context.fingerprint` is provided, forward it to the server-side token
148
165
  * endpoint with `scope: "sat:refresh"` to enable automatic token refresh.
166
+ * Ignoring `context.fingerprint` causes the SDK to fall back to `refresh()`
167
+ * (if provided) or end the session at expiry.
149
168
  *
150
169
  * SDK behavior:
151
170
  * - Awaits this method before establishing the WebSocket connection.
@@ -160,14 +179,12 @@ interface CredentialProvider {
160
179
  * - Reject (throw) if refresh is not possible — the SDK will stop the refresh schedule.
161
180
  *
162
181
  * SDK behavior:
163
- * - Only called when `expiry_at` was set on the previous credential.
182
+ * - Only called when `expiry_at` was set on the previous credential AND the
183
+ * SAT does not carry `sat:refresh` scope (otherwise the SDK refreshes
184
+ * internally via Client Bound SAT). See the precedence table above.
164
185
  * - Scheduled automatically before expiry; implementors do not need to manage timing.
165
186
  * - On rejection, the refresh schedule stops and the session continues with the
166
187
  * current credentials until they expire.
167
- * - When not provided and the SAT includes a `sat:refresh` scope, the SDK
168
- * automatically refreshes via Client Bound SAT (DPoP) without developer intervention.
169
- * - When not provided and no refresh scope is present, the SDK uses the initial
170
- * credentials for the entire session lifetime.
171
188
  */
172
189
  refresh?: () => Promise<SDKCredential>;
173
190
  }
@@ -795,7 +812,7 @@ interface Member {
795
812
  member_id: string;
796
813
  call_id: string;
797
814
  name: string;
798
- type: 'member' | 'screen';
815
+ type: 'member' | 'screen' | 'device' | (string & {});
799
816
  parent_id?: string;
800
817
  requested_position?: string;
801
818
  handraised: boolean;
@@ -803,17 +820,17 @@ interface Member {
803
820
  audio_muted: boolean;
804
821
  video_muted: boolean;
805
822
  deaf: boolean;
806
- input_volume: number;
807
- output_volume: number;
808
- input_sensitivity: number;
823
+ input_volume?: number;
824
+ output_volume?: number;
825
+ input_sensitivity?: number;
809
826
  echo_cancellation: boolean;
810
827
  auto_gain: boolean;
811
828
  noise_suppression: boolean;
812
829
  lowbitrate: boolean;
813
830
  denoise: boolean;
814
- talking: boolean;
815
- isAudience: boolean;
816
- meta: Record<string, unknown>;
831
+ talking?: boolean;
832
+ isAudience?: boolean;
833
+ meta?: Record<string, unknown>;
817
834
  subscriber_id: string;
818
835
  address_id: string;
819
836
  updated?: string[];
@@ -935,6 +952,15 @@ interface RoomUpdatedPayload {
935
952
  room_id: string;
936
953
  room_session_id: string;
937
954
  }
955
+ /**
956
+ * Describes the peer (remote) call referenced from a call.state event.
957
+ *
958
+ * Mirrors the backend (relay.c) `peer` shape.
959
+ */
960
+ interface CallStateRelatedCall {
961
+ call_id?: string;
962
+ node_id?: string;
963
+ }
938
964
  interface CallStatePayload {
939
965
  call_id: string;
940
966
  node_id: string;
@@ -942,10 +968,19 @@ interface CallStatePayload {
942
968
  call_state: SignalingCallStates;
943
969
  direction: CallDirection;
944
970
  device: CallDevice;
945
- start_time: number;
946
- answer_time: number;
947
- end_time: number;
971
+ /**
972
+ * Epoch timestamps for the call lifecycle. Optional because pre-answer
973
+ * states (e.g. `created`, `ringing`) do not have an `answer_time`/`end_time`
974
+ * and the backend reports them as `0` or omits them.
975
+ */
976
+ start_time?: number;
977
+ answer_time?: number;
978
+ end_time?: number;
948
979
  room_session_id: string;
980
+ /** The peer (remote) call this call is connected to, if any. */
981
+ peer?: CallStateRelatedCall;
982
+ /** Application-defined tag associated with the call. */
983
+ tag?: string;
949
984
  }
950
985
  interface CallPlayPayload {
951
986
  control_id: string;
@@ -1491,6 +1526,8 @@ interface MemberCapabilities {
1491
1526
  readonly meta: boolean;
1492
1527
  readonly remove: boolean;
1493
1528
  readonly audioFlags: boolean;
1529
+ readonly denoise: boolean;
1530
+ readonly lowbitrate: boolean;
1494
1531
  }
1495
1532
  /**
1496
1533
  * Call-level capabilities state
@@ -1844,6 +1881,8 @@ declare class Participant extends Destroyable implements CallParticipant {
1844
1881
  get addressId(): string | undefined;
1845
1882
  /** Server node ID for this participant, or `undefined` if not available. */
1846
1883
  get nodeId(): string | undefined;
1884
+ /** Call ID for this participant's leg, or `undefined` if not available. */
1885
+ get callId(): string | undefined;
1847
1886
  /** @internal */
1848
1887
  get value(): Partial<Member>;
1849
1888
  /** Toggles the deafened state (mutes/unmutes incoming audio). */
@@ -1868,6 +1907,7 @@ declare class Participant extends Destroyable implements CallParticipant {
1868
1907
  toggleAudioInputAutoGain(): Promise<void>;
1869
1908
  /** Toggles noise suppression on the audio input. */
1870
1909
  toggleNoiseSuppression(): Promise<void>;
1910
+ /** Toggles low-bitrate mode for this participant's media. */
1871
1911
  toggleLowbitrate(): Promise<void>;
1872
1912
  /**
1873
1913
  * Adjusts the **conference-only** microphone energy gate / sensitivity level
@@ -1908,6 +1948,14 @@ declare class Participant extends Destroyable implements CallParticipant {
1908
1948
  setAudioOutputVolume(value: number): Promise<void>;
1909
1949
  /**
1910
1950
  * Sets the participant's position in the video layout.
1951
+ *
1952
+ * Requires the `member.position` capability. The gateway keys positions by the
1953
+ * **target member's own** `call_id`/`node_id` (see issue #19400 and the legacy
1954
+ * `setPositions` implementation), so this sends the participant's own call
1955
+ * context — matching {@link Participant.remove}. A resolved promise does not
1956
+ * guarantee a visible change: the backend silently returns `200` (no-op) for
1957
+ * non-conference targets.
1958
+ *
1911
1959
  * @param value - The {@link VideoPosition} to assign (e.g. `'auto'`, `'reserved-0'`).
1912
1960
  */
1913
1961
  setPosition(value: VideoPosition): Promise<void>;
@@ -2081,6 +2129,7 @@ interface CallParticipant {
2081
2129
  readonly userId: string | undefined;
2082
2130
  readonly addressId: string | undefined;
2083
2131
  readonly nodeId: string | undefined;
2132
+ readonly callId: string | undefined;
2084
2133
  readonly isTalking: boolean;
2085
2134
  readonly position: LayoutLayer | undefined;
2086
2135
  readonly isAudience: boolean;
@@ -3095,7 +3144,34 @@ declare class ClientSessionManager extends Destroyable implements SessionState {
3095
3144
  private get authentication();
3096
3145
  connect(): Promise<void>;
3097
3146
  private handleAuthenticationError;
3147
+ /**
3148
+ * Clear the resume state (authorization_state + protocol) only.
3149
+ *
3150
+ * This is the stale-auth-state recovery helper used by handleAuthError:
3151
+ * the server rejected a reconnect, so the resume state is discarded and a
3152
+ * fresh connect follows. Attach records are deliberately preserved — the
3153
+ * session lives on through the reconnect and reattachCalls() needs the
3154
+ * stored call references afterwards. Do NOT add detachAll() here.
3155
+ *
3156
+ * For public teardown (disconnect/destroy), use {@link teardownSessionState}
3157
+ * instead, which clears the attach records as well.
3158
+ */
3098
3159
  cleanupStoredConnectionParams(): Promise<void>;
3160
+ /**
3161
+ * Public-teardown helper for disconnect()/destroy(). Clears the resume
3162
+ * state (authorization_state + protocol) AND the attach records as one
3163
+ * atomic unit.
3164
+ *
3165
+ * The two stores are coupled: the backend only honors attach records
3166
+ * within the session identified by the resume state, so ending the
3167
+ * session must clear both. Clearing one without the other strands records
3168
+ * no future session can honor (disconnect) or revives a session the
3169
+ * developer explicitly ended (destroy).
3170
+ *
3171
+ * Distinct from {@link cleanupStoredConnectionParams}, which keeps the
3172
+ * attach records for the stale-auth-state recovery path.
3173
+ */
3174
+ teardownSessionState(): Promise<void>;
3099
3175
  protected updateAuthState(authorization_state: string): Promise<void>;
3100
3176
  reauthenticate(token: string, dpopToken?: string, options?: {
3101
3177
  clientBound?: boolean;
@@ -3280,6 +3356,60 @@ declare class ClientSessionWrapper implements SessionState {
3280
3356
  get calls(): Call[];
3281
3357
  }
3282
3358
  //#endregion
3359
+ //#region src/core/types/warnings.types.d.ts
3360
+ /**
3361
+ * Non-fatal warning emitted via {@link SignalWire.warnings$ | client.warnings$}.
3362
+ *
3363
+ * Use to detect SDK behaviors that affect session liveness or developer-facing
3364
+ * contracts but do not warrant disconnection. Discriminated by `code`.
3365
+ *
3366
+ * Existing consumers of `errors$` are NOT notified — `warnings$` is a separate
3367
+ * channel so application code can react to warnings without triggering
3368
+ * error-handling code paths (e.g., disconnect cascades, user-facing toasts).
3369
+ */
3370
+ type SDKWarning = CredentialRefreshFallbackWarning | CredentialNoRefreshHandlerWarning;
3371
+ /**
3372
+ * Diagnostic detail for {@link CredentialRefreshFallbackWarning}. Stable
3373
+ * values, but treat unknown strings as "fell back for an unspecified cause" —
3374
+ * do not branch on this value for control flow. New values may be added in
3375
+ * future releases.
3376
+ */
3377
+ type CredentialRefreshFallbackReason = 'no-scope' | 'no-dpop-support' | 'endpoint-failed' | 'activation-timeout' | (string & {});
3378
+ /**
3379
+ * Emitted when the SDK falls back to the developer-provided
3380
+ * {@link CredentialProvider.refresh} because the Client Bound SAT path
3381
+ * could not take over.
3382
+ *
3383
+ * Common causes:
3384
+ * - The minted SAT lacks `sat:refresh` scope (`reason: 'no-scope'`).
3385
+ * - The `/devices/token` exchange failed transiently (`reason: 'endpoint-failed'`).
3386
+ *
3387
+ * Subscribe to this warning to detect:
3388
+ * - SDKs running with plain SATs that rely on developer-managed refresh
3389
+ * - Deployments expected to use bound tokens that silently downgraded to bearer
3390
+ * (a security-relevant signal for fleet observability)
3391
+ */
3392
+ interface CredentialRefreshFallbackWarning {
3393
+ code: 'credential_refresh_fallback';
3394
+ source: 'CredentialProvider';
3395
+ reason: CredentialRefreshFallbackReason;
3396
+ message: string;
3397
+ }
3398
+ /**
3399
+ * Emitted when a credential has an `expiry_at` but the provider supplies no
3400
+ * `refresh()` handler. The session will terminate at expiry with no fallback.
3401
+ *
3402
+ * Implementors who want long-lived sessions must provide a `refresh()` handler
3403
+ * or mint tokens with the `sat:refresh` scope (Client Bound SAT path).
3404
+ */
3405
+ interface CredentialNoRefreshHandlerWarning {
3406
+ code: 'credential_no_refresh_handler';
3407
+ source: 'CredentialProvider';
3408
+ message: string;
3409
+ /** Token expiry timestamp (epoch milliseconds). */
3410
+ expiresAt: number;
3411
+ }
3412
+ //#endregion
3283
3413
  //#region src/utils/logger.d.ts
3284
3414
  /** Log level names supported by the SDK. */
3285
3415
  type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent';
@@ -3353,8 +3483,12 @@ interface SignalWireOptions {
3353
3483
  * When `false` (default), session data lives in `sessionStorage` and is
3354
3484
  * lost on reload.
3355
3485
  *
3356
- * Call {@link SignalWire.destroy | destroy()} to clear all persisted state
3357
- * (explicit logout).
3486
+ * Both {@link SignalWire.disconnect | disconnect()} and
3487
+ * {@link SignalWire.destroy | destroy()} end the session and clear the
3488
+ * persisted resume state and attach records; credentials and device
3489
+ * preferences survive. Use `resetToDefaults()` for a full wipe, or
3490
+ * `unregister()` to temporarily stop receiving inbound calls while keeping
3491
+ * the session alive.
3358
3492
  */
3359
3493
  persistSession?: boolean;
3360
3494
  /** Custom storage implementation for persistence. */
@@ -3423,10 +3557,10 @@ declare class SignalWire extends Destroyable implements DeviceController {
3423
3557
  private _isConnected$;
3424
3558
  private _isRegistered$;
3425
3559
  private _errors$;
3560
+ private _warnings$;
3426
3561
  private _options;
3427
- private _refreshTimerId?;
3428
3562
  private _dpopManager?;
3429
- private _deviceTokenManager?;
3563
+ private _refreshCoordinator?;
3430
3564
  private _credentialProvider?;
3431
3565
  private _deps;
3432
3566
  private _networkMonitor?;
@@ -3454,12 +3588,6 @@ declare class SignalWire extends Destroyable implements DeviceController {
3454
3588
  */
3455
3589
  private resolveCredentials;
3456
3590
  private validateCredentials;
3457
- /**
3458
- * Schedules credential refresh with exponential backoff retry on failure.
3459
- * On success, resets attempt counter and schedules the next refresh.
3460
- * After exhausting retries, emits TokenRefreshError and disconnects.
3461
- */
3462
- private scheduleCredentialRefresh;
3463
3591
  /** Persist credential to localStorage when persistSession is enabled. */
3464
3592
  private persistCredential;
3465
3593
  private init;
@@ -3546,6 +3674,17 @@ declare class SignalWire extends Destroyable implements DeviceController {
3546
3674
  get ready$(): Observable<boolean>;
3547
3675
  /** Observable stream of errors from transport, authentication, and devices. */
3548
3676
  get errors$(): Observable<Error>;
3677
+ /**
3678
+ * Observable stream of non-fatal SDK warnings.
3679
+ *
3680
+ * Subscribe to detect SDK behaviors that affect session liveness or developer-facing
3681
+ * contracts but do not warrant disconnection — e.g., a fallback from Client Bound SAT
3682
+ * refresh to the developer-provided `refresh()` because the SAT lacks `sat:refresh`
3683
+ * scope. Discriminated by `code`.
3684
+ *
3685
+ * Independent from {@link errors$}: existing error consumers are not notified.
3686
+ */
3687
+ get warnings$(): Observable<SDKWarning>;
3549
3688
  /** Platform WebRTC capabilities detected at construction time. */
3550
3689
  get platformCapabilities(): PlatformCapabilities;
3551
3690
  /** Observable that emits when the SDK auto-switches a device. */
@@ -3563,6 +3702,14 @@ declare class SignalWire extends Destroyable implements DeviceController {
3563
3702
  /**
3564
3703
  * Disconnects the WebSocket and tears down the current session.
3565
3704
  *
3705
+ * Ends the session identified by the protocol and clears its persisted
3706
+ * resume state (`authorization_state` + protocol) and attach records
3707
+ * together — a later {@link connect} with the same credentials starts a
3708
+ * fresh session and cannot reattach to the ended session's calls.
3709
+ * Credentials and device preferences are preserved. To temporarily stop
3710
+ * receiving inbound calls while keeping the session alive, use
3711
+ * `unregister()` instead.
3712
+ *
3566
3713
  * The client can be reconnected by calling {@link connect} again,
3567
3714
  * which creates a fresh transport and session.
3568
3715
  */
@@ -3744,7 +3891,15 @@ declare class SignalWire extends Destroyable implements DeviceController {
3744
3891
  * attached call IDs, and all SDK storage keys, then re-enumerates devices.
3745
3892
  */
3746
3893
  resetToDefaults(): Promise<void>;
3747
- /** Destroys the client, clearing timers and releasing all resources. */
3894
+ /**
3895
+ * Destroys the client, clearing timers and releasing all resources.
3896
+ *
3897
+ * Intentionally destroying the client ends its session: the resume state
3898
+ * (`authorization_state` + protocol) and the attach records are both
3899
+ * cleared. Credentials and device preferences are preserved — use
3900
+ * {@link resetToDefaults} for a full wipe. To temporarily stop receiving
3901
+ * inbound calls while keeping the session alive, use `unregister()`.
3902
+ */
3748
3903
  destroy(): void;
3749
3904
  }
3750
3905
  //#endregion
@@ -4622,10 +4777,21 @@ declare class WebRTCCall extends Destroyable implements CallManager {
4622
4777
  /** Observable that emits `true` when answered, `false` when rejected. */
4623
4778
  get answered$(): Observable<boolean>;
4624
4779
  /**
4625
- * Sets the call layout and participant positions.
4780
+ * Sets the call layout and, optionally, individual participant positions.
4781
+ *
4782
+ * The gateway `call.layout.set` DTO has **no** `positions` member, so when
4783
+ * `positions` is provided this method issues a `call.member.position.set`
4784
+ * request per member (via {@link Participant.setPosition}, which keys each
4785
+ * position by that member's own call context) alongside `call.layout.set`
4786
+ * (issue #19400, Flag #6).
4787
+ *
4788
+ * **These operations are NOT atomic.** The layout is applied first, then each
4789
+ * member position sequentially, so members may briefly flash into their
4790
+ * default slots before being moved to the requested positions.
4626
4791
  *
4627
4792
  * @param layout - Layout name (must be one of {@link layouts}).
4628
- * @param positions - Map of member IDs to {@link VideoPosition} values.
4793
+ * @param positions - Optional map of member IDs to {@link VideoPosition} values.
4794
+ * When omitted or empty, only the layout is changed.
4629
4795
  * @throws {InvalidParams} If the layout is not in the available {@link layouts}.
4630
4796
  *
4631
4797
  * @example
@@ -4635,7 +4801,7 @@ declare class WebRTCCall extends Destroyable implements CallManager {
4635
4801
  * });
4636
4802
  * ```
4637
4803
  */
4638
- setLayout(layout: string, positions: Record<string, VideoPosition>): Promise<void>;
4804
+ setLayout(layout: string, positions?: Record<string, VideoPosition>): Promise<void>;
4639
4805
  /**
4640
4806
  * Transfers the call to another destination.
4641
4807
  *
@@ -4739,5 +4905,5 @@ declare const version: string;
4739
4905
  */
4740
4906
  declare const ready: boolean;
4741
4907
  //#endregion
4742
- 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, EmbedTokenCredentialProvider, 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, type TextMessage, TokenRefreshError, type TransferOptions, UnexpectedError, User, type UserPresence, VertoPongError, type VideoPosition, type WebRTCApiProvider, WebRTCCall, type WebRTCMediaDevices, type WebSocketAdapter, embeddableCall, getLogger, isSelfParticipant, ready, setDebugOptions, setLogLevel, setLogger, version };
4908
+ 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 CredentialNoRefreshHandlerWarning, type CredentialProvider, type CredentialRefreshFallbackReason, type CredentialRefreshFallbackWarning, DPoPInitError, type DebugOptions, type DeviceController, type DeviceRecoveryEvent, DeviceTokenError, type DiagnosticEvent, type DialOptions, type Directory, EmbedTokenCredentialProvider, 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 SDKWarning, type ScreenShareStatus, type SelectDeviceOptions, SelfCapabilities, SelfParticipant, type SessionDiagnostics, type SessionState, SignalWire, type SignalWireOptions, StaticCredentialProvider, type Storage, type StoredDevicePreference, type TextMessage, TokenRefreshError, type TransferOptions, UnexpectedError, User, type UserPresence, VertoPongError, type VideoPosition, type WebRTCApiProvider, WebRTCCall, type WebRTCMediaDevices, type WebSocketAdapter, embeddableCall, getLogger, isSelfParticipant, ready, setDebugOptions, setLogLevel, setLogger, version };
4743
4909
  //# sourceMappingURL=index.d.cts.map