/**
 * Elastic Email REST API
 * This API is based on the REST API architecture, allowing the user to easily manage their data with this resource-based approach.    Every API call is established on which specific request type (GET, POST, PUT, DELETE) will be used.    The API has a limit of 20 concurrent connections and a hard timeout of 600 seconds per request.    To start using this API, you will need your Access Token (available <a target=\"_blank\" href=\"https://app.elasticemail.com/marketing/settings/new/manage-api\">here</a>). Remember to keep it safe. Required access levels are listed in the given request’s description.    Downloadable library clients can be found in our Github repository <a target=\"_blank\" href=\"https://github.com/ElasticEmail?tab=repositories&q=%22rest+api%22+in%3Areadme\">here</a>
 *
 * The version of the OpenAPI document: 4.0.0
 * Contact: support@elasticemail.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import type { Configuration } from '../configuration';
import type { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios';
import { RequestArgs, BaseAPI } from '../base';
import { SubAccountInfo } from '../ee-api-models';
import { SubaccountEmailCreditsPayload } from '../ee-api-models';
import { SubaccountEmailSettings } from '../ee-api-models';
import { SubaccountPayload } from '../ee-api-models';
/**
 * SubAccountsApi - axios parameter creator
 * @export
 */
export declare const SubAccountsApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Update email credits of a subaccount by the given amount. Required Access Level: ModifySubAccounts
     * @summary Add, Subtract Email Credits
     * @param {string} email Email address of Sub-Account
     * @param {SubaccountEmailCreditsPayload} subaccountEmailCreditsPayload Amount of email credits to add or subtract from the current SubAccount email credits pool (positive or negative value)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsByEmailCreditsPatch: (email: string, subaccountEmailCreditsPayload: SubaccountEmailCreditsPayload, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Deletes specified SubAccount. An email will be sent to confirm this change. Required Access Level: ModifySubAccounts
     * @summary Delete SubAccount
     * @param {string} email Email address of Sub-Account
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsByEmailDelete: (email: string, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Returns details for the specified SubAccount. Required Access Level: ViewSubAccounts
     * @summary Load SubAccount
     * @param {string} email Email address of Sub-Account
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsByEmailGet: (email: string, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Update SubAccount email settings. Required Access Level: ModifySubAccounts
     * @summary Update SubAccount Email Settings
     * @param {string} email
     * @param {SubaccountEmailSettings} subaccountEmailSettings Updated Email Settings
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsByEmailSettingsEmailPut: (email: string, subaccountEmailSettings: SubaccountEmailSettings, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Returns a list of all your SubAccounts. Required Access Level: ViewSubAccounts
     * @summary Load SubAccounts
     * @param {number} [limit] Maximum number of returned items.
     * @param {number} [offset] How many items should be returned ahead.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsGet: (limit?: number, offset?: number, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Add a new SubAccount to your Account. To receive an access token for this SubAccount, make a POST security/apikeys request using the \'subaccount\' parameter. Required Access Level: ModifySubAccounts
     * @summary Add SubAccount
     * @param {SubaccountPayload} subaccountPayload
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsPost: (subaccountPayload: SubaccountPayload, options?: AxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * SubAccountsApi - functional programming interface
 * @export
 */
export declare const SubAccountsApiFp: (configuration?: Configuration) => {
    /**
     * Update email credits of a subaccount by the given amount. Required Access Level: ModifySubAccounts
     * @summary Add, Subtract Email Credits
     * @param {string} email Email address of Sub-Account
     * @param {SubaccountEmailCreditsPayload} subaccountEmailCreditsPayload Amount of email credits to add or subtract from the current SubAccount email credits pool (positive or negative value)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsByEmailCreditsPatch(email: string, subaccountEmailCreditsPayload: SubaccountEmailCreditsPayload, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
    /**
     * Deletes specified SubAccount. An email will be sent to confirm this change. Required Access Level: ModifySubAccounts
     * @summary Delete SubAccount
     * @param {string} email Email address of Sub-Account
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsByEmailDelete(email: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
    /**
     * Returns details for the specified SubAccount. Required Access Level: ViewSubAccounts
     * @summary Load SubAccount
     * @param {string} email Email address of Sub-Account
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsByEmailGet(email: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubAccountInfo>>;
    /**
     * Update SubAccount email settings. Required Access Level: ModifySubAccounts
     * @summary Update SubAccount Email Settings
     * @param {string} email
     * @param {SubaccountEmailSettings} subaccountEmailSettings Updated Email Settings
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsByEmailSettingsEmailPut(email: string, subaccountEmailSettings: SubaccountEmailSettings, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubaccountEmailSettings>>;
    /**
     * Returns a list of all your SubAccounts. Required Access Level: ViewSubAccounts
     * @summary Load SubAccounts
     * @param {number} [limit] Maximum number of returned items.
     * @param {number} [offset] How many items should be returned ahead.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsGet(limit?: number, offset?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<SubAccountInfo>>>;
    /**
     * Add a new SubAccount to your Account. To receive an access token for this SubAccount, make a POST security/apikeys request using the \'subaccount\' parameter. Required Access Level: ModifySubAccounts
     * @summary Add SubAccount
     * @param {SubaccountPayload} subaccountPayload
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsPost(subaccountPayload: SubaccountPayload, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubAccountInfo>>;
};
/**
 * SubAccountsApi - factory interface
 * @export
 */
export declare const SubAccountsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Update email credits of a subaccount by the given amount. Required Access Level: ModifySubAccounts
     * @summary Add, Subtract Email Credits
     * @param {string} email Email address of Sub-Account
     * @param {SubaccountEmailCreditsPayload} subaccountEmailCreditsPayload Amount of email credits to add or subtract from the current SubAccount email credits pool (positive or negative value)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsByEmailCreditsPatch(email: string, subaccountEmailCreditsPayload: SubaccountEmailCreditsPayload, options?: any): AxiosPromise<void>;
    /**
     * Deletes specified SubAccount. An email will be sent to confirm this change. Required Access Level: ModifySubAccounts
     * @summary Delete SubAccount
     * @param {string} email Email address of Sub-Account
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsByEmailDelete(email: string, options?: any): AxiosPromise<void>;
    /**
     * Returns details for the specified SubAccount. Required Access Level: ViewSubAccounts
     * @summary Load SubAccount
     * @param {string} email Email address of Sub-Account
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsByEmailGet(email: string, options?: any): AxiosPromise<SubAccountInfo>;
    /**
     * Update SubAccount email settings. Required Access Level: ModifySubAccounts
     * @summary Update SubAccount Email Settings
     * @param {string} email
     * @param {SubaccountEmailSettings} subaccountEmailSettings Updated Email Settings
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsByEmailSettingsEmailPut(email: string, subaccountEmailSettings: SubaccountEmailSettings, options?: any): AxiosPromise<SubaccountEmailSettings>;
    /**
     * Returns a list of all your SubAccounts. Required Access Level: ViewSubAccounts
     * @summary Load SubAccounts
     * @param {number} [limit] Maximum number of returned items.
     * @param {number} [offset] How many items should be returned ahead.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsGet(limit?: number, offset?: number, options?: any): AxiosPromise<Array<SubAccountInfo>>;
    /**
     * Add a new SubAccount to your Account. To receive an access token for this SubAccount, make a POST security/apikeys request using the \'subaccount\' parameter. Required Access Level: ModifySubAccounts
     * @summary Add SubAccount
     * @param {SubaccountPayload} subaccountPayload
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    subaccountsPost(subaccountPayload: SubaccountPayload, options?: any): AxiosPromise<SubAccountInfo>;
};
/**
 * SubAccountsApi - interface
 * @export
 * @interface SubAccountsApi
 */
export interface SubAccountsApiInterface {
    /**
     * Update email credits of a subaccount by the given amount. Required Access Level: ModifySubAccounts
     * @summary Add, Subtract Email Credits
     * @param {string} email Email address of Sub-Account
     * @param {SubaccountEmailCreditsPayload} subaccountEmailCreditsPayload Amount of email credits to add or subtract from the current SubAccount email credits pool (positive or negative value)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubAccountsApiInterface
     */
    subaccountsByEmailCreditsPatch(email: string, subaccountEmailCreditsPayload: SubaccountEmailCreditsPayload, options?: AxiosRequestConfig): AxiosPromise<void>;
    /**
     * Deletes specified SubAccount. An email will be sent to confirm this change. Required Access Level: ModifySubAccounts
     * @summary Delete SubAccount
     * @param {string} email Email address of Sub-Account
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubAccountsApiInterface
     */
    subaccountsByEmailDelete(email: string, options?: AxiosRequestConfig): AxiosPromise<void>;
    /**
     * Returns details for the specified SubAccount. Required Access Level: ViewSubAccounts
     * @summary Load SubAccount
     * @param {string} email Email address of Sub-Account
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubAccountsApiInterface
     */
    subaccountsByEmailGet(email: string, options?: AxiosRequestConfig): AxiosPromise<SubAccountInfo>;
    /**
     * Update SubAccount email settings. Required Access Level: ModifySubAccounts
     * @summary Update SubAccount Email Settings
     * @param {string} email
     * @param {SubaccountEmailSettings} subaccountEmailSettings Updated Email Settings
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubAccountsApiInterface
     */
    subaccountsByEmailSettingsEmailPut(email: string, subaccountEmailSettings: SubaccountEmailSettings, options?: AxiosRequestConfig): AxiosPromise<SubaccountEmailSettings>;
    /**
     * Returns a list of all your SubAccounts. Required Access Level: ViewSubAccounts
     * @summary Load SubAccounts
     * @param {number} [limit] Maximum number of returned items.
     * @param {number} [offset] How many items should be returned ahead.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubAccountsApiInterface
     */
    subaccountsGet(limit?: number, offset?: number, options?: AxiosRequestConfig): AxiosPromise<Array<SubAccountInfo>>;
    /**
     * Add a new SubAccount to your Account. To receive an access token for this SubAccount, make a POST security/apikeys request using the \'subaccount\' parameter. Required Access Level: ModifySubAccounts
     * @summary Add SubAccount
     * @param {SubaccountPayload} subaccountPayload
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubAccountsApiInterface
     */
    subaccountsPost(subaccountPayload: SubaccountPayload, options?: AxiosRequestConfig): AxiosPromise<SubAccountInfo>;
}
/**
 * SubAccountsApi - object-oriented interface
 * @export
 * @class SubAccountsApi
 * @extends {BaseAPI}
 */
export declare class SubAccountsApi extends BaseAPI implements SubAccountsApiInterface {
    /**
     * Update email credits of a subaccount by the given amount. Required Access Level: ModifySubAccounts
     * @summary Add, Subtract Email Credits
     * @param {string} email Email address of Sub-Account
     * @param {SubaccountEmailCreditsPayload} subaccountEmailCreditsPayload Amount of email credits to add or subtract from the current SubAccount email credits pool (positive or negative value)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubAccountsApi
     */
    subaccountsByEmailCreditsPatch(email: string, subaccountEmailCreditsPayload: SubaccountEmailCreditsPayload, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<void>>;
    /**
     * Deletes specified SubAccount. An email will be sent to confirm this change. Required Access Level: ModifySubAccounts
     * @summary Delete SubAccount
     * @param {string} email Email address of Sub-Account
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubAccountsApi
     */
    subaccountsByEmailDelete(email: string, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<void>>;
    /**
     * Returns details for the specified SubAccount. Required Access Level: ViewSubAccounts
     * @summary Load SubAccount
     * @param {string} email Email address of Sub-Account
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubAccountsApi
     */
    subaccountsByEmailGet(email: string, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<SubAccountInfo>>;
    /**
     * Update SubAccount email settings. Required Access Level: ModifySubAccounts
     * @summary Update SubAccount Email Settings
     * @param {string} email
     * @param {SubaccountEmailSettings} subaccountEmailSettings Updated Email Settings
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubAccountsApi
     */
    subaccountsByEmailSettingsEmailPut(email: string, subaccountEmailSettings: SubaccountEmailSettings, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<SubaccountEmailSettings>>;
    /**
     * Returns a list of all your SubAccounts. Required Access Level: ViewSubAccounts
     * @summary Load SubAccounts
     * @param {number} [limit] Maximum number of returned items.
     * @param {number} [offset] How many items should be returned ahead.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubAccountsApi
     */
    subaccountsGet(limit?: number, offset?: number, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<SubAccountInfo[]>>;
    /**
     * Add a new SubAccount to your Account. To receive an access token for this SubAccount, make a POST security/apikeys request using the \'subaccount\' parameter. Required Access Level: ModifySubAccounts
     * @summary Add SubAccount
     * @param {SubaccountPayload} subaccountPayload
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubAccountsApi
     */
    subaccountsPost(subaccountPayload: SubaccountPayload, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<SubAccountInfo>>;
}
