import { Duration } from "../../core";
/**
 * (experimental) Schedule for scheduled scaling actions.
 *
 * @experimental
 */
export declare abstract class Schedule {
    /**
     * (experimental) Construct a schedule from a literal schedule expression.
     *
     * @param expression The expression to use.
     * @experimental
     */
    static expression(expression: string): Schedule;
    /**
     * (experimental) Construct a schedule from an interval and a time unit.
     *
     * @experimental
     */
    static rate(duration: Duration): Schedule;
    /**
     * (experimental) Construct a Schedule from a moment in time.
     *
     * @experimental
     */
    static at(moment: Date): Schedule;
    /**
     * (experimental) Create a schedule from a set of cron fields.
     *
     * @experimental
     */
    static cron(options: CronOptions): Schedule;
    /**
     * (experimental) Retrieve the expression for this schedule.
     *
     * @experimental
     */
    abstract readonly expressionString: string;
    /**
     * @experimental
     */
    protected constructor();
}
/**
 * (experimental) Options to configure a cron expression.
 *
 * All fields are strings so you can use complex expressions. Absence of
 * a field implies '*' or '?', whichever one is appropriate.
 *
 * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions
 * @experimental
 */
export interface CronOptions {
    /**
     * (experimental) The minute to run this rule at.
     *
     * @default - Every minute
     * @experimental
     */
    readonly minute?: string;
    /**
     * (experimental) The hour to run this rule at.
     *
     * @default - Every hour
     * @experimental
     */
    readonly hour?: string;
    /**
     * (experimental) The day of the month to run this rule at.
     *
     * @default - Every day of the month
     * @experimental
     */
    readonly day?: string;
    /**
     * (experimental) The month to run this rule at.
     *
     * @default - Every month
     * @experimental
     */
    readonly month?: string;
    /**
     * (experimental) The year to run this rule at.
     *
     * @default - Every year
     * @experimental
     */
    readonly year?: string;
    /**
     * (experimental) The day of the week to run this rule at.
     *
     * @default - Any day of the week
     * @experimental
     */
    readonly weekDay?: string;
}
