import { CustomerService } from './customer.service';
import { AdminCustomerDto, CreateCustomerVendorQueryDto, CustomerBlockDto, UpdatePendingCustomerStatusDto, CustomerListDto, CustomerOrderDto, CustomerWalletHistoryDto, DetailedSearchDto, GetAllRestaurantDto, GetCustomerVendorQueriesDto, QuickPicksDto, relevantSearchDto, ReplyCustomerVendorQueryDto, vendorAddItemsToCustomerDto, YourOrdersDto, GlobalSearchDto, NearestPopularStoresDto, RestaurantsByCuisineDto, CuisineListDto, NearestStoresDto, OrderAgainDto } from './dto/customer.dto';
import { JwtService } from '@nestjs/jwt';
export declare class CustomerController {
    private readonly customerService;
    private readonly jwtService;
    constructor(customerService: CustomerService, jwtService: JwtService);
    GetAllRestaurantGet(req: any, query: GetAllRestaurantDto, page: number, limit: number, typeQuery?: string): Promise<{
        data_count: any;
        data: any[];
    }>;
    GetAllRestaurant(req: any, body: GetAllRestaurantDto, page: number, limit: number, typeQuery?: string): Promise<{
        data_count: any;
        data: any[];
    }>;
    QuickPicksRestaurant(body: QuickPicksDto, req: any): Promise<{
        data: any;
        count: any;
    }>;
    get_quick_picks_customer(body: QuickPicksDto, req: any): Promise<{
        data: any;
        count: any;
    }>;
    search(body: relevantSearchDto): Promise<{
        data: any[];
    }>;
    getHomeModules(): Promise<{
        modules: any;
    }>;
    getAllCategories(type?: string, page?: string, limit?: string): Promise<{
        success: boolean;
        data: any[];
        total: any;
    }>;
    getCategoryItems(id: string, page: string, limit: string): Promise<{
        success: boolean;
        category_id: string;
        data: {
            food_items: (import("mongoose").FlattenMaps<{
                type: string;
                restaurant_id: string;
                category_id: string;
                food_type: string;
                image: string[];
                name: string;
                price: number;
                discounted_price: number;
                discount_type: string;
                discount_value: any;
                discount_start_date: string;
                discount_end_date: string;
                is_discount_active: boolean;
                pieces: {
                    title: string;
                    add_price: number;
                    final_price: number;
                }[];
                quantity: {
                    title: string;
                    add_price: number;
                    final_price: number;
                }[];
                size: {
                    title: string;
                    add_price: number;
                    final_price: number;
                }[];
                add_ons: {
                    title: string;
                    customer_selection: string;
                    additional_price: number;
                    min_selection: number;
                    max_selection: number;
                    selected_quantity: number;
                }[];
                other_add_ons: {
                    title: string;
                    description: string;
                    min_selection: number;
                    max_selection: number;
                    options: {
                        title: string;
                        additional_price: number;
                        customer_selection: string;
                        min_selection: number;
                        max_selection: number;
                    }[];
                }[];
                toppings: {
                    title: string;
                    customer_selection: string;
                    additional_price: number;
                    min_selection: number;
                    max_selection: number;
                    selected_quantity: number;
                }[];
                make_your_own: {
                    group_id: string;
                    title: string;
                    customer_selection: string;
                    additional_price: number;
                }[];
                item_timing: {
                    day: string;
                    day_id: string;
                    start_time: string;
                    end_time: string;
                }[];
                availability_type: string;
                is_available: boolean;
                availability_status: string;
                rating: number;
                extimate_time: number;
                description: string;
                is_recommend: boolean;
                sort_index: {
                    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: import("bson").Binary;
                };
                created_at: number;
                updated_at: number;
                embedding: number[];
                order_count: {
                    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;
                };
                trending_count: {
                    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;
                };
                home_cooked_service_id: string;
                restaurant_type?: string;
                catering_services: boolean;
                is_deleted: boolean;
                admin_commission: number;
            }> & {
                _id: import("mongoose").Types.ObjectId;
            } & {
                __v: number;
            })[];
            grocery_items: (import("mongoose").FlattenMaps<{
                type?: string;
                store_id: string;
                category_id: string;
                name: string;
                description: string;
                size: string;
                quantity: string;
                unit: string;
                price: number;
                discounted_price: number;
                discount_type: string;
                discount_value: any;
                discount_start_date: string;
                discount_end_date: string;
                is_discount_active: boolean;
                imageUrl: string;
                is_deleted: boolean;
                stock: number;
                barcode_id: string;
                barcode_url: string;
                admin_commission: number;
                is_available: boolean;
                availability_status: string;
                is_hidden: boolean;
            }> & {
                _id: import("mongoose").Types.ObjectId;
            } & {
                __v: number;
            })[];
        };
        pagination: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    getStoresByCategory(id: string, page: string, limit: string): Promise<{
        success: boolean;
        category_id: string;
        data: (import("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: import("../restaurant/schema/restaurant.schema").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: import("../restaurant/schema/restaurant.schema").RestaurantVerificationStatus;
            doc_update_verification: import("../restaurant/schema/restaurant.schema").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: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        })[];
        pagination: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    globalSearch(body: GlobalSearchDto): Promise<{
        status: boolean;
        data: any[];
    }>;
    getNearestPopularStores(body: NearestPopularStoresDto, req: any): Promise<{
        data_count: any;
        data: any;
    }>;
    getNearestStores(body: NearestStoresDto, req: any): Promise<{
        data_count: any;
        data: any;
    }>;
    getOrderAgain(body: OrderAgainDto, req: any): Promise<{
        data_count: any;
        data: any;
    }>;
    getCuisinesList(body: CuisineListDto): Promise<{
        data: (import("mongoose").Document<unknown, {}, import("../cuisine/schema/cuisine.schema").Cuisine, {}, {}> & import("../cuisine/schema/cuisine.schema").Cuisine & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        })[];
        total: number;
    }>;
    getRestaurantsByCuisine(id: string, body: RestaurantsByCuisineDto, req: any): Promise<{
        data_count: any;
        data: any;
    }>;
    Detailedsearch(body: DetailedSearchDto, req: any): Promise<{
        data: unknown[];
    }>;
    YourOrders(dto: YourOrdersDto, req: any): Promise<{
        count: any;
        data: any;
    }>;
    findAllCustomers(body: AdminCustomerDto, req: any): Promise<{
        count: any;
        data: any;
        active_customer_count: number;
        blocked_customer_count: number;
        deleted_customer_count: number;
    }>;
    findAll(body: AdminCustomerDto, req: any): Promise<{
        count: any;
        data: any;
        active_customer_count: number;
        blocked_customer_count: number;
        deleted_customer_count: number;
    }>;
    findOne(id: string, req: any): Promise<{
        data: import("mongoose").Document<unknown, {}, import("./schema/customer.schema").Customers, {}, {}> & import("./schema/customer.schema").Customers & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    getCustomerAnalytics(id: string): Promise<{
        data: {
            total_orders: number;
            total_active_order: number;
            total_orders_delivered: number;
            total_cancelled_order: number;
            cancellation_order_percentage: number;
            total_spent_amount: number;
            total_dineout_booking: number;
            total_catering_booking: number;
        };
    }>;
    blockCustomer(body: CustomerBlockDto): Promise<{
        message: string;
    }>;
    updatePendingStatus(body: UpdatePendingCustomerStatusDto): Promise<{
        message: string;
    }>;
    customer_booking2(body: CustomerOrderDto, req: any): Promise<{
        count: any;
        data: any;
    }>;
    customer_active_orders(req: any): Promise<{
        data: any[];
    }>;
    walletHistory(id: string, dto: CustomerWalletHistoryDto, req: any): Promise<{
        wallet: import("mongoose").Document<unknown, {}, import("../wallet/entities/wallet.entity").Wallet, {}, {}> & import("../wallet/entities/wallet.entity").Wallet & Required<{
            _id: unknown;
        }> & {
            __v: number;
        };
        total: number;
        history: (import("mongoose").Document<unknown, {}, import("../wallet/entities/wallet-transaction.entity").WalletTransaction, {}, {}> & import("../wallet/entities/wallet-transaction.entity").WalletTransaction & Required<{
            _id: unknown;
        }> & {
            __v: number;
        })[];
    }>;
    customer_listing(dto: CustomerListDto, req: any): Promise<{
        count: any;
        data: any;
    }>;
    createQuery(req: any, dto: CreateCustomerVendorQueryDto): Promise<{
        success: boolean;
        message: string;
        data: import("mongoose").Document<unknown, {}, import("./schema/customer_vendor_queries.schema").CustomerVendorQuery, {}, {}> & import("./schema/customer_vendor_queries.schema").CustomerVendorQuery & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    getQueries(dto: GetCustomerVendorQueriesDto, req: any): Promise<{
        success: boolean;
        message: string;
        count: number;
        page: number;
        limit: number;
        totalPages: number;
        total_query_count: number;
        pending_count: number;
        resolved_count: number;
        data: (import("mongoose").FlattenMaps<{
            customer_id: string;
            restaurant_id: string;
            query_text: string;
            image: string;
            reply: string;
            replied_by: string;
            replied_at: number;
            created_at: number;
            updated_at: number;
        }> & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    reply(req: any, dto: ReplyCustomerVendorQueryDto): Promise<{
        success: boolean;
        message: string;
    }>;
    add_items_for_customer(req: any, dto: vendorAddItemsToCustomerDto): Promise<{
        success: boolean;
        message: string;
        cart_id: import("mongoose").Types.ObjectId;
    }>;
    get_items_for_customer(req: any, id: string): Promise<{
        data: import("mongoose").Document<unknown, {}, import("./schema/vendor_add_items_customer_query.schema").VendorAddItemsCustomerQuery, {}, {}> & import("./schema/vendor_add_items_customer_query.schema").VendorAddItemsCustomerQuery & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    findAllRefferalCustomers(body: any): Promise<{
        data: {
            _id: any;
            date: any;
            referred_by: {
                name: any;
                phone: any;
                country_code: any;
            };
            referred_to: {
                name: any;
                phone: any;
                country_code: any;
                email: any;
            };
            bookings_to_complete: any;
            bookings_completed: number;
            days_left: number;
            bonus: any;
            payout_status: string;
            status: string;
        }[];
        count: number;
        message: import("../common/helpers/message-keys.enum").MessageKey;
    }>;
    AddAddress(CustomerAddressDto: any, req: any): Promise<{
        data: any;
    }>;
    delete_Address(id: string): Promise<{
        message: import("../common/helpers/message-keys.enum").MessageKey;
    }>;
    get_Address(req: any): Promise<{
        data: (import("mongoose").Document<unknown, {}, import("../address/schema/customer-address.schema").CustomerAddress, {}, {}> & import("../address/schema/customer-address.schema").CustomerAddress & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    findAllCustomerBackup(body: any): Promise<{
        count: any;
        data: any;
    }>;
    customer_booking(id: string, page: number, limit: number): Promise<{
        count: any;
        data: any;
    }>;
    CustomerStatusUpdate(body: any): Promise<{
        message: import("../common/helpers/message-keys.enum").MessageKey;
    }>;
    blockCab(body: any): Promise<{
        message: import("../common/helpers/message-keys.enum").MessageKey;
    }>;
    getMergedCustomers(body: any): Promise<{
        data: (import("mongoose").FlattenMaps<import("mongoose").Document<unknown, {}, import("../driver-customer-backup/schema/customerBackup.schema").CustomersBackup, {}, {}> & import("../driver-customer-backup/schema/customerBackup.schema").CustomersBackup & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        }> & Required<{
            _id: import("mongoose").Types.ObjectId;
        }>)[];
        count: number;
        page: number;
        limit: number;
    }>;
}
