import { AddFn, DateFn } from './util/DateFn';
import { ParseNode } from './util/ParseNode';
import { ParseRootNode } from './util/ParseRootNode';
export declare const space: import("./util/GrammarNode").TokenNode;
export declare class FullYearNode extends ParseNode {
    wrapped: ParseNode;
    constructor(wrapped: ParseNode);
    year(input: string): number;
    dateFns(input: string): DateFn[];
}
export declare class TwoDigitYearNode extends ParseNode {
    wrapped: ParseNode;
    constructor(wrapped: ParseNode);
    year(input: string): number;
    dateFns(input: string): DateFn[];
}
export declare class MonthNumNode extends ParseNode {
    wrapped: ParseNode;
    constructor(wrapped: ParseNode);
    month(input: string): number;
    dateFns(input: string): DateFn[];
}
export declare class MonthNameNode extends ParseNode {
    static months: {
        jan: number;
        feb: number;
        mar: number;
        apr: number;
        may: number;
        jun: number;
        jul: number;
        aug: number;
        sep: number;
        oct: number;
        nov: number;
        dec: number;
    };
    month(input: string): number;
    dateFns(input: string): DateFn[];
}
export declare class RelativeMonthNameNode extends ParseNode {
    dateFns(input: string): DateFn[];
}
export declare const RelativeMonthName: import("./util/GrammarNode").ParseAsNode;
export declare class DayOfMonthNumNode extends ParseNode {
    wrapped: ParseNode;
    constructor(wrapped: ParseNode);
    dayOfMonth(input: string): number;
}
export declare class NthDayOfMonthNode extends ParseNode {
    wrapped: ParseNode;
    constructor(wrapped: ParseNode);
    dayOfMonth(input: string): 1 | 2 | 7 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | undefined;
}
type RelativeIntervalType = 'Second' | 'Minute' | 'Day' | 'Hour' | 'Week' | 'Month' | 'Year';
export declare abstract class RelativeIntervalNode extends ParseNode {
    abstract get intervalName(): RelativeIntervalType;
    dateFns(): DateFn[];
}
export declare class RelativeSecondNode extends RelativeIntervalNode {
    get intervalName(): 'Second';
}
export declare class RelativeMinuteNode extends RelativeIntervalNode {
    get intervalName(): 'Minute';
}
export declare class RelativeHourNode extends RelativeIntervalNode {
    get intervalName(): 'Hour';
}
export declare class RelativeWeekNode extends RelativeIntervalNode {
    get intervalName(): 'Week';
}
export declare class RelativeMonthNode extends RelativeIntervalNode {
    get intervalName(): 'Month';
}
export declare class RelativeYearNode extends RelativeIntervalNode {
    get intervalName(): 'Year';
}
export declare const RelativeSecond: import("./util/GrammarNode").ParseAsNode;
export declare const RelativeMinute: import("./util/GrammarNode").ParseAsNode;
export declare const RelativeHour: import("./util/GrammarNode").ParseAsNode;
export declare const RelativeWeek: import("./util/GrammarNode").ParseAsNode;
export declare const RelativeMonth: import("./util/GrammarNode").ParseAsNode;
export declare const RelativeYear: import("./util/GrammarNode").ParseAsNode;
export declare class DateNode extends ParseNode {
    yearFns(input: string): DateFn[] | undefined;
    monthFns(input: string): DateFn[] | undefined;
    relativeMonthFns(input: string): DateFn[] | undefined;
    day(input: string): number | undefined;
    dateFns(input: string): DateFn[];
}
export declare class HoursNode extends ParseNode {
    hours(input: string): number;
}
export declare class MinutesNode extends ParseNode {
    minutes(input: string): number;
}
export declare class SecondsNode extends ParseNode {
    seconds(input: string): number;
}
export declare class MillisecondsNode extends ParseNode {
    milliseconds(input: string): number;
}
export declare enum AmPmValue {
    AM = 0,
    PM = 1
}
export declare class AmPmNode extends ParseNode {
    amPm(input: string): AmPmValue;
}
export declare class TimeNode extends ParseNode {
    hours(input: string): number | undefined;
    minutes(input: string): number | undefined;
    seconds(input: string): number | undefined;
    milliseconds(input: string): number | undefined;
    amPm(input: string): AmPmValue | undefined;
    dateFns(input: string): DateFn[];
}
export declare class NowNode extends ParseNode {
    dateFns(): DateFn[];
}
export declare class QuantityNumNode extends ParseNode {
    quantity(input: string): number;
}
export declare const QuantityNum: import("./util/GrammarNode").ParseAsNode;
export declare class QuantityWordNode extends ParseNode {
    static quantities: {
        zero: number;
        an: number;
        a: number;
        one: number;
        two: number;
        three: number;
        four: number;
        five: number;
        six: number;
        seven: number;
        eight: number;
        nine: number;
        ten: number;
        eleven: number;
        twelve: number;
        thirteen: number;
        fourteen: number;
        fifteen: number;
        sixteen: number;
        seventeen: number;
        eighteen: number;
        nineteen: number;
        twenty: number;
    };
    quantity(input: string): number;
}
export declare const QuantityWord: import("./util/GrammarNode").ParseAsNode;
export declare class QuantityNode extends ParseNode {
    quantity(input: string): number | undefined;
}
export declare const Quantity: import("./util/GrammarNode").ParseAsNode;
type DateTimeUnit = 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds' | 'milliseconds';
export declare class DateTimeUnitNode extends ParseNode {
    unit(input: string): DateTimeUnit;
    dateFnName(input: string): DateFn[0];
}
export declare const DateTimeUnit: import("./util/GrammarNode").ParseAsNode;
export declare class DateTimeIntervalPartNode extends ParseNode {
    dateFns(input: string): AddFn[];
}
export declare const DateTimeIntervalPart: import("./util/GrammarNode").ParseAsNode;
export declare class DateTimeIntervalNode extends ParseNode {
    dateFns(input: string): AddFn[];
}
export declare class DateTimeOffsetNode extends ParseNode {
    dateFns(input: string): DateFn[];
}
export declare const BeforeNow: import("./util/GrammarNode").GroupNode;
export declare const AfterNow: import("./util/GrammarNode").GroupNode;
export declare const DateTimeOffset: import("./util/GrammarNode").ParseAsNode;
export declare class RangeEndDateTimeOffsetNode extends DateTimeOffsetNode {
    dateFns(input: string): DateFn[];
}
export declare const RangeEndDateTimeOffset: import("./util/GrammarNode").ParseAsNode;
export declare class RelativeDayNode extends ParseNode {
    dateFns(input: string): DateFn[];
}
export declare const RelativeDay: import("./util/GrammarNode").ParseAsNode;
export declare class RangeEndRelativeDayNode extends RelativeDayNode {
    dateFns(input: string): DateFn[];
}
export declare const RangeEndRelativeDay: import("./util/GrammarNode").ParseAsNode;
export declare class DayOfWeekNode extends ParseNode {
    dayOfWeek(input: string): number;
    dateFns(input: string): DateFn[];
}
export declare const DayOfWeek: import("./util/GrammarNode").ParseAsNode;
export declare class RelativeDayOfWeekNode extends ParseNode {
    dateFns(input: string): DateFn[];
}
export declare const RelativeDayOfWeek: import("./util/GrammarNode").ParseAsNode;
export declare abstract class RangeEndRelativeIntervalNode extends RelativeIntervalNode {
    dateFns(): DateFn[];
}
export declare class RangeEndRelativeSecondNode extends RangeEndRelativeIntervalNode {
    get intervalName(): 'Second';
}
export declare class RangeEndRelativeMinuteNode extends RangeEndRelativeIntervalNode {
    get intervalName(): 'Minute';
}
export declare class RangeEndRelativeHourNode extends RangeEndRelativeIntervalNode {
    get intervalName(): 'Hour';
}
export declare class RangeEndRelativeWeekNode extends RangeEndRelativeIntervalNode {
    get intervalName(): 'Week';
}
export declare class RangeEndRelativeMonthNode extends RangeEndRelativeIntervalNode {
    get intervalName(): 'Month';
}
export declare class RangeEndRelativeYearNode extends RangeEndRelativeIntervalNode {
    get intervalName(): 'Year';
}
export declare const RangeEndRelativeInterval: (intervalName: Exclude<RelativeIntervalType, 'Day'>) => import("./util/GrammarNode").ParseAsNode;
export declare const RangeEndRelativeSecond: import("./util/GrammarNode").ParseAsNode;
export declare const RangeEndRelativeMinute: import("./util/GrammarNode").ParseAsNode;
export declare const RangeEndRelativeHour: import("./util/GrammarNode").ParseAsNode;
export declare const RangeEndRelativeWeek: import("./util/GrammarNode").ParseAsNode;
export declare const RangeEndRelativeMonth: import("./util/GrammarNode").ParseAsNode;
export declare const RangeEndRelativeYear: import("./util/GrammarNode").ParseAsNode;
export declare class DateTimeOffsetIntervalNode extends ParseNode {
    dateFns(input: string): DateFn[];
}
export declare class RangeEndDateTimeOffsetIntervalNode extends DateTimeOffsetIntervalNode {
    dateFns(input: string): DateFn[];
}
export declare const DateTimeOffsetIntervalBase: import("./util/GrammarNode").GroupNode;
export declare const DateTimeOffsetInterval: import("./util/GrammarNode").ParseAsNode;
export declare const RangeEndDateTimeOffsetInterval: import("./util/GrammarNode").ParseAsNode;
export declare class DateTimeNode extends ParseNode {
    date(input: string): DateFn[] | undefined;
    time(input: string): DateFn[] | undefined;
    dateFns(input: string): DateFn[];
}
export declare const DateTime: import("./util/GrammarNode").ParseAsNode;
export declare const RangeEndDateTime: import("./util/GrammarNode").ParseAsNode;
export declare class RangeNode extends ParseNode {
    dateFns(input: string): DateFn[];
}
export declare const Range: import("./util/GrammarNode").ParseAsNode;
export declare class RootNode extends ParseRootNode {
    dateFns(input: string): DateFn[];
}
export declare const Root: import("./util/GrammarNode").ParseAsNode;
export declare function parse(input: string): DateFn[];
export declare function tellMeWhen(when: string, options?: {
    now?: Date;
}): Date | [Date, Date];
export {};
//# sourceMappingURL=en-US.d.ts.map