import { Transformer } from './interface'; type TColorData = { /** * 色相 */ hue: number; /** * 饱和度 */ saturation: number; /** * 亮度 */ value: number; }; /** * 彩光 Raw 类型 DP 协议转换器,用于 HSV 色值与 Raw DP 十六进制协议的双向转换 * * @public * @since @ray-js/panel-sdk 1.0.0 * @remarks * 适用于灯类产品的彩光 Raw 类型 DP(如 `colour_data_raw`),与 {@link ColourTransformer} 不同的是: * - 协议格式为 hue(4位) + saturation(2位) + value(2位),共 8 位十六进制字符 * - saturation 和 value 在解析时乘以 10、格式化时除以 10,值域为 0-1000 * * @example * ```ts * import { ColourDataRawTransformer } from '@ray-js/panel-sdk'; * * const transformer = new ColourDataRawTransformer(); * // 解析 Raw DP 字符串 * const hsv = transformer.parser('00780a0a'); * // => { hue: 120, saturation: 100, value: 100 } * * // 格式化为 Raw DP 字符串 * const dpStr = transformer.formatter({ hue: 120, saturation: 100, value: 100 }); * // => '0078000a000a' (hue 4位 + saturation/10 2位 + value/10 2位) * ``` */ declare class ColourDataRawTransformer implements Transformer { /** * @internal */ defaultValue: TColorData; /** * @internal */ uuid: string; /** * 创建彩光 Raw 转换器实例 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param uuid - DP 标识符,默认为 `'colour_data_raw'` * @param defaultValue - 默认 HSV 值,当解析失败时返回此值 */ constructor(uuid?: string, defaultValue?: null); /** * 将 Raw DP 十六进制字符串解析为 HSV 色值对象 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param value - 8 位十六进制 DP 字符串(hue 4位 + saturation 2位 + value 2位) * @returns 包含 hue、saturation(x10)、value(x10) 的色值对象;格式不合法时返回默认值 * * @example * ```ts * const hsv = transformer.parser('00780a0a'); * // => { hue: 120, saturation: 100, value: 100 } * ``` */ parser(value: string): { hue: any; saturation: number; value: number; }; /** * 将十进制数值转为指定长度的十六进制字符串 * * @internal * @param value - 十进制数值 * @param length - 目标十六进制字符串长度,默认 4 * @returns 补零后的十六进制字符串 */ to16(value: any, length?: number): string; /** * 将 HSV 色值对象格式化为 Raw DP 十六进制字符串 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param data - 包含 hue、saturation(0-1000)、value(0-1000) 的色值对象 * @returns 8 位十六进制 DP 字符串(saturation 和 value 会除以 10 后编码) * * @example * ```ts * const dpStr = transformer.formatter({ hue: 120, saturation: 1000, value: 1000 }); * // => '007800640064' * ``` */ formatter(data: TColorData): string; } export default ColourDataRawTransformer;