/**
 * 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 { AxiosPromise, AxiosInstance } from 'axios';
import { Configuration } from '../configuration';
import { RequestArgs, BaseAPI } from '../base';
import { DeleteLoansLoanIdChargesChargeIdResponse } from '../models';
import { GetLoansLoanIdChargesChargeIdResponse } from '../models';
import { GetLoansLoanIdChargesTemplateResponse } from '../models';
import { PostLoansLoanIdChargesChargeIdRequest } from '../models';
import { PostLoansLoanIdChargesChargeIdResponse } from '../models';
import { PostLoansLoanIdChargesRequest } from '../models';
import { PostLoansLoanIdChargesResponse } from '../models';
import { PutLoansLoanIdChargesChargeIdRequest } from '../models';
import { PutLoansLoanIdChargesChargeIdResponse } from '../models';
/**
 * LoanChargesApi - axios parameter creator
 * @export
 */
export declare const LoanChargesApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Note: Currently, A Loan Charge may only be removed from Loans that are not yet approved.
     * @summary Delete a Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deleteLoanCharge: (loanId: number, chargeId: number, options?: any) => Promise<RequestArgs>;
    /**
     * It Creates a Loan Charge
     * @summary Create a Loan Charge
     * @param {number} loanId loanId
     * @param {PostLoansLoanIdChargesRequest} postLoansLoanIdChargesRequest
     * @param {string} [command] command
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    executeLoanCharge: (loanId: number, postLoansLoanIdChargesRequest: PostLoansLoanIdChargesRequest, command?: string, options?: any) => Promise<RequestArgs>;
    /**
     * Loan Charge will be paid if the loan is linked with a savings account
     * @summary Pay Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {PostLoansLoanIdChargesChargeIdRequest} postLoansLoanIdChargesChargeIdRequest
     * @param {string} [command] command
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    executeLoanCharge1: (loanId: number, chargeId: number, postLoansLoanIdChargesChargeIdRequest: PostLoansLoanIdChargesChargeIdRequest, command?: string, options?: any) => Promise<RequestArgs>;
    /**
     * It lists all the Loan Charges specific to a Loan   Example Requests:  loans/1/charges   loans/1/charges?fields=name,amountOrPercentage
     * @summary List Loan Charges
     * @param {number} loanId loanId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveAllLoanCharges: (loanId: number, options?: any) => Promise<RequestArgs>;
    /**
     * Retrieves Loan Charge according to the Loan ID and Charge IDExample Requests:  /loans/1/charges/1   /loans/1/charges/1?fields=name,amountOrPercentage
     * @summary Retrieve a Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveLoanCharge: (loanId: number, chargeId: number, options?: any) => Promise<RequestArgs>;
    /**
     * This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:  Field Defaults Allowed description Lists Example Request:  loans/1/charges/template
     * @summary Retrieve Loan Charges Template
     * @param {number} loanId loanId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveTemplate8: (loanId: number, options?: any) => Promise<RequestArgs>;
    /**
     * Currently Loan Charges may be updated only if the Loan is not yet approved
     * @summary Update a Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {PutLoansLoanIdChargesChargeIdRequest} putLoansLoanIdChargesChargeIdRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updateLoanCharge: (loanId: number, chargeId: number, putLoansLoanIdChargesChargeIdRequest: PutLoansLoanIdChargesChargeIdRequest, options?: any) => Promise<RequestArgs>;
};
/**
 * LoanChargesApi - functional programming interface
 * @export
 */
