import type { SubscriptionVersionState } from './SubscriptionVersionState';
import type { BillingCycleModel } from './BillingCycleModel';
import type { SubscriptionComponentConfiguration } from './SubscriptionComponentConfiguration';
import type { Subscription } from './Subscription';
import type { SubscriptionProductVersion } from './SubscriptionProductVersion';
/**
 *
 * @export
 * @interface SubscriptionVersion
 */
export interface SubscriptionVersion {
    /**
     * The date and time when the object is planned to be permanently removed. If the value is empty, the object will not be removed.
     * @type {Date}
     * @memberof SubscriptionVersion
     */
    readonly plannedPurgeDate?: Date;
    /**
     * The language that is linked to the object.
     * @type {string}
     * @memberof SubscriptionVersion
     */
    readonly language?: string;
    /**
     *
     * @type {Subscription}
     * @memberof SubscriptionVersion
     */
    subscription?: Subscription;
    /**
     * The date and time when the subscription version was created.
     * @type {Date}
     * @memberof SubscriptionVersion
     */
    readonly createdOn?: Date;
    /**
     * The version is used for optimistic locking and incremented whenever the object is updated.
     * @type {number}
     * @memberof SubscriptionVersion
     */
    readonly version?: number;
    /**
     * The date and time when the subscription version was terminated.
     * @type {Date}
     * @memberof SubscriptionVersion
     */
    readonly terminatedOn?: Date;
    /**
     * The ID of the space this object belongs to.
     * @type {number}
     * @memberof SubscriptionVersion
     */
    readonly linkedSpaceId?: number;
    /**
     * The date and time when the termination of the subscription version was issued.
     * @type {Date}
     * @memberof SubscriptionVersion
     */
    readonly terminationIssuedOn?: Date;
    /**
     * The configurations of the subscription's components.
     * @type {Set<SubscriptionComponentConfiguration>}
     * @memberof SubscriptionVersion
     */
    readonly componentConfigurations?: Set<SubscriptionComponentConfiguration>;
    /**
     *
     * @type {SubscriptionProductVersion}
     * @memberof SubscriptionVersion
     */
    productVersion?: SubscriptionProductVersion;
    /**
     * The date and time when the subscription version was activated.
     * @type {Date}
     * @memberof SubscriptionVersion
     */
    readonly activatedOn?: Date;
    /**
     * The date and time when the termination of the subscription version started.
     * @type {Date}
     * @memberof SubscriptionVersion
     */
    readonly terminatingOn?: Date;
    /**
     * The three-letter code (ISO 4217 format) of the currency used to invoice the customer. Must be one of the currencies supported by the product.
     * @type {string}
     * @memberof SubscriptionVersion
     */
    readonly billingCurrency?: string;
    /**
     * The date and time when the last period is expected to end.
     * @type {Date}
     * @memberof SubscriptionVersion
     */
    readonly expectedLastPeriodEnd?: Date;
    /**
     *
     * @type {BillingCycleModel}
     * @memberof SubscriptionVersion
     */
    billingCycleModel?: BillingCycleModel;
    /**
     * The date and time when the termination of the subscription version is planned.
     * @type {Date}
     * @memberof SubscriptionVersion
     */
    readonly plannedTerminationDate?: Date;
    /**
     * A unique identifier for the object.
     * @type {number}
     * @memberof SubscriptionVersion
     */
    readonly id?: number;
    /**
     *
     * @type {SubscriptionVersionState}
     * @memberof SubscriptionVersion
     */
    state?: SubscriptionVersionState;
    /**
     * The date and time when the subscription version failed.
     * @type {Date}
     * @memberof SubscriptionVersion
     */
    readonly failedOn?: Date;
}
/**
 * Check if a given object implements the SubscriptionVersion interface.
 */
export declare function instanceOfSubscriptionVersion(value: object): value is SubscriptionVersion;
export declare function SubscriptionVersionFromJSON(json: any): SubscriptionVersion;
export declare function SubscriptionVersionFromJSONTyped(json: any, ignoreDiscriminator: boolean): SubscriptionVersion;
export declare function SubscriptionVersionToJSON(json: any): SubscriptionVersion;
export declare function SubscriptionVersionToJSONTyped(value?: Omit<SubscriptionVersion, 'plannedPurgeDate' | 'language' | 'createdOn' | 'version' | 'terminatedOn' | 'linkedSpaceId' | 'terminationIssuedOn' | 'componentConfigurations' | 'activatedOn' | 'terminatingOn' | 'billingCurrency' | 'expectedLastPeriodEnd' | 'plannedTerminationDate' | 'id' | 'failedOn'> | null, ignoreDiscriminator?: boolean): any;
