export declare class ItemAggregation {
    match(query: any): Promise<{
        $match: any;
    }>;
    searchMatch(search?: string): Promise<{
        $match: {
            $or: ({
                name: {
                    $regex: string;
                    $options: string;
                };
                description?: undefined;
            } | {
                description: {
                    $regex: string;
                    $options: string;
                };
                name?: undefined;
            })[];
        };
    }>;
    categoryLookup(): Promise<{
        $lookup: {
            from: string;
            localField: string;
            foreignField: string;
            as: string;
        };
    }>;
    unwindCategory(): Promise<{
        $unwind: {
            path: string;
            preserveNullAndEmptyArrays: boolean;
        };
    }>;
    storeLookup(): Promise<{
        $lookup: {
            from: string;
            localField: string;
            foreignField: string;
            as: string;
        };
    }>;
    unwindStore(): Promise<{
        $unwind: {
            path: string;
            preserveNullAndEmptyArrays: boolean;
        };
    }>;
    project(): Promise<{
        $project: {
            type: number;
            store_id: number;
            name: number;
            description: number;
            size: number;
            quantity: number;
            unit: number;
            price: number;
            admin_commission: number;
            imageUrl: number;
            stock: number;
            is_deleted: number;
            category: {
                _id: number;
                category_name: number;
                is_deleted: number;
            };
            store: {
                _id: number;
                restaurant_name: number;
                images: number;
                rating: number;
            };
            createdAt: number;
            updatedAt: number;
            favourites: number;
            is_fav: number;
            barcode_url: number;
            barcode_id: number;
            discounted_price: number;
            discount_type: number;
            discount_value: number;
            discount_start_date: number;
            discount_end_date: number;
            is_discount_active: number;
            is_available: number;
            availability_status: number;
            is_hidden: number;
        };
    }>;
    faceSet(option: {
        skip: number;
        limit: number;
    }): Promise<{
        $facet: {
            count: {
                $count: string;
            }[];
            data: ({
                $sort: {
                    createdAt: 1 | -1;
                };
                $skip?: undefined;
                $limit?: undefined;
            } | {
                $skip: number;
                $sort?: undefined;
                $limit?: undefined;
            } | {
                $limit: number;
                $sort?: undefined;
                $skip?: undefined;
            })[];
        };
    }>;
    addFields(): Promise<{
        $addFields: {
            is_available: {
                $cond: (boolean | {
                    $eq: (string | boolean)[];
                    $cond?: undefined;
                } | {
                    $cond: (boolean | {
                        $eq: (string | boolean)[];
                        $cond?: undefined;
                    } | {
                        $cond: (boolean | {
                            $gt: (string | number)[];
                        })[];
                        $eq?: undefined;
                    })[];
                    $eq?: undefined;
                })[];
            };
            availability_status: {
                $cond: (string | {
                    $eq: (string | boolean)[];
                    $cond?: undefined;
                } | {
                    $cond: (string | {
                        $eq: (string | boolean)[];
                        $cond?: undefined;
                    } | {
                        $cond: (string | {
                            $gt: (string | number)[];
                        })[];
                        $eq?: undefined;
                    })[];
                    $eq?: undefined;
                })[];
            };
            is_fav: {
                $cond: (boolean | {
                    $gt: (string | number)[];
                })[];
            };
        };
    }>;
    filter(filter: any): Promise<{
        $match: any;
    }>;
    favouriteLookup(user_id: any): Promise<{
        $lookup: {
            from: string;
            let: {
                customer_id: any;
                grocery_item_id: string;
            };
            pipeline: {
                $match: {
                    $expr: {
                        $eq: string[];
                    };
                };
            }[];
            as: string;
        };
    }>;
    unwindFavourite(): Promise<{
        $unwind: {
            path: string;
            preserveNullAndEmptyArrays: boolean;
        };
    }>;
}
