import { ModelService } from '../model/model.service';
import { ConfigService } from '@nestjs/config';
import { Types } from 'mongoose';
import { UpdateCountryCreditDto } from './dto/create-incoming-number.dto';
export declare class TwilioService {
    private readonly modelService;
    private readonly configService;
    private readonly logger;
    private readonly twilioclient;
    private readonly cache;
    constructor(modelService: ModelService, configService: ConfigService);
    private sanitizePhone;
    findSalonIdWithFallbackEmails(): Promise<Types.ObjectId>;
    getSummary(transcriptSid: string): Promise<any>;
    setDefaultCallLimit(callSid: string): Promise<void>;
    getClientAndSalon(fromPhone: string, toPhone: string): Promise<{
        clientNameUnknown: boolean;
        clientId: string;
        salonId: string;
    }>;
    getSMSClientAndSalon(fromPhone: string, toPhone: string): Promise<{
        clientNameUnknown: boolean;
        clientId: string;
        salonId: string;
    }>;
    getClientAndSalonusingWabaId(fromPhone: string, wabaId: string, profileName: string): Promise<{
        clientNameUnknown: boolean;
        clientId: string;
        salonId: string;
    }>;
    createChatFromCall(fromPhone: string, toPhone: string, callId: string): Promise<{
        salonId: string;
    }>;
    registerWhatsAppSender(phoneNumber: string, messagingServiceSid: string): Promise<{
        success: boolean;
        senderSid: any;
        phoneNumber: string;
    }>;
    sendCall(from: string, to: string): Promise<{
        sid: any;
    }>;
    endCall(callSid: string): Promise<void>;
    sendSMS(body: string, to: string, from: string): Promise<void>;
    upsertCountry(dto: any): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/phone-country-credit.schema").PhoneCountryCredit, {}, {}> & import("../model/schemas/phone-country-credit.schema").PhoneCountryCredit & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    private sanitizeTwilioCountry;
    syncCountries(iso: string): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/phone-country-credit.schema").PhoneCountryCredit, {}, {}> & import("../model/schemas/phone-country-credit.schema").PhoneCountryCredit & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    getSalonCountry(iso: string): Promise<import("mongoose").FlattenMaps<import("../model/schemas/phone-country-credit.schema").PhoneCountryCredit> & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    getCountry(iso: string): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/phone-country-credit.schema").PhoneCountryCredit, {}, {}> & import("../model/schemas/phone-country-credit.schema").PhoneCountryCredit & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    getCountries(): Promise<(import("mongoose").FlattenMaps<import("../model/schemas/phone-country-credit.schema").PhoneCountryCredit> & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    updateTypeCredits(id: string, dto: UpdateCountryCreditDto): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/phone-country-credit.schema").PhoneCountryCredit, {}, {}> & import("../model/schemas/phone-country-credit.schema").PhoneCountryCredit & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    listPhoneNumberCountry(): Promise<any>;
    fetchPhoneNumberCountry(countryCode: string): Promise<any>;
    getAvailablePhoneNumbers(countryCode: string, type: string): Promise<{
        country: string;
        type: "local" | "mobile" | "toll free";
        count: any;
        numbers: any;
    }>;
    createIncomingPhoneNumber(phoneNumber: string, salonId: string, isoCountry: string, numberType: string): Promise<void>;
    getIncomingPhoneNumber(salonId: string): Promise<{
        available: boolean;
        phoneNumber: string | null;
    }>;
    getAssignedSMSNumber(salonId: string): Promise<{
        available: boolean;
        phoneNumber: string | null;
        totalSMS: number;
        totalConversations: number;
    }>;
    getMinutesPerDollar(countryCode: string): Promise<{}>;
    getMessagesPerUnit(countryCode: string): Promise<{}>;
    releasePhoneNumber(sid: string): Promise<void>;
    deactivateNumber(salonId: string, phoneNumber: string): Promise<void>;
}
