package com.njcn.gather.tool.wave.service;

import com.njcn.gather.tool.wave.pojo.param.WaveComtradeParseParam;
import com.njcn.gather.tool.wave.pojo.param.WaveParseParam;
import com.njcn.gather.tool.wave.pojo.vo.WaveComtradeResultVO;
import com.njcn.gather.tool.wave.pojo.vo.WaveComtradeVectorResultVO;
import com.njcn.gather.tool.wave.pojo.vo.WaveParseResultVO;

import java.io.InputStream;

/**
 * 波形解析服务。
 */
public interface WaveService {

    /**
     * 解析文本波形并输出前端可直接展示的点位结果。
     *
     * @param param 波形解析参数
     * @return 波形查看结果
     */
    WaveParseResultVO parse(WaveParseParam param);

    /**
     * 解析 COMTRADE cfg/dat 波形文件。
     *
     * @param cfgStream cfg 输入流
     * @param datStream dat 输入流
     * @param param 解析参数
     * @return COMTRADE 解析结果
     */
    WaveComtradeResultVO parseComtrade(InputStream cfgStream, InputStream datStream, WaveComtradeParseParam param);

    /**
     * 基于 COMTRADE 原始波形按周波计算向量结果。
     *
     * @param cfgStream cfg 输入流
     * @param datStream dat 输入流
     * @param param 解析参数
     * @return 向量计算结果
     */
    WaveComtradeVectorResultVO parseComtradeVector(InputStream cfgStream, InputStream datStream, WaveComtradeParseParam param);
}
