import type { SubscriptionProductComponentReference } from './SubscriptionProductComponentReference';
import type { SubscriptionProductComponentGroup } from './SubscriptionProductComponentGroup';
import type { TaxClass } from './TaxClass';
/**
 *
 * @export
 * @interface SubscriptionProductComponent
 */
export interface SubscriptionProductComponent {
    /**
     *
     * @type {TaxClass}
     * @memberof SubscriptionProductComponent
     */
    taxClass?: TaxClass;
    /**
     * The localized description of the component that is displayed to the customer.
     * @type {{ [key: string]: string; }}
     * @memberof SubscriptionProductComponent
     */
    readonly description?: {
        [key: string]: string;
    };
    /**
     * If switching from a component with a lower tier to a component with a higher one, this is considered an upgrade and a fee may be applied.
     * @type {number}
     * @memberof SubscriptionProductComponent
     */
    readonly componentChangeWeight?: number;
    /**
     * A maximum of the defined quantity can be selected for this component.
     * @type {number}
     * @memberof SubscriptionProductComponent
     */
    readonly maximalQuantity?: number;
    /**
     * The version is used for optimistic locking and incremented whenever the object is updated.
     * @type {number}
     * @memberof SubscriptionProductComponent
     */
    readonly version?: number;
    /**
     * A minimum of the defined quantity must be selected for this component.
     * @type {number}
     * @memberof SubscriptionProductComponent
     */
    readonly minimalQuantity?: number;
    /**
     *
     * @type {SubscriptionProductComponentReference}
     * @memberof SubscriptionProductComponent
     */
    reference?: SubscriptionProductComponentReference;
    /**
     * The ID of the space this object belongs to.
     * @type {number}
     * @memberof SubscriptionProductComponent
     */
    readonly linkedSpaceId?: number;
    /**
     * The quantity step determines the interval in which the quantity can be increased.
     * @type {number}
     * @memberof SubscriptionProductComponent
     */
    readonly quantityStep?: number;
    /**
     * When listing components, they can be sorted by this number.
     * @type {number}
     * @memberof SubscriptionProductComponent
     */
    readonly sortOrder?: number;
    /**
     *
     * @type {SubscriptionProductComponentGroup}
     * @memberof SubscriptionProductComponent
     */
    componentGroup?: SubscriptionProductComponentGroup;
    /**
     * The localized name of the component that is displayed to the customer.
     * @type {{ [key: string]: string; }}
     * @memberof SubscriptionProductComponent
     */
    readonly name?: {
        [key: string]: string;
    };
    /**
     * A unique identifier for the object.
     * @type {number}
     * @memberof SubscriptionProductComponent
     */
    readonly id?: number;
    /**
     * Whether this is the default component in its group and preselected.
     * @type {boolean}
     * @memberof SubscriptionProductComponent
     */
    readonly defaultComponent?: boolean;
}
/**
 * Check if a given object implements the SubscriptionProductComponent interface.
 */
export declare function instanceOfSubscriptionProductComponent(value: object): value is SubscriptionProductComponent;
export declare function SubscriptionProductComponentFromJSON(json: any): SubscriptionProductComponent;
export declare function SubscriptionProductComponentFromJSONTyped(json: any, ignoreDiscriminator: boolean): SubscriptionProductComponent;
export declare function SubscriptionProductComponentToJSON(json: any): SubscriptionProductComponent;
export declare function SubscriptionProductComponentToJSONTyped(value?: Omit<SubscriptionProductComponent, 'description' | 'componentChangeWeight' | 'maximalQuantity' | 'version' | 'minimalQuantity' | 'linkedSpaceId' | 'quantityStep' | 'sortOrder' | 'name' | 'id' | 'defaultComponent'> | null, ignoreDiscriminator?: boolean): any;
