export * from "./types.ts";
export {
  isMediaSurface,
  parseMediaSource,
  parseMediaSurface,
  parseMediaViewerContext,
} from "./validation.ts";
export { authorizeMediaSurface, transitionMediaSurface } from "./policy.ts";
export {
  createMediaSurfaceLifecycle,
  type MediaSurfaceBinding,
  type MediaSurfaceLifecycle,
} from "./lifecycle.ts";
export {
  createOfficeMediaPresentation,
  type MediaSurfaceDescriptor,
  type MediaSurfaceGrant,
  type OfficeMediaPresentation,
} from "./presentation.ts";
export {
  createOfficeScreenPanel,
  type OfficeScreenPanel,
  type OfficeScreenPanelOptions,
  type OfficeScreenRemoteStatus,
  type OfficeScreenPanelState,
} from "./officeScreenPanel.ts";
export {
  createRemoteOfficeMedia,
  applyScreenShareEncodingPolicy,
  DEFAULT_SCREEN_SHARE_ENCODING_POLICY,
  type PresenterStart,
  type RemoteMediaConsent,
  type RemoteMediaEndpoints,
  type RemoteMediaRole,
  type RemoteMediaState,
  type RemoteMediaStatus,
  type RemoteMediaTimers,
  type RemoteOfficeMedia,
  type RemoteOfficeMediaOptions,
  type ScreenShareEncodingPolicy,
  type ScreenShareEncodingPolicyResult,
  type ViewerStart,
} from "./remoteMedia.ts";
export * from "./signalingTypes.ts";
export {
  advanceScreenShareStreamCursor,
  isScreenShareGrantActive,
  parseScreenShareClientMessage,
  parseScreenShareServerMessage,
} from "./signalingValidation.ts";
export * from "./iceTypes.ts";
export {
  isIceConfigGrantActive,
  isSafeIceUrl,
  parseIceConfigRequest,
  parseIceConfigResponse,
} from "./iceValidation.ts";
export {
  fetchEphemeralIceConfiguration,
  IceConfigurationUnavailableError,
  type EphemeralIceConfiguration,
  type FetchEphemeralIceConfigurationOptions,
} from "./iceClient.ts";