export declare const LoanChargesApiFp: (configuration?: Configuration) => {
    /**
     * Note: Currently, A Loan Charge may only be removed from Loans that are not yet approved.
     * @summary Delete a Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deleteLoanCharge(loanId: number, chargeId: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeleteLoansLoanIdChargesChargeIdResponse>>;
    /**
     * It Creates a Loan Charge
     * @summary Create a Loan Charge
     * @param {number} loanId loanId
     * @param {PostLoansLoanIdChargesRequest} postLoansLoanIdChargesRequest
     * @param {string} [command] command
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    executeLoanCharge(loanId: number, postLoansLoanIdChargesRequest: PostLoansLoanIdChargesRequest, command?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PostLoansLoanIdChargesResponse>>;
    /**
     * Loan Charge will be paid if the loan is linked with a savings account
     * @summary Pay Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {PostLoansLoanIdChargesChargeIdRequest} postLoansLoanIdChargesChargeIdRequest
     * @param {string} [command] command
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    executeLoanCharge1(loanId: number, chargeId: number, postLoansLoanIdChargesChargeIdRequest: PostLoansLoanIdChargesChargeIdRequest, command?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PostLoansLoanIdChargesChargeIdResponse>>;
    /**
     * It lists all the Loan Charges specific to a Loan   Example Requests:  loans/1/charges   loans/1/charges?fields=name,amountOrPercentage
     * @summary List Loan Charges
     * @param {number} loanId loanId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveAllLoanCharges(loanId: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<GetLoansLoanIdChargesChargeIdResponse>>>;
    /**
     * Retrieves Loan Charge according to the Loan ID and Charge IDExample Requests:  /loans/1/charges/1   /loans/1/charges/1?fields=name,amountOrPercentage
     * @summary Retrieve a Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveLoanCharge(loanId: number, chargeId: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetLoansLoanIdChargesChargeIdResponse>>;
    /**
     * This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:  Field Defaults Allowed description Lists Example Request:  loans/1/charges/template
     * @summary Retrieve Loan Charges Template
     * @param {number} loanId loanId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveTemplate8(loanId: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetLoansLoanIdChargesTemplateResponse>>;
    /**
     * Currently Loan Charges may be updated only if the Loan is not yet approved
     * @summary Update a Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {PutLoansLoanIdChargesChargeIdRequest} putLoansLoanIdChargesChargeIdRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updateLoanCharge(loanId: number, chargeId: number, putLoansLoanIdChargesChargeIdRequest: PutLoansLoanIdChargesChargeIdRequest, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PutLoansLoanIdChargesChargeIdResponse>>;
};
/**
 * LoanChargesApi - factory interface
 * @export
 */
export declare const LoanChargesApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Note: Currently, A Loan Charge may only be removed from Loans that are not yet approved.
     * @summary Delete a Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deleteLoanCharge(loanId: number, chargeId: number, options?: any): AxiosPromise<DeleteLoansLoanIdChargesChargeIdResponse>;
    /**
     * It Creates a Loan Charge
     * @summary Create a Loan Charge
     * @param {number} loanId loanId
     * @param {PostLoansLoanIdChargesRequest} postLoansLoanIdChargesRequest
     * @param {string} [command] command
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    executeLoanCharge(loanId: number, postLoansLoanIdChargesRequest: PostLoansLoanIdChargesRequest, command?: string, options?: any): AxiosPromise<PostLoansLoanIdChargesResponse>;
    /**
     * Loan Charge will be paid if the loan is linked with a savings account
     * @summary Pay Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {PostLoansLoanIdChargesChargeIdRequest} postLoansLoanIdChargesChargeIdRequest
     * @param {string} [command] command
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    executeLoanCharge1(loanId: number, chargeId: number, postLoansLoanIdChargesChargeIdRequest: PostLoansLoanIdChargesChargeIdRequest, command?: string, options?: any): AxiosPromise<PostLoansLoanIdChargesChargeIdResponse>;
    /**
     * It lists all the Loan Charges specific to a Loan   Example Requests:  loans/1/charges   loans/1/charges?fields=name,amountOrPercentage
     * @summary List Loan Charges
     * @param {number} loanId loanId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveAllLoanCharges(loanId: number, options?: any): AxiosPromise<Array<GetLoansLoanIdChargesChargeIdResponse>>;
    /**
     * Retrieves Loan Charge according to the Loan ID and Charge IDExample Requests:  /loans/1/charges/1   /loans/1/charges/1?fields=name,amountOrPercentage
     * @summary Retrieve a Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveLoanCharge(loanId: number, chargeId: number, options?: any): AxiosPromise<GetLoansLoanIdChargesChargeIdResponse>;
    /**
     * This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:  Field Defaults Allowed description Lists Example Request:  loans/1/charges/template
     * @summary Retrieve Loan Charges Template
     * @param {number} loanId loanId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveTemplate8(loanId: number, options?: any): AxiosPromise<GetLoansLoanIdChargesTemplateResponse>;
    /**
     * Currently Loan Charges may be updated only if the Loan is not yet approved
     * @summary Update a Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {PutLoansLoanIdChargesChargeIdRequest} putLoansLoanIdChargesChargeIdRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updateLoanCharge(loanId: number, chargeId: number, putLoansLoanIdChargesChargeIdRequest: PutLoansLoanIdChargesChargeIdRequest, options?: any): AxiosPromise<PutLoansLoanIdChargesChargeIdResponse>;
};
/**
 * LoanChargesApi - object-oriented interface
 * @export
 * @class LoanChargesApi
 * @extends {BaseAPI}
 */
export declare class LoanChargesApi extends BaseAPI {
    /**
     * Note: Currently, A Loan Charge may only be removed from Loans that are not yet approved.
     * @summary Delete a Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LoanChargesApi
     */
    deleteLoanCharge(loanId: number, chargeId: number, options?: any): Promise<import("axios").AxiosResponse<DeleteLoansLoanIdChargesChargeIdResponse>>;
    /**
     * It Creates a Loan Charge
     * @summary Create a Loan Charge
     * @param {number} loanId loanId
     * @param {PostLoansLoanIdChargesRequest} postLoansLoanIdChargesRequest
     * @param {string} [command] command
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LoanChargesApi
     */
    executeLoanCharge(loanId: number, postLoansLoanIdChargesRequest: PostLoansLoanIdChargesRequest, command?: string, options?: any): Promise<import("axios").AxiosResponse<PostLoansLoanIdChargesResponse>>;
    /**
     * Loan Charge will be paid if the loan is linked with a savings account
     * @summary Pay Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {PostLoansLoanIdChargesChargeIdRequest} postLoansLoanIdChargesChargeIdRequest
     * @param {string} [command] command
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LoanChargesApi
     */
    executeLoanCharge1(loanId: number, chargeId: number, postLoansLoanIdChargesChargeIdRequest: PostLoansLoanIdChargesChargeIdRequest, command?: string, options?: any): Promise<import("axios").AxiosResponse<PostLoansLoanIdChargesChargeIdResponse>>;
    /**
     * It lists all the Loan Charges specific to a Loan   Example Requests:  loans/1/charges   loans/1/charges?fields=name,amountOrPercentage
     * @summary List Loan Charges
     * @param {number} loanId loanId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LoanChargesApi
     */
    retrieveAllLoanCharges(loanId: number, options?: any): Promise<import("axios").AxiosResponse<GetLoansLoanIdChargesChargeIdResponse[]>>;
    /**
     * Retrieves Loan Charge according to the Loan ID and Charge IDExample Requests:  /loans/1/charges/1   /loans/1/charges/1?fields=name,amountOrPercentage
     * @summary Retrieve a Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LoanChargesApi
     */
    retrieveLoanCharge(loanId: number, chargeId: number, options?: any): Promise<import("axios").AxiosResponse<GetLoansLoanIdChargesChargeIdResponse>>;
    /**
     * This is a convenience resource. It can be useful when building maintenance user interface screens for client applications. The template data returned consists of any or all of:  Field Defaults Allowed description Lists Example Request:  loans/1/charges/template
     * @summary Retrieve Loan Charges Template
     * @param {number} loanId loanId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LoanChargesApi
     */
    retrieveTemplate8(loanId: number, options?: any): Promise<import("axios").AxiosResponse<GetLoansLoanIdChargesTemplateResponse>>;
    /**
     * Currently Loan Charges may be updated only if the Loan is not yet approved
     * @summary Update a Loan Charge
     * @param {number} loanId loanId
     * @param {number} chargeId chargeId
     * @param {PutLoansLoanIdChargesChargeIdRequest} putLoansLoanIdChargesChargeIdRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LoanChargesApi
     */
    updateLoanCharge(loanId: number, chargeId: number, putLoansLoanIdChargesChargeIdRequest: PutLoansLoanIdChargesChargeIdRequest, options?: any): Promise<import("axios").AxiosResponse<PutLoansLoanIdChargesChargeIdResponse>>;
}
