import { E as EncryptionApi } from './EncryptionApi-PHxeI2G_.js';
import { F as FlowApi } from './FlowApi-CASVC-Al.js';
import { WhatsAppConfig, WabaConfigType } from './shared/types/config.js';
import { M as MediaApi } from './MediaApi-B2vtjiCm.js';
import { M as MessagesApi } from './MessageApi-ptFlWg3O.js';
import { P as PhoneNumberApi } from './PhoneNumberApi-DMb_G3uw.js';
import { B as BusinessProfileApi } from './BusinessProfileApi-DE7Nnuy_.js';
import { Q as QrCodeApi } from './QrCodeApi-D3rVKuxV.js';
import { R as RegistrationApi } from './RegistrationApi-DZBJWAZS.js';
import { f as TemplateApi } from './TemplateApi-BFeM9qJS.js';
import { T as TwoStepVerificationApi } from './TwoStepVerificationApi-6jV5pDxS.js';
import { W as WabaApi } from './WabaApi-B8Gv2UNE.js';
import { H as HttpMethodsEnum, l as SDKEnums } from './enums-DvwSJq9w.js';
import { a as RequesterClass } from './base-BhCbbsxB.js';
import { Agent } from 'https';

type ResponseHeaderValue = string | string[] | undefined;
type ResponseHeaders = Record<string, ResponseHeaderValue>;
type ResponseJSONBody = Record<string, unknown>;
declare class HttpsClientResponseClass {
    constructor(resp: Response);
    statusCode: () => number;
    headers: () => ResponseHeaders;
    rawResponse: () => Response;
    json: () => Promise<ResponseJSONBody>;
}
declare class HttpsClientClass {
    constructor();
    clearSockets: () => boolean;
    sendRequest: (host: string, path: string, method: HttpMethodsEnum, headers: HeadersInit, timeout: number, body?: BodyInit | null) => Promise<HttpsClientResponseClass>;
}

declare class WhatsAppClass {
    constructor(config?: WhatsAppConfig);
    readonly messages: MessagesApi;
    readonly templates: TemplateApi;
    readonly phoneNumber: PhoneNumberApi;
    readonly qrCode: QrCodeApi;
    readonly encryption: EncryptionApi;
    readonly twoStepVerification: TwoStepVerificationApi;
    readonly registration: RegistrationApi;
    readonly media: MediaApi;
    readonly waba: WabaApi;
    readonly flow: FlowApi;
    readonly businessProfile: BusinessProfileApi;
    updateTimeout(ms: number): boolean;
    updatePhoneNumberId(phoneNumberId: number): boolean;
    updateAccessToken(accessToken: string): boolean;
    updateWabaId(wabaId: string): boolean;
}

declare class HttpsClient implements HttpsClientClass {
    agent: Agent;
    constructor();
    clearSockets(): boolean;
    sendRequest(hostname: string, path: string, method: HttpMethodsEnum, headers: HeadersInit, timeout: number, body?: BodyInit | null): Promise<HttpsClientResponseClass>;
}

declare class Requester implements RequesterClass {
    client: Readonly<HttpsClient>;
    accessToken: Readonly<string>;
    phoneNumberId: Readonly<number>;
    businessAcctId: Readonly<string>;
    apiVersion: Readonly<string>;
    userAgent: Readonly<string>;
    host: Readonly<string>;
    protocol: Readonly<string>;
    constructor(apiVersion: string, phoneNumberId: number, accessToken: string, businessAcctId: string, userAgent: string);
    buildHeader(contentType: string, additionalHeaders?: Record<string, string>): HeadersInit;
    buildCAPIPath(endpoint: string): string;
    sendRequest(method: HttpMethodsEnum, endpoint: string, timeout: number, body?: any, contentType?: string, additionalHeaders?: Record<string, string>): Promise<HttpsClientResponseClass>;
    getJson<T>(method: HttpMethodsEnum, endpoint: string, timeout: number, body?: any, additionalHeaders?: Record<string, string>): Promise<T>;
    sendFormData<T>(method: HttpMethodsEnum, endpoint: string, timeout: number, formData: FormData, additionalHeaders?: Record<string, string>): Promise<T>;
    sendUrlEncodedForm<T>(method: HttpMethodsEnum, endpoint: string, timeout: number, formData: Record<string, string>, additionalHeaders?: Record<string, string>): Promise<T>;
}

declare class WhatsApp implements WhatsAppClass {
    config: WabaConfigType;
    requester: Readonly<Requester>;
    readonly messages: MessagesApi;
    readonly templates: TemplateApi;
    readonly phoneNumber: PhoneNumberApi;
    readonly qrCode: QrCodeApi;
    readonly encryption: EncryptionApi;
    readonly twoStepVerification: TwoStepVerificationApi;
    readonly registration: RegistrationApi;
    readonly media: MediaApi;
    readonly waba: WabaApi;
    readonly flow: FlowApi;
    readonly businessProfile: BusinessProfileApi;
    static readonly Enums: typeof SDKEnums;
    constructor(config?: WhatsAppConfig);
    private userAgent;
    updateTimeout(ms: number): boolean;
    updatePhoneNumberId(phoneNumberId: number): boolean;
    updateAccessToken(accessToken: string): boolean;
    updateWabaId(wabaId: string): boolean;
}

export { HttpsClientClass as H, type ResponseHeaders as R, WhatsApp as W, HttpsClientResponseClass as a, type ResponseHeaderValue as b, type ResponseJSONBody as c, WhatsAppClass as d };
