/**
 * SmartLead MCP Server - Campaign Statistics Client
 *
 * Client module for campaign statistics API endpoints.
 * Handles campaign-specific statistics and performance metrics.
 *
 * @author LeadMagic Team
 * @version 1.5.0
 */
import { BaseSmartLeadClient } from '../../client/base.js';
import type { CampaignLeadStatisticsRequest, CampaignMailboxStatisticsRequest, CampaignStatisticsRequest, CampaignTopLevelAnalyticsRequest, SuccessResponse, WarmupStatsByEmailRequest } from '../../types.js';
interface StatisticsParams {
    start_date?: string;
    end_date?: string;
    timezone?: string;
    full_data?: boolean;
}
interface CompareStatisticsRequest {
    campaign_ids: number[];
    start_date?: string;
    end_date?: string;
    metrics?: string[];
}
interface DownloadResponse {
    format: 'json' | 'csv';
    encoding?: string;
    filename?: string;
    mimeType?: string;
    data: string | unknown[] | {
        download_type: string;
        campaign_id: number;
        total_records: number;
        data: unknown[];
        generated_at: string;
    };
    size?: number;
    total_records?: number;
    download_type?: string;
}
/**
 * Campaign Statistics Client
 *
 * Provides methods for accessing SmartLead campaign statistics including:
 * - Campaign performance metrics
 * - Email delivery statistics
 * - Response and engagement metrics
 * - Time-based analytics
 */
export declare class StatisticsClient extends BaseSmartLeadClient {
    /**
     * Get campaign statistics
     */
    getCampaignStatistics(campaignId: number, params?: StatisticsParams): Promise<SuccessResponse>;
    /**
     * Get campaign email statistics
     */
    getCampaignEmailStatistics(campaignId: number, params?: StatisticsParams): Promise<SuccessResponse>;
    /**
     * Get campaign response statistics
     */
    getCampaignResponseStatistics(campaignId: number, params?: StatisticsParams): Promise<SuccessResponse>;
    /**
     * Get campaign engagement statistics
     */
    getCampaignEngagementStatistics(campaignId: number, params?: StatisticsParams): Promise<SuccessResponse>;
    /**
     * Get campaign conversion statistics
     */
    getCampaignConversionStatistics(campaignId: number, params?: StatisticsParams): Promise<SuccessResponse>;
    /**
     * Get campaign time-based statistics
     */
    getCampaignTimeBasedStatistics(campaignId: number, params?: StatisticsParams): Promise<SuccessResponse>;
    /**
     * Get campaign deliverability statistics
     */
    getCampaignDeliverabilityStatistics(campaignId: number, params?: StatisticsParams): Promise<SuccessResponse>;
    /**
     * Get campaign sequence statistics
     */
    getCampaignSequenceStatistics(campaignId: number, params?: StatisticsParams): Promise<SuccessResponse>;
    /**
     * Get campaign lead source statistics
     */
    getCampaignLeadSourceStatistics(campaignId: number, params?: StatisticsParams): Promise<SuccessResponse>;
    /**
     * Get campaign A/B test statistics
     */
    getCampaignABTestStatistics(campaignId: number, params?: StatisticsParams): Promise<SuccessResponse>;
    /**
     * Export campaign statistics
     */
    exportCampaignStatistics(campaignId: number, params?: StatisticsParams): Promise<SuccessResponse>;
    /**
     * Get real-time campaign statistics
     */
    getRealTimeCampaignStatistics(campaignId: number): Promise<SuccessResponse>;
    /**
     * Get campaign comparison statistics
     */
    getCampaignComparisonStatistics(campaignIds: number[], params?: CompareStatisticsRequest): Promise<SuccessResponse>;
    /**
     * Get campaign benchmark statistics
     */
    getCampaignBenchmarkStatistics(campaignId: number, params?: StatisticsParams): Promise<SuccessResponse>;
    /**
     * Get campaign statistics by date range
     * GET /campaigns/{campaign_id}/statistics/date-range
     */
    getCampaignStatisticsByDateRange(campaignId: number, params: CampaignStatisticsRequest): Promise<SuccessResponse>;
    /**
     * Get warmup stats by email account ID
     * GET /email-accounts/{email_account_id}/warmup-stats
     */
    getWarmupStatsByEmailAccountId(emailAccountId: number, params?: WarmupStatsByEmailRequest): Promise<SuccessResponse>;
    /**
     * Get campaign top level analytics
     * GET /campaigns/{campaign_id}/analytics/top-level
     */
    getCampaignTopLevelAnalytics(campaignId: number, params?: CampaignTopLevelAnalyticsRequest): Promise<SuccessResponse>;
    /**
     * Get campaign top level analytics by date range
     * GET /campaigns/{campaign_id}/analytics/top-level/date-range
     */
    getCampaignTopLevelAnalyticsByDateRange(campaignId: number, params: CampaignTopLevelAnalyticsRequest): Promise<SuccessResponse>;
    /**
     * Get campaign lead statistics
     * GET /campaigns/{campaign_id}/statistics/leads
     */
    getCampaignLeadStatistics(campaignId: number, params?: CampaignLeadStatisticsRequest): Promise<SuccessResponse>;
    /**
     * Get campaign mailbox statistics
     * GET /campaigns/{campaign_id}/statistics/mailboxes
     */
    getCampaignMailboxStatistics(campaignId: number, params?: CampaignMailboxStatisticsRequest): Promise<SuccessResponse>;
    /**
     * Download campaign data in various formats
     * Uses the statistics endpoint to fetch and format campaign data
     *
     * @param {number} campaignId - The ID of the campaign to download data for
     * @param {string} downloadType - The type of data to download (e.g., 'statistics', 'leads', 'responses')
     * @param {'json' | 'csv'} format - The output format, defaults to 'json'
     * @param {string} [userId] - Optional user ID for filtering (not currently supported by API)
     * @returns {Promise<DownloadResponse>} Download response containing the data in requested format
     * @throws {Error} If the campaign data cannot be retrieved
     *
     * @example
     * // Download campaign statistics as JSON
     * const jsonData = await client.downloadCampaignData(12345, 'statistics', 'json');
     *
     * @example
     * // Download campaign data as CSV
     * const csvData = await client.downloadCampaignData(12345, 'leads', 'csv');
     * // csvData.data contains base64-encoded CSV content
     */
    downloadCampaignData(campaignId: number, downloadType: string, format?: 'json' | 'csv', userId?: string): Promise<DownloadResponse>;
    /**
     * View download statistics
     * GET /download-statistics
     *
     * Retrieves download statistics with optional filtering by time period and grouping.
     * Falls back to overall analytics if the download-statistics endpoint is not available.
     *
     * @param {string} [timePeriod] - Time period to filter by ('last_7_days', 'last_30_days', 'last_quarter')
     * @param {string} [groupBy] - How to group the statistics ('date', 'campaign', 'user')
     * @returns {Promise<SuccessResponse>} Download statistics or fallback analytics data
     * @throws {Error} If statistics cannot be retrieved from any endpoint
     *
     * @example
     * // Get download statistics for the last 7 days
     * const stats = await client.viewDownloadStatistics('last_7_days', 'date');
     *
     * @example
     * // Get all download statistics grouped by campaign
     * const stats = await client.viewDownloadStatistics(undefined, 'campaign');
     */
    viewDownloadStatistics(timePeriod?: string, groupBy?: string): Promise<SuccessResponse>;
}
export {};
//# sourceMappingURL=client.d.ts.map