import { R as ResponseSuccess, B as BaseAPI, a as RequesterClass } from './base-BhCbbsxB.js';
import { WabaConfigType } from './shared/types/config.js';

/**
 * WhatsApp Business Account subscription configuration
 */
type WabaSubscription = {
    whatsapp_business_api_data: {
        id: string;
        link: string;
        name: string;
        category: string;
    };
    override_callback_uri?: string;
};
/**
 * Parameters for updating WABA subscription
 */
interface UpdateWabaSubscription {
    override_callback_uri: string;
    verify_token: string;
}
/**
 * Response containing all WABA subscriptions
 */
interface WabaSubscriptions {
    data: Array<WabaSubscription>;
}
/**
 * WABA account review status enumeration
 */
declare enum WabaAccountReviewStatus {
    Approved = "APPROVED",
    Active = "ACTIVE",
    Inactive = "INACTIVE",
    Disabled = "DISABLED"
}
/**
 * WABA health status for message sending capability
 */
declare enum WabaHealthStatusCanSendMessage {
    Blocked = "BLOCKED",
    Limited = "LIMITED",
    Available = "AVAILABLE"
}
/**
 * WABA account status enumeration
 */
declare enum WabaAccountStatus {
    Approved = "APPROVED",
    Active = "ACTIVE",
    Inactive = "INACTIVE",
    Disabled = "DISABLED"
}
/**
 * Business verification status enumeration
 */
declare enum WabaBusinessVerificationStatus {
    Verified = "verified",
    PendingSubmission = "pending_submission",
    Unverified = "unverified",
    Rejected = "rejected"
}
/**
 * WABA health status error details
 */
interface WabaHealthStatusError {
    error_code?: number;
    error_description?: string;
    possible_solution?: string;
}
/**
 * WABA health status entity information
 */
interface WabaHealthStatusEntity {
    entity_type?: string;
    id?: string;
    can_send_message?: string;
    errors?: WabaHealthStatusError[];
}
/**
 * Overall WABA health status
 */
interface WabaHealthStatus {
    can_send_message?: WabaHealthStatusCanSendMessage;
    entities?: WabaHealthStatusEntity[];
}
/**
 * WhatsApp Business Account information
 */
interface WabaAccount {
    account_review_status?: WabaAccountReviewStatus;
    id?: string;
    health_status?: WabaHealthStatus;
    status?: WabaAccountStatus;
    business_verification_status?: WabaBusinessVerificationStatus;
    message_template_namespace?: string;
    name?: string;
    ownership_type?: string;
    currency?: string;
}
/**
 * Available fields for WABA account queries
 */
type WabaAccountFields = 'id' | 'name' | 'account_review_status' | 'auth_international_rate_eligibility' | 'business_verification_status' | 'country' | 'currency' | 'health_status' | 'status' | 'ownership_type' | 'message_template_namespace';
/**
 * Parameter type for specifying which WABA account fields to retrieve
 */
type WabaAccountFieldsParam = WabaAccountFields[];
/**
 * Interface defining all WABA API methods
 */
interface WABAClass {
    getWabaAccount(fields?: WabaAccountFieldsParam): Promise<WabaAccount>;
    getAllWabaSubscriptions(): Promise<WabaSubscriptions>;
    updateWabaSubscription(params: UpdateWabaSubscription): Promise<ResponseSuccess>;
    unsubscribeFromWaba(): Promise<ResponseSuccess>;
}

/**
 * API for managing WhatsApp Business Account (WABA).
 *
 * This API allows you to:
 * - Get WABA account information
 * - Manage WABA subscriptions
 * - Subscribe/unsubscribe from WABA webhooks
 * - Update subscription settings
 */
declare class WabaApi extends BaseAPI implements WABAClass {
    constructor(config: WabaConfigType, client: RequesterClass);
    /**
     * Retrieve WhatsApp Business Account information.
     *
     * @param fields Optional array of specific fields to retrieve
     * @returns WABA account information including status, health, verification status, etc.
     *
     * @example
     * const account = await whatsappClient.waba.getWabaAccount(['id', 'name', 'status']);
     */
    getWabaAccount(fields?: WabaAccountFieldsParam): Promise<WabaAccount>;
    /**
     * Get all WABA subscriptions for the business account.
     *
     * @returns List of all subscribed apps and their configurations
     *
     * @example
     * const subscriptions = await whatsappClient.waba.getAllWabaSubscriptions();
     */
    getAllWabaSubscriptions(): Promise<WabaSubscriptions>;
    /**
     * Update WABA subscription configuration.
     *
     * @param params Configuration parameters including callback URI and verify token
     * @returns Response indicating success or failure
     *
     * @example
     * await whatsappClient.waba.updateWabaSubscription({
     *   override_callback_uri: 'https://example.com/webhook',
     *   verify_token: 'your_verify_token'
     * });
     */
    updateWabaSubscription({ override_callback_uri, verify_token, }: UpdateWabaSubscription): Promise<ResponseSuccess>;
    /**
     * Unsubscribe from WABA webhooks.
     *
     * @returns Response indicating success or failure
     *
     * @example
     * await whatsappClient.waba.unsubscribeFromWaba();
     */
    unsubscribeFromWaba(): Promise<ResponseSuccess>;
}

export { type UpdateWabaSubscription as U, WabaApi as W, type WabaAccount as a, type WABAClass as b, type WabaSubscriptions as c };
