import type { BaseModel, ReduceForSaveVO, ReduceForUpdateVO, ReduceForPageQuery } from '@/apis';
import type { Nullable, Optional } from '@/types';

export interface NdmNvr extends BaseModel {
  deviceId: string;
  name: string;
  manufacturer: string;
  state: boolean;
  model: string;
  ipAddress: string;
  manageUrl: string;
  manageUsername: string;
  managePassword: string;
  gbCode: string;
  gbPort: number;
  gbDomain: string;
  gb28181Enabled: boolean;
  onvifPort: number;
  onvifUsername: string;
  onvifPassword: string;
  onvifMajorIndex: number;
  onvifMinorIndex: number;
  diagFlag: string;
  diagParam: string;
  diagFormat: string;
  lastDiagInfo: string;
  lastDiagTime: string;
  icmpEnabled: boolean;
  description: string;
  deviceStatus: string;
  deviceType: string;
  community: string;
  frontendConfig: string;
  linkDescription: string;
  snmpEnabled: boolean;
  recordCheckEnabled: boolean;
  clusterList: string;
}

export type NdmNvrResultVO = Nullable<NdmNvr>;

export type NdmNvrSaveVO = Partial<Omit<NdmNvr, ReduceForSaveVO>>;

export type NdmNvrUpdateVO = Optional<Omit<NdmNvr, ReduceForUpdateVO>>;

export type NdmNvrPageQuery = Partial<Omit<NdmNvr, ReduceForPageQuery>>;
