//
// OBReadProduct2DataOtherProductTypeRepayment.swift
//
// Generated by swagger-codegen
// https://github.com/swagger-api/swagger-codegen
//

import Foundation


/** Repayment details of the Loan product */

public struct OBReadProduct2DataOtherProductTypeRepayment: Codable {

    public enum RepaymentType: String, Codable { 
        case usba = "USBA"
        case usbu = "USBU"
        case usci = "USCI"
        case uscs = "USCS"
        case user = "USER"
        case usfa = "USFA"
        case usfb = "USFB"
        case usfi = "USFI"
        case usio = "USIO"
        case usot = "USOT"
        case uspf = "USPF"
        case usrw = "USRW"
        case ussl = "USSL"
    }
    public enum RepaymentFrequency: String, Codable { 
        case smda = "SMDA"
        case smfl = "SMFL"
        case smfo = "SMFO"
        case smhy = "SMHY"
        case smmo = "SMMO"
        case smot = "SMOT"
        case smqu = "SMQU"
        case smwe = "SMWE"
        case smye = "SMYE"
    }
    public enum AmountType: String, Codable { 
        case rabd = "RABD"
        case rabl = "RABL"
        case raci = "RACI"
        case rafc = "RAFC"
        case raio = "RAIO"
        case ralt = "RALT"
        case usot = "USOT"
    }
    /** Repayment type */
    public var repaymentType: RepaymentType?
    /** Repayment frequency */
    public var repaymentFrequency: RepaymentFrequency?
    /** The repayment is for paying just the interest only or both interest and capital or bullet amount or balance to date etc */
    public var amountType: AmountType?
    public var notes: [String]?
    public var otherRepaymentType: OBReadProduct2DataOtherProductTypeRepaymentOtherRepaymentType?
    public var otherRepaymentFrequency: OBReadProduct2DataOtherProductTypeRepaymentOtherRepaymentFrequency?
    public var otherAmountType: OBReadProduct2DataOtherProductTypeRepaymentOtherAmountType?
    public var repaymentFeeCharges: OBReadProduct2DataOtherProductTypeRepaymentRepaymentFeeCharges?
    public var repaymentHoliday: [OBReadProduct2DataOtherProductTypeRepaymentRepaymentHoliday]?

    public init(repaymentType: RepaymentType?, repaymentFrequency: RepaymentFrequency?, amountType: AmountType?, notes: [String]?, otherRepaymentType: OBReadProduct2DataOtherProductTypeRepaymentOtherRepaymentType?, otherRepaymentFrequency: OBReadProduct2DataOtherProductTypeRepaymentOtherRepaymentFrequency?, otherAmountType: OBReadProduct2DataOtherProductTypeRepaymentOtherAmountType?, repaymentFeeCharges: OBReadProduct2DataOtherProductTypeRepaymentRepaymentFeeCharges?, repaymentHoliday: [OBReadProduct2DataOtherProductTypeRepaymentRepaymentHoliday]?) {
        self.repaymentType = repaymentType
        self.repaymentFrequency = repaymentFrequency
        self.amountType = amountType
        self.notes = notes
        self.otherRepaymentType = otherRepaymentType
        self.otherRepaymentFrequency = otherRepaymentFrequency
        self.otherAmountType = otherAmountType
        self.repaymentFeeCharges = repaymentFeeCharges
        self.repaymentHoliday = repaymentHoliday
    }

    public enum CodingKeys: String, CodingKey { 
        case repaymentType = "RepaymentType"
        case repaymentFrequency = "RepaymentFrequency"
        case amountType = "AmountType"
        case notes = "Notes"
        case otherRepaymentType = "OtherRepaymentType"
        case otherRepaymentFrequency = "OtherRepaymentFrequency"
        case otherAmountType = "OtherAmountType"
        case repaymentFeeCharges = "RepaymentFeeCharges"
        case repaymentHoliday = "RepaymentHoliday"
    }


}

