import { DpKitProtocols, GetStructuredActions } from '../types/dp-kit'; /** * 获取经 dp-kit 协议转化后的结构化功能点下发方法集合 * @public * @since @ray-js/panel-sdk 1.10.0 * @returns 结构化功能点下发方法集合,key 为配置了 protocols 的 DP code,每个 key 提供 `set(structuredValue)` 方法;set 的入参类型由对应 Transformer.formatter() 的参数类型决定,内部自动调用 formatter 将结构化数据转为 DP 字符串后下发设备 * @typeOverride returns Record Promise }> * @remarks * 基于 sdm 实例及 dp-kit 拦截器实现。必须在 SdmProvider 内部使用。 * 使用前请注意检查项目是否已挂载了 SdmProvider,项目接入可参考 [智能设备模型 - 使用](/cn/miniapp/solution-panel/ability/common/sdm/usage),全新项目可直接基于 [public-sdm](https://github.com/Tuya-Community/tuya-ray-materials/tree/main/template/PublicSdmTemplate) 示例项目进行开发。 * 使用前请注意检查是否已配置接入了 dp-kit 拦截器,项目接入可参考 [拦截器 - 使用](/cn/miniapp/solution-panel/ability/common/sdm/interceptors/usage)。 * 只返回配置了协议规则的功能点下发方法,不包含基础类型功能点(基础类型请用 useActions)。 * 同时支持单设备(SmartDeviceModel)和群组设备(SmartGroupModel)。 * * 与 useStructuredProps 对称使用:useStructuredProps 通过 Transformer.parser() 读取结构化数据, * useStructuredActions 通过 Transformer.formatter() 将结构化数据转为 DP 指令下发。 * * @example 完整链路:读取 + 下发(以照明 colour_data 为例) * ```tsx * // ---- 1. devices/protocols/index.ts:实例化 parser 并映射到 DP code ---- * import { protocols as sdkProtocols } from '@ray-js/panel-sdk'; * import { lampSchemaMap } from '../schema'; * * export const protocols = { * [lampSchemaMap.colour_data.code]: new sdkProtocols.ColourTransformer(), * // ColourTransformer.parser() 返回 { hue, saturation, value } → useStructuredProps 读 * // ColourTransformer.formatter() 接收 { hue, saturation, value } → useStructuredActions 写 * }; * * // ---- 2. devices/index.ts:创建 dpKit 并传给 sdm 实例 ---- * import { SmartDeviceModel, createDpKit } from '@ray-js/panel-sdk'; * import { protocols } from '@/devices/protocols'; * * export const dpKit = createDpKit({ protocols }); * export const devices = { * lamp: new SmartDeviceModel({ interceptors: dpKit.interceptors }), * }; * * // ---- 3. 页面组件:通过 useStructuredActions 下发结构化数据 ---- * import { View, Text } from '@ray-js/ray'; * import { useStructuredProps, useStructuredActions } from '@ray-js/panel-sdk'; * * export default function Home() { * // 读:parser() 返回值决定 colour 的类型 { hue, saturation, value } * const colour = useStructuredProps(props => props.colour_data); * // 写:set() 入参类型 = formatter() 的参数类型,同为 { hue, saturation, value } * const actions = useStructuredActions(); * * return ( * actions.colour_data.set({ hue: 120, saturation: 800, value: 900 })}> * hue: {colour.hue} * saturation: {colour.saturation} * value: {colour.value} * * ); * } * ``` */ export declare function useStructuredActions(): GetStructuredActions;