import { CustomerRepository } from "../repositories/CustomerRepository.js";
import { Prisma } from "../generated/prisma/client.js";
export interface CustomerImportRowResult {
    row: number;
    name: string;
    status: "imported" | "skipped";
    reason?: string;
}
export declare class CustomerService {
    private readonly customerRepository;
    constructor(customerRepository?: CustomerRepository);
    createCustomer(data: any): 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;
    }>;
    getCustomers(page?: number, limit?: number, search?: string, status?: boolean): Promise<{
        data: ({
            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;
        })[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    getCustomerById(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;
    }>;
    updateCustomer(id: bigint, data: any): 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;
    }>;
    deleteCustomer(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;
    }>;
    generateImportTemplate(): Promise<Buffer>;
    importBulk(fileBuffer: Buffer, createdBy?: bigint): Promise<{
        message: string;
        importedCount: number;
        skippedCount: number;
        results: CustomerImportRowResult[];
    }>;
}
//# sourceMappingURL=CustomerService.d.ts.map