import type { PlacedSymbol, EpcWaypoint } from './types.js';

/** JSON shape stored in localStorage / exported JSON files */
export interface SerializedSymbol {
  symbolId: string;
  name: string;
  label?: string;
  file: string;
  x: number;
  y: number;
  w: number;
  h: number;
  w2?: number;
  rotation?: number;
  mirrored?: boolean;
  curveAngle?: number;
  epcWaypoints?: EpcWaypoint[];
  pdpCBs?: number[];
}

export function serializeSymbol(sym: PlacedSymbol): SerializedSymbol {
  return {
    symbolId: sym.symbolId,
    name: sym.name,
    label: sym.label || undefined,
    file: sym.file,
    x: sym.x,
    y: sym.y,
    w: sym.w,
    h: sym.h,
    w2: sym.w2,
    rotation: sym.rotation || undefined,
    mirrored: sym.mirrored || undefined,
    curveAngle: sym.curveAngle,
    epcWaypoints: sym.epcWaypoints,
    pdpCBs: sym.pdpCBs,
  };
}

export function deserializeSymbol(data: SerializedSymbol, id: number): PlacedSymbol {
  return {
    id,
    symbolId: data.symbolId,
    name: data.name,
    label: data.label || '',
    file: data.file?.replace('_no_comm.svg', '.svg') || data.file,
    x: data.x,
    y: data.y,
    w: data.w,
    h: data.h,
    w2: data.w2,
    rotation: data.rotation || 0,
    mirrored: data.mirrored || false,
    curveAngle: data.curveAngle,
    epcWaypoints: data.epcWaypoints,
    pdpCBs: data.pdpCBs,
  };
}
