import { type PrismaTransaction } from '../../../prisma';
import type { Prisma } from '../../../prisma/client';
import type { CreditType } from '../../../prisma/enums';
export declare class CreditsRepository {
    static findCreditBalance({ teamId, userId }: {
        teamId?: number;
        userId?: number;
    }, tx?: PrismaTransaction): Promise<{
        id: string;
        additionalCredits: number;
        limitReachedAt: Date | null;
        warningSentAt: Date | null;
    } | null | undefined>;
    static findCreditBalanceWithTeamOrUser({ teamId, userId, }: {
        teamId?: number | null;
        userId?: number | null;
    }, tx?: PrismaTransaction): Promise<{
        user: {
            name: string | null;
            id: number;
            email: string;
            locale: string | null;
        } | null;
        id: string;
        team: {
            name: string;
            id: number;
            members: {
                user: {
                    name: string | null;
                    id: number;
                    email: string;
                    locale: string | null;
                };
            }[];
        } | null;
        additionalCredits: number;
        limitReachedAt: Date | null;
        warningSentAt: Date | null;
    } | null | undefined>;
    static findCreditBalanceWithExpenseLogs({ teamId, userId, startDate, endDate, creditType, }: {
        teamId?: number;
        userId?: number;
        startDate?: Date;
        endDate?: Date;
        creditType?: CreditType;
    }, tx?: PrismaTransaction): Promise<{
        expenseLogs: {
            date: Date;
            credits: number | null;
            bookingUid: string | null;
            creditType: import('../../../prisma-client').$Enums.CreditType;
            smsSid: string | null;
            smsSegments: number | null;
        }[];
        additionalCredits: number;
    } | null>;
    static updateCreditBalance({ id, teamId, userId, data, }: {
        id?: string;
        teamId?: number | null;
        userId?: number | null;
        data: Prisma.CreditBalanceUncheckedUpdateInput;
    }, tx?: PrismaTransaction): Promise<{
        id: string;
        userId: number | null;
        teamId: number | null;
        additionalCredits: number;
        limitReachedAt: Date | null;
        warningSentAt: Date | null;
    } | null>;
    static createCreditBalance(data: Prisma.CreditBalanceUncheckedCreateInput, tx?: PrismaTransaction): Promise<{
        id: string;
        userId: number | null;
        teamId: number | null;
        additionalCredits: number;
        limitReachedAt: Date | null;
        warningSentAt: Date | null;
    }>;
    static createCreditExpenseLog(data: Prisma.CreditExpenseLogUncheckedCreateInput, tx?: PrismaTransaction): Promise<{
        id: string;
        date: Date;
        credits: number | null;
        bookingUid: string | null;
        creditBalanceId: string;
        creditType: import('../../../prisma-client').$Enums.CreditType;
        smsSid: string | null;
        smsSegments: number | null;
    }>;
    static createCreditPurchaseLog(data: {
        credits: number;
        creditBalanceId: string;
    }): Promise<{
        id: string;
        credits: number;
        createdAt: Date;
        creditBalanceId: string;
    }>;
}
//# sourceMappingURL=credits.d.ts.map