import { Behavior } from '../../models/behavior';
import { FormControl, ValidatorFn } from '@angular/forms';
import moment, { Moment } from 'moment';
import { Layout } from '../../models/layout';
import { Component } from '../../models/component';
import { DataField } from '../../models/abstract-data-field';
export declare enum AbstractTimeInstanceFieldValidation {
    BETWEEN = "between",
    WORKDAY = "workday",
    WEEKEND = "weekend",
    REQUIRED = "required",
    VALID_BETWEEN = "validBetween",
    VALID_WORKDAY = "validWorkday",
    VALID_WEEKEND = "validWeekend"
}
export declare abstract class AbstractTimeInstanceField extends DataField<Moment> {
    min: Moment;
    max: Moment;
    protected constructor(stringId: string, title: string, value: Moment, behavior: Behavior, placeholder?: string, description?: string, layout?: Layout, validations?: any, component?: Component, parentTaskId?: string);
    static isEqual(a: Moment, b: Moment, granularity?: moment.unitOfTime.StartOf): boolean;
    /**
     * Parse date from string:
     * date is string 'past' - return string 'past'
     * date is string 'future' - return string 'future'
     * date is string 'today'/'now' - return moment instance of current date/time
     * date is string build by combination of 'today'/'now'+/-ISO8601 (eg. today-P1DT1H) - return parsed moment instance of date
     * date is string of specific date - return moment instance of this specific date
     * @param date - string that should be parsed
     */
    static parseDate(date: string): moment.Moment | "past" | "future";
    protected resolveValidations(): Array<ValidatorFn>;
    protected validFromPast(range: Moment): ValidatorFn;
    protected validToFuture(range: Moment): ValidatorFn;
    protected validBetween(first: Moment, second: Moment): ValidatorFn;
    protected validWorkday(fc: FormControl): {
        validWorkday: boolean;
    };
    protected validWeekend(fc: FormControl): {
        validWeekend: boolean;
    };
}
