import type React from 'react';
export declare type DeviceKind = 'smart' | 'dumb' | 'integrated';
export declare type DeviceLinkStatus = 'linked' | 'unlinked' | string;
export declare type DeviceOnlineStatus = 'online' | 'offline' | 'unknown' | string;
export declare type I18nText = string | {
    original?: string;
    'zh-CN'?: string;
    'zh-HK'?: string;
    en?: string;
    ja?: string;
    pt?: string;
    [key: string]: any;
};
export declare type LangDict = {
    original?: string;
    en?: string;
    'zh-CN'?: string;
    'zh-HK'?: string;
    ja?: string;
    pt?: string;
};
export interface SaasDevicePlanningProps {
    className?: string;
    style?: React.CSSProperties;
}
export interface WorkAreaItem {
    id: number;
    tenant_id?: number;
    name: I18nText;
    description?: I18nText;
    sort: number;
    created_at?: string;
    updated_at?: string;
}
export interface DeviceTypeItem {
    id: number;
    kind: DeviceKind;
    code: string;
    icon?: string | null;
    name: I18nText;
    description?: I18nText;
    status?: string;
    sort?: number;
    active_models?: DeviceModelItem[];
}
export interface DeviceModelItem {
    id: number;
    brand_code?: string;
    type_code: string;
    type?: DeviceTypeItem;
    code: string;
    name: I18nText;
    description?: I18nText;
    data?: {
        profile_structure?: {
            required?: boolean;
            tabs?: unknown[];
        };
        [key: string]: unknown;
    } | null;
    status?: string;
    sort?: number;
    active_profiles?: DeviceProfileItem[];
}
export interface DeviceProfileItem {
    id: number;
    model_code?: string;
    template_code?: string;
    name?: I18nText;
    description?: I18nText;
    setting?: Record<string, unknown> | null;
    status?: string;
}
export interface DeviceItem {
    id: number;
    tenant_id?: number;
    workarea_id?: number;
    type_kind: DeviceKind;
    type_code: string;
    model_code: string;
    profile_id?: number | null;
    number?: string;
    name: I18nText;
    data?: Record<string, unknown> | null;
    setting?: Record<string, unknown> | null;
    link?: DeviceLinkStatus;
    status?: DeviceOnlineStatus;
    sort?: number;
    last_seen?: string;
    created_at?: string;
    updated_at?: string;
    type?: DeviceTypeItem;
    model?: DeviceModelItem;
    profile?: DeviceProfileItem | null;
    workarea?: WorkAreaItem;
}
export interface ListDeviceParams {
    with?: string[];
    workarea_id?: number;
    type_kind?: DeviceKind;
    profile_id?: number;
}
export interface SaveWorkAreaPayload {
    name: LangDict;
    description: LangDict;
}
export interface CreateDevicePayload {
    workarea_id: number;
    model_code: string;
    profile_id: number | null;
    name: LangDict;
}
export interface UpdateDevicePayload {
    workarea_id: number;
    profile_id: number | null;
    name: LangDict;
}
export interface DeviceRow {
    id: number;
    name: string;
    typeName: string;
    modelName: string;
    profileName: string;
    link: DeviceLinkStatus;
    status: DeviceOnlineStatus;
    typeCode: string;
    modelCode: string;
    _raw: DeviceItem;
}
export interface DeleteWorkAreaCounts {
    smart: number;
    dumb: number;
    integrated: number;
}
export declare const EMPTY_I18N: LangDict;
export declare const DEVICE_KIND_OPTIONS: DeviceKind[];
export declare const toLangDict: (val?: I18nText) => LangDict;
export declare const validateI18nRequired: (message: string) => (_rule: unknown, value: I18nText | undefined) => Promise<void>;
