import { CidrUpdateParameters, CreateSubscriptionParameters, SubscriptionUpdateParameters, VpcPeeringCreationParameters } from '../types/parameters/subscription';
import { SubscriptionCidrWhitelist, SubscriptionVpcPeering, SubscriptionResponse, SubscriptionStatus, SubscriptionVpcPeeringStatus } from '../types/responses/subscription';
import { TaskResponse } from '../types/task';
import { Client } from './api.base';
export declare class Subscription {
    protected client: Client;
    private task;
    constructor(client: Client);
    /**
    * Returning a lookup list of current account's subscriptions
    */
    getSubscriptions(): Promise<SubscriptionResponse[] & {
        [key: string]: any;
    }>;
    /**
     * Creating a subscription
     * @param createParameters The given parameters given for the subscription creation
     */
    createSubscription(createParameters: CreateSubscriptionParameters): Promise<TaskResponse & {
        [key: string]: any;
    }>;
    /**
     * Returning a subscription
     * @param subscriptionId The id of the subscription
     */
    getSubscription(subscriptionId: number): Promise<SubscriptionResponse & {
        [key: string]: any;
    }>;
    /**
     * Updating a subscription
     * @param subscriptionId The id of the subscription
     * @param updateParameters The given update parameters to update the subscription with
     */
    updateSubscription(subscriptionId: number, updateParameters: SubscriptionUpdateParameters): Promise<TaskResponse & {
        [key: string]: any;
    }>;
    /**
     * Deleting a subscription
     * @param subscriptionId The id of the subscription
     */
    deleteSubscription(subscriptionId: number): Promise<TaskResponse & {
        [key: string]: any;
    }>;
    /**
    * Returning a lookup list of a subscription CIDR whitelists
    * @param subscriptionId The id of the subscription
    */
    getSubscriptionCidrWhitelist(subscriptionId: number): Promise<SubscriptionCidrWhitelist & {
        [key: string]: any;
    }>;
    /**
     * Updating a subscription CIDR whitelists
     * @param subscriptionId The id of the subscription
     * @param updateParameters The parameters to update the subscription with
     */
    updateSubscriptionCidrWhitelists(subscriptionId: number, updateParameters: CidrUpdateParameters): Promise<TaskResponse & {
        [key: string]: any;
    }>;
    /**
     * Returning a lookup list of the subscription VPC Peerings
     * @param subscriptionId The id of the subscription
     */
    getVpcPeerings(subscriptionId: number): Promise<SubscriptionVpcPeering[]>;
    /**
     * Creating a subscription VPC peering
     * @param subscriptionId The id of the subscription
     * @param createParameters The create parameters to create the VPC peering with
     */
    createSubscriptionVpcPeering(subscriptionId: number, createParameters: VpcPeeringCreationParameters): Promise<TaskResponse & {
        [key: string]: any;
    }>;
    /**
     * Deleting a subscription VPC peering
     * @param subscriptionId The id of the subscription
     * @param vpcPeeringId The id of the VPC peering
     */
    deleteSubscriptionVpcPeering(subscriptionId: number, vpcPeeringId: number): Promise<TaskResponse & {
        [key: string]: any;
    }>;
    /**
     * Waiting for the subscription status to change to a given status
     * @param subscriptionId The id of the subscription
     * @param expectedStatus The expected status
     * @param timeoutInSeconds The timeout of waiting for the status. Default: 20 minutes
     * @param sleepTimeInSeconds The sleep time between requests. Default: 5 seconds
     */
    waitForSubscriptionStatus(subscriptionId: number, expectedStatus: SubscriptionStatus, timeoutInSeconds?: number, sleepTimeInSeconds?: number): Promise<SubscriptionResponse & {
        [key: string]: any;
    }>;
    /**
     * Waiting for existing subscriptions statuses to change to a given status
     * @param expectedStatus The expected status
     * @param timeoutInSeconds The timeout of waiting for the status. Default: 20 minutes
     * @param sleepTimeInSeconds The sleep time between requests. Default: 5 seconds
     * @returns A batch of subscription responses
     */
    waitForSubscriptionsStatus(expectedStatus: SubscriptionStatus, timeoutInSeconds?: number, sleepTimeInSeconds?: number): Promise<SubscriptionResponse[]>;
    /**
     * Waiting for the subscription VPC peering status to change to a given status
     * @param subscriptionId The id of the subscription
     * @param vpcPeeringId The id of the subscription VPC peering
     * @param expectedStatus The expected status
     * @param timeoutInSeconds The timeout of waiting for the status. Default: 5 minutes
     * @param sleepTimeInSeconds The sleep time between requests. Default: 5 seconds
     */
    waitForVpcPeeringStatus(subscriptionId: number, vpcPeeringId: number, expectedStatus: SubscriptionVpcPeeringStatus, timeoutInSeconds?: number, sleepTimeInSeconds?: number): Promise<SubscriptionVpcPeering | undefined>;
}
