import { Prisma } from "../generated/prisma/client.js";
export declare class CustomerRepository {
    create(data: Prisma.CustomerUncheckedCreateInput): Promise<{
        name: string;
        id: bigint;
        address: string | null;
        status: boolean;
        createdAt: Date;
        updatedAt: Date;
        mobileNo: string;
        tamilName: string | null;
        createdBy: bigint | null;
        stateId: bigint;
        districtId: bigint;
        openingBalance: Prisma.Decimal;
        outstandingBalance: Prisma.Decimal;
        deletedAt: Date | null;
    }>;
    findAll(skip?: number, take?: number, search?: string, status?: boolean): Promise<{
        items: ({
            state: {
                name: string;
                id: bigint;
                status: boolean;
                createdAt: Date;
                updatedAt: Date;
                tamilName: string | null;
                createdBy: bigint | null;
            };
            district: {
                name: string;
                id: bigint;
                status: boolean;
                createdAt: Date;
                updatedAt: Date;
                tamilName: string | null;
                createdBy: bigint | null;
                stateId: bigint;
            };
        } & {
            name: string;
            id: bigint;
            address: string | null;
            status: boolean;
            createdAt: Date;
            updatedAt: Date;
            mobileNo: string;
            tamilName: string | null;
            createdBy: bigint | null;
            stateId: bigint;
            districtId: bigint;
            openingBalance: Prisma.Decimal;
            outstandingBalance: Prisma.Decimal;
            deletedAt: Date | null;
        })[];
        total: number;
    }>;
    findById(id: bigint): Promise<({
        state: {
            name: string;
            id: bigint;
            status: boolean;
            createdAt: Date;
            updatedAt: Date;
            tamilName: string | null;
            createdBy: bigint | null;
        };
        district: {
            name: string;
            id: bigint;
            status: boolean;
            createdAt: Date;
            updatedAt: Date;
            tamilName: string | null;
            createdBy: bigint | null;
            stateId: bigint;
        };
    } & {
        name: string;
        id: bigint;
        address: string | null;
        status: boolean;
        createdAt: Date;
        updatedAt: Date;
        mobileNo: string;
        tamilName: string | null;
        createdBy: bigint | null;
        stateId: bigint;
        districtId: bigint;
        openingBalance: Prisma.Decimal;
        outstandingBalance: Prisma.Decimal;
        deletedAt: Date | null;
    }) | null>;
    findByNameAndMobileNo(name: string, mobileNo: string, excludeId?: bigint): Promise<{
        name: string;
        id: bigint;
        address: string | null;
        status: boolean;
        createdAt: Date;
        updatedAt: Date;
        mobileNo: string;
        tamilName: string | null;
        createdBy: bigint | null;
        stateId: bigint;
        districtId: bigint;
        openingBalance: Prisma.Decimal;
        outstandingBalance: Prisma.Decimal;
        deletedAt: Date | null;
    } | null>;
    update(id: bigint, data: Prisma.CustomerUncheckedUpdateInput): Promise<{
        name: string;
        id: bigint;
        address: string | null;
        status: boolean;
        createdAt: Date;
        updatedAt: Date;
        mobileNo: string;
        tamilName: string | null;
        createdBy: bigint | null;
        stateId: bigint;
        districtId: bigint;
        openingBalance: Prisma.Decimal;
        outstandingBalance: Prisma.Decimal;
        deletedAt: Date | null;
    }>;
    softDelete(id: bigint): Promise<{
        name: string;
        id: bigint;
        address: string | null;
        status: boolean;
        createdAt: Date;
        updatedAt: Date;
        mobileNo: string;
        tamilName: string | null;
        createdBy: bigint | null;
        stateId: bigint;
        districtId: bigint;
        openingBalance: Prisma.Decimal;
        outstandingBalance: Prisma.Decimal;
        deletedAt: Date | null;
    }>;
    activeCustomerCount(): Promise<number>;
    getTotalOutstandingBalance(): Promise<number>;
    getCustomerReceiptsBreakdown(): Promise<{
        active: number;
        inactive: number;
        total: number;
    }>;
    getCustomerOpeningBalance(customerId?: bigint, dateBefore?: Date): Promise<number>;
    getCustomerLedgerTransactions(customerId?: bigint, dateFrom?: Date, dateTo?: Date): Promise<{
        date: Date;
        voucherNo: string;
        customerName: string;
        description: string;
        transactionType: string;
        debit: number;
        credit: number;
    }[]>;
    getWalkInLedgerTransactions(dateFrom?: Date, dateTo?: Date): Promise<{
        date: Date;
        voucherNo: string;
        customerName: string;
        description: string;
        transactionType: string;
        debit: number;
        credit: number;
    }[]>;
    findAllActiveCustomers(): Promise<{
        name: string;
        id: bigint;
    }[]>;
}
//# sourceMappingURL=CustomerRepository.d.ts.map