/**
 * 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 { GetProductsTypeProductIdResponse } from '../models';
import { GetProductsTypeResponse } from '../models';
import { PostProductsTypeRequest } from '../models';
import { PostProductsTypeResponse } from '../models';
import { PutProductsTypeProductIdRequest } from '../models';
import { PutProductsTypeProductIdResponse } from '../models';
/**
 * ProductsApi - axios parameter creator
 * @export
 */
export declare const ProductsApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Creates a Share Product  Mandatory Fields: name, shortName, description, currencyCode, digitsAfterDecimal,inMultiplesOf, locale, totalShares, unitPrice, nominalShares,allowDividendCalculationForInactiveClients,accountingRule  Mandatory Fields for Cash based accounting (accountingRule = 2): shareReferenceId, shareSuspenseId, shareEquityId, incomeFromFeeAccountId  Optional Fields: sharesIssued, minimumShares, maximumShares, minimumActivePeriodForDividends, minimumactiveperiodFrequencyType, lockinPeriodFrequency, lockinPeriodFrequencyType, marketPricePeriods, chargesSelected
     * @summary Create a Share Product
     * @param {string} type type
     * @param {PostProductsTypeRequest} postProductsTypeRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    createProduct: (type: string, postProductsTypeRequest: PostProductsTypeRequest, options?: any) => Promise<RequestArgs>;
    /**
     *
     * @param {string} type type
     * @param {number} productId productId
     * @param {string} [command] command
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    handleCommands3: (type: string, productId: number, command?: string, options?: any) => Promise<RequestArgs>;
    /**
     * Lists Share Products  Mandatory Fields: limit, offset  Example Requests:  shareproducts
     * @summary List Share Products
     * @param {string} type type
     * @param {number} [offset] offset
     * @param {number} [limit] limit
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveAllProducts: (type: string, offset?: number, limit?: number, options?: any) => Promise<RequestArgs>;
    /**
     * Retrieves a Share Product  Example Requests:  products/share/1   products/share/1?template=true
     * @summary Retrieve a Share Product
     * @param {number} productId productId
     * @param {string} type type
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveProduct: (productId: number, type: string, options?: any) => Promise<RequestArgs>;
    /**
     *
     * @param {string} type type
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveTemplate12: (type: string, options?: any) => Promise<RequestArgs>;
    /**
     * Updates a Share Product
     * @summary Update a Share Product
     * @param {string} type type
     * @param {number} productId productId
     * @param {PutProductsTypeProductIdRequest} putProductsTypeProductIdRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updateProduct: (type: string, productId: number, putProductsTypeProductIdRequest: PutProductsTypeProductIdRequest, options?: any) => Promise<RequestArgs>;
};
/**
 * ProductsApi - functional programming interface
 * @export
 */
