import type React from 'react'; import type { BaseResponsiveProps } from '../../../responsive/type'; export declare type DeviceKind = 'smart' | 'dumb' | 'integrated'; export declare type DeviceStatus = 'active' | 'inactive'; export declare type DeviceProfileScene = 'profile' | 'instance'; export declare type I18nText = string | { original?: string; 'zh-CN'?: string; 'zh-HK'?: string; en?: string; [key: string]: any; }; export interface DeviceProfileTemplateItem { id: number; code: string; model_code?: string; name: I18nText; description?: I18nText; setting?: Record; status: DeviceStatus; updated_at: string; } export interface DeviceModelItem { id: number; code: string; name: I18nText; active_profile_templates?: DeviceProfileTemplateItem[]; } export interface DeviceTypeItem { id: number; kind: DeviceKind; code: string; icon: string | null; name: I18nText; description: I18nText; data: Record | null; status: DeviceStatus; sort: number; created_at: string; updated_at: string; active_models?: DeviceModelItem[]; } export interface SaasDeviceProfileProps extends BaseResponsiveProps { className?: string; style?: React.CSSProperties; scene?: DeviceProfileScene; showBackButton?: boolean; } /** 表格行(基于 DeviceProfileItem + 关联 model 信息打平) */ export interface ProfileRow { id: number; name: string; modelCode: string; modelName: string; status: DeviceStatus; updated_at: string; _deviceModel?: DeviceModelItem; _deviceType?: DeviceTypeItem; _raw?: DeviceProfileItem; } /** 设备配置(GET /tenant/device/profile 列表项) */ export interface DeviceProfileItem { id: number; tenant_id: number; model_code: string; template_code: string; name: I18nText; description: I18nText; setting: Record | null; status: DeviceStatus; created_at: string; updated_at: string; deleted_at: string | null; } export interface ListProfileParams { page: number; size: number; search?: string; name?: string; order_by?: string; type_code?: string; model_code?: string; status?: DeviceStatus; } export interface ListProfileResponse { list: DeviceProfileItem[]; count: number; page: number; size: number; } /** 工作区(GET /tenant/device with=workarea 的 workarea 关系字段) */ export interface WorkareaItem { id: number; name: I18nText; } /** 关联设备实例(精简到 UI 需要) */ export interface LinkedDeviceItem { id: number; workarea_id: number; type_kind: string; type_code: string; model_code: string; profile_id: number; number: string; name: I18nText; workarea?: WorkareaItem; } /** GET /tenant/device 关联设备查询参数 */ export interface ListLinkedDevicesParams { profile_id: number; type_kind: string; with?: string[]; } /** 多语言字典(en/zh-CN/zh-HK/ja/pt) */ export declare type LangDict = { original?: string; en?: string; 'zh-CN'?: string; 'zh-HK'?: string; ja?: string; pt?: string; }; /** POST /tenant/device/profile 入参 */ export interface CreateProfilePayload { model_code: string; template_code: string; name: LangDict; description: LangDict; setting: Record | null; status: DeviceStatus; } export interface DeviceStatusMeta { value: DeviceStatus; /** i18n key,调用侧用 getText(labelKey) 取多语言文案 */ labelKey: string; /** antd Tag 的 color 取值,缺省走 antd 默认灰色 */ tagColor?: string; } export declare const DEVICE_STATUSES: DeviceStatusMeta[]; export interface ProfileTemplateItem { id: number; model_code: string; modelCode: string; code: string; name: I18nText; description: I18nText; status: DeviceStatus; setting?: Record; created_at: string; updated_at: string; deleted_at?: string | null; _deviceModel?: DeviceModelItem; _deviceType?: DeviceTypeItem; _raw?: DeviceProfileItem; } export interface ProfileTemplateFormValues { name: I18nText; type_code: string; model_code: string; description?: I18nText; status: DeviceStatus; } export interface DeviceTypeItem { id: number; kind: DeviceKind; code: string; icon: string | null; name: I18nText; description: I18nText; data: Record | null; status: DeviceStatus; sort: number; created_at: string; updated_at: string; active_models?: DeviceModelItem[]; } export interface DeviceModelItem { id: number; brand_code: string; type_code: string; code: string; name: I18nText; description: I18nText; data: any; status: DeviceStatus; sort: number; brand?: any; created_at: string; updated_at: string; } export declare const validateI18nRequired: (message: string) => (_rule: unknown, value: I18nText | undefined) => Promise;