import { ModelService } from "../model/model.service";
import { CreditRate } from "../model/schemas/credit-rate.schema";
export declare class TopupService {
    private modelService;
    constructor(modelService: ModelService);
    createTopupPlan(payload: {
        name: string;
        amountPaid: number;
        credits: number;
    }): 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;
    }>;
    editTopupPlan(id: string, payload: Partial<{
        name: string;
        amountPaid: number;
        credits: number;
        isActive: boolean;
    }>): 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>;
    deleteTopupPlan(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>;
    listTopupPlans(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;
    })[]>;
    salonListTopupPlans(type?: 'paid' | 'free_trial', isActive?: boolean): 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(salonId: string, topupPlanId: string): 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;
    }>;
    getTopupPlanById(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>;
    getTotalCredits(salonId: string): Promise<any>;
    deductCredits(salonId: string, amount: number, reason?: string, metadata?: any): Promise<any>;
    viewCreditUsage(salonId?: string, page?: number, limit?: number): 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;
        };
    }>;
    listSalonCredits(salonId: string): Promise<(import("mongoose").FlattenMaps<import("../model/schemas/salon-credit.schema").SalonCredit> & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    listAllSalonCredits(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;
        };
    }>;
    getAllCreditRates(): Promise<{
        type: import("src/model/schemas/credit-rate.schema").CreditRateType;
        credits: number;
        unit: import("src/model/schemas/credit-rate.schema").CreditRateUnit;
    }[]>;
    updateCreditRate(type: string, data: Partial<CreditRate>): import("mongoose").Query<import("mongoose").Document<unknown, {}, CreditRate, {}, {}> & CreditRate & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    }, import("mongoose").Document<unknown, {}, CreditRate, {}, {}> & CreditRate & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    }, {}, CreditRate, "findOneAndUpdate", {}>;
}
