import { Repository } from 'typeorm';
import { Organization, OrganizationPlan } from '../organizations/entities/organization.entity';
import { User } from '../users/entities/user.entity';
import { Campaign } from '../campaigns/entities/campaign.entity';
import { Transaction } from '../transactions/entities/transaction.entity';
import { Subscription } from '../billing/entities/subscription.entity';
import { Plan } from '../billing/entities/plan.entity';
import { Notification } from '../notifications/entities/notification.entity';
export declare class AdminService {
    private organizationsRepository;
    private usersRepository;
    private campaignsRepository;
    private transactionsRepository;
    private subscriptionsRepository;
    private plansRepository;
    private notificationsRepository;
    constructor(organizationsRepository: Repository<Organization>, usersRepository: Repository<User>, campaignsRepository: Repository<Campaign>, transactionsRepository: Repository<Transaction>, subscriptionsRepository: Repository<Subscription>, plansRepository: Repository<Plan>, notificationsRepository: Repository<Notification>);
    getDashboardStats(): Promise<{
        totals: {
            organizations: number;
            users: number;
            campaigns: number;
            transactions: number;
            revenue: number;
        };
        thisMonth: {
            organizations: number;
            users: number;
            campaigns: number;
            revenue: number;
        };
        lastMonth: {
            revenue: number;
        };
        subscriptions: {
            active: number;
            planDistribution: any;
        };
    }>;
    getRevenueChart(days?: number): Promise<{
        date: any;
        revenue: number;
        transactions: number;
    }[]>;
    getOrganizations(params: {
        page?: number;
        limit?: number;
        search?: string;
        plan?: string;
        status?: string;
    }): Promise<{
        data: {
            usersCount: number;
            campaignsCount: number;
            totalRevenue: number;
            id: string;
            name: string;
            slug: string;
            email: string;
            phone: string;
            logo_url: string;
            plan: OrganizationPlan;
            plan_expires_at: Date;
            payment_code: string;
            payment_api_key: string;
            is_active: boolean;
            created_at: Date;
            updated_at: Date;
            users: User[];
            campaigns: Campaign[];
            transactions: Transaction[];
        }[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    getOrganizationById(id: string): Promise<{
        transactions: Transaction[];
        subscriptions: Subscription[];
        stats: {
            totalRevenue: number;
            totalVotes: number;
            usersCount: number;
            campaignsCount: number;
        };
        id: string;
        name: string;
        slug: string;
        email: string;
        phone: string;
        logo_url: string;
        plan: OrganizationPlan;
        plan_expires_at: Date;
        payment_code: string;
        payment_api_key: string;
        is_active: boolean;
        created_at: Date;
        updated_at: Date;
        users: User[];
        campaigns: Campaign[];
    }>;
    updateOrganization(id: string, data: {
        name?: string;
        plan?: OrganizationPlan;
        plan_expires_at?: Date | null;
        is_active?: boolean;
    }): Promise<Organization>;
    suspendOrganization(id: string): Promise<Organization>;
    activateOrganization(id: string): Promise<Organization>;
    deleteOrganization(id: string): Promise<{
        message: string;
    }>;
    getPlans(): Promise<Plan[]>;
    createPlan(data: Partial<Plan>): Promise<Plan>;
    updatePlan(id: string, data: Partial<Plan>): Promise<Plan>;
    deletePlan(id: string): Promise<{
        message: string;
    }>;
    sendSystemNotification(data: {
        title: string;
        message: string;
        targetPlan?: string;
    }): Promise<{
        message: string;
        count: number;
    }>;
    getRecentActivity(limit?: number): Promise<({
        type: string;
        title: string;
        timestamp: Date;
        data: {
            organizationId: string;
        };
    } | {
        type: string;
        title: string;
        timestamp: Date;
        data: {
            transactionId: string;
            amount: number;
        };
    } | {
        type: string;
        title: string;
        timestamp: Date;
        data: {
            campaignId: string;
            organizationName: string;
        };
    })[]>;
}
