/**
 * @example
 *     {
 *         pid: "pid",
 *         name: "name"
 *     }
 */
export interface CreateTierGroupRequest {
    /** Loyalty Program ID */
    pid: string;
    /** Select real_time to downgrade tier on real time balance updates. Select membership_anniversary to downgrade tier on subscription anniversary. Select tier_anniversary to downgrade tier on tier anniversary. */
    downgradeStrategy?: CreateTierGroupRequest.DowngradeStrategy;
    /** Name of the tier group */
    name: string;
    /** Additional metadata for the tier group. */
    meta?: CreateTierGroupRequest.Meta;
    /** Order of the tiers in the group in ascending order */
    tierOrder?: string[];
    /** Select real_time to upgrade tier on real time balance updates. Select membership_anniversary to upgrade tier on subscription anniversary. Select tier_anniversary to upgrade tier on tier anniversary. */
    upgradeStrategy?: CreateTierGroupRequest.UpgradeStrategy;
    /** Schedule configuration for tier upgrades. Required when upgradeStrategy is set to a schedule-based strategy. */
    upgradeSchedule?: CreateTierGroupRequest.UpgradeSchedule;
    /** Schedule configuration for tier downgrades. Required when downgradeStrategy is set to a schedule-based strategy. */
    downgradeSchedule?: CreateTierGroupRequest.DowngradeSchedule;
}
export declare namespace CreateTierGroupRequest {
    /** Select real_time to downgrade tier on real time balance updates. Select membership_anniversary to downgrade tier on subscription anniversary. Select tier_anniversary to downgrade tier on tier anniversary. */
    const DowngradeStrategy: {
        readonly RealTime: "real_time";
        readonly MembershipAnniversary: "membership_anniversary";
        readonly TierAnniversary: "tier_anniversary";
    };
    type DowngradeStrategy = (typeof DowngradeStrategy)[keyof typeof DowngradeStrategy];
    /**
     * Additional metadata for the tier group.
     */
    interface Meta {
        /** Indicates whether the tier group is internal. */
        isInternal?: boolean | undefined;
        /** Accepts any additional properties */
        [key: string]: any;
    }
    /** Select real_time to upgrade tier on real time balance updates. Select membership_anniversary to upgrade tier on subscription anniversary. Select tier_anniversary to upgrade tier on tier anniversary. */
    const UpgradeStrategy: {
        readonly RealTime: "real_time";
        readonly MembershipAnniversary: "membership_anniversary";
        readonly TierAnniversary: "tier_anniversary";
    };
    type UpgradeStrategy = (typeof UpgradeStrategy)[keyof typeof UpgradeStrategy];
    /**
     * Schedule configuration for tier upgrades. Required when upgradeStrategy is set to a schedule-based strategy.
     */
    interface UpgradeSchedule {
        /** Duration value for the schedule. */
        durationValue?: number | undefined;
        /** Duration unit for the schedule. */
        durationUnit?: UpgradeSchedule.DurationUnit | undefined;
        /** Modifier for the duration. */
        durationModifier?: UpgradeSchedule.DurationModifier | undefined;
        /** Scheduled date in DD/MM format. */
        scheduledDate?: string | undefined;
    }
    namespace UpgradeSchedule {
        /** Duration unit for the schedule. */
        const DurationUnit: {
            readonly Day: "day";
            readonly Week: "week";
            readonly Month: "month";
            readonly Year: "year";
        };
        type DurationUnit = (typeof DurationUnit)[keyof typeof DurationUnit];
        /** Modifier for the duration. */
        const DurationModifier: {
            readonly StartOfPeriod: "start_of_period";
            readonly EndOfPeriod: "end_of_period";
        };
        type DurationModifier = (typeof DurationModifier)[keyof typeof DurationModifier];
    }
    /**
     * Schedule configuration for tier downgrades. Required when downgradeStrategy is set to a schedule-based strategy.
     */
    interface DowngradeSchedule {
        /** Duration value for the schedule. */
        durationValue?: number | undefined;
        /** Duration unit for the schedule. */
        durationUnit?: DowngradeSchedule.DurationUnit | undefined;
        /** Modifier for the duration. */
        durationModifier?: DowngradeSchedule.DurationModifier | undefined;
        /** Scheduled date in DD/MM format. */
        scheduledDate?: string | undefined;
    }
    namespace DowngradeSchedule {
        /** Duration unit for the schedule. */
        const DurationUnit: {
            readonly Day: "day";
            readonly Week: "week";
            readonly Month: "month";
            readonly Year: "year";
        };
        type DurationUnit = (typeof DurationUnit)[keyof typeof DurationUnit];
        /** Modifier for the duration. */
        const DurationModifier: {
            readonly StartOfPeriod: "start_of_period";
            readonly EndOfPeriod: "end_of_period";
        };
        type DurationModifier = (typeof DurationModifier)[keyof typeof DurationModifier];
    }
}
