import { HydratedDocument, Types } from "mongoose";
import * as mongoose from "mongoose";
import { OrderDeliver } from "../dto/order.dto";
export declare class make_your_own {
    _id: string;
    name: string;
    price: number;
}
export declare enum RefundLiability {
    Driver = "driver",
    Restaurant = "restaurant",
    Both = "both"
}
export declare class toppings {
    _id: string;
    name: string;
    price: number;
}
export declare class AddOnItem {
    _id: string;
    name: string;
    price: number;
    selected_quantity: number;
}
export declare class foodSize {
    _id: string;
    name: string;
    price: number;
}
export declare class foodQuantity {
    _id: string;
    name: string;
    price: number;
}
export declare class foodPieces {
    _id: string;
    name: string;
    price: number;
}
export declare class OtherAddOnItem {
    name: string;
    price: number;
}
export declare class FoodItem {
    food_id: string;
    name: string;
    food_type: string;
    no_of_quantity: number;
    price: number;
    size?: foodSize;
    quantity?: foodQuantity;
    pieces?: foodPieces;
    cooking_req?: string;
    add_ons?: AddOnItem[];
    toppings?: toppings[];
    make_your_own?: make_your_own[];
    other_add_ons?: OtherAddOnItem[];
}
export declare class SurchargeItem {
    surcharge_id: string;
}
export declare class ReceiverDetail {
    name: string;
    phone: string;
    country_code: string;
}
export declare class GuestDetail {
    name: string;
    email: string;
    phone: string;
    country_code: string;
}
export declare class AddAddress {
    name: string;
    lat: string;
    long: string;
    building_no: string;
    tower: string;
    area: string;
    city: string;
    nearby_landmark: string;
    type: string;
}
export declare enum OrderType {
    Current = "current",
    Schedule = "schedule",
    Pos = "pos",
    Grocery = "grocery",
    Pharmacy = "pharmacy",
    Electronics = "electronics",
    Cloth = "cloth"
}
export declare enum PaymentType {
    CashOnDelivery = "cod",
    Cash = "cash",
    Card = "card",
    Wallet = "wallet",
    UPI = "upi"
}
export declare enum PaymentStatus {
    Pending = "pending",
    Complete = "complete",
    Refunded = "refunded",
    Failed = "failed"
}
export declare enum OrderStatus {
    OrderPending = "pending",
    OrderPlaced = "order_placed",
    OrderConfirmed = "order_confirmed",
    ReadyForPickup = "ready_for_pickup",
    PickedUp = "picked_up",
    OutForDelivery = "out_for_delivery",
    Delivered = "delivered",
    Cancelled = "cancelled",
    Failed = "failed",
    scheduled = "scheduled",
    upcomming = "upcomming",
    Pos = "pos",
    Hold = "hold"
}
export declare enum RiderStatus {
    WayToRestaurant = "way_to_restaurant",
    ReachedAtRestaurant = "reached_at_restaurant",
    PickedUp = "picked_up",
    WayToCustomer = "way_to_customer",
    ReachedAtdelivery = "reached_at_delivery",
    Delivered = "delivered",
    Canceled = "canceled"
}
export declare class OtherItem {
    category_id: string;
    name: string;
    description: string;
    quantity: string;
    unit: string;
    price: number;
    imageUrl: string;
    cloth_stock_id: string;
    color_code: string;
    size: string;
}
export declare class Orders {
    restaurant_id: string;
    customer_id: string;
    driver_id: string;
    coupon_id: string;
    order_id: string;
    cart_items: FoodItem[];
    other_cart_items: OtherItem[];
    surcharges: SurchargeItem[];
    delivery_address: AddAddress;
    note_for_restaurant: string;
    add_delivery_instruction: string;
    add_receiver_detail: ReceiverDetail;
    add_guest_detail: GuestDetail;
    order_type: OrderType;
    order_status: OrderStatus;
    rider_status: RiderStatus;
    payment_type: PaymentType;
    payment_status: PaymentStatus;
    more_time_required_at: number;
    add_more_time: number;
    order_placed_at: number;
    order_confirmed_at: number;
    order_prepared_at: number;
    order_ready_at: number;
    order_picked_up_at: number;
    order_delivered_at: number;
    actual_prep_time: number;
    actual_delivery_time: number;
    order_count_for_restaurant: number;
    estimated_food_ready_time: number;
    estimated_delivery_time: number;
    distance: number;
    cart_amount: number;
    restaurant_rating: number;
    driver_rating: number;
    coupon_amount: number;
    delivery_fee: number;
    free_delivery_fee: number;
    platform_fee: number;
    tax_amount: number;
    sales_commission: number;
    total_amount: number;
    delivered_at: number;
    refund_at: Date;
    order_open_for: mongoose.Schema.Types.ObjectId[];
    delivery_otp: string;
    otp_sent_at: number;
    tip_amount: number;
    scheduled_time: Date;
    is_open_for_driver: boolean;
    razorpay_order_id: string;
    created_at: number;
    updated_at: number;
    deliver_type: OrderDeliver;
    order_time_in_minutes: number;
    loyalty_point_redeemed: number;
    user_order_count: string;
    is_driver_notification_sent: boolean;
    is_driver_notification_sent_at: number;
    driver_notification_retry_count: number;
    last_driver_notification_sent_at: number;
    blocked_drivers: string[];
    promo_wallet_redeemed: boolean;
    promo_wallet_amount: number;
    total_admin_commission: number;
    is_placed_by_admin: boolean;
    placed_by_admin_id: mongoose.Schema.Types.ObjectId;
    refund_liability: RefundLiability;
    refund_reason: string;
    is_paid_by_admin: boolean;
    is_reordered_by_admin: boolean;
    reordered_order_id: mongoose.Schema.Types.ObjectId;
    reordered_at: number;
    is_handover: boolean;
    handover_id: mongoose.Schema.Types.ObjectId;
}
export type OrdersDocument = HydratedDocument<Orders>;
export declare const OrdersModel: mongoose.Schema<Orders, mongoose.Model<Orders, any, any, any, mongoose.Document<unknown, any, Orders, any, {}> & Orders & {
    _id: Types.ObjectId;
} & {
    __v: number;
}, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, Orders, mongoose.Document<unknown, {}, mongoose.FlatRecord<Orders>, {}, mongoose.ResolveSchemaOptions<mongoose.DefaultSchemaOptions>> & mongoose.FlatRecord<Orders> & {
    _id: Types.ObjectId;
} & {
    __v: number;
}>;
