import { ModelsService } from '../models/models.service';
import { CreateCustomerDto, UpdateCustomerDto } from './dto/customer.dto';
import { Types } from 'mongoose';
import { CommonService } from '../common/common.service';
export declare class CustomersService {
    private readonly models;
    private readonly commonService;
    constructor(models: ModelsService, commonService: CommonService);
    private getPayerQuery;
    createCustomer(createCustomerDto: CreateCustomerDto, user: any, req?: any): Promise<{
        message: string;
        customer: import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/customers.schema").Customers, {}> & import("./schema/customers.schema").Customers & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        }, {}> & import("mongoose").Document<unknown, {}, import("./schema/customers.schema").Customers, {}> & import("./schema/customers.schema").Customers & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        } & Required<{
            _id: Types.ObjectId;
        }>;
    }>;
    uploadCustomersCsv(file: any, user: any, req?: any): Promise<any>;
    getCustomers(user: any, page?: number, limit?: number, search?: string, is_guest?: string): Promise<{
        status: string;
        message: string;
        data: any[];
        pagination: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
            hasNextPage: boolean;
            hasPrevPage: boolean;
        };
    }>;
    getCustomerById(id: string, user: any): Promise<{
        customer: import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/customers.schema").Customers, {}> & import("./schema/customers.schema").Customers & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        }, {}> & import("mongoose").Document<unknown, {}, import("./schema/customers.schema").Customers, {}> & import("./schema/customers.schema").Customers & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        } & Required<{
            _id: Types.ObjectId;
        }>;
    }>;
    updateCustomer(id: string, updateCustomerDto: UpdateCustomerDto, user: any): Promise<{
        message: string;
        customer: import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/customers.schema").Customers, {}> & import("./schema/customers.schema").Customers & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        }, {}> & import("mongoose").Document<unknown, {}, import("./schema/customers.schema").Customers, {}> & import("./schema/customers.schema").Customers & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        } & Required<{
            _id: Types.ObjectId;
        }>;
    }>;
    deleteCustomer(id: string, user: any): Promise<{
        message: string;
    }>;
    addPayment(addPaymentDto: any, user: any): Promise<{
        message: string;
        payment: any;
    }>;
    getCustomerLedger(customerId: string, user: any): Promise<{
        customer: any;
        summary: {
            totalBilled: any;
            totalReceived: number;
            totalOutstanding: number;
            outstanding_income: any;
            outstanding_gst: any;
        };
    }>;
    getCustomerLedgerTrips(customerId: string, user: any, page?: number, limit?: number): Promise<{
        status: string;
        message: string;
        data: any[];
        pagination: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
            hasNextPage: boolean;
            hasPrevPage: boolean;
        };
    }>;
    getCustomerLedgerPayments(customerId: string, user: any, page?: number, limit?: number): Promise<{
        status: number;
        message: string;
        data: any;
        outstanding_opening_balance: number;
        meta: {
            total: any;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    getAgeingReport(user: any, page?: number, limit?: number, search?: string): Promise<{
        status: string;
        message: string;
        data: unknown[];
        total_permanent_outstanding: number;
        total_guest_outstanding: number;
        total_0_15_days: number;
        total_16_30_days: number;
        total_30_plus_days: number;
        pagination: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
            hasNextPage: boolean;
            hasPrevPage: boolean;
        };
    }>;
}
