import type { DeviceStateSnapshot, NormalizedTelemetry } from "@tracker/shared";

export type ProtocolPacket = {
  protocolName: string;
  rawPayload: string;
  imei?: string;
  telemetry?: NormalizedTelemetry;
  deviceState?: DeviceStateSnapshot;
  requiresAck: boolean;
  ackPayload?: Buffer;
  eventType: "login" | "telemetry" | "heartbeat" | "unknown";
};

export type ProtocolContext = {
  imei?: string;
};

export type ProtocolParser = {
  name: string;
  matches: (payload: Buffer) => boolean;
  parse: (payload: Buffer, context?: ProtocolContext) => ProtocolPacket | null;
};
