import type { OrderItemDto } from "./order-item.dto.js";
import type { OrderStatus, PaymentMethod, PaymentProvider, PaymentAttemptStatus, ExecutionMethod } from "../enums.js";
import type { PromoCodeUsageDto } from "./promo-code.dto.js";
import type { OrderDepositLineDto } from "./deposit.dto.js";
export interface OrderPaymentDto {
    id: string;
    amount: number;
    method: PaymentMethod;
    executionMethod: ExecutionMethod | null;
    provider: PaymentProvider | null;
    reference: string | null;
    createdAt: string;
}
export interface LastPaymentAttemptDto {
    id: string;
    status: PaymentAttemptStatus;
    method: PaymentMethod;
    amount: number;
    failureReason: string | null;
    createdAt: string;
}
export interface OrderListItemDto {
    id: string;
    status: OrderStatus;
    total: number;
    depositTotal?: number;
    createdAt: string;
    itemCount: number;
    createdById?: string | null;
    createdByName?: string | null;
    cashSessionId?: string | null;
    sessionOrderNumber?: number | null;
}
export interface OrderDetailDto {
    id: string;
    status: OrderStatus;
    total: number;
    depositTotal: number;
    discountTotal?: number;
    createdAt: string;
    createdById?: string | null;
    createdByName?: string | null;
    paidAt?: string;
    stationId?: string | null;
    cashSessionId?: string | null;
    sessionOrderNumber?: number | null;
    depositLines: OrderDepositLineDto[];
    orderItems: OrderItemDto[];
    payments?: OrderPaymentDto[];
    lastPaymentAttempt?: LastPaymentAttemptDto | null;
    appliedPromoCodes?: PromoCodeUsageDto[];
}
