import { Prisma } from 'generated/prisma/client';
import { ExportQueryDto } from 'src/export/export.types';
import { StorageService } from 'src/storage/storage.service';
import { BootstrapTableRequestDto } from '../commons/dto/bootstrap-table-request.dto';
import { BootstrapTableResponseDto } from '../commons/dto/bootstrap-table-response.dto';
import { PrismaService } from '../prisma/prisma.service';
import { CreateCustomerDto } from './dto/create-customer.dto';
import { UpdateCustomerDto } from './dto/update-customer.dto';
export declare class CustomerService {
    private prisma;
    private storage;
    constructor(prisma: PrismaService, storage: StorageService);
    create(dto: CreateCustomerDto): Promise<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        code: string;
        fullName: string;
        phoneNumber: string;
        ktpNumber: string | null;
        ktpPhotoUrl: string | null;
        address: string;
    }>;
    findAll(query: BootstrapTableRequestDto): Promise<BootstrapTableResponseDto<{
        totalAmount: number;
        transactionCount: number;
        transactions: undefined;
        _count: {
            transactions: number;
        };
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        code: string;
        fullName: string;
        phoneNumber: string;
        ktpNumber: string | null;
        ktpPhotoUrl: string | null;
        address: string;
    }>>;
    findOne(id: string): Prisma.Prisma__CustomerClient<({
        transactions: {
            id: string;
            createdAt: Date;
            modifiedAt: Date | null;
            status: import("generated/prisma/client").TransactionStatus;
            branchId: string;
            trxCode: string;
            totalGrossWeight: import("@prisma/client/runtime/client").Decimal | null;
            totalNetWeight: import("@prisma/client/runtime/client").Decimal | null;
            totalAmount: import("@prisma/client/runtime/client").Decimal | null;
            bankAccountNo: string | null;
            bankAccountName: string | null;
            referralSource: string | null;
            knowsFounder: boolean | null;
            cancellationReason: string | null;
            cancelledBy: string | null;
            cancelledAt: Date | null;
            completedAt: Date | null;
            customerId: string;
            bankId: string | null;
            createdBy: string | null;
            modifiedBy: string | null;
            completedBy: string | null;
            headStoreId: string | null;
        }[];
    } & {
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        code: string;
        fullName: string;
        phoneNumber: string;
        ktpNumber: string | null;
        ktpPhotoUrl: string | null;
        address: string;
    }) | null, null, import("@prisma/client/runtime/client").DefaultArgs, {
        omit: Prisma.GlobalOmitConfig | undefined;
    }>;
    update(id: string, dto: UpdateCustomerDto): Promise<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        code: string;
        fullName: string;
        phoneNumber: string;
        ktpNumber: string | null;
        ktpPhotoUrl: string | null;
        address: string;
    }>;
    getCustomersForExport(query: ExportQueryDto): Promise<({
        _count: {
            transactions: number;
        };
    } & {
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        code: string;
        fullName: string;
        phoneNumber: string;
        ktpNumber: string | null;
        ktpPhotoUrl: string | null;
        address: string;
    })[]>;
    remove(id: string): Prisma.Prisma__CustomerClient<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        code: string;
        fullName: string;
        phoneNumber: string;
        ktpNumber: string | null;
        ktpPhotoUrl: string | null;
        address: string;
    }, never, import("@prisma/client/runtime/client").DefaultArgs, {
        omit: Prisma.GlobalOmitConfig | undefined;
    }>;
}
