/**
 * AdvancedBilling
 *
 * This file was automatically generated for Maxio by APIMATIC v3.0 ( https://www.apimatic.io ).
 */
import { ApiResponse, RequestOptions } from '../core';
import { CreateReasonCodeRequest } from '../models/createReasonCodeRequest';
import { OkResponse } from '../models/okResponse';
import { ReasonCodeResponse } from '../models/reasonCodeResponse';
import { UpdateReasonCodeRequest } from '../models/updateReasonCodeRequest';
import { BaseController } from './baseController';
export declare class ReasonCodesController extends BaseController {
    /**
     * # Reason Codes Intro
     *
     * ReasonCodes are a way to gain a high level view of why your customers are cancelling the subcription
     * to your product or service.
     *
     * Add a set of churn reason codes to be displayed in-app and/or the Maxio Billing Portal. As your
     * subscribers decide to cancel their subscription, learn why they decided to cancel.
     *
     * ## Reason Code Documentation
     *
     * Full documentation on how Reason Codes operate within Advanced Billing can be located under the
     * following links.
     *
     * [Churn Reason Codes](https://maxio.zendesk.com/hc/en-us/articles/24286647554701-Churn-Reason-Codes)
     *
     * ## Create Reason Code
     *
     * This method gives a merchant the option to create a reason codes for a given Site.
     *
     * @param body
     * @return Response from the API call
     */
    createReasonCode(body?: CreateReasonCodeRequest, requestOptions?: RequestOptions): Promise<ApiResponse<ReasonCodeResponse>>;
    /**
     * This method gives a merchant the option to retrieve a list of all of the current churn codes for a
     * given site.
     *
     * @param page     Result records are organized in pages. By default, the first page of results is
     *                           displayed. The page parameter specifies a page number of results to fetch. You can start
     *                           navigating through the pages to consume the results. You do this by passing in a page
     *                           parameter. Retrieve the next page by adding ?page=2 to the query string. If there are no
     *                           results to return, then an empty result set will be returned. Use in query `page=1`.
     * @param perPage  This parameter indicates how many records to fetch in each request. Default value is 20.
     *                           The maximum allowed values is 200; any per_page value over 200 will be changed to 200.
     *                           Use in query `per_page=200`.
     * @return Response from the API call
     */
    listReasonCodes({ page, perPage, }: {
        page?: number;
        perPage?: number;
    }, requestOptions?: RequestOptions): Promise<ApiResponse<ReasonCodeResponse[]>>;
    /**
     * This method gives a merchant the option to retrieve a list of a particular code for a given Site by
     * providing the unique numerical ID of the code.
     *
     * @param reasonCodeId   The Advanced Billing id of the reason code
     * @return Response from the API call
     */
    readReasonCode(reasonCodeId: number, requestOptions?: RequestOptions): Promise<ApiResponse<ReasonCodeResponse>>;
    /**
     * This method gives a merchant the option to update an existing reason code for a given site.
     *
     * @param reasonCodeId   The Advanced Billing id of the reason code
     * @param body
     * @return Response from the API call
     */
    updateReasonCode(reasonCodeId: number, body?: UpdateReasonCodeRequest, requestOptions?: RequestOptions): Promise<ApiResponse<ReasonCodeResponse>>;
    /**
     * This method gives a merchant the option to delete one reason code from the Churn Reason Codes. This
     * code will be immediately removed. This action is not reversable.
     *
     * @param reasonCodeId   The Advanced Billing id of the reason code
     * @return Response from the API call
     */
    deleteReasonCode(reasonCodeId: number, requestOptions?: RequestOptions): Promise<ApiResponse<OkResponse>>;
}
