import type { Controller } from '../../src/index.ts'

export const lightController: Controller = {
  id: '00000000-0000-0000-0000-000000000000',
  type: 'controller',
  deviceType: 'lightController',
  createdAt: '2000-01-01T00:00:00.000Z',
  isReachable: true,
  lastSeen: '2000-01-01T00:00:00.000Z',
  attributes: {
    customName: 'Custom name',
    model: 'TRADFRI remote control',
    manufacturer: 'IKEA of Sweden',
    firmwareVersion: '24.4.5',
    hardwareVersion: '1',
    serialNumber: '00000000-0000-0000-0000-000000000000',
    productCode: 'E1810',
    batteryPercentage: 20,
    isOn: false,
    lightLevel: 1,
    permittingJoin: false,
    otaStatus: 'upToDate',
    otaState: 'readyToCheck',
    otaProgress: 0,
    otaPolicy: 'autoUpdate',
    otaScheduleStart: '00:00',
    otaScheduleEnd: '00:00',
    circadianPresets: [],
  },
  capabilities: {
    canSend: ['isOn', 'lightLevel'],
    canReceive: ['customName'],
  },
  room: {
    id: '00000000-0000-0000-0000-000000000000',
    name: 'Room',
    color: 'ikea_green_no_65',
    icon: 'rooms_arm_chair',
  },
  deviceSet: [],
  remoteLinks: [],
  isHidden: false,
}

export const shortcutController: Controller = {
  id: '00000000-0000-0000-0000-000000000000',
  type: 'controller',
  deviceType: 'shortcutController',
  createdAt: '2000-01-01T00:00:00.000Z',
  isReachable: false,
  lastSeen: '2000-01-01T00:00:00.000Z',
  attributes: {
    customName: 'Custom name',
    model: 'TRADFRI SHORTCUT Button',
    manufacturer: 'IKEA of Sweden',
    firmwareVersion: '24.4.5',
    hardwareVersion: '1',
    serialNumber: '00000000-0000-0000-0000-000000000000',
    productCode: 'E1812',
    batteryPercentage: 1,
    isOn: false,
    lightLevel: 1,
    permittingJoin: false,
    otaStatus: 'updateAvailable',
    otaState: 'updateFailed',
    otaProgress: 0,
    otaPolicy: 'autoUpdate',
    otaScheduleStart: '00:00',
    otaScheduleEnd: '00:00',
  },
  capabilities: {
    canSend: ['singlePress', 'doublePress', 'longPress'],
    canReceive: ['customName'],
  },
  room: {
    id: '00000000-0000-0000-0000-000000000000',
    name: 'Room',
    color: 'ikea_green_no_65',
    icon: 'rooms_arm_chair',
  },
  deviceSet: [],
  remoteLinks: [],
  isHidden: false,
}

export const blindsController: Controller = {
  id: '00000000-0000-0000-0000-000000000000',
  type: 'controller',
  deviceType: 'blindsController',
  createdAt: '2022-11-28T16:09:10.000Z',
  isReachable: true,
  lastSeen: '2023-05-01T22:53:18.000Z',
  attributes: {
    customName: 'Custom name',
    model: 'TRADFRI open/close remote',
    manufacturer: 'IKEA of Sweden',
    firmwareVersion: '24.4.5',
    hardwareVersion: '1',
    serialNumber: '00000000-0000-0000-0000-000000000000',
    productCode: 'E1766',
    batteryPercentage: 20,
    isOn: false,
    lightLevel: 1,
    blindsCurrentLevel: 0,
    blindsState: 'stopped',
    permittingJoin: false,
    otaStatus: 'upToDate',
    otaState: 'readyToCheck',
    otaProgress: 0,
    otaPolicy: 'autoUpdate',
    otaScheduleStart: '00:00',
    otaScheduleEnd: '00:00',
  },
  capabilities: {
    canSend: ['isOn', 'lightLevel', 'blindsState'],
    canReceive: ['customName'],
  },
  room: {
    id: '00000000-0000-0000-0000-000000000000',
    name: 'Room',
    color: 'ikea_green_no_65',
    icon: 'rooms_arm_chair',
  },
  deviceSet: [],
  remoteLinks: [],
  isHidden: false,
}

