import { CommonService } from 'src/common/common.service';
import { DbService } from 'src/db/db.service';
import { RestaurantAggregation } from './restaurant.aggregation';
import mongoose, { Types } from 'mongoose';
import { AddDiscountDto, CreateRestaurantServiceDto, restaurant_request_list_dto, UpdateRestaurantDto, UpdateRestaurantRequestDto, UpdateRestaurantServiceDto, GetServicesDto, UpdatePendingRestaurantStatusDto } from './dto/restaurant.dto';
import { restaurantStatus, RestaurantVerificationStatus } from './schema/restaurant.schema';
import { recent_order_list } from 'src/order/dto/order.dto';
import { EmbeddingService } from 'src/embedding/embedding.service';
import { featuresListDto } from 'src/customer/dto/customer.dto';
import { SlotService } from 'src/slot/slot.service';
export declare class RestaurantService {
    private readonly model;
    private readonly commonService;
    private readonly restaurantAggregation;
    private readonly embeddingService;
    private readonly SlotService;
    constructor(model: DbService, commonService: CommonService, restaurantAggregation: RestaurantAggregation, embeddingService: EmbeddingService, SlotService: SlotService);
    create(body: any, req: any): Promise<{
        data: mongoose.Document<unknown, {}, import("./schema/restaurant.schema").Restaurant, {}, {}> & import("./schema/restaurant.schema").Restaurant & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    Update_(body: UpdateRestaurantDto, restaurant_id: string, req: any): Promise<{
        data: any;
    }>;
    find(id: string): Promise<{
        data: any;
    } | null>;
    findAll(id: string): Promise<{
        data: any[];
    }>;
    goOnline(restaurant_id: string, status: string): Promise<{
        message: string;
    }>;
    submitRestaurantVerification(user: any): Promise<{
        message: string;
    }>;
    restuarantAdminListing(body: any, user: any): Promise<{
        count: any;
        data: any;
        active_restaurant_count: number;
        blocked_restaurant_count: number;
        deleted_restaurant_count: number;
    }>;
    updatePendingRestaurantStatus(body: UpdatePendingRestaurantStatusDto): Promise<{
        message: string;
    }>;
    restaurant_admin_listing_select_for_quick_picks(body: any): Promise<{
        count: number;
        data: (mongoose.FlattenMaps<{
            slug: string;
            vendor_id: string;
            type: string;
            restaurant_name: string;
            restaurant_phone: string;
            average_preparing_time: number;
            address: {
                name: string;
                building_no: string;
                tower: string;
                area: string;
                city: string;
                nearby_landmark: string;
                lat: {
                    readonly [x: number]: string;
                    toString: () => string;
                    charAt: (pos: number) => string;
                    charCodeAt: (index: number) => number;
                    concat: (...strings: string[]) => string;
                    indexOf: (searchString: string, position?: number) => number;
                    lastIndexOf: (searchString: string, position?: number) => number;
                    localeCompare: {
                        (that: string): number;
                        (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number;
                        (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): number;
                    };
                    match: {
                        (regexp: string | RegExp): RegExpMatchArray | null;
                        (matcher: {
                            [Symbol.match](string: string): RegExpMatchArray | null;
                        }): RegExpMatchArray | null;
                    };
                    replace: {
                        (searchValue: string | RegExp, replaceValue: string): string;
                        (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string;
                        (searchValue: {
                            [Symbol.replace](string: string, replaceValue: string): string;
                        }, replaceValue: string): string;
                        (searchValue: {
                            [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string;
                        }, replacer: (substring: string, ...args: any[]) => string): string;
                    };
                    search: {
                        (regexp: string | RegExp): number;
                        (searcher: {
                            [Symbol.search](string: string): number;
                        }): number;
                    };
                    slice: (start?: number, end?: number) => string;
                    split: {
                        (separator: string | RegExp, limit?: number): string[];
                        (splitter: {
                            [Symbol.split](string: string, limit?: number): string[];
                        }, limit?: number): string[];
                    };
                    substring: (start: number, end?: number) => string;
                    toLowerCase: () => string;
                    toLocaleLowerCase: {
                        (locales?: string | string[]): string;
                        (locales?: Intl.LocalesArgument): string;
                    };
                    toUpperCase: () => string;
                    toLocaleUpperCase: {
                        (locales?: string | string[]): string;
                        (locales?: Intl.LocalesArgument): string;
                    };
                    trim: () => string;
                    readonly length: number;
                    substr: (from: number, length?: number) => string;
                    valueOf: () => string;
                    codePointAt: (pos: number) => number | undefined;
                    includes: (searchString: string, position?: number) => boolean;
                    endsWith: (searchString: string, endPosition?: number) => boolean;
                    normalize: {
                        (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string;
                        (form?: string): string;
                    };
                    repeat: (count: number) => string;
                    startsWith: (searchString: string, position?: number) => boolean;
                    anchor: (name: string) => string;
                    big: () => string;
                    blink: () => string;
                    bold: () => string;
                    fixed: () => string;
                    fontcolor: (color: string) => string;
                    fontsize: {
                        (size: number): string;
                        (size: string): string;
                    };
                    italics: () => string;
                    link: (url: string) => string;
                    small: () => string;
                    strike: () => string;
                    sub: () => string;
                    sup: () => string;
                    padStart: (maxLength: number, fillString?: string) => string;
                    padEnd: (maxLength: number, fillString?: string) => string;
                    trimEnd: () => string;
                    trimStart: () => string;
                    trimLeft: () => string;
                    trimRight: () => string;
                    matchAll: (regexp: RegExp) => RegExpStringIterator<RegExpExecArray>;
                    replaceAll: {
                        (searchValue: string | RegExp, replaceValue: string): string;
                        (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string;
                    };
                    [Symbol.iterator]: () => StringIterator<string>;
                    at: (index: number) => string;
                };
                long: {
                    readonly [x: number]: string;
                    toString: () => string;
                    charAt: (pos: number) => string;
                    charCodeAt: (index: number) => number;
                    concat: (...strings: string[]) => string;
                    indexOf: (searchString: string, position?: number) => number;
                    lastIndexOf: (searchString: string, position?: number) => number;
                    localeCompare: {
                        (that: string): number;
                        (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number;
                        (that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): number;
                    };
                    match: {
                        (regexp: string | RegExp): RegExpMatchArray | null;
                        (matcher: {
                            [Symbol.match](string: string): RegExpMatchArray | null;
                        }): RegExpMatchArray | null;
                    };
                    replace: {
                        (searchValue: string | RegExp, replaceValue: string): string;
                        (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string;
                        (searchValue: {
                            [Symbol.replace](string: string, replaceValue: string): string;
                        }, replaceValue: string): string;
                        (searchValue: {
                            [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string;
                        }, replacer: (substring: string, ...args: any[]) => string): string;
                    };
                    search: {
                        (regexp: string | RegExp): number;
                        (searcher: {
                            [Symbol.search](string: string): number;
                        }): number;
                    };
                    slice: (start?: number, end?: number) => string;
                    split: {
                        (separator: string | RegExp, limit?: number): string[];
                        (splitter: {
                            [Symbol.split](string: string, limit?: number): string[];
                        }, limit?: number): string[];
                    };
                    substring: (start: number, end?: number) => string;
                    toLowerCase: () => string;
                    toLocaleLowerCase: {
                        (locales?: string | string[]): string;
                        (locales?: Intl.LocalesArgument): string;
                    };
                    toUpperCase: () => string;
                    toLocaleUpperCase: {
                        (locales?: string | string[]): string;
                        (locales?: Intl.LocalesArgument): string;
                    };
                    trim: () => string;
                    readonly length: number;
                    substr: (from: number, length?: number) => string;
                    valueOf: () => string;
                    codePointAt: (pos: number) => number | undefined;
                    includes: (searchString: string, position?: number) => boolean;
                    endsWith: (searchString: string, endPosition?: number) => boolean;
                    normalize: {
                        (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string;
                        (form?: string): string;
                    };
                    repeat: (count: number) => string;
                    startsWith: (searchString: string, position?: number) => boolean;
                    anchor: (name: string) => string;
                    big: () => string;
                    blink: () => string;
                    bold: () => string;
                    fixed: () => string;
                    fontcolor: (color: string) => string;
                    fontsize: {
                        (size: number): string;
                        (size: string): string;
                    };
                    italics: () => string;
                    link: (url: string) => string;
                    small: () => string;
                    strike: () => string;
                    sub: () => string;
                    sup: () => string;
                    padStart: (maxLength: number, fillString?: string) => string;
                    padEnd: (maxLength: number, fillString?: string) => string;
                    trimEnd: () => string;
                    trimStart: () => string;
                    trimLeft: () => string;
                    trimRight: () => string;
                    matchAll: (regexp: RegExp) => RegExpStringIterator<RegExpExecArray>;
                    replaceAll: {
                        (searchValue: string | RegExp, replaceValue: string): string;
                        (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string;
                    };
                    [Symbol.iterator]: () => StringIterator<string>;
                    at: (index: number) => string;
                };
            };
            location: {
                type: string;
                coordinates: number[];
            };
            country_code: string;
            image: string;
            food_licence_image: string;
            status: restaurantStatus;
            working_day: {
                day: string;
                is_24_hrs: boolean;
                day_id: string;
                timing: {
                    start_time: string;
                    end_time: string;
                }[];
            }[];
            dine_out_working_day: {
                day: string;
                is_24_hrs: boolean;
                day_id: string;
                timing: {
                    start_time: string;
                    end_time: string;
                }[];
            }[];
            food_type: string[];
            is_active: boolean;
            is_block: boolean;
            reason: string;
            rating: number;
            is_restaurant_verified: boolean;
            is_submit_verification: boolean;
            is_restaurant_update: boolean;
            is_docs_update: boolean;
            verification: RestaurantVerificationStatus;
            doc_update_verification: RestaurantVerificationStatus;
            is_quick_pick: boolean;
            quick_pick_time: number;
            total_orders: number;
            is_deleted: boolean;
            report_reason_id: string;
            created_at: number;
            updated_at: number;
            restaurant_discount: {
                discount: number;
                start_time: number;
                end_time: number;
            };
            restaurant_discount_update: boolean;
            is_verfication_submitted: boolean;
            restaurant_type?: string;
            isFoodDelivery: boolean;
            isDineOut: boolean;
            catering_services: boolean;
            estimated_price_per_plate: number;
            booking_amount: number;
            uploadRestaurantMenu?: string[];
            uploadRestaurantPhotos?: string[];
            services: string[];
            amenities?: string[];
            cuisine_ids?: string[];
            maximum_capacity_slot: number;
            buffer_time: number;
            total_availability: {
                table: string;
                seats: number;
            }[];
            subscribers_limit: {
                type: {
                    toString: (radix?: number) => string;
                    toFixed: (fractionDigits?: number) => string;
                    toExponential: (fractionDigits?: number) => string;
                    toPrecision: (precision?: number) => string;
                    valueOf: () => number;
                    toLocaleString: {
                        (locales?: string | string[], options?: Intl.NumberFormatOptions): string;
                        (locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string;
                    };
                };
                default: 0;
            };
            referral_user: string;
            referral_path: string[];
            vendor_commission: number;
            embedding: number[];
            pending_status: string;
            pending_status_reason: string;
        }> & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    restuarantRequestListing(body: any): Promise<{
        count: any;
        data: any;
    }>;
    restaurantDetailForAdmin(id: any): Promise<{
        data: any;
    }>;
    updateRestaurantRequest(_id: string, body: UpdateRestaurantRequestDto): Promise<{
        message: string;
    }>;
    getNotificationData(status: string, language: string): Promise<{
        title: any;
        message: any;
        description: any;
    }>;
    private resolveTemplatePath;
    sentEmailToRestaurantApproval(update: any): Promise<void>;
    sentEmailToRestaurantReject(update: any, body: any): Promise<void>;
    Block(body: any): Promise<{
        message: string;
    }>;
    sentEmailToRestaurantBlock(update: any, body: any): Promise<void>;
    sentEmailToRestaurantUnblock(update: any): Promise<void>;
    catch(error: any): void;
    restaurantOrders(body: any): Promise<{
        count: any;
        data: any;
    }>;
    restaurant_earnings(body: any): Promise<{
        data: {
            week_start: number;
            week_end: number;
            no_of_orders: any;
            food_amount: number;
            app_commission: number;
            total_amount_to_be_paid: number;
        }[];
    }>;
    restaurant_menu(body: any): Promise<{
        data_count: number;
        data: unknown[];
    }>;
    restaurant_updated(body: any): Promise<{
        count: any;
        data: any;
    }>;
    restuarant_list_all(body: restaurant_request_list_dto): Promise<{
        count: any;
        data: any;
    }>;
    restaurant_list_all(body: restaurant_request_list_dto, user: any): Promise<{
        count: any;
        data: any;
        pending_count: number;
        rejected_count: number;
    }>;
    recentOrderListsByRestaurantId: (restaurant_id: string, body: recent_order_list) => Promise<{
        count: number;
        data: (mongoose.Document<unknown, {}, import("src/order/schema/order.schema").Orders, {}, {}> & import("src/order/schema/order.schema").Orders & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
        current_page: number;
        total_pages: number;
    }>;
    discount(dto: AddDiscountDto, req: any): Promise<{
        status: boolean;
        message: string;
    }>;
    mostDiscountedRestaurant(dto: featuresListDto, showRange: number): Promise<any[]>;
    popularRestaurant(dto: featuresListDto, showRange: number): Promise<any[]>;
    newRestaurant(dto: featuresListDto, showRange: number): Promise<any[]>;
    customerLikeRestaurant(dto: featuresListDto, customer: any, showRange: number): Promise<any[]>;
    nearByRestaurant(dto: featuresListDto, showRange: number): Promise<any[]>;
    featuresList(dto: featuresListDto, req?: any): Promise<{
        data: any[];
        most_discounted_restaurant?: undefined;
        popular_restaurant?: undefined;
        new_restaurant?: undefined;
        customer_like_restaurant?: undefined;
        near_by_restaurant?: undefined;
    } | {
        most_discounted_restaurant: any[];
        popular_restaurant: any[];
        new_restaurant: any[];
        customer_like_restaurant: any[];
        near_by_restaurant: any[];
        data?: undefined;
    }>;
    popularFoodItem(id: string): Promise<{
        food_items: (mongoose.Document<unknown, {}, import("../food/schema/food-item.schema").FoodItems, {}, {}> & import("../food/schema/food-item.schema").FoodItems & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    amenities(): Promise<{
        data: (mongoose.Document<unknown, {}, import("./schema/amenities.schema").Amenities, {}, {}> & import("./schema/amenities.schema").Amenities & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    addServices(dto: CreateRestaurantServiceDto): Promise<{
        data: mongoose.Document<unknown, {}, import("./schema/services.schema").Services, {}, {}> & import("./schema/services.schema").Services & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    updateServices(dto: UpdateRestaurantServiceDto, id: string): Promise<{
        data: mongoose.Document<unknown, {}, import("./schema/services.schema").Services, {}, {}> & import("./schema/services.schema").Services & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    deleteServices(id: string): Promise<{
        data: string;
    }>;
    services(dto?: GetServicesDto): Promise<{
        data: (mongoose.Document<unknown, {}, import("./schema/services.schema").Services, {}, {}> & import("./schema/services.schema").Services & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    serviceDetails(id: string): Promise<{
        data: mongoose.Document<unknown, {}, import("./schema/services.schema").Services, {}, {}> & import("./schema/services.schema").Services & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    findModules(id: string): Promise<{
        restaurant_id: Types.ObjectId;
        isDineOut: boolean;
        isFoodDelivery: boolean;
        catering_services: boolean;
    }>;
    updateVendorCommission(restaurant_id: string, vendor_commission: number): Promise<{
        message: string;
        data: mongoose.Document<unknown, {}, import("./schema/restaurant.schema").Restaurant, {}, {}> & import("./schema/restaurant.schema").Restaurant & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
}
