import {NativeModule, requireNativeModule} from "expo" import type {AcsMeetingJoinOptions, AcsMeetingModuleEvents, AcsMeetingState} from "./AcsMeeting.types" declare class AcsMeetingNativeModule extends NativeModule { supportsTeamsIdentity(): boolean join(options: AcsMeetingJoinOptions): Promise /** Sign in to ACS before SoftAP so Teams is not resolved through glasses DNS. */ prepareAgent(options: { token: string displayName?: string identityMode?: "guest" | "teams-user" }): Promise leave(): Promise admitParticipant?(participantId: string): Promise /** * Leave, and resolve only once the hang-up, the agent disposal, and the network releases have * finished. Use this explicit barrier across platforms; Android `leave()` only queues cleanup. */ leaveAndAwait(options: {timeoutMs: number}): Promise<{completed: boolean}> setMuted(muted: boolean): Promise /** * Stop or resume the outgoing video stream (ACS `stopVideo`/`startVideo`). The call, the glasses * media source and the preview tap stay up; frames are dropped before ACS while stopped. */ setVideoEnabled(enabled: boolean): Promise setAudioSource(source: "glasses" | "phone"): Promise updateVideoSource(whepUrl: string): Promise /** Force a WHEP rebuild on the current URL (phone changed networks). */ restartVideoSource(): Promise /** * SoftAP: destroy the current ingest listener generation and bind a new one. * Resolves with the new URL the glasses must publish to. Rejects rather than * reuse a stale listener. */ rebindSoftApIngest(): Promise /** SoftAP: join the glasses hotspot; resolves to the phone's IPv4 on it. */ joinScopedNetwork(ssid: string, passphrase: string): Promise /** iOS: verify DHCP against the gateway advertised by the glasses before resolving. */ joinScopedNetworkWithGateway?(ssid: string, passphrase: string, gateway: string): Promise beginTrace(traceId: string): Promise leaveScopedNetwork(): Promise cancelScopedNetworkJoin?(): Promise awaitDefaultNetworkAfterHotspot?(): Promise<{usable: boolean; detail: string; transport: string}> /** SoftAP: TCP-probe the hotspot gateway over the scoped network. */ probeScopedGateway(): Promise<{reachable: boolean; detail: string}> getState(): Promise } export default requireNativeModule("MentraAcsMeeting")