import type { CreateCallRequest, CreateCallResponse, EndCallRequest, GetCallRequest, ListPhoneNumbersRequest, TelephonyCallDetails, TelephonyConfig, TelephonyMediaStreamEvent, TelephonyOutboundAudioMessage, TelephonyPhoneNumber, TelephonyProvider, TelephonyResponseRequest, TelephonyStatusCallback, TelephonyWebhookResponse, TelephonyWebhookValidationRequest, UpdatePhoneNumberRequest } from '../types/telephony.js'; import { type FamilyRuntime } from '../ops/family-telemetry.js'; /** * Routes telephony operations to registered providers: the one a request names, the configured * default, or the first that supports the operation. */ export declare class TelephonyManager { private config; private providers; private readonly telemetry; constructor(config?: TelephonyConfig, runtime?: FamilyRuntime); /** Registers a provider under a name. Returns the manager, for chaining. */ registerProvider(name: string, provider: TelephonyProvider): this; /** Whether a provider is registered. */ hasProvider(name: string): boolean; /** Every registered provider's name. */ listProviders(): string[]; /** Places an outbound call. */ createCall(request: CreateCallRequest): Promise; private callCreate; /** Builds a webhook response, such as TwiML. */ createWebhookResponse(request: TelephonyResponseRequest): Promise; /** Validates a webhook's signature. */ validateWebhook(request: TelephonyWebhookValidationRequest): Promise; /** Reads a call's details. */ getCall(request: GetCallRequest): Promise; /** Ends a call in progress. */ endCall(request: EndCallRequest): Promise; private callEnd; /** Parses a status callback through the named provider. */ parseStatusCallback(providerName: string, body: string | URLSearchParams | Record): TelephonyStatusCallback | undefined; /** Lists phone numbers. */ listPhoneNumbers(request?: ListPhoneNumbersRequest): Promise; /** Changes where a phone number sends its calls. */ updatePhoneNumber(request: UpdatePhoneNumberRequest): Promise; /** Parses a media-stream message through the named provider. */ parseMediaStreamEvent(providerName: string, message: string | Record): TelephonyMediaStreamEvent | undefined; /** Formats outbound audio, a mark, or a clear as the named provider's media-stream message. */ formatAudioMessage(providerName: string, streamId: string, payload: string, options?: { event?: 'media' | 'mark' | 'clear'; markName?: string; }): TelephonyOutboundAudioMessage; private resolveProvider; }