import { UA, WebSocketInterface } from '@krivega/jssip'; import { TGetUri } from '../CallManager'; import { ConnectionStateMachine } from './ConnectionStateMachine'; import { TEvents } from './events'; import { default as RegistrationManager } from './RegistrationManager'; import { TConnectionConfig, TParametersConnection } from './types'; import { default as UAFactory } from './UAFactory'; type TConnectParameters = (() => Promise) | TParametersConnection; export type TConnect = (parameters: TConnectParameters, options?: { numberOfConnectionAttempts?: number; }) => Promise; interface IDependencies { events: TEvents; uaFactory: UAFactory; stateMachine: ConnectionStateMachine; registrationManager: RegistrationManager; getUa: () => UA | undefined; setUa: (ua: UA | undefined) => void; setGetUri: (getUri: TGetUri) => void; setSocket: (socket: WebSocketInterface) => void; } export default class ConnectionFlow { private readonly resolveParametersRequester; private cancelableConnectWithRepeatedCalls; private readonly numberOfConnectionAttempts; private readonly dependencies; constructor(dependencies: IDependencies, { numberOfConnectionAttempts, }?: { numberOfConnectionAttempts?: number; }); connect: TConnect; disconnect: ({ cancelRequests }?: { cancelRequests?: boolean; }) => Promise; cancelRequests(): void; private readonly connectWithDuplicatedCalls; private hasEqualConnectionConfiguration; private readonly connectInner; private readonly initUa; private readonly start; private cancelConnectWithRepeatedCalls; private proxyEvents; } export {};