import type { BillingDayCustomization } from './BillingDayCustomization';
import type { BillingCycleType } from './BillingCycleType';
import type { DisplayableDayOfWeek } from './DisplayableDayOfWeek';
import type { DisplayableMonth } from './DisplayableMonth';
/**
 *
 * @export
 * @interface BillingCycleModel
 */
export interface BillingCycleModel {
    /**
     *
     * @type {DisplayableMonth}
     * @memberof BillingCycleModel
     */
    month?: DisplayableMonth;
    /**
     *
     * @type {BillingDayCustomization}
     * @memberof BillingCycleModel
     */
    customization?: BillingDayCustomization;
    /**
     *
     * @type {number}
     * @memberof BillingCycleModel
     */
    dayOfMonth?: number;
    /**
     *
     * @type {DisplayableDayOfWeek}
     * @memberof BillingCycleModel
     */
    weeklyDay?: DisplayableDayOfWeek;
    /**
     * Billing Cycle type multiplied by Number of Periods defines billing cycle duration, e.g. 3 months. Monthly types require 1-12; weekly and yearly types require 1-9 periods; and daily types require 1-30.
     * @type {number}
     * @memberof BillingCycleModel
     */
    numberOfPeriods: number;
    /**
     *
     * @type {BillingCycleType}
     * @memberof BillingCycleModel
     */
    billingCycleType: BillingCycleType;
}
/**
 * Check if a given object implements the BillingCycleModel interface.
 */
export declare function instanceOfBillingCycleModel(value: object): value is BillingCycleModel;
export declare function BillingCycleModelFromJSON(json: any): BillingCycleModel;
export declare function BillingCycleModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): BillingCycleModel;
export declare function BillingCycleModelToJSON(json: any): BillingCycleModel;
export declare function BillingCycleModelToJSONTyped(value?: BillingCycleModel | null, ignoreDiscriminator?: boolean): any;
