package cokr.xit.ens.modules.common.ctgy.intgrnbill.support.service.process;

import cokr.xit.ens.core.exception.EnsException;

/**
 * 결제 서비스
 */
public interface PayHelperService<D, PARAM, RSLT> {

    /**
     * 데이터 조회
     *
     * @param param
     * @return
     */
    D getData(PARAM param);

    /**
     * 유효성 검사
     *
     * @param param
     * @param data
     */
    void validate(PARAM param, D data);

    /**
     * API 호출
     *
     * @param param
     * @param data
     */
    void callApi(PARAM param, D data);

    /**
     * 처리결과 생성
     *s
     * @param param
     * @param data
     * @param e
     * @return
     */
    RSLT generateResult(PARAM param, D data, EnsException e);

    /**
     * 이력 저장
     *
     * @param param
     * @param data
     * @param e
     */
    void saveHist(PARAM param, D data, EnsException e);

}
