import mongoose from 'mongoose';
export declare class RestaurantAggregation {
    match(query: any, searchQuery: any): Promise<{
        $match: any;
    }>;
    VendorLookup(): Promise<{
        $lookup: {
            from: string;
            let: {
                vendor_id: string;
            };
            pipeline: ({
                $match: {
                    $expr: {
                        $and: {
                            $eq: string[];
                        }[];
                    };
                };
                $project?: undefined;
            } | {
                $project: {
                    name: number;
                    email: number;
                    country_code: number;
                    phone: number;
                    is_deleted: number;
                    vendor_commission: number;
                };
                $match?: undefined;
            })[];
            as: string;
        };
    }>;
    unwindVendor(): Promise<{
        $unwind: {
            path: string;
            preserveNullAndEmptyArrays: boolean;
        };
    }>;
    OrderLookup(): Promise<{
        $lookup: {
            from: string;
            let: {
                rest_id: string;
            };
            pipeline: {
                $match: {
                    $expr: {
                        $eq: string[];
                    };
                };
            }[];
            as: string;
        };
    }>;
    addFieldsCount(): Promise<{
        $addFields: {
            total_orders: {
                $size: string;
            };
        };
    }>;
    project(isPending?: boolean): Promise<{
        $project: {
            restaurant_name: number;
            email: {
                $ifNull: (string | {
                    $cond: (string | {
                        $isArray: string;
                        $arrayElemAt?: undefined;
                    } | {
                        $arrayElemAt: (string | number)[];
                        $isArray?: undefined;
                    })[];
                })[];
            };
            country_code: number;
            restaurant_phone: number;
            images: number;
            rating: number;
            total_orders: number;
            vendor: number;
            vendor_id: number;
            vendor_commission: number;
            reason: number;
            created_at: number;
            updated_at: number;
            createdAt: number;
            updatedAt: number;
            is_restaurant_verified: number;
            is_submit_verification: number;
            is_restaurant_update: number;
            ratings: number;
            restaurant_type: number;
            type: number;
            status: number;
            isFoodDelivery: number;
            isDineOut: number;
            catering_services: number;
            pending_status: number | {
                $ifNull: string[];
            };
            pending_status_reason: number;
        };
    }>;
    face_set(option: any): Promise<{
        $facet: {
            count: {
                $count: string;
            }[];
            data: ({
                $sort: {
                    _id: 1 | -1;
                };
                $skip?: undefined;
                $limit?: undefined;
            } | {
                $skip: any;
                $sort?: undefined;
                $limit?: undefined;
            } | {
                $limit: any;
                $sort?: undefined;
                $skip?: undefined;
            })[];
        };
    }>;
    face_set_sort_update(option: any): Promise<{
        $facet: {
            count: {
                $count: string;
            }[];
            data: ({
                $sort: {
                    updated_at: 1 | -1;
                };
                $skip?: undefined;
                $limit?: undefined;
            } | {
                $skip: any;
                $sort?: undefined;
                $limit?: undefined;
            } | {
                $limit: any;
                $sort?: undefined;
                $skip?: undefined;
            })[];
        };
    }>;
    restaurantMatch(restaurant_id: any): Promise<{
        $match: {
            restaurant_id: mongoose.Types.ObjectId;
        };
    }>;
    driverLookUp(): Promise<{
        $lookup: {
            from: string;
            localField: string;
            foreignField: string;
            as: string;
        };
    }>;
    unwindDriver(): Promise<{
        $unwind: {
            path: string;
            preserveNullAndEmptyArrays: boolean;
        };
    }>;
    customerLookUp(): Promise<{
        $lookup: {
            from: string;
            localField: string;
            foreignField: string;
            as: string;
        };
    }>;
    unwindCustomer(): Promise<{
        $unwind: {
            path: string;
            preserveNullAndEmptyArrays: boolean;
        };
    }>;
    orderProject(): Promise<{
        $project: {
            order_id: number;
            delivery_address: number;
            total_amount: number;
            order_status: number;
            'customer.name': number;
            'driver.name': number;
        };
    }>;
}