export const scrollWheelController: Controller = {
  id: '00000000-0000-0000-0000-000000000000',
  relationId: '00000000-0000-0000-0000-000000000000',
  type: 'controller',
  deviceType: 'genericSwitch',
  createdAt: '2000-01-01T00:00:00.000Z',
  isReachable: true,
  lastSeen: '2000-01-01T00:00:00.000Z',
  customIcon: 'products_rotary_remote',
  attributes: {
    identifyPeriod: 0,
    identifyStarted: '2000-01-01T00:00:00.000Z',
    switchGroup: 1,
    switchLabel: 'button',
    customName: 'BILRESA scroll wheel',
    firmwareVersion: '1.8.7',
    hardwareVersion: 'P2.0',
    manufacturer: 'IKEA of Sweden',
    model: 'BILRESA scroll wheel',
    productCode: 'E2490',
    serialNumber: 'UNKNOWN_SERIAL_NUMBER',
    discriminator: -1,
    permittingJoin: false,
    qrCode: '',
    setupCode: '',
    windowOpen: false,
    otaPolicy: 'autoUpdate',
    otaProgress: 0,
    otaScheduleEnd: '00:00',
    otaScheduleStart: '00:00',
    otaState: 'readyToCheck',
    otaStatus: 'upToDate',
    batteryPercentage: 49,
    controlMode: 'light',
  },
  capabilities: {
    canSend: [],
    canReceive: [
      'customName',
      'windowOpen',
      'controlModeLight',
      'controlModeSpeaker',
    ],
  },
  room: {
    id: '00000000-0000-0000-0000-000000000000',
    name: 'Room',
    color: 'ikea_green_no_65',
    icon: 'rooms_arm_chair',
  },
  deviceSet: [],
  remoteLinks: [],
  isHidden: false,
}

export const dualButtonController: Controller = {
  id: '00000000-0000-0000-0000-000000000000',
  relationId: '00000000-0000-0000-0000-000000000000',
  type: 'controller',
  deviceType: 'genericSwitch',
  createdAt: '2000-01-01T00:00:00.000Z',
  isReachable: true,
  lastSeen: '2000-01-01T00:00:00.000Z',
  customIcon: 'products_dual_button_remote',
  attributes: {
    identifyPeriod: 0,
    identifyStarted: '2000-01-01T00:00:00.000Z',
    switchLabel: 'button 1',
    customName: 'BILRESA dual button',
    firmwareVersion: '1.8.5',
    hardwareVersion: 'P2.0',
    manufacturer: 'IKEA of Sweden',
    model: 'BILRESA dual button',
    productCode: 'E2489',
    serialNumber: 'UNKNOWN_SERIAL_NUMBER',
    discriminator: -1,
    permittingJoin: false,
    qrCode: '',
    setupCode: '',
    windowOpen: false,
    otaPolicy: 'autoUpdate',
    otaProgress: 0,
    otaScheduleEnd: '00:00',
    otaScheduleStart: '00:00',
    otaState: 'readyToCheck',
    otaStatus: 'upToDate',
    batteryPercentage: 82,
    controlMode: 'shortcut',
  },
  capabilities: {
    canSend: [],
    canReceive: [
      'customName',
      'windowOpen',
      'controlModeLight',
      'controlModeSpeaker',
      'controlModeBlind',
      'controlModeShortcutController',
    ],
  },
  room: {
    id: '00000000-0000-0000-0000-000000000000',
    name: 'Room',
    color: 'ikea_green_no_65',
    icon: 'rooms_arm_chair',
  },
  deviceSet: [],
  remoteLinks: [],
  isHidden: false,
}
