export type DpValue = boolean | number | string; export type DpState = Record; interface PublishDpsOptions { /** * 下发通道类型 * 0: 局域网 * 1: 网络 * 2: 自动 */ mode: number; /** * 下发通道的优先级 * LAN = 0, // LAN * MQTT = 1, // MQTT * HTTP = 2, // Http * BLE = 3, // Single Point Bluetooth * SIGMesh = 4, // Sig Mesh * BLEMesh = 5, // Things Private Mesh * BLEBeacon = 6, // Beacon */ pipelines: number[]; /** 预留下发逻辑配置标记,后续可以拓展,例如下发声音,下发操作后续动作等等 */ options: Record; complete?: () => void; success?: (params: boolean) => void; fail?: (params: { errorMsg: string; errorCode: string | number; innerError: { errorCode: string | number; errorMsg: string; }; }) => void; } type SetDpStateAction = (newState: S, publishOption?: P) => void; /** * 获取设备 DP 状态并提供下发方法,支持监听 DP 数据变更 * @internal * @deprecated 该 Hook 暂未在对外文档中暴露,不建议在业务中继续直接使用,后续可能调整或移除。 * @since @ray-js/panel-sdk 1.0.0 * @typeParam TDpState - DP 状态类型,传入 dpCode 时为 DpValue,不传时为完整的 DpState 记录 * @param dpCode - 可选的 DP Code;传入时仅返回该 DP 的值,不传时返回所有 DP 状态的键值对 * @returns 元组 `[dpState, setDpState]`:第一项为当前 DP 状态,第二项为下发 DP 的方法(支持可选的 PublishDpsOptions 配置下发通道与优先级) * @remarks * 该 Hook 会自动监听设备 DP 数据变化并更新状态,组件卸载时取消监听。 * 下发时会自动将 DP Code 转换为 DP ID 进行通信。 * @example * ```tsx * import { useDpState } from '@ray-js/panel-sdk'; * * function LightSwitch() { * // 获取单个 DP * const [switchOn, setSwitchOn] = useDpState('switch_led'); * const handleToggle = () => setSwitchOn(!switchOn); * return ; * } * * function AllDpMonitor() { * // 获取所有 DP 状态 * const [allDps, setDps] = useDpState(); * return {JSON.stringify(allDps)}; * } * ``` */ export declare function useDpState(dpCode?: string): [TDpState, SetDpStateAction, PublishDpsOptions>]; export {};