/**
 * CyberSource Merged Spec
 * All CyberSource API specs merged together. These are available at https://developer.cybersource.com/api/reference/api-reference.html
 *
 * OpenAPI spec version: 0.0.1
 *
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */
import { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';
import { Configuration } from '../configuration';
import { RequestArgs, BaseAPI } from '../base';
import { ActivateDeactivatePlanResponse } from '../models';
import { CreatePlanResponse } from '../models';
import { DeletePlanResponse } from '../models';
import { GetAllPlansResponse } from '../models';
import { GetPlanCodeResponse } from '../models';
import { GetPlanResponse } from '../models';
import { PlansIdBody } from '../models';
import { UpdatePlanResponse } from '../models';
import { V1PlansBody } from '../models';
/**
 * PlansApi - axios parameter creator
 * @export
 */
export declare const PlansApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Activate a Plan
     * @summary Activate a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    activatePlan: (id: string, options?: AxiosRequestConfig & Configuration) => Promise<RequestArgs>;
    /**
     * The recurring billing service enables you to manage payment plans and subscriptions for recurring payment schedules. It securely stores your customer's payment information and personal data within secure Visa data centers, reducing storage risks and PCI DSS scope through the use of *Token Management* (*TMS*).  The three key elements of *Cybersource* Recurring Billing are:  -  **Token**: stores customer billing, shipping, and payment details.  -  **Plan**: stores the billing schedule.  -  **Subscription**: combines the token and plan, and defines the subscription start date, name, and description.  The APIs in this section demonstrate the management of the Plans and Subscriptions. For Tokens please refer to [Token Management](#token-management)
     * @summary Create a Plan
     * @param {V1PlansBody} body
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    createPlan: (body: V1PlansBody, options?: AxiosRequestConfig & Configuration) => Promise<RequestArgs>;
    /**
     * Deactivate a Plan
     * @summary Deactivate a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deactivatePlan: (id: string, options?: AxiosRequestConfig & Configuration) => Promise<RequestArgs>;
    /**
     * Delete a Plan is only allowed: - plan status is in `DRAFT` - plan status is in `ACTIVE`, and `INACTIVE` only allowed when no subscriptions attached to a plan in the lifetime of a plan
     * @summary Delete a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deletePlan: (id: string, options?: AxiosRequestConfig & Configuration) => Promise<RequestArgs>;
    /**
     * Retrieve a Plan details by Plan Id.
     * @summary Get a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getPlan: (id: string, options?: AxiosRequestConfig & Configuration) => Promise<RequestArgs>;
    /**
     * Get a Unique Plan Code
     * @summary Get a Plan Code
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getPlanCode: (options?: AxiosRequestConfig & Configuration) => Promise<RequestArgs>;
    /**
     * Retrieve Plans by Plan Code & Plan Status.
     * @summary Get a List of Plans
     * @param {number} [offset] Page offset number.
     * @param {number} [limit] Number of items to be returned. Default - &#x60;20&#x60;, Max - &#x60;100&#x60;
     * @param {string} [code] Filter by Plan Code
     * @param {string} [status] Filter by Plan Status
     * @param {string} [name] Filter by Plan Name. (First sub string or full string) **[Not Recommended]**
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getPlans: (offset?: number, limit?: number, code?: string, status?: string, name?: string, options?: AxiosRequestConfig & Configuration) => Promise<RequestArgs>;
    /**
     * Update a Plan  Plan in `DRAFT` status - All updates are allowed on Plan with `DRAFT` status  Plan in `ACTIVE` status [Following fields are **Not Updatable**] - `planInformation.billingPeriod` - `planInformation.billingCycles` [Update is only allowed to **increase** billingCycles] - `orderInformation.amountDetails.currency`
     * @summary Update a Plan
     * @param {PlansIdBody} body
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updatePlan: (body: PlansIdBody, id: string, options?: AxiosRequestConfig & Configuration) => Promise<RequestArgs>;
};
/**
 * PlansApi - functional programming interface
 * @export
 */
export declare const PlansApiFp: (configuration?: Configuration) => {
    /**
     * Activate a Plan
     * @summary Activate a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    activatePlan(id: string, options?: AxiosRequestConfig & Configuration): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<ActivateDeactivatePlanResponse>>>;
    /**
     * The recurring billing service enables you to manage payment plans and subscriptions for recurring payment schedules. It securely stores your customer's payment information and personal data within secure Visa data centers, reducing storage risks and PCI DSS scope through the use of *Token Management* (*TMS*).  The three key elements of *Cybersource* Recurring Billing are:  -  **Token**: stores customer billing, shipping, and payment details.  -  **Plan**: stores the billing schedule.  -  **Subscription**: combines the token and plan, and defines the subscription start date, name, and description.  The APIs in this section demonstrate the management of the Plans and Subscriptions. For Tokens please refer to [Token Management](#token-management)
     * @summary Create a Plan
     * @param {V1PlansBody} body
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    createPlan(body: V1PlansBody, options?: AxiosRequestConfig & Configuration): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CreatePlanResponse>>>;
    /**
     * Deactivate a Plan
     * @summary Deactivate a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deactivatePlan(id: string, options?: AxiosRequestConfig & Configuration): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<ActivateDeactivatePlanResponse>>>;
    /**
     * Delete a Plan is only allowed: - plan status is in `DRAFT` - plan status is in `ACTIVE`, and `INACTIVE` only allowed when no subscriptions attached to a plan in the lifetime of a plan
     * @summary Delete a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deletePlan(id: string, options?: AxiosRequestConfig & Configuration): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<DeletePlanResponse>>>;
    /**
     * Retrieve a Plan details by Plan Id.
     * @summary Get a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getPlan(id: string, options?: AxiosRequestConfig & Configuration): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<GetPlanResponse>>>;
    /**
     * Get a Unique Plan Code
     * @summary Get a Plan Code
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getPlanCode(options?: AxiosRequestConfig & Configuration): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<GetPlanCodeResponse>>>;
    /**
     * Retrieve Plans by Plan Code & Plan Status.
     * @summary Get a List of Plans
     * @param {number} [offset] Page offset number.
     * @param {number} [limit] Number of items to be returned. Default - &#x60;20&#x60;, Max - &#x60;100&#x60;
     * @param {string} [code] Filter by Plan Code
     * @param {string} [status] Filter by Plan Status
     * @param {string} [name] Filter by Plan Name. (First sub string or full string) **[Not Recommended]**
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getPlans(offset?: number, limit?: number, code?: string, status?: string, name?: string, options?: AxiosRequestConfig & Configuration): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<GetAllPlansResponse>>>;
    /**
     * Update a Plan  Plan in `DRAFT` status - All updates are allowed on Plan with `DRAFT` status  Plan in `ACTIVE` status [Following fields are **Not Updatable**] - `planInformation.billingPeriod` - `planInformation.billingCycles` [Update is only allowed to **increase** billingCycles] - `orderInformation.amountDetails.currency`
     * @summary Update a Plan
     * @param {PlansIdBody} body
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updatePlan(body: PlansIdBody, id: string, options?: AxiosRequestConfig & Configuration): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UpdatePlanResponse>>>;
};
/**
 * PlansApi - factory interface
 * @export
 */
export declare const PlansApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Activate a Plan
     * @summary Activate a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    activatePlan(id: string, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<ActivateDeactivatePlanResponse>>;
    /**
     * The recurring billing service enables you to manage payment plans and subscriptions for recurring payment schedules. It securely stores your customer's payment information and personal data within secure Visa data centers, reducing storage risks and PCI DSS scope through the use of *Token Management* (*TMS*).  The three key elements of *Cybersource* Recurring Billing are:  -  **Token**: stores customer billing, shipping, and payment details.  -  **Plan**: stores the billing schedule.  -  **Subscription**: combines the token and plan, and defines the subscription start date, name, and description.  The APIs in this section demonstrate the management of the Plans and Subscriptions. For Tokens please refer to [Token Management](#token-management)
     * @summary Create a Plan
     * @param {V1PlansBody} body
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    createPlan(body: V1PlansBody, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<CreatePlanResponse>>;
    /**
     * Deactivate a Plan
     * @summary Deactivate a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deactivatePlan(id: string, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<ActivateDeactivatePlanResponse>>;
    /**
     * Delete a Plan is only allowed: - plan status is in `DRAFT` - plan status is in `ACTIVE`, and `INACTIVE` only allowed when no subscriptions attached to a plan in the lifetime of a plan
     * @summary Delete a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deletePlan(id: string, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<DeletePlanResponse>>;
    /**
     * Retrieve a Plan details by Plan Id.
     * @summary Get a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getPlan(id: string, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<GetPlanResponse>>;
    /**
     * Get a Unique Plan Code
     * @summary Get a Plan Code
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getPlanCode(options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<GetPlanCodeResponse>>;
    /**
     * Retrieve Plans by Plan Code & Plan Status.
     * @summary Get a List of Plans
     * @param {number} [offset] Page offset number.
     * @param {number} [limit] Number of items to be returned. Default - &#x60;20&#x60;, Max - &#x60;100&#x60;
     * @param {string} [code] Filter by Plan Code
     * @param {string} [status] Filter by Plan Status
     * @param {string} [name] Filter by Plan Name. (First sub string or full string) **[Not Recommended]**
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getPlans(offset?: number, limit?: number, code?: string, status?: string, name?: string, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<GetAllPlansResponse>>;
    /**
     * Update a Plan  Plan in `DRAFT` status - All updates are allowed on Plan with `DRAFT` status  Plan in `ACTIVE` status [Following fields are **Not Updatable**] - `planInformation.billingPeriod` - `planInformation.billingCycles` [Update is only allowed to **increase** billingCycles] - `orderInformation.amountDetails.currency`
     * @summary Update a Plan
     * @param {PlansIdBody} body
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updatePlan(body: PlansIdBody, id: string, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<UpdatePlanResponse>>;
};
/**
 * PlansApi - object-oriented interface
 * @export
 * @class PlansApi
 * @extends {BaseAPI}
 */
export declare class PlansApi extends BaseAPI {
    /**
     * Activate a Plan
     * @summary Activate a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlansApi
     */
    activatePlan(id: string, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<ActivateDeactivatePlanResponse>>;
    /**
     * The recurring billing service enables you to manage payment plans and subscriptions for recurring payment schedules. It securely stores your customer's payment information and personal data within secure Visa data centers, reducing storage risks and PCI DSS scope through the use of *Token Management* (*TMS*).  The three key elements of *Cybersource* Recurring Billing are:  -  **Token**: stores customer billing, shipping, and payment details.  -  **Plan**: stores the billing schedule.  -  **Subscription**: combines the token and plan, and defines the subscription start date, name, and description.  The APIs in this section demonstrate the management of the Plans and Subscriptions. For Tokens please refer to [Token Management](#token-management)
     * @summary Create a Plan
     * @param {V1PlansBody} body
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlansApi
     */
    createPlan(body: V1PlansBody, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<CreatePlanResponse>>;
    /**
     * Deactivate a Plan
     * @summary Deactivate a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlansApi
     */
    deactivatePlan(id: string, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<ActivateDeactivatePlanResponse>>;
    /**
     * Delete a Plan is only allowed: - plan status is in `DRAFT` - plan status is in `ACTIVE`, and `INACTIVE` only allowed when no subscriptions attached to a plan in the lifetime of a plan
     * @summary Delete a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlansApi
     */
    deletePlan(id: string, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<DeletePlanResponse>>;
    /**
     * Retrieve a Plan details by Plan Id.
     * @summary Get a Plan
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlansApi
     */
    getPlan(id: string, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<GetPlanResponse>>;
    /**
     * Get a Unique Plan Code
     * @summary Get a Plan Code
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlansApi
     */
    getPlanCode(options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<GetPlanCodeResponse>>;
    /**
     * Retrieve Plans by Plan Code & Plan Status.
     * @summary Get a List of Plans
     * @param {number} [offset] Page offset number.
     * @param {number} [limit] Number of items to be returned. Default - &#x60;20&#x60;, Max - &#x60;100&#x60;
     * @param {string} [code] Filter by Plan Code
     * @param {string} [status] Filter by Plan Status
     * @param {string} [name] Filter by Plan Name. (First sub string or full string) **[Not Recommended]**
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlansApi
     */
    getPlans(offset?: number, limit?: number, code?: string, status?: string, name?: string, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<GetAllPlansResponse>>;
    /**
     * Update a Plan  Plan in `DRAFT` status - All updates are allowed on Plan with `DRAFT` status  Plan in `ACTIVE` status [Following fields are **Not Updatable**] - `planInformation.billingPeriod` - `planInformation.billingCycles` [Update is only allowed to **increase** billingCycles] - `orderInformation.amountDetails.currency`
     * @summary Update a Plan
     * @param {PlansIdBody} body
     * @param {string} id Plan Id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PlansApi
     */
    updatePlan(body: PlansIdBody, id: string, options?: AxiosRequestConfig & Configuration): Promise<AxiosResponse<UpdatePlanResponse>>;
}
