export interface BalanceUpdateResult {
    success: boolean;
    transactionId?: string;
    balanceAfter?: number;
    errorMessage?: string;
}
export declare class BalanceService {
    private static instance;
    private UserModel;
    private TransactionModel;
    private constructor();
    static getInstance(): BalanceService;
    initialize(): Promise<void>;
    deductBalance(userId: string, amount: number, description: string, metadata?: {
        ipAddress?: string;
        userAgent?: string;
        requestId?: string;
        tokenUsage?: {
            totalTokens: number;
            thinkingTokens: number;
            reasoningModelsUsed: number;
        };
        costBreakdown?: {
            inputCost: number;
            outputCost: number;
            thinkingCost: number;
        };
    }): Promise<BalanceUpdateResult>;
    addBalance(userId: string, amount: number, description: string, type?: 'deposit' | 'refund' | 'adjustment', paymentReference?: string, metadata?: {
        ipAddress?: string;
        userAgent?: string;
        adminId?: string;
    }): Promise<BalanceUpdateResult>;
    getCurrentBalance(userId: string): Promise<number>;
    checkSufficientBalance(userId: string, requiredAmount: number): Promise<boolean>;
    getRecentTransactions(userId: string, limit?: number): Promise<any[]>;
}
export declare const balanceService: BalanceService;
//# sourceMappingURL=BalanceService.d.ts.map