import { IUserAddress } from './user.types';
export declare enum OrderStatus {
    PENDING = "PENDING",
    PROCESSING = "PROCESSING",
    SHIPPED = "SHIPPED",
    DELIVERED = "DELIVERED",
    CANCELLED = "CANCELLED",
    REFUNDED = "REFUNDED"
}
export declare enum PaymentStatus {
    UNPAID = "UNPAID",
    PAID = "PAID",
    FAILED = "FAILED",
    REFUNDED = "REFUNDED"
}
export declare enum PaymentMethod {
    RAZORPAY = "RAZORPAY",
    STRIPE = "STRIPE",
    COD = "COD"
}
export interface IOrderItem {
    id: string;
    orderId: string;
    bookId: string;
    bookTitle: string;
    quantity: number;
    unitPrice: number;
    totalPrice: number;
    coverImage?: string;
    createdAt: string;
}
export interface IOrder {
    id: string;
    orderNumber: string;
    userId: string;
    status: OrderStatus;
    totalAmount: number;
    taxAmount: number;
    shippingAmount: number;
    discountAmount: number;
    shippingAddress: IUserAddress;
    billingAddress: IUserAddress;
    paymentStatus: PaymentStatus;
    paymentMethod?: PaymentMethod;
    paymentId?: string;
    items: IOrderItem[];
    trackingNumber?: string;
    carrier?: string;
    createdAt: string;
    updatedAt: string;
}
export interface ICreateOrderRequest {
    shippingAddressId: string;
    billingAddressId?: string;
    paymentMethod: PaymentMethod;
    notes?: string;
}
export interface IOrderStatusUpdate {
    orderId: string;
    status: OrderStatus;
    trackingNumber?: string;
    carrier?: string;
}
export interface IPaymentInitResponse {
    orderId: string;
    orderNumber: string;
    amount: number;
    currency: string;
    paymentGatewayKey: string;
    gatewayOrderId?: string;
}
//# sourceMappingURL=order.types.d.ts.map