import * as mongoose from 'mongoose';
import { BookingStatus } from 'src/booking/schema/booking.schema';
export declare class CustomerCabAggregation {
    match(): Promise<{
        $match: {
            is_active: boolean;
            is_block: boolean;
            is_deleted: boolean;
            is_email_verify: boolean;
        };
    }>;
    DeletedCustomermatch(): Promise<{
        $match: {
            is_deleted: boolean;
        };
    }>;
    BlockCustomerMatch(): Promise<{
        $match: {
            is_block: boolean;
            is_deleted: boolean;
        };
    }>;
    booking_count_lookup(): Promise<{
        $lookup: {
            from: string;
            localField: string;
            foreignField: string;
            as: string;
        };
    }>;
    AddField(): Promise<{
        $addFields: {
            bookingCount: {
                $size: string;
            };
        };
    }>;
    private escapeRegex;
    fillter_data(search: any): Promise<{
        $redact: {
            $cond: {
                if: {
                    $and: {
                        $or: ({
                            $eq: any[];
                            $regexMatch?: undefined;
                        } | {
                            $regexMatch: {
                                input: string;
                                regex: any;
                                options: string;
                            };
                            $eq?: undefined;
                        })[];
                    }[];
                };
                then: string;
                else: string;
            };
        };
    }>;
    face_set(option: any, sort?: any): Promise<{
        $facet: {
            count: {
                $count: string;
            }[];
            data: ({
                $sort: any;
                $skip?: undefined;
                $limit?: undefined;
            } | {
                $skip: any;
                $sort?: undefined;
                $limit?: undefined;
            } | {
                $limit: any;
                $sort?: undefined;
                $skip?: undefined;
            })[];
        };
    }>;
    projectFields(): Promise<{
        $project: {
            _id: number;
            name: number;
            phone: number;
            country_code: number;
            email: number;
            image: number;
            is_active: number;
            is_block: number;
            is_deleted: number;
            bookingCount: number;
            ratings: number;
            created_at: number;
        };
    }>;
    customer_match(id: any): Promise<{
        $match: {
            customer_id: mongoose.Types.ObjectId;
            booking_status: {
                $nin: BookingStatus[];
            };
        };
    }>;
    driver_match(id: any): Promise<{
        $match: {
            driver_id: mongoose.Types.ObjectId;
        };
    }>;
    customer_lookup(): Promise<{
        $lookup: {
            from: string;
            localField: string;
            foreignField: string;
            as: string;
        };
    }>;
    agent_customer_lookup(): Promise<{
        $lookup: {
            from: string;
            localField: string;
            foreignField: string;
            as: string;
        };
    }>;
    corporate_client_lookup(): Promise<{
        $lookup: {
            from: string;
            localField: string;
            foreignField: string;
            as: string;
        };
    }>;
    vehicle_lookup(): Promise<{
        $lookup: {
            from: string;
            localField: string;
            foreignField: string;
            as: string;
        };
    }>;
    driver_lookup(): Promise<{
        $lookup: {
            from: string;
            localField: string;
            foreignField: string;
            as: string;
        };
    }>;
    unwindVehicleData(): Promise<{
        $unwind: {
            path: string;
            preserveNullAndEmptyArrays: boolean;
        };
    }>;
    unwind__customerdata(): Promise<{
        $unwind: {
            path: string;
            preserveNullAndEmptyArrays: boolean;
        };
    }>;
    unwind_agentcustomerdata(): Promise<{
        $unwind: {
            path: string;
            preserveNullAndEmptyArrays: boolean;
        };
    }>;
    unwind_corporateclientdata(): Promise<{
        $unwind: {
            path: string;
            preserveNullAndEmptyArrays: boolean;
        };
    }>;
    unwind_driverdata(): Promise<{
        $unwind: {
            path: string;
            preserveNullAndEmptyArrays: boolean;
        };
    }>;
    project(): Promise<{
        $project: {
            booking_id: number;
            pickup_address: number;
            drop_address: number;
            booking_status: number;
            total_amount: number;
            created_at: number;
            customer_id: number;
            agent_customer_id: number;
            company_client_id: number;
            schedule_date: number;
            guest_name: number;
            guest_phone: number;
            requested_by: number;
            customer: {
                $ifNull: (string | {
                    $ifNull: (string | {
                        $ifNull: (string | {
                            $cond: {
                                if: {
                                    $ne: string[];
                                };
                                then: {
                                    name: string;
                                    phone: string;
                                };
                                else: any;
                            };
                        })[];
                    })[];
                })[];
            };
            agent_customer: string;
            company_client: string;
            'driver.name': number;
            'vehicle.vehicle_type': number;
        };
    }>;
}
export { CustomerCabAggregation as CustomerAggregation };
