import { Transformer } from './interface'; type IMusicData = { /** * 最高位:0表示直接输出,1表示渐变; */ mode: number; /** * 色度:0-360 */ h: number; /** * 饱和:0-100 */ s: number; /** * 明度:0-100 */ v: number; }; /** * 音乐律动 Raw 类型 DP 协议转换器,用于音乐律动数据与 Raw DP 十六进制协议的双向转换 * * @public * @since @ray-js/panel-sdk 1.0.0 * @remarks * 适用于灯类产品的音乐律动 Raw DP(如 `music_data_raw`),与 {@link MusicTransformer} 不同的是: * - 协议格式为 mode(2位) + h(4位) + s(2位) + v(2位),共 10 位十六进制字符 * - h/s/v 使用原始值域(h: 0-360, s: 0-100, v: 0-100) * * @example * ```ts * import { MusicDataRawTransformer } from '@ray-js/panel-sdk'; * * const transformer = new MusicDataRawTransformer(); * // 解析 Raw DP 字符串 * const data = transformer.parser('0000dc6464'); * // => { mode: 0, h: 220, s: 100, v: 100 } * * // 格式化为 Raw DP 字符串 * const dpStr = transformer.formatter({ mode: 0, h: 120, s: 80, v: 90 }); * ``` */ declare class MusicDataRawTransformer implements Transformer { /** * @internal */ defaultValue: IMusicData; /** * @internal */ uuid: string; /** * 创建音乐律动 Raw 转换器实例 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param uuid - DP 标识符,默认为 `'music_data_raw'` * @param defaultValue - 默认音乐数据,当解析失败时返回此值 */ constructor(uuid?: string, defaultValue?: null); /** * 将 Raw DP 十六进制字符串解析为音乐律动数据对象 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param value - 10 位十六进制 DP 字符串(mode 2位 + h 4位 + s 2位 + v 2位) * @returns 包含 mode、h、s、v 的音乐数据对象;格式不合法时返回默认值 * * @example * ```ts * const data = transformer.parser('0000dc6464'); * // => { mode: 0, h: 220, s: 100, v: 100 } * ``` */ parser(value: string): { mode: number; h: any; s: any; v: any; }; /** * 将十进制数值转为指定长度的十六进制字符串 * * @internal * @param value - 十进制数值 * @param length - 目标十六进制字符串长度,默认 4 * @returns 补零后的十六进制字符串 */ to16(value: any, length?: number): string; /** * 将音乐律动数据对象格式化为 Raw DP 十六进制字符串 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param data - 包含 mode、h(0-360)、s(0-100)、v(0-100) 的音乐数据对象 * @returns 10 位十六进制 DP 字符串(mode 固定为 '00') * * @example * ```ts * const dpStr = transformer.formatter({ mode: 0, h: 220, s: 100, v: 100 }); * // => '0000dc6464' * ``` */ formatter(data: IMusicData): string; } export default MusicDataRawTransformer;