/**
 * 转换Native返回的数据结构
 */
export interface INtvCallbackResult<K> {
  tagName?: string;
  cbData: K;
}

/**
 * URL参数传递的ntv_third协议参数对象
 */
export interface IUrlNtvThird {
  cbPluginName?: string;
  cbData?: object;
}

/**
 * 统一定义callback函数签名协议
 */
export type INtvCallback<K> = (err: null | Error, data?: INtvCallbackResult<K>) => void;

/**
 * 调用Native插件回调协议
 * 全局客户端回调接受也是一个字符串, 经解析后的对象格式
 */
export interface INtvCallbackParam {
  CBPluginName?: string;
  param?: {
    // 回调标识字符串
    tagName?: string;
    // JSON.stringify()对象序列化字符串
    CBData?: string;
    // 页面状态
    isStop?: string;
  }
}

/**
 * 调用Native入参协议
 */
export interface INtvInvokeParam {
  param?: {
    tagName?: string;
    [index: string]: any;
  };
  CBPluginName?: string;
} 