package com.brilliance.isc.common.liaall.service;

import com.brilliance.isc.common.glemod.vo.GlemodVo;
import com.brilliance.isc.common.liaall.vo.LiaallVo;
import com.brilliance.isc.common.liaall.vo.TenorSettleVo;
import com.brilliance.isc.common.liaallg.vo.LiaallgVo;
import com.brilliance.isc.common.vo.SimpleModuleVo;
import com.brilliance.mda.runtime.mda.IStream;
import com.brilliance.mda.runtime.mda.impl.Argument;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public interface LiaallService {

    boolean isSameObject(String path1, String path2);

    String liaallGetFeecodFucKey(String argBussec, String argCBTPFXlst);

    String liaallParGet(String argFucKey, String argDtaKey);

    boolean liaallParFound(String argFucKey, String argDtaKey);

    void getRelevantDates(LiaallVo liaallVo, int liaallgIdx, Argument<Date> argbegdat, Argument<Date> argtodat, Argument<String> argWrn);

    BigDecimal getTensetamt();

    void assertLIAALL(LiaallVo liaallVo);

    void liaallParSet(String argValue, String argFucKey, String argDtaKey);

    void liaallSetShowDetailsIfOld();

    void liaallSetFeeOnePerMatdat(String cbtpfx);

    void liaallSetCbeAmount(String role, int rolepart, String currency, BigDecimal argamt, String cbtpfx, SimpleModuleVo linkModule);

    @Deprecated
    default void liaallSetCbeAmount(String role, int rolepart, String currency, BigDecimal argamt, String cbtpfx, String path, LiaallVo liaallVo) {
    }

    void liaallSetCoverReserveAmount(String role, String currency, BigDecimal amt, SimpleModuleVo linkModule);

    @Deprecated
    default void liaallSetCoverReserveAmount(String role, String currency, BigDecimal amt, LiaallVo liaallVo) {
    }

    void liaallSetCbeAmountDbtCdt(String dbtrol, int rolepart, String cdtrol, String currency, BigDecimal argamt,
                                  String cbtpfx, String argGrpKey, SimpleModuleVo linkModule);

    @Deprecated
    default void liaallSetCbeAmountDbtCdt(String dbtrol, int rolepart, String cdtrol, String currency, BigDecimal argamt,
                                          String cbtpfx, String argGrpKey, String path, LiaallVo liaallVo) {
    }

    void liaallSetCoverChangeAmount(String role, String currency, BigDecimal amt, SimpleModuleVo linkModule);

    @Deprecated
    default void liaallSetCoverChangeAmount(String role, String currency, BigDecimal amt) {
    }

    void liaallSetAllRolesHaveAmount();

    boolean liaallCBTPFXIsBalance(String cbtpfx);

    void createGLEFromLIA(GlemodVo glemod);

    void storeAll(LiaallVo liaall);

    void liaallReductionPlan(String cbtpfx, String path, String type, String cur, BigDecimal amt);

    void liaallSetInccod(String feecod, String cbtpfx);

    void liaallSetAllowChanges(String cbtpfx, String matflg, String amtflg);

    void liaallSetAdditionalContract(String objinr, String objtyp);

    void liaallSetCancel(SimpleModuleVo cancelModule, String cbtpfx);

    @Deprecated
    default void liaallSetCancel(LiaallVo liaallVo, String cbtpfx) {
    }

    void liaallSetFeecod(String feecod, String addcovflg, String cbtpfx, Date tilDat);

    void liaallSetDisable(String cbtpfx);

    BigDecimal liaallGetOldamtSum(LiaallVo liaallVo, String cbtpfx, String modpath);

    BigDecimal liaallGetNewamtSum(LiaallVo liaallVo, String argGrpKey);

    @Deprecated //这里废弃调 参考LiagidComponent.bookCnfAmt 不同的业务模块需要实现不同的组件
    default void bookCnfAmt(LiaallVo liaallVo, BigDecimal argMaxAmt, String maxCur, String oldMaxCur, String cnfsta, String hndtyp, int aplcnt) {
    }

    IStream getDecstm(String decamtstm);

    void liaallSetSelectTenorCBTPFX(String cbtPFXlst);

    void liaallSetFinaningTenor(String cbtpfxlst, SimpleModuleVo linkModule);

    void liaallSetDefaultMaturity(String cbtpfx, SimpleModuleVo linkModule, Date matdat);

    public void liaallSetValdat(Date argValdat, String argGrpkey);

    void liaallSetCbeAmountDivAvlAvsInt(LiaallVo liaallVo, SimpleModuleVo linkModule, String cur, BigDecimal amt);

    @Deprecated
    default void liaallSetCbeAmountDivAvlAvsInt(LiaallVo liaallVo, String cur, BigDecimal amt) {
    }

    void liaallSetGrpKey(String argBussec, String argCBTPFX, String argGrpKey);

    BigDecimal getnewamtSumToLine(LiaallVo liaallVo, LiaallgVo liaallgVo);

    BigDecimal getOldamtSumToLine(LiaallVo liaallVo, LiaallgVo liaallgVo);

    String liaallGetCurrentTenorCBTPFX(LiaallVo liaallVo);

    void liaallSetRefBuc(String objmodPath, String cbtpfx, String refmodPath, String refCBTPFX);

    void liaallSetRefOld(String objmodPath, String cbtpfx, String refmodPath, String refCBTPFX);

    void liaallSetTransferToSettlement(String argGrpKey, BigDecimal factor);

    void liaallSetAllRolesAvailable();

    void getReductionInfo(Argument<String> cbtPFXlst, Argument<String> type, Argument<String> cur, Argument<BigDecimal> amt);

    boolean tenorSettleIncludePteinr(List<TenorSettleVo> tenorSettles, String pteinr);

    void liaallSetTenorFields(LiaallVo liaallVo);

    void liaallSetMatinf(LiaallVo liaallVo, SimpleModuleVo simpleModuleVo, Argument<Date> argMatdat, Argument<String> argMatTxtFlg);

    void updateLiaallgObjmodpath(List<LiaallgVo> liaallgs, String cbtpfx, SimpleModuleVo linkModule);

    void liaallSetTenorAutoRedMaxamt(BigDecimal argAmt);

    void liaallSetPctRefAmt(String currency,BigDecimal argamt,String cbtpfx, SimpleModuleVo linkModule);

    void liaallSetAllowMoveSight(String argDir,String cbtpfx, SimpleModuleVo linkModule);

    void liaallSetAmount2(String argCur, BigDecimal argamt, SimpleModuleVo linkModule, String argGrpKey);
}
