UNPKG

react-sip-kit

Version:

A modern **React SIP.js toolkit** for building web softphones and SIP clients. Supports **audio/video calls**, **call recording**, **screen sharing**, and **device management**, all with a clean, extensible, TypeScript-first architecture.

77 lines (76 loc) 2.22 kB
import { SipConfigs } from './configs/types'; import { reconnectTransport } from './events/transport'; import { SipInitializer } from './initializer'; import { LineType, SipSessionDataType, SipSessionType } from './store/types'; import { Registerer, Subscriber, UserAgent } from 'sip.js'; export interface SipUserAgent extends UserAgent { isReRegister: boolean; isRegistered: () => boolean; registerer: Registerer; sessions: { [id: string]: SipSessionType; }; _sessions: { [id: string]: SipSessionType; }; registrationCompleted: boolean; registering: boolean; transport: UserAgent['transport'] & { reconnectionAttempts: number; attemptingReconnection: boolean; }; BlfSubs: any[]; lastVoicemailCount: number; selfSub: Subscriber | null; voicemailSub: Subscriber | null; } export type SipManagerConfig = { account: SipConfigs['account']; } & { [P in Exclude<keyof SipConfigs, 'account'>]?: Partial<SipConfigs[P]>; }; export interface SipManagerProps { configs: SipManagerConfig[]; } export interface SipContextTransportType { reconnectTransport: typeof reconnectTransport; } export type CallbackFunction<T = any> = (value?: T) => void; export type CallType = 'audio' | 'video' | 'conferenceAudio' | 'conferenceVideo' | 'transferAudio' | 'transferVideo'; export interface SipManagerInstance { config: SipManagerConfig; instance: SipInitializer; } export type GetAccountKey = { username: string; lineKey?: never; remoteNumber?: never; } | { lineKey: LineType['lineKey']; username?: never; remoteNumber?: never; } | { remoteNumber: SipSessionDataType['remoteNumber']; username?: never; lineKey?: never; }; export type GetMethodsKey = { username: string; lineKey?: never; remoteNumber?: never; } | { lineKey: LineType['lineKey']; username?: never; remoteNumber?: never; } | { remoteNumber: SipSessionDataType['remoteNumber']; username?: never; lineKey?: never; }; export type LineLookup = { lineKey: LineType['lineKey']; remoteNumber?: never; } | { remoteNumber: SipSessionDataType['remoteNumber']; lineKey?: never; };