import { ConfigService } from '@nestjs/config';
import { TwilioService } from './twilio.service';
import { IncomingCallDto } from './dto/twilio.dto';
import type { Response } from 'express';
import { ModelService } from "../model/model.service";
import { SendCallDto } from './dto/send-call.dto';
import { CreateIncomingPhoneNumberDto, UpsertCountryCreditDto, UpdateCountryCreditDto } from './dto/create-incoming-number.dto';
import { MinutesPerUnitQuery, MessagesPerUnitQuery } from './dto/get-minutes-per-dollar';
import { TopupService } from "../subscription/subscription.service";
import { ClientMemoryAgentService } from '../common/client-memory-agent.service';
import { CreateChatFromCallDto } from './dto/create-manual-call.dto';
import { Types } from 'mongoose';
export declare class TwilioController {
    private readonly configService;
    private readonly twilioService;
    private readonly modelService;
    private readonly topupService;
    private readonly clientMemoryAgentService;
    constructor(configService: ConfigService, twilioService: TwilioService, modelService: ModelService, topupService: TopupService, clientMemoryAgentService: ClientMemoryAgentService);
    handleIncomingCall(res: Response, body: IncomingCallDto): Promise<void>;
    handleOutgoingCall(res: Response, body: IncomingCallDto): Promise<void>;
    upsertCountry(dto: UpsertCountryCreditDto): 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;
    })[]>;
    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;
    }>;
    syncCountries(isoCountry: 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;
    }>;
    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;
    }>;
    handleIncomingWhatsAppStatus(query: any, res: Response): Promise<Response<any, Record<string, any>>>;
    handleSmsStatus(body: any): void;
    registerWhatsAppSender(dto: {
        phoneNumber: string;
        messagingServiceSid: string;
    }): Promise<{
        success: boolean;
        senderSid: any;
        phoneNumber: string;
    }>;
    listPhoneNumberCountry(): Promise<any>;
    getIncomingPhoneNumber(req: any): Promise<{
        available: boolean;
        phoneNumber: string | null;
    }>;
    getAssignedSMSNumber(req: any): Promise<{
        available: boolean;
        phoneNumber: string | null;
        totalSMS: number;
        totalConversations: number;
    }>;
    getCountryPhonePrice(countryCode: string): Promise<any>;
    getAvailableNumbers(countryCode: string, type: string): Promise<{
        country: string;
        type: "local" | "mobile" | "toll free";
        count: any;
        numbers: any;
    }>;
    createAndAssignIncomingPhoneNumber(req: any, body: CreateIncomingPhoneNumberDto): Promise<void>;
    getCallSummaryUsingId(transcriptSid: string): Promise<any>;
    sendCall(body: SendCallDto): Promise<{
        sid: any;
    }>;
    handleCallStatus(body: any): Promise<void>;
    handleCallSummary(body: any): Promise<void>;
    getMinutesPerUnit(query: MinutesPerUnitQuery): Promise<{}>;
    getSmsPerUnit(query: MessagesPerUnitQuery): Promise<{}>;
    createChatFromCall(dto: CreateChatFromCallDto): Promise<{
        status: string;
    }>;
}
