// 高亮
declare namespace Highlight {
  /**
   * @function setHighlightStep
   * @description 从一个节点向根节点寻路 未做死循环检测
   * @param {Object} d 节点对象
   */
  interface setHighlightStep {
    (d: any): void;
  }

  /**
   * @function setHighlight
   * @description 设置一个节点的高亮
   * @param {Object} d 节点对象
   * @param {string} type node | link
   */
  interface setHighlight {
    (d: any, type?: 'node' | 'link'): void;
  }

  /**
   * @function resetHighlight
   * @description 取消一个节点的高亮
   * @param {Object} d 节点对象
   * @param {string} type node | link
   */
  interface resetHighlight {
    (d: any, type: 'node' | 'link'): void;
  }

  /**
   * @function pureHighlight
   * @description 高亮节点和边
   * @param {Object} d 节点对象
   * @param {string} type node | link
   */
  interface pureHighlight {
    (d: any, type: 'node' | 'link'): void;
  }

  /**
   * @function isConnected
   * @description 两个节点是否直接相连
   * @param {Object} a 节点1
   * @param {Object} b 节点2
   * @return {boolean} 是否相连
   */
  interface isConnected {
    (a: any, b: any): boolean;
  }

  /**
   * @function light
   * @description 高亮所有节点和边
   */
  interface light {
    (): void;
  }

  /**
   * @function dark
   * @description 底亮所有节点和边
   */
  interface dark {
    (): void;
  }

  /**
   * @function flyLine
   * @description 飞线效果,效果待验证
   */
  interface flyLine {
    (paths: any[], duration: number, ease: any): void;
  }
}

export default Highlight;