export declare const ProductsApiFp: (configuration?: Configuration) => {
    /**
     * Creates a Share Product  Mandatory Fields: name, shortName, description, currencyCode, digitsAfterDecimal,inMultiplesOf, locale, totalShares, unitPrice, nominalShares,allowDividendCalculationForInactiveClients,accountingRule  Mandatory Fields for Cash based accounting (accountingRule = 2): shareReferenceId, shareSuspenseId, shareEquityId, incomeFromFeeAccountId  Optional Fields: sharesIssued, minimumShares, maximumShares, minimumActivePeriodForDividends, minimumactiveperiodFrequencyType, lockinPeriodFrequency, lockinPeriodFrequencyType, marketPricePeriods, chargesSelected
     * @summary Create a Share Product
     * @param {string} type type
     * @param {PostProductsTypeRequest} postProductsTypeRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    createProduct(type: string, postProductsTypeRequest: PostProductsTypeRequest, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PostProductsTypeResponse>>;
    /**
     *
     * @param {string} type type
     * @param {number} productId productId
     * @param {string} [command] command
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    handleCommands3(type: string, productId: number, command?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>>;
    /**
     * Lists Share Products  Mandatory Fields: limit, offset  Example Requests:  shareproducts
     * @summary List Share Products
     * @param {string} type type
     * @param {number} [offset] offset
     * @param {number} [limit] limit
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveAllProducts(type: string, offset?: number, limit?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetProductsTypeResponse>>;
    /**
     * Retrieves a Share Product  Example Requests:  products/share/1   products/share/1?template=true
     * @summary Retrieve a Share Product
     * @param {number} productId productId
     * @param {string} type type
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveProduct(productId: number, type: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetProductsTypeProductIdResponse>>;
    /**
     *
     * @param {string} type type
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveTemplate12(type: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>>;
    /**
     * Updates a Share Product
     * @summary Update a Share Product
     * @param {string} type type
     * @param {number} productId productId
     * @param {PutProductsTypeProductIdRequest} putProductsTypeProductIdRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updateProduct(type: string, productId: number, putProductsTypeProductIdRequest: PutProductsTypeProductIdRequest, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PutProductsTypeProductIdResponse>>;
};
/**
 * ProductsApi - factory interface
 * @export
 */
export declare const ProductsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Creates a Share Product  Mandatory Fields: name, shortName, description, currencyCode, digitsAfterDecimal,inMultiplesOf, locale, totalShares, unitPrice, nominalShares,allowDividendCalculationForInactiveClients,accountingRule  Mandatory Fields for Cash based accounting (accountingRule = 2): shareReferenceId, shareSuspenseId, shareEquityId, incomeFromFeeAccountId  Optional Fields: sharesIssued, minimumShares, maximumShares, minimumActivePeriodForDividends, minimumactiveperiodFrequencyType, lockinPeriodFrequency, lockinPeriodFrequencyType, marketPricePeriods, chargesSelected
     * @summary Create a Share Product
     * @param {string} type type
     * @param {PostProductsTypeRequest} postProductsTypeRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    createProduct(type: string, postProductsTypeRequest: PostProductsTypeRequest, options?: any): AxiosPromise<PostProductsTypeResponse>;
    /**
     *
     * @param {string} type type
     * @param {number} productId productId
     * @param {string} [command] command
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    handleCommands3(type: string, productId: number, command?: string, options?: any): AxiosPromise<string>;
    /**
     * Lists Share Products  Mandatory Fields: limit, offset  Example Requests:  shareproducts
     * @summary List Share Products
     * @param {string} type type
     * @param {number} [offset] offset
     * @param {number} [limit] limit
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveAllProducts(type: string, offset?: number, limit?: number, options?: any): AxiosPromise<GetProductsTypeResponse>;
    /**
     * Retrieves a Share Product  Example Requests:  products/share/1   products/share/1?template=true
     * @summary Retrieve a Share Product
     * @param {number} productId productId
     * @param {string} type type
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveProduct(productId: number, type: string, options?: any): AxiosPromise<GetProductsTypeProductIdResponse>;
    /**
     *
     * @param {string} type type
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    retrieveTemplate12(type: string, options?: any): AxiosPromise<string>;
    /**
     * Updates a Share Product
     * @summary Update a Share Product
     * @param {string} type type
     * @param {number} productId productId
     * @param {PutProductsTypeProductIdRequest} putProductsTypeProductIdRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updateProduct(type: string, productId: number, putProductsTypeProductIdRequest: PutProductsTypeProductIdRequest, options?: any): AxiosPromise<PutProductsTypeProductIdResponse>;
};
/**
 * ProductsApi - object-oriented interface
 * @export
 * @class ProductsApi
 * @extends {BaseAPI}
 */
export declare class ProductsApi extends BaseAPI {
    /**
     * Creates a Share Product  Mandatory Fields: name, shortName, description, currencyCode, digitsAfterDecimal,inMultiplesOf, locale, totalShares, unitPrice, nominalShares,allowDividendCalculationForInactiveClients,accountingRule  Mandatory Fields for Cash based accounting (accountingRule = 2): shareReferenceId, shareSuspenseId, shareEquityId, incomeFromFeeAccountId  Optional Fields: sharesIssued, minimumShares, maximumShares, minimumActivePeriodForDividends, minimumactiveperiodFrequencyType, lockinPeriodFrequency, lockinPeriodFrequencyType, marketPricePeriods, chargesSelected
     * @summary Create a Share Product
     * @param {string} type type
     * @param {PostProductsTypeRequest} postProductsTypeRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductsApi
     */
    createProduct(type: string, postProductsTypeRequest: PostProductsTypeRequest, options?: any): Promise<import("axios").AxiosResponse<PostProductsTypeResponse>>;
    /**
     *
     * @param {string} type type
     * @param {number} productId productId
     * @param {string} [command] command
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductsApi
     */
    handleCommands3(type: string, productId: number, command?: string, options?: any): Promise<import("axios").AxiosResponse<string>>;
    /**
     * Lists Share Products  Mandatory Fields: limit, offset  Example Requests:  shareproducts
     * @summary List Share Products
     * @param {string} type type
     * @param {number} [offset] offset
     * @param {number} [limit] limit
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductsApi
     */
    retrieveAllProducts(type: string, offset?: number, limit?: number, options?: any): Promise<import("axios").AxiosResponse<GetProductsTypeResponse>>;
    /**
     * Retrieves a Share Product  Example Requests:  products/share/1   products/share/1?template=true
     * @summary Retrieve a Share Product
     * @param {number} productId productId
     * @param {string} type type
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductsApi
     */
    retrieveProduct(productId: number, type: string, options?: any): Promise<import("axios").AxiosResponse<GetProductsTypeProductIdResponse>>;
    /**
     *
     * @param {string} type type
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductsApi
     */
    retrieveTemplate12(type: string, options?: any): Promise<import("axios").AxiosResponse<string>>;
    /**
     * Updates a Share Product
     * @summary Update a Share Product
     * @param {string} type type
     * @param {number} productId productId
     * @param {PutProductsTypeProductIdRequest} putProductsTypeProductIdRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductsApi
     */
    updateProduct(type: string, productId: number, putProductsTypeProductIdRequest: PutProductsTypeProductIdRequest, options?: any): Promise<import("axios").AxiosResponse<PutProductsTypeProductIdResponse>>;
}
