import { RedisService } from "../redis/redis.service";
import { CommonService } from 'src/common/common.service';
import { DbService } from 'src/db/db.service';
import { OrderAggregation } from './order.aggregation';
import { PaymentService } from 'src/payment/payment.service';
import { AppService } from 'src/app.service';
import { OrderPlacedDto, orderSubscriptionsListDto, orderSubscriptionsStatusDto, RefundDto, UserRecommendationDto, ReassignHandoverDriverDto, AcceptHandoverDto, ConfirmHandoverPickupDto, UpdateHandoverStatusDto } from './dto/order.dto';
import { HandoverNotificationService } from './handover-notification.service';
import mongoose, { Types } from 'mongoose';
import { RestaurantVerificationStatus } from 'src/restaurant/schema/restaurant.schema';
import { HeatMapQueryDto } from './dto/heat-map-query.dto';
import { RazorpayService } from 'src/razorpay/razorpay.service';
import { PaytabService } from 'src/paytab/paytab.service';
import { CashfreeService } from 'src/cashfree/cashfree.service';
import { LoyalityPointsService } from 'src/loyality-points/loyality-points.service';
import { SocketGateway } from 'src/socket/socket.gateway';
export declare class OrderService {
    private readonly model;
    private readonly commonService;
    private readonly orderAggregation;
    private readonly paymentService;
    private readonly appService;
    private readonly RazorpayService;
    private readonly PaytabService;
    private readonly cashfreeService;
    private readonly loyaltyService;
    private readonly handoverNotificationService;
    private readonly socketGateway;
    private readonly redisService;
    constructor(model: DbService, commonService: CommonService, orderAggregation: OrderAggregation, paymentService: PaymentService, appService: AppService, RazorpayService: RazorpayService, PaytabService: PaytabService, cashfreeService: CashfreeService, loyaltyService: LoyalityPointsService, handoverNotificationService: HandoverNotificationService, socketGateway: SocketGateway, redisService: RedisService);
    RestaurantDetail(restaurant_id: any, body: any, customer_detail?: any): Promise<{
        data: {
            category: (mongoose.Document<unknown, {}, import("../category/schema/category.schema").Category, {}, {}> & import("../category/schema/category.schema").Category & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            })[];
            rating_count: number;
            is_fav: boolean;
            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: String;
                long: String;
            };
            location: {
                type: string;
                coordinates: number[];
            };
            country_code: string;
            image: string;
            food_licence_image: string;
            status: import("src/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: 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: import("src/restaurant/schema/restaurant.schema").Availability[];
            subscribers_limit: {
                type: Number;
                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;
        };
        offers: (mongoose.Document<unknown, {}, import("../coupon/schema/coupon.schema").Coupons, {}, {}> & import("../coupon/schema/coupon.schema").Coupons & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
        distance: any;
        displacement_only_for_test: number;
        duration: any;
    }>;
    RestaurantMenu(restaurant_id: string, body: any): Promise<{
        data: any[];
        restaurant: mongoose.Document<unknown, {}, import("src/restaurant/schema/restaurant.schema").Restaurant, {}, {}> & import("src/restaurant/schema/restaurant.schema").Restaurant & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    SearchRestaurantDish(restaurant_id: any, search: any): Promise<{
        data: (mongoose.Document<unknown, {}, import("../food/schema/food-item.schema").FoodItems, {}, {}> & import("../food/schema/food-item.schema").FoodItems & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    AvailableCoupon(restaurant_id: string, search: string, customer_id: string): Promise<{
        data: (mongoose.FlattenMaps<{
            code: string;
            description: string;
            discount_percentage: number;
            minimum_booking_amount: number;
            valid_upto: number;
            maximum_discount_amount: number;
            type: string;
            used_by: string[];
            date_of_use: number;
            status: string;
            created_at: number;
            updated_at: number;
        }> & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    isRestaurantOpen(schedule: any): Promise<any>;
    findCustomer(body: any): Promise<mongoose.Document<unknown, {}, import("../customer/schema/customer.schema").Customers, {}, {}> & import("../customer/schema/customer.schema").Customers & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }>;
    OrderPlaced(body: any, req: any): Promise<{
        status: boolean;
        message: string;
        data?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        data: any;
        status?: undefined;
        message?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        status: boolean;
        message: string;
        data: any;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        order_id: any;
        is_payment_required: boolean;
        return_url: string;
        message: string;
        status?: undefined;
        data?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        client_secret: string;
        ephemeralKey: string;
        customer: string;
        data: any;
        status?: undefined;
        message?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        razorpay: {
            amount: any;
            currency: any;
            id: any;
            order_id: any;
            slot_id: any;
            plate_id: any;
        };
        status?: undefined;
        message?: undefined;
        data?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        cashfree: {
            id: any;
            order_meta: any;
            payment_session_id: any;
        };
        amount: any;
        order_id: any;
        status?: undefined;
        message?: undefined;
        data?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        paytab?: undefined;
    } | {
        paytab: {
            redirect_url: any;
        };
        amount: any;
        status?: undefined;
        message?: undefined;
        data?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
    }>;
    createAdminOrder(body: any, req: any): Promise<{
        status: boolean;
        message: string;
        data?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        data: any;
        status?: undefined;
        message?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        status: boolean;
        message: string;
        data: any;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        order_id: any;
        is_payment_required: boolean;
        return_url: string;
        message: string;
        status?: undefined;
        data?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        client_secret: string;
        ephemeralKey: string;
        customer: string;
        data: any;
        status?: undefined;
        message?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        razorpay: {
            amount: any;
            currency: any;
            id: any;
            order_id: any;
            slot_id: any;
            plate_id: any;
        };
        status?: undefined;
        message?: undefined;
        data?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        cashfree: {
            id: any;
            order_meta: any;
            payment_session_id: any;
        };
        amount: any;
        order_id: any;
        status?: undefined;
        message?: undefined;
        data?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        paytab?: undefined;
    } | {
        paytab: {
            redirect_url: any;
        };
        amount: any;
        status?: undefined;
        message?: undefined;
        data?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
    }>;
    OrderPlacedOptimized(body: any, req: any): Promise<{
        status: boolean;
        message: string;
        data?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        data: any;
        status?: undefined;
        message?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        order_id: any;
        is_payment_required: boolean;
        return_url: string;
        message: string;
        status?: undefined;
        data?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        client_secret: string;
        ephemeralKey: string;
        customer: string;
        data: any;
        status?: undefined;
        message?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        razorpay: {
            amount: any;
            currency: any;
            id: any;
            order_id: any;
            slot_id: any;
            plate_id: any;
        };
        status?: undefined;
        message?: undefined;
        data?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    } | {
        cashfree: {
            id: any;
            order_meta: any;
            payment_session_id: any;
        };
        amount: any;
        order_id: any;
        status?: undefined;
        message?: undefined;
        data?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        paytab?: undefined;
    } | {
        paytab: {
            redirect_url: any;
        };
        amount: any;
        status?: undefined;
        message?: undefined;
        data?: undefined;
        order_id?: undefined;
        is_payment_required?: undefined;
        return_url?: undefined;
        client_secret?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
    }>;
    managePromoWalletOrder(order: any, payable_amount: number): Promise<{
        payable_amount: number;
    }>;
    createOrderId(): string;
    OrderDetail(order_id: string, user_id?: string): Promise<{
        data: any;
    }>;
    getOrderHandoverHistory(order_id: string): Promise<{
        message: string;
        data: {
            order_id: string;
            latest_handover_status: any;
            all_handover_detail: any[];
        };
    }>;
    cancelOrders(order_id: string, req: any): Promise<{
        data: mongoose.Document<unknown, {}, import("./schema/order.schema").Orders, {}, {}> & import("./schema/order.schema").Orders & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    refundOrderAmountByAdmin(order_id: string, req: any, dto: RefundDto): Promise<any>;
    updateOrderStatusByAdmin(order_id: string, status: string): Promise<{
        data: mongoose.Document<unknown, {}, import("./schema/order.schema").Orders, {}, {}> & import("./schema/order.schema").Orders & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    handleCanelOrder(order_id: any, user_id: any): Promise<mongoose.Document<unknown, {}, import("./schema/order.schema").Orders, {}, {}> & import("./schema/order.schema").Orders & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }>;
    find_order_with_id(id: any): Promise<any>;
    ApplyPromoCode(body: any): Promise<{
        data: any;
    }>;
    orderListing(body: any, req?: any): Promise<{
        data_count: number;
        data: any[];
        active_orders_count: number;
        completed_orders_count: number;
        cancelled_orders_count: number;
        pos_orders_count: number;
        total_order_amount: number;
        total_admin_commission: number;
    }>;
    cancelPendingOrders(): Promise<void>;
    assignDriverByAdmin(driver_id: string, order_id: string): Promise<{
        message: string;
        data: mongoose.Document<unknown, {}, import("./schema/order.schema").Orders, {}, {}> & import("./schema/order.schema").Orders & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    downloadInvoice(id: any, body: any): Promise<{
        url: string;
        data: {
            orderId: any;
            customerName: any;
            driverName: any;
            restaurantName: any;
            subtotal: any;
            tax: any;
            deliveryCharge: any;
            salesCommission: any;
            totalAmount: any;
            date: string;
            cart_items: any;
            other_cart_items: any;
            deliveryAddress: any;
            restaurantAddress: any;
            cart_total_amount: any;
            couponDiscount: any;
            platform_fee: any;
            applied_surcharges: any[];
            tip_amount: any;
            deliver_type: any;
            currencySymbol: any;
            driverCut: any;
        };
        type: any;
    }>;
    createOrderForGuest(body: any, customer: any): Promise<{
        data: mongoose.Document<unknown, {}, import("./schema/order.schema").Orders, {}, {}> & import("./schema/order.schema").Orders & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    getOrderAnalyticsTable(query: HeatMapQueryDto): Promise<{
        total: number;
        currentPage: number;
        totalPages: number;
        data: any[];
    }>;
    getOrderHeatMapData(query: HeatMapQueryDto): Promise<any[]>;
    getStartDateFromRange(range: string): Promise<number | null>;
    placeOrderWithWallet(body: OrderPlacedDto, req: any): Promise<{
        statusCode: number;
        message: string;
        order: mongoose.Document<unknown, {}, import("./schema/order.schema").Orders, {}, {}> & import("./schema/order.schema").Orders & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    placedDirectOrder(order: any): Promise<void>;
    getUserRecommendations(customerId: Types.ObjectId, dto: UserRecommendationDto): Promise<{
        statusCode: number;
        message: string;
        result: {
            food_id: Types.ObjectId;
            food_name: string;
            food_rating?: number;
            restaurant_id: Types.ObjectId;
            food_images: {};
            restaurant_name?: string;
            order_count: number;
            price: number;
            food_type: string;
            is_available: boolean;
        }[];
    }>;
    CreateUpcommingOrders(): Promise<{
        status: boolean;
        message: string;
    }>;
    HandleUpcommingOrders(): Promise<void>;
    HandleScheduledOrders(): Promise<void>;
    orderSubscriptions(req: any, dto: orderSubscriptionsListDto): Promise<{
        total: number;
        data: any[];
        active_subscription_count: number;
        cancelled_subscription_count: number;
        paused_subscription_count: number;
    }>;
    orderSubscriptionsDetails(req: any, id: string): Promise<{
        data: mongoose.Document<unknown, {}, import("./schema/order-subscribe.schema").SubscribeOrder, {}, {}> & import("./schema/order-subscribe.schema").SubscribeOrder & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    orderSubscriptionsStatus(req: any, dto: orderSubscriptionsStatusDto): Promise<{
        status: boolean;
        message: string;
    }>;
    cancelSubscriptonOrder(req: any, id: string): Promise<mongoose.mongo.DeleteResult>;
    orderHitory(id: string): Promise<{
        data: (mongoose.Document<unknown, {}, import("./schema/order-history.schema").OrderHistory, {}, {}> & import("./schema/order-history.schema").OrderHistory & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    orderDriverRequests(id: string): Promise<{
        accepted_driver_id: string;
        data: any[];
    }>;
    updateAveragePreparingTime(restaurant_id: string | Types.ObjectId): Promise<number>;
    handleDriverCancellationPenalty(driverId: string): Promise<void>;
    cancelDriverAssignmentBeforePickup(order_id: string, userRole?: string, userId?: string, reason?: string): Promise<{
        message: string;
        order_id: any;
    }>;
    reassignPickedUpDriverByAdmin(body: ReassignHandoverDriverDto, userRole?: string, userId?: string): Promise<{
        message: string;
        order_id: any;
    } | {
        message: string;
        order_id: any;
        handover_id: any;
        notified_drivers_count: number;
    }>;
    acceptHandoverRequest(driverId: string, body: AcceptHandoverDto): Promise<{
        message: string;
        handover_id: any;
        previous_driver_location: any;
        driver1_status: any;
        driver2_status: any;
    }>;
    confirmHandoverPickup(driverId: string, body: ConfirmHandoverPickupDto): Promise<{
        message: string;
        order_id: any;
        handover_id: any;
        driver1_status: any;
        driver2_status: any;
    }>;
    updateHandoverStatus(driverId: string, body: UpdateHandoverStatusDto): Promise<{
        message: string;
        handover_id: any;
        previous_driver_location: any;
        driver1_status: any;
        driver2_status: any;
    } | {
        message: string;
        order_id: any;
        handover_id: any;
        driver1_status: any;
        driver2_status: any;
        handover_status: any;
    }>;
    finalizeHandoverCompletion(handover: any, order: any): Promise<void>;
    private processRefundLiabilityWallets;
    private adjustDriverWallet;
    private adjustVendorWallet;
    private sendDriverRefundPenaltyNotification;
    private sendVendorRefundPenaltyNotification;
}
