import type { SubscriptionProductComponent } from './SubscriptionProductComponent';
import type { PersistableCurrencyAmount } from './PersistableCurrencyAmount';
import type { ProductFeeType } from './ProductFeeType';
/**
 *
 * @export
 * @interface ProductSetupFee
 */
export interface ProductSetupFee {
    /**
     * The ID of the space this object belongs to.
     * @type {number}
     * @memberof ProductSetupFee
     */
    readonly linkedSpaceId?: number;
    /**
     *
     * @type {SubscriptionProductComponent}
     * @memberof ProductSetupFee
     */
    component?: SubscriptionProductComponent;
    /**
     * The localized name of the fee that is displayed to the customer.
     * @type {{ [key: string]: string; }}
     * @memberof ProductSetupFee
     */
    readonly name?: {
        [key: string]: string;
    };
    /**
     * The localized description of the fee that is displayed to the customer.
     * @type {{ [key: string]: string; }}
     * @memberof ProductSetupFee
     */
    readonly description?: {
        [key: string]: string;
    };
    /**
     * The amount charged to the customer once when they subscribe to a subscription.
     * @type {Set<PersistableCurrencyAmount>}
     * @memberof ProductSetupFee
     */
    readonly setupFee?: Set<PersistableCurrencyAmount>;
    /**
     * A unique identifier for the object.
     * @type {number}
     * @memberof ProductSetupFee
     */
    readonly id?: number;
    /**
     * The amount charged to the customer when a subscription is downgraded.
     * @type {Set<PersistableCurrencyAmount>}
     * @memberof ProductSetupFee
     */
    readonly onDowngradeCreditedAmount?: Set<PersistableCurrencyAmount>;
    /**
     *
     * @type {ProductFeeType}
     * @memberof ProductSetupFee
     */
    type?: ProductFeeType;
    /**
     * The version is used for optimistic locking and incremented whenever the object is updated.
     * @type {number}
     * @memberof ProductSetupFee
     */
    readonly version?: number;
    /**
     * The amount charged to the customer when a subscription is upgraded.
     * @type {Set<PersistableCurrencyAmount>}
     * @memberof ProductSetupFee
     */
    readonly onUpgradeCreditedAmount?: Set<PersistableCurrencyAmount>;
}
/**
 * Check if a given object implements the ProductSetupFee interface.
 */
export declare function instanceOfProductSetupFee(value: object): value is ProductSetupFee;
export declare function ProductSetupFeeFromJSON(json: any): ProductSetupFee;
export declare function ProductSetupFeeFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProductSetupFee;
export declare function ProductSetupFeeToJSON(json: any): ProductSetupFee;
export declare function ProductSetupFeeToJSONTyped(value?: Omit<ProductSetupFee, 'linkedSpaceId' | 'name' | 'description' | 'setupFee' | 'id' | 'onDowngradeCreditedAmount' | 'version' | 'onUpgradeCreditedAmount'> | null, ignoreDiscriminator?: boolean): any;
