export type TwilioRequestOptions = { method: "get" | "post"; uri: string; params?: Record; form?: Record; body?: unknown; contentType?: string; }; export type TwilioSender = { sid: string; sender_id: string }; export type TwilioRequestResponse = { data?: { senders?: TwilioSender[]; }; }; export type IncomingNumber = { sid: string; phoneNumber: string; smsUrl?: string; }; export type TwilioChannelsSender = { sid?: string; senderId?: string; sender_id?: string; webhook?: { callback_url?: string; callback_method?: string; fallback_url?: string; fallback_method?: string; }; }; export type ChannelSenderUpdater = { update: (params: Record) => Promise; }; export type IncomingPhoneNumberUpdater = { update: (params: Record) => Promise; }; export type IncomingPhoneNumbersClient = { list: (params: { phoneNumber: string; limit?: number; }) => Promise; get: (sid: string) => IncomingPhoneNumberUpdater; } & ((sid: string) => IncomingPhoneNumberUpdater); export type TwilioSenderListClient = { messaging: { v2: { channelsSenders: { list: (params: { channel: string; pageSize: number; }) => Promise; ( sid: string, ): ChannelSenderUpdater & { fetch: () => Promise; }; }; }; v1: { services: (sid: string) => { update: (params: Record) => Promise; fetch: () => Promise<{ inboundRequestUrl?: string }>; }; }; }; incomingPhoneNumbers: IncomingPhoneNumbersClient; }; export type TwilioRequester = { request: (options: TwilioRequestOptions) => Promise; };