import { TopupService } from './subscription.service';
import { CreateTopupPlanDto } from './dto/create-topup-plan.dto';
import { UpdateTopupPlanDto } from './dto/update-topup-plan.dto';
import { BuyTopupDto } from './dto/buy-topup.dto';
import { DeductCreditsDto } from './dto/deduct-credits.dto';
import { PaymentService } from './payment.service';
import { UpdateCreditsDto } from './dto/update-credits.dto';
import { CreditRateType } from "../model/schemas/credit-rate.schema";
import { AdminStatsService } from './admin-stats.service';
export declare class TopupController {
    private readonly topupService;
    private readonly paymentService;
    private readonly adminStatsService;
    constructor(topupService: TopupService, paymentService: PaymentService, adminStatsService: AdminStatsService);
    createPlan(dto: CreateTopupPlanDto): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/topup-plan.schema").TopupPlan, {}, {}> & import("../model/schemas/topup-plan.schema").TopupPlan & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    }>;
    updatePlan(id: string, dto: UpdateTopupPlanDto): Promise<(import("mongoose").Document<unknown, {}, import("../model/schemas/topup-plan.schema").TopupPlan, {}, {}> & import("../model/schemas/topup-plan.schema").TopupPlan & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    }) | null>;
    deletePlan(id: string): Promise<(import("mongoose").Document<unknown, {}, import("../model/schemas/topup-plan.schema").TopupPlan, {}, {}> & import("../model/schemas/topup-plan.schema").TopupPlan & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    }) | null>;
    listPlans(type?: 'paid' | 'free_trial'): Promise<(import("mongoose").Document<unknown, {}, import("../model/schemas/topup-plan.schema").TopupPlan, {}, {}> & import("../model/schemas/topup-plan.schema").TopupPlan & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    allCreditHistory(salonId?: string, page?: number, limit?: number): Promise<{
        data: (import("mongoose").FlattenMaps<import("../model/schemas/salon-credit.schema").SalonCredit> & Required<{
            _id: import("mongoose").Types.ObjectId;
        }> & {
            __v: number;
        })[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    viewAvailableTopups(): Promise<(import("mongoose").Document<unknown, {}, import("../model/schemas/topup-plan.schema").TopupPlan, {}, {}> & import("../model/schemas/topup-plan.schema").TopupPlan & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    buyTopup(req: any, dto: BuyTopupDto): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/salon-credit.schema").SalonCredit, {}, {}> & import("../model/schemas/salon-credit.schema").SalonCredit & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    }>;
    payForTopup(req: any, dto: BuyTopupDto): Promise<{
        clientSecret: string | null;
    }>;
    confirmPayment(req: any, paymentIntentId: string): Promise<{
        success: boolean;
        message: string;
    }>;
    getCredits(req: any): Promise<{
        totalCredits: any;
    }>;
    deductCredits(req: any, dto: DeductCreditsDto): Promise<any>;
    viewCreditUsage(req: any, page?: string, limit?: string): Promise<{
        data: (import("mongoose").FlattenMaps<import("../model/schemas/credit-usage.schema").CreditUsage> & Required<{
            _id: import("mongoose").Types.ObjectId;
        }> & {
            __v: number;
        })[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    viewAllCreditUsage(req: any, salonId?: string, page?: string, limit?: string): Promise<{
        data: (import("mongoose").FlattenMaps<import("../model/schemas/credit-usage.schema").CreditUsage> & Required<{
            _id: import("mongoose").Types.ObjectId;
        }> & {
            __v: number;
        })[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    creditHistory(req: any): Promise<(import("mongoose").FlattenMaps<import("../model/schemas/salon-credit.schema").SalonCredit> & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    getCreditRates(): Promise<{
        type: CreditRateType;
        credits: number;
        unit: import("src/model/schemas/credit-rate.schema").CreditRateUnit;
    }[]>;
    updateCreditRates(req: any, type: CreditRateType, dto: UpdateCreditsDto): Promise<import("mongoose").Document<unknown, {}, import("src/model/schemas/credit-rate.schema").CreditRate, {}, {}> & import("src/model/schemas/credit-rate.schema").CreditRate & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    }>;
    overview(): Promise<{
        totalRevenue: any;
        currency: string;
        totalClients: number;
        freeTrialSalons: number;
        subscribedSalons: any;
    }>;
    getSalonDetails(id: string): Promise<{
        name: string;
        email: string;
        phone: string | null;
        ownerName: string | null;
        address: string;
        creditBalance: any;
        totalClients: number;
        status: "cancelled" | "trial" | "subscribed";
        imageUrl: string;
        timezone: string;
        verified: boolean;
        adminApproved: boolean;
        createdAt: Date;
        updatedAt: Date;
        isSuspended: boolean;
    }>;
}
