using Knoks.Core.Entities;
using System.Collections.Generic;
using Knoks.Core.Entities.Args;

namespace Knoks.Core.Logic.Interfaces
{
    public interface IKnokPriceLogic
    {
        decimal CalculateExpectancy(decimal probabilityOfWinning, decimal avarageWin, decimal avarageLoss);
        decimal CalculateObjectivePrice(decimal expectancy, decimal paidPercent, decimal objectiveWeight, int multiplier);
        decimal CalculateSubjectivePrice(decimal faPrice, decimal taPrice, decimal ProfPPrice, decimal ProfTimePrice, decimal ProfLossPrice);
        decimal CalcAnalysisPrice(string header, string description, IEnumerable<AnalysisTag> tags, decimal analysisMultiplier);
        decimal CalculatePotentialProfitPrice(decimal potentialProfit, decimal potentialProfitMultiplier);
        decimal CalculateProfitTimeRatioPrice(decimal potentialProfit, int duration, decimal profitTimeRatioMultiplier);
        decimal CalculateProfitLossRatioPrice(decimal potentialProfit, decimal entryFrom, decimal entryTo, decimal stopLoss, decimal profitLossRatioMultiplier);
        decimal CalculatePotentialProfit(decimal entryFrom, decimal entryTo, decimal exitFrom, decimal exitTo);

        int RankPayoff(UserRank value);
    }
}