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;
};
/** SaasDevicePlanning 低代码物料的对外 props。 */
export interface SaasDevicePlanningProps {
    className?: string;
    style?: React.CSSProperties;
}
/** 工作区，设备规划左侧列表的基本单元。 */
export interface WorkAreaItem {
    id: number;
    tenant_id?: number;
    name: I18nText;
    description?: I18nText;
    sort: number;
    smart_devices_count?: number;
    dumb_devices_count?: number;
    integrated_devices_count?: number;
    created_at?: string;
    updated_at?: string;
}
/** 设备品牌，主要用于外设型号筛选。 */
export interface DeviceBrandItem {
    id: number;
    code: string;
    name: I18nText;
    description?: I18nText;
    website?: string;
    status?: string;
    created_at?: string;
    updated_at?: string;
    deleted_at?: string | null;
}
/** 设备类型，例如 POS、Receipt Printer；一个类型下可包含多个型号。 */
export interface DeviceTypeItem {
    id: number;
    kind: DeviceKind;
    code: string;
    icon?: string | null;
    name: I18nText;
    description?: I18nText;
    status?: string;
    sort?: number;
    active_models?: DeviceModelItem[];
}
/** 设备型号，创建设备和连接新增外设时都以 model_code 为核心。 */
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[];
        };
        connection_types?: string[];
        [key: string]: unknown;
    } | null;
    status?: string;
    sort?: number;
    active_profiles?: DeviceProfileItem[];
    brand?: DeviceBrandItem;
}
/** 设备配置方案，智能设备和外设连接时可绑定多个 profile。 */
export interface DeviceProfileItem {
    id: number;
    model_code?: string;
    template_code?: string;
    name?: I18nText;
    description?: I18nText;
    setting?: Record<string, unknown> | null;
    status?: string;
}
/** 后端设备实体，smart/dumb/integrated 三类设备共用。 */
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;
}
/** 设备连接配置，网络连接时会带 connection_method 和 connection_ip。 */
export interface DeviceConnectionConfig {
    connection_ip?: string;
    connection_type?: string;
    connection_method?: string;
    [key: string]: unknown;
}
/** 设备连接业务类型；当前接口仅启用哑设备连接。 */
export declare type DeviceConnectionType = 'dumb';
/** 智能设备与外设的连接关系。 */
export interface DeviceConnectionItem {
    id: number;
    tenant_id?: number;
    type?: DeviceConnectionType;
    source_device_id: number;
    target_device_id: number;
    config?: DeviceConnectionConfig | null;
    profile_ids?: number[];
    status?: string | null;
    created_at?: string;
    updated_at?: string;
    source_device?: DeviceItem | null;
    target_device?: DeviceItem | null;
    profiles?: DeviceProfileItem[];
}
/** 设备列表查询参数。 */
export interface ListDeviceParams {
    with?: string[];
    workarea_id?: number;
    type_kind?: DeviceKind;
    profile_id?: number;
}
/** 设备连接列表查询参数。source 和 target 通过不同 id 字段过滤。 */
export interface ListDeviceConnectionParams {
    type?: DeviceConnectionType;
    source_device_id?: number;
    target_device_id?: number;
    with?: string[];
}
/** 保存工作区的表单 payload。 */
export interface SaveWorkAreaPayload {
    name: LangDict;
    description: LangDict;
}
/** 单独创建设备的 payload，由 AddDeviceModal 提交。 */
export interface CreateDevicePayload {
    workarea_id: number;
    model_code: string;
    profile_id: number | null;
    name: LangDict;
}
/** 连接流程里“新增外设并连接”时嵌套创建的目标设备 payload。 */
export interface CreateConnectionTargetDevicePayload {
    workarea_id: number;
    model_code: string;
    name: LangDict;
}
/** 创建连接的 payload，支持连接已有外设或新增外设后连接。 */
export interface CreateDeviceConnectionPayload {
    type: DeviceConnectionType;
    source_device_id: number;
    target_device_id?: number;
    target_device?: CreateConnectionTargetDevicePayload;
    target_device_action: 'existing' | 'new';
    config: DeviceConnectionConfig;
    profile_ids: number[];
}
/** 更新连接配置的 payload，仅更新 config 和 profile_ids。 */
export interface UpdateDeviceConnectionPayload {
    config: DeviceConnectionConfig;
    profile_ids: number[];
}
/** 编辑设备时允许更新工作区、名称和 smart profile。 */
export interface UpdateDevicePayload {
    workarea_id: number;
    profile_id: number | null;
    name: LangDict;
}
/** 表格/详情抽屉使用的展示模型，保留 _raw 以便提交时读取原始字段。 */
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;
/** 校验 BaseTranslation 字段是否至少填写 original 或任一语言值。 */
export declare const validateI18nRequired: (message: string) => (_rule: unknown, value: I18nText | undefined) => Promise<void>;
