/**
 * Campaigns resource - User-friendly wrapper for SMS campaigns API
 */
import { BaseResource, PaginatedResponse } from './base';
import type { CampaignResponse, CampaignCreateParams, CampaignUpdateParams, CampaignStats, SMSMessage } from '../types/responses';
import { Result } from '../types/result';
export declare class Campaigns extends BaseResource {
    private api;
    constructor(configuration: any);
    /**
     * Create a new SMS campaign
     *
     * Recipients: Must provide at least one of:
     * - `contactIds` (array of individual contacts)
     * - `contactGroupIds` (array of contact groups)
     * - Can use both together
     *
     * Message: Must provide at least one of:
     * - `message` (direct message content)
     * - `templateId` (template to use)
     * - If both provided, `message` takes precedence
     *
     * @param params Campaign creation parameters
     * @returns Created campaign
     */
    create(params: CampaignCreateParams): Promise<Result<CampaignResponse>>;
    /**
     * Get a campaign by ID
     * @param id Campaign ID
     * @returns Campaign details
     */
    get(id: string): Promise<Result<CampaignResponse>>;
    /**
     * Update a campaign
     * @param id Campaign ID
     * @param params Update parameters
     * @returns Updated campaign
     */
    update(id: string, params: CampaignUpdateParams): Promise<Result<CampaignResponse>>;
    /**
     * Delete a campaign
     * @param id Campaign ID
     * @returns Deletion confirmation
     */
    delete(id: string): Promise<Result<{
        message: string;
    }>>;
    /**
     * List campaigns with pagination and filtering
     * @param options List options
     * @returns Paginated list of campaigns
     */
    list(options?: {
        limit?: number;
        offset?: number;
        status?: string;
        startDate?: string;
        endDate?: string;
        search?: string;
    }): Promise<Result<PaginatedResponse<CampaignResponse>>>;
    /**
     * Send a draft campaign
     * @param id Campaign ID
     * @param params Send parameters (scheduled time, etc.)
     * @returns Send response
     */
    send(id: string): Promise<Result<{
        message: string;
        campaignId: string;
    }>>;
    /**
     * Get campaign statistics
     * @param id Campaign ID
     * @returns Campaign statistics
     */
    getStats(id: string): Promise<Result<CampaignStats>>;
    /**
     * Get campaign messages
     * @param id Campaign ID
     * @param options List options
     * @returns Campaign messages
     */
    getMessages(id: string, options?: {
        page?: number;
        perPage?: number;
        status?: string;
    }): Promise<Result<PaginatedResponse<SMSMessage>>>;
    /**
     * Resend failed messages in a campaign
     * @param id Campaign ID
     * @param params Resend parameters
     * @returns Resend response
     */
    resendFailed(id: string): Promise<Result<{
        successful: number;
        failed: number;
        total: number;
    }>>;
}
//# sourceMappingURL=campaigns.d.ts.map