import { CreateZnsCampaignDto } from './dto/create-zns-campaign.dto';
import { BaseTenantService } from '@/common/base/service/base-crud.service';
import { ZnsCampaign } from './entities/zns-campaign.entity';
import { TenantConnectionService } from '../tenant/tenant-connection.service';
import { UpdateZnsCampaignDto } from './dto/update-zns-campaign.dto';
import { GetZnsMessagesDto } from './dto/get-zns-messages.dto';
import { PaginationResult } from '@/common/interfaces/pagination-result.interface';
type ZnsMessageResponse = PaginationResult<ZnsCampaign> | {
    success: boolean;
    download: true;
    filename: string;
    total: number;
    filters: GetZnsMessagesDto;
    file: Buffer;
};
export declare class ZnsCampaignService extends BaseTenantService<ZnsCampaign> {
    protected tenantConnectionService: TenantConnectionService;
    protected entity: typeof ZnsCampaign;
    constructor(tenantConnectionService: TenantConnectionService);
    createCampaign(dto: CreateZnsCampaignDto, file: Express.Multer.File): Promise<{
        message: string;
        campaign_id: number;
        total: number;
    }>;
    updateCampaign(id: number, dto: UpdateZnsCampaignDto): Promise<ZnsCampaign>;
    cancelCampaign(campaignId: number): Promise<{
        message: string;
        data: ZnsCampaign;
    }>;
    getCampaignReport(filter: {
        oa_account_id?: string;
        template_id?: number;
        from?: Date;
        to?: Date;
    }): Promise<{
        total_report: {
            total_sent: number;
            total_success: number;
            total_failed: number;
            total_cancelled: number;
            total_charged: number;
            total_free: number;
            total_cost: number;
        };
        campaign_summary: {
            total_campaigns: number;
            pending_campaigns: number;
            queued_campaigns: number;
            processing_campaigns: number;
            process_campaigns: number;
            failed_campaigns: number;
            cancelled_campaigns: number;
        };
        spending_overview: {
            date: string;
            total_zns: any;
            total_cost: any;
        }[];
    }>;
    getZnsMessages(filter: GetZnsMessagesDto, req: any): Promise<ZnsMessageResponse>;
}
export {};
