export interface ISonosConfig {
  host?: string;
  port?: number;
  speakerInfo?: ISonosSpeakerInfo;
  transportInfo?: ISonosTransportInfo;
  positionInfo?: ISonosPositionInfo;
  volume?: number;
  muted?: boolean;
}

export interface ISonosSpeakerInfo {
  uid: string;
  zoneName: string;
  modelName?: string;
  modelNumber?: string;
  serialNumber?: string;
  softwareVersion?: string;
  manufacturer?: string;
  householdId?: string;
}

export interface ISonosTransportInfo {
  currentTransportState?: string;
  currentTransportStatus?: string;
  currentSpeed?: string;
}

export interface ISonosPositionInfo {
  track?: number;
  trackDuration?: string;
  trackMetaData?: string;
  trackUri?: string;
  relativeTime?: string;
  artist?: string;
  album?: string;
  title?: string;
  albumArtUri?: string;
}

export interface ISonosSnapshot {
  speakerInfo: ISonosSpeakerInfo;
  transportInfo: ISonosTransportInfo;
  positionInfo: ISonosPositionInfo;
  volume?: number;
  muted?: boolean;
}

export interface ISonosSsdpRecord {
  st?: string;
  usn?: string;
  location?: string;
  headers?: Record<string, string | undefined>;
}

export interface ISonosMdnsRecord {
  name?: string;
  type?: string;
  host?: string;
  port?: number;
  txt?: Record<string, string | undefined>;
}

export interface ISonosManualEntry {
  host?: string;
  port?: number;
  id?: string;
  name?: string;
  model?: string;
  metadata?: Record<string, unknown>;
}
