import type { SubscriptionProductComponent } from './SubscriptionProductComponent';
import type { PersistableCurrencyAmount } from './PersistableCurrencyAmount';
import type { ProductFeeType } from './ProductFeeType';
/**
 *
 * @export
 * @interface ProductPeriodFee
 */
export interface ProductPeriodFee {
    /**
     * The amount charged to the customer for each billing cycle during the term of a subscription.
     * @type {Set<PersistableCurrencyAmount>}
     * @memberof ProductPeriodFee
     */
    readonly periodFee?: Set<PersistableCurrencyAmount>;
    /**
     * The ID of the space this object belongs to.
     * @type {number}
     * @memberof ProductPeriodFee
     */
    readonly linkedSpaceId?: number;
    /**
     *
     * @type {SubscriptionProductComponent}
     * @memberof ProductPeriodFee
     */
    component?: SubscriptionProductComponent;
    /**
     * The number of subscription billing cycles that count as a trial phase and during which no fees are charged.
     * @type {number}
     * @memberof ProductPeriodFee
     */
    readonly numberOfFreeTrialPeriods?: number;
    /**
     * The localized name of the fee that is displayed to the customer.
     * @type {{ [key: string]: string; }}
     * @memberof ProductPeriodFee
     */
    readonly name?: {
        [key: string]: string;
    };
    /**
     * The localized description of the fee that is displayed to the customer.
     * @type {{ [key: string]: string; }}
     * @memberof ProductPeriodFee
     */
    readonly description?: {
        [key: string]: string;
    };
    /**
     * A unique identifier for the object.
     * @type {number}
     * @memberof ProductPeriodFee
     */
    readonly id?: number;
    /**
     *
     * @type {ProductFeeType}
     * @memberof ProductPeriodFee
     */
    type?: ProductFeeType;
    /**
     * The version is used for optimistic locking and incremented whenever the object is updated.
     * @type {number}
     * @memberof ProductPeriodFee
     */
    readonly version?: number;
    /**
     * The localized title that be used on ledger entries and invoices.
     * @type {{ [key: string]: string; }}
     * @memberof ProductPeriodFee
     */
    readonly ledgerEntryTitle?: {
        [key: string]: string;
    };
}
/**
 * Check if a given object implements the ProductPeriodFee interface.
 */
export declare function instanceOfProductPeriodFee(value: object): value is ProductPeriodFee;
export declare function ProductPeriodFeeFromJSON(json: any): ProductPeriodFee;
export declare function ProductPeriodFeeFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProductPeriodFee;
export declare function ProductPeriodFeeToJSON(json: any): ProductPeriodFee;
export declare function ProductPeriodFeeToJSONTyped(value?: Omit<ProductPeriodFee, 'periodFee' | 'linkedSpaceId' | 'numberOfFreeTrialPeriods' | 'name' | 'description' | 'id' | 'version' | 'ledgerEntryTitle'> | null, ignoreDiscriminator?: boolean): any;
