/** DTMF digit event from the remote party. */ export interface DtmfEvent { /** The pressed digit. SIP emits `0`–`9`, `*`, `#`; WS input also accepts `A`–`D`. */ digit: string; /** Duration of the tone in milliseconds, normalized by the channel when available. */ duration: number; } /** * Incoming SIP INFO on a live call leg — mid-call signalling only. * * The host exposes **`contentType` + `body` only**. SIP headers on the INFO * request (e.g. `X-language`) are **not** forwarded. Prefer * {@link import('./sip').ChannelSip.dtmf$} for DTMF. Start-of-call INVITE * headers are {@link import('./sip').ChannelSip.inviteSipHeaders}, not this type. */ export interface SipInfo { /** MIME content type (e.g. `"application/dtmf-relay"`, `"application/xml"`). */ contentType: string; /** Raw message body as received from the stack (not INFO SIP headers). */ body: string; } /** Low-level Sofia SIP stack state-change event (see also {@link import('./sip').SipState}). */ export interface SipSignal { /** Raw telephony/Sofia call state string (not normalized to SDK {@link import('./sip').SipState}). */ state: string; /** SIP response status code when present (e.g. `180`, `183`, `200`, `486`). */ statusCode?: number; /** SIP response reason phrase when present. */ statusPhrase?: string; /** * SDP body attached to **this** state callback only. * * Often empty on `active` (200 OK) when SDP was already received on an earlier 183/INVITE. * Use {@link import('./sip').ChannelSip.remoteSdp} for the persisted negotiated SDP. */ sdp?: string; } /** Arbitrary data message used for WS data-channel communication between script and client. */ export interface DataMessage { /** Event name / type identifier. */ event: string; /** Event payload. Keep it JSON-serializable for WS clients and worker proxying. */ payload: unknown; } //# sourceMappingURL=events.d.ts.map