import { PrismaService } from '../../prisma/prisma.service';
import { ChargeCreditsDto } from './dto/charge-credits.dto';
import { UpdateSettingsDto } from './dto/update-settings.dto';
export declare class CreditsService {
    private prisma;
    private readonly logger;
    constructor(prisma: PrismaService);
    private ensureCreditSettings;
    getBalance(userId: number): Promise<{
        balance: number;
        autoCharge: boolean;
        autoChargeThreshold: number;
        autoChargeAmount: number;
        lowBalanceAlert: boolean;
    }>;
    getTransactions(userId: number, query: {
        page?: number;
        limit?: number;
    }): Promise<{
        data: {
            id: number;
            createdAt: Date;
            userId: number;
            description: string;
            amount: number;
            type: string;
            balanceAfter: number;
            referenceType: string | null;
            referenceId: number | null;
        }[];
        pagination: {
            page: number;
            limit: number;
            total: number;
            totalPages: number;
        };
    }>;
    charge(userId: number, dto: ChargeCreditsDto): Promise<{
        balance: number;
        transaction: {
            id: number;
            createdAt: Date;
            userId: number;
            description: string;
            amount: number;
            type: string;
            balanceAfter: number;
            referenceType: string | null;
            referenceId: number | null;
        };
    }>;
    useCredits(userId: number, amount: number, description: string, refType?: string, refId?: number): Promise<{
        balance: number;
    }>;
    getSettings(userId: number): Promise<{
        balance: number;
        autoCharge: boolean;
        autoChargeThreshold: number;
        autoChargeAmount: number;
        lowBalanceAlert: boolean;
    }>;
    updateSettings(userId: number, dto: UpdateSettingsDto): Promise<{
        balance: number;
        autoCharge: boolean;
        autoChargeThreshold: number;
        autoChargeAmount: number;
        lowBalanceAlert: boolean;
    }>;
    addBonus(userId: number, amount: number, description: string): Promise<{
        balance: number;
    }>;
}
