/* Options: Date: 2025-07-17 21:19:27 Version: 6.40 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://hcbtas-q-albamfs-api.azurewebsites.net //Package: //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: AlbaClientCountryConfigReq.* //ExcludeTypes: //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: java.math.*,java.util.*,net.servicestack.client.*,com.google.gson.annotations.*,com.google.gson.reflect.* */ import java.math.* import java.util.* import net.servicestack.client.* import com.google.gson.annotations.* import com.google.gson.reflect.* @Route(Path="/clientcountryconfig/{Country}/{Client}", Verbs="GET") // @Route(Path="/clientcountryconfig", Verbs="GET") // @Route(Path="/clientcountryconfig", Verbs="POST") open class AlbaClientCountryConfigReq : IReturn { var countryCode:String? = null var clientCode:String? = null companion object { private val responseType = ClientCountryConfig::class.java } override fun getResponseType(): Any? = AlbaClientCountryConfigReq.responseType } open class ClientCountryConfig : DatedEntity() { var clientCode:String? = null var clientName:String? = null var countryCode:String? = null var source:DataSourceResult? = null var ageRMin:Int? = null var ageRMax:Int? = null var primarySalary:String? = null var annuityConfig:AnnuityConfig? = null var assets:ArrayList = ArrayList() var contTables:ArrayList = ArrayList() var investments:ArrayList = ArrayList() var content:HashMap> = HashMap>() var environments:HashMap = HashMap() var customNumericConstraints:HashMap> = HashMap>() var assetReturnRates:HashMap = HashMap() var investmentPropertyRates:Double? = null var getAssetClassFundDictionary:HashMap = HashMap() var getTermBasedFundDictionary:HashMap = HashMap() var getAllocationsDictionary:HashMap>> = HashMap>>() var assetNameMap:HashMap = HashMap() var assetContNameMap:HashMap> = HashMap>() var cacheKey:String? = null } open class Entity : IEntity { var id:String? = null } open interface IEntity { var id:String? } enum class Gender { Female, Male, Other, } open class Entity { var logoUri:String? = null var name:String? = null var contactDetails:ContactDetails? = null } open class DataSourceResult { var d:DataSource? = null var t:Long? = null } open class AnnuityConfig { var tableNames:ArrayList = ArrayList() var imprFactorTableNames:ArrayList = ArrayList() var reversion:Double? = null var guarantee:Double? = null var timing:Double? = null var allowDiscountPreRet:Boolean? = null var scaleQx:Double? = null var scaleImpr:Double? = null var ageRating:Int? = null var spouseAgeRating:Int? = null var expense:Double? = null var percBalanceSpent:Double? = null var amountSpent:Double? = null var incomePurchased:Double? = null var deferralPeriod:Int? = null var indexationName:String? = null var drStochastic:String? = null var impliedInflationStochasticSeries:String? = null var targetTpx:Double? = null var priceType:AnnuityPriceType? = null var price:Double? = null } open class AssetConfig { var code:String? = null var name:String? = null var rebalance:Boolean? = null var canEditInvestmentChoice:Boolean? = null var willSpend:Boolean? = null var investments:ArrayList = ArrayList() var contributions:ArrayList = ArrayList() var isOneOff:Boolean? = null } open class ContributionTableSpec { var code:String? = null @SerializedName("type") var Type:ContributionType? = null var rates:HashMap = HashMap() var rateSpecs:ArrayList = ArrayList() var keyTemplate:String? = null } open class InvestmentProduct { var code:String? = null var name:String? = null var group:String? = null var isAssetClassFund:Boolean? = null var allocs:ArrayList = ArrayList() var order:Int? = null var allocationsDictionary:HashMap> = HashMap>() } open class ReturnRates { var earningRates:ArrayList = ArrayList() var taxRates:ArrayList = ArrayList() } open class DatedEntity : Entity(), IDatedEntity { var asAt:Date? = null } open interface IDatedEntity : IEntity { var asAt:Date? } enum class AnnuityPriceType { Calc, Table, } enum class ContributionType { Employer, Employee, EmployerMatching, } enum class DataSource { Db, Cache, Parameter, Na, } open class LifeTableName { var name:String? = null var gender:Gender? = null } open class ContributionSpec { var code:String? = null var name:String? = null @SerializedName("type") var Type:ContributionType? = null var isEmployeeCont:Boolean? = null var table:String? = null var ccy:String? = null var fromAge:Int? = null var toAge:Int? = null var indexationType:String? = null var salaryType:String? = null var isTaxable:Boolean? = null var relatedRate:String? = null var order:Int? = null var editable:Boolean? = null var constraints:ArrayList = ArrayList() var amountType:AmountType? = null var isOneOff:Boolean? = null } enum class ContributionType { Fixed, Time, Lookup, Match, } open class ContributionRateSpec { var fromAge:Int? = null var toAge:Int? = null var fromService:Int? = null var toService:Int? = null var sourceRate:Double? = null var dateFrom:Date? = null var dateTo:Date? = null var upperLimit:Double? = null var rate:Double? = null var coreRate:Double? = null var lookupKey:String? = null } open class ContributionConstraint { var fromAge:Int? = null var toAge:Int? = null var min:Double? = null var max:Double? = null var step:Double? = null } enum class AmountType { Any, Amount, Rate, } open class InvestmentProduct { var riskId:String? = null var riskName:String? = null }