export interface User {
  id: number
  email: string
  roles: string[]
  theme: string | null
}

export interface Device {
  id: number
  mac: string
  name: string
  orientation: 'landscape' | 'portrait'
  rotationIntervalHours: number
  uniquenessWindow: number
  linkedAt: string
}

export interface Image {
  id: number
  source: 'uploaded' | 'shared'
  filename: string
  thumbnailUrl: string
  deletedAt: string | null
  approvedDeviceIds: number[]
}

export interface StickerLayer {
  id: string
  type: string
  x: number
  y: number
  scale: number
  rotation: number
}

export interface RenderedAsset {
  id: number
  imageId: number
  deviceModel: string
  orientation: 'landscape' | 'portrait'
  status: 'pending' | 'processing' | 'ready' | 'failed'
}

export interface Token {
  uuid: string
  type: 'share_approve' | 'share_decline' | 'hard_delete_confirm'
  expiresAt: string
  usedAt: string | null
}

export interface ApiError {
  message: string
  errors?: Record<string, string[]>
}
