/**
 * AdvancedBilling
 *
 * This file was automatically generated for Maxio by APIMATIC v3.0 ( https://www.apimatic.io ).
 */
import { ApiResponse, RequestOptions } from '../core.js';
import { CreateReasonCodeRequest } from '../models/createReasonCodeRequest.js';
import { OkResponse } from '../models/okResponse.js';
import { ReasonCodeResponse } from '../models/reasonCodeResponse.js';
import { UpdateReasonCodeRequest } from '../models/updateReasonCodeRequest.js';
import { BaseController } from './baseController.js';
export declare class ReasonCodesController extends BaseController {
    /**
     * Creates a reason code for a given site.
     *
     * # Reason Codes Intro
     *
     * Reason Codes are a way to gain a high-level view of why your customers are cancelling the
     * subscription 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 reason codes for a given site.
     *
     * @param body
     * @return Response from the API call
     */
    createReasonCode(body?: CreateReasonCodeRequest, requestOptions?: RequestOptions): Promise<ApiResponse<ReasonCodeResponse>>;
    /**
     * Lists all 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[]>>;
    /**
     * Returns a particular churn reason code for a given site by its unique ID.
     *
     * @param reasonCodeId   The Advanced Billing id of the reason code
     * @return Response from the API call
     */
    readReasonCode(reasonCodeId: number, requestOptions?: RequestOptions): Promise<ApiResponse<ReasonCodeResponse>>;
    /**
     * Updates 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>>;
    /**
     * Deletes a reason code from the Churn Reason Codes. This code will be immediately removed. This
     * action is not reversible.
     *
     * @param reasonCodeId   The Advanced Billing id of the reason code
     * @return Response from the API call
     */
    deleteReasonCode(reasonCodeId: number, requestOptions?: RequestOptions): Promise<ApiResponse<OkResponse>>;
}
//# sourceMappingURL=reasonCodesController.d.ts.map