export type Side = number;

export type FlipState = {
  horizontal: boolean;
  vertical: boolean;
};

export type GuidePosition = {
  x: number;
  y: number;
  width: number;
  height: number;
};

export type SideStatus = "approved" | "rejected" | null;

export type AllGuidePositions = {
  bleed: GuidePosition | null;
  trim: GuidePosition | null;
  safe: GuidePosition | null;
};

export interface AttributeItem {
  displayName: string;
  attributeType: string;
}

export interface DesignData {
  _id?: string;
  email?: string;
  quantity?: string | number;
  price?: string | number;
  status?: string;
  isPaymentRequest?: boolean;
  orderId?: any;
  product?: {
    _id?: string;
    name?: string;
    parentId?: {
      name?: string;
      slug?: string;
    };
    options?: any[];
    [key: string]: any;
  };
  turnAroundTime?: {
    name?: string;
    estimatedDateNumber?: number;
    cutOffTime?: string;
  };
  logs?: Array<{
    imagesArray?: Array<{
      image: string;
      replaceImage?: string;
      status?: string;
      rejectReason?: string;
    }>;
    dateResponded?: string | Date;
    status?: string;
    AdminNotes?: string;
    clientsNotes?: string;
  }>;
  lastLog?: any;
  sendImagePath?: any;
  replaceImage?: any;
  attributes?: AttributeItem[];
  user: {
    _id: string
  }
  [key: string]: any;
}

export interface ParsedSize {
  width: number;
  height: number;
  rawText: string;
  displayText: string;
  aspectRatio: string;
}

export interface CanvasShapeConfig {
  aspectRatio: string;
  borderRadius: string;
  width: number;
  height: number;
  shape: string;
  orientation: string;
  isCircle: boolean;
  isOval: boolean;
  isRounded: boolean;
  isVertical: boolean;
}
