export interface SelectMenuProps<P extends MenuItem> extends StyledComponent {
  menuItems: P[]
  onMenuItemClick: (menuItem: P | null) => void
  hideMenu: () => void
}

export interface MenuItem {
  label: string
  selected?: boolean
  value?: any
  disabled?: boolean
}

export interface DeviceMenuItem extends MenuItem {
  kind: MediaDeviceKind
}

export interface ErrorResponse {
  errors: ValidationError[]
}

export interface ValidationError {
  message: string
  location?: string
}

export interface StyledComponent {
  styles?: { [key: string]: string }
}
