/**
 * Apache Fineract
 * Apache Fineract is a secure, multi-tenanted microfinance platform  The goal of the Apache Fineract API is to empower developers to build apps on top of the Apache Fineract Platform<br>The [reference app](https://cui.fineract.dev) (username: mifos, password: password) works on the same demo tenant as the interactive links in this documentation  - The API is organized around [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) - Find out more about Apache Fineract [here](/fineract-provider/api-docs/apiLive.htm#top) - You can [Try The API From Your Browser](/fineract-provider/api-docs/apiLive.htm#interact) - The Generic Options are available [here](/fineract-provider/api-docs/apiLive.htm#genopts) - Find out more about [Updating Dates and Numbers](/fineract-provider/api-docs/apiLive.htm#dates_and_numbers) - For the Authentication and the Basic of HTTP and HTTPS refer [here](/fineract-provider/api-docs/apiLive.htm#authentication_overview) - Check about ERROR codes [here](/fineract-provider/api-docs/apiLive.htm#errors)  Please refer to the [old documentation](/fineract-provider/api-docs/apiLive.htm) for any documentation queries
 *
 * The version of the OpenAPI document: 1.5.0-66-gffae7d4-dirty
 * Contact: dev@fineract.apache.org
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import { Charge } from './charge';
import { LoanProductConfigurableAttributes } from './loan-product-configurable-attributes';
import { LoanProductFloatingRates } from './loan-product-floating-rates';
import { LoanProductGuaranteeDetails } from './loan-product-guarantee-details';
import { LoanProductInterestRecalculationDetails } from './loan-product-interest-recalculation-details';
import { LoanProductRelatedDetail } from './loan-product-related-detail';
import { LoanTransactionProcessingStrategy } from './loan-transaction-processing-strategy';
import { MonetaryCurrency } from './monetary-currency';
import { Money } from './money';
import { Rate } from './rate';
/**
 *
 * @export
 * @interface LoanProduct
 */
export interface LoanProduct {
    /**
     *
     * @type {number}
     * @memberof LoanProduct
     */
    id?: number;
    /**
     *
     * @type {string}
     * @memberof LoanProduct
     */
    shortName?: string;
    /**
     *
     * @type {Array<Rate>}
     * @memberof LoanProduct
     */
    rates?: Array<Rate>;
    /**
     *
     * @type {LoanProductRelatedDetail}
     * @memberof LoanProduct
     */
    loanProductRelatedDetail?: LoanProductRelatedDetail;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    includeInBorrowerCycle?: boolean;
    /**
     *
     * @type {string}
     * @memberof LoanProduct
     */
    startDate?: string;
    /**
     *
     * @type {string}
     * @memberof LoanProduct
     */
    closeDate?: string;
    /**
     *
     * @type {string}
     * @memberof LoanProduct
     */
    externalId?: string;
    /**
     *
     * @type {number}
     * @memberof LoanProduct
     */
    minimumDaysBetweenDisbursalAndFirstRepayment?: number;
    /**
     *
     * @type {LoanProductInterestRecalculationDetails}
     * @memberof LoanProduct
     */
    productInterestRecalculationDetails?: LoanProductInterestRecalculationDetails;
    /**
     *
     * @type {LoanProductGuaranteeDetails}
     * @memberof LoanProduct
     */
    loanProductGuaranteeDetails?: LoanProductGuaranteeDetails;
    /**
     *
     * @type {number}
     * @memberof LoanProduct
     */
    principalThresholdForLastInstallment?: number;
    /**
     *
     * @type {number}
     * @memberof LoanProduct
     */
    installmentAmountInMultiplesOf?: number;
    /**
     *
     * @type {LoanProductFloatingRates}
     * @memberof LoanProduct
     */
    floatingRates?: LoanProductFloatingRates;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    syncExpectedWithDisbursementDate?: boolean;
    /**
     *
     * @type {MonetaryCurrency}
     * @memberof LoanProduct
     */
    currency?: MonetaryCurrency;
    /**
     *
     * @type {number}
     * @memberof LoanProduct
     */
    accountingType?: number;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    cashBasedAccountingEnabled?: boolean;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    accrualBasedAccountingEnabled?: boolean;
    /**
     *
     * @type {Money}
     * @memberof LoanProduct
     */
    principalAmount?: Money;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    interestRecalculationEnabled?: boolean;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    multiDisburseLoan?: boolean;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    equalAmortization?: boolean;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    linkedToFloatingInterestRate?: boolean;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    upfrontAccrualAccountingEnabled?: boolean;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    accountingDisabled?: boolean;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    periodicAccrualAccountingEnabled?: boolean;
    /**
     *
     * @type {string}
     * @memberof LoanProduct
     */
    interestPeriodFrequencyType?: LoanProductInterestPeriodFrequencyTypeEnum;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    holdGuaranteeFundsEnabled?: boolean;
    /**
     *
     * @type {number}
     * @memberof LoanProduct
     */
    numberOfRepayments?: number;
    /**
     *
     * @type {number}
     * @memberof LoanProduct
     */
    nominalInterestRatePerPeriod?: number;
    /**
     *
     * @type {LoanTransactionProcessingStrategy}
     * @memberof LoanProduct
     */
    repaymentStrategy?: LoanTransactionProcessingStrategy;
    /**
     *
     * @type {Array<Charge>}
     * @memberof LoanProduct
     */
    loanProductCharges?: Array<Charge>;
    /**
     *
     * @type {LoanProductConfigurableAttributes}
     * @memberof LoanProduct
     */
    loanProductConfigurableAttributes?: LoanProductConfigurableAttributes;
    /**
     *
     * @type {Money}
     * @memberof LoanProduct
     */
    minPrincipalAmount?: Money;
    /**
     *
     * @type {Money}
     * @memberof LoanProduct
     */
    maxPrincipalAmount?: Money;
    /**
     *
     * @type {number}
     * @memberof LoanProduct
     */
    minNominalInterestRatePerPeriod?: number;
    /**
     *
     * @type {number}
     * @memberof LoanProduct
     */
    maxNominalInterestRatePerPeriod?: number;
    /**
     *
     * @type {number}
     * @memberof LoanProduct
     */
    minNumberOfRepayments?: number;
    /**
     *
     * @type {number}
     * @memberof LoanProduct
     */
    maxNumberOfRepayments?: number;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    arrearsBasedOnOriginalSchedule?: boolean;
    /**
     *
     * @type {boolean}
     * @memberof LoanProduct
     */
    _new?: boolean;
}
/**
    * @export
    * @enum {string}
    */
export declare enum LoanProductInterestPeriodFrequencyTypeEnum {
    Days = "DAYS",
    Weeks = "WEEKS",
    Months = "MONTHS",
    Years = "YEARS",
    WholeTerm = "WHOLE_TERM",
    Invalid = "INVALID"
}
