export type OrderPaymentStatus =
  | 'none'
  | 'method_selected'
  | 'order_placed'
  | 'pending'
  | 'requires_action'
  | 'paid'
  | 'failed'
  | 'cancelled';

export interface OrderPaymentState {
  cartSessionId: string;
  paymentMethodId?: string;
  orderId?: number;
  orderReference?: string;
  paymentToken?: string;
  status: OrderPaymentStatus;
  message?: string;
  /** Mirror-only redirect (3DS / bank), never upstream PayU/Felopay. */
  redirectUrl?: string;
  /** Pełne dane karty (Redis, TTL sesji) — do integracji PSP. */
  cardPayment?: CardPaymentPayload;
  blikCode?: string;
  updatedAt: string;
}

export interface OrderPlacePayload {
  firstname?: string;
  lastname?: string;
  email?: string;
  phone?: string;
  address?: string;
  city?: string;
  zip?: string;
  country?: string;
  shippingMethodId?: string;
  shippingMethodName?: string;
  shippingPrice?: number;
  deliveryType?: string;
  pickupPointId?: string;
  pickupPointJson?: Record<string, unknown>;
  paymentMethod?: string;
  invoiceIsCompany?: boolean;
  companyName?: string;
  vatin?: string;
  regon?: string;
}

export interface CardPaymentPayload {
  cardNumber: string;
  expiry: string;
  cvc: string;
  cardHolder: string;
}

export interface BlikPaymentPayload {
  code: string;
}

export interface RedirectPaymentPayload {
  returnUrlSuccess?: string;
  returnUrlFailure?: string;
  webhookUrl?: string;
}
