import { InputTypes, JBDateInputValueObject, ValueTypes, ValueType, InputType, InputtedValueInObject, DateValidResult } from './types';
export type DateFactoryConstructorArg = {
    inputType: InputTypes | null | undefined;
    valueType: ValueTypes | null | undefined;
};
export declare class DateFactory {
    #private;
    get valueFormat(): string;
    set valueFormat(valueFormat: string);
    get nicheNumbers(): {
        calendarYearOnEmpty: {
            jalali: number;
            gregorian: number;
        };
        calendarMonthOnEmpty: {
            jalali: number;
            gregorian: number;
        };
    };
    get yearOnEmptyBaseOnInputType(): number;
    get monthOnEmptyBaseOnValueType(): number;
    get inputType(): InputType;
    get valueType(): ValueType;
    constructor(args: DateFactoryConstructorArg);
    setInputType(inputType: InputType): void;
    setValueType(valueType: ValueType): void;
    getYearValueBaseOnInputType(valueObject: JBDateInputValueObject): number | null;
    getMonthValueBaseOnInputType(valueObject: JBDateInputValueObject): number | null;
    getDayValueBaseOnInputType(valueObject: JBDateInputValueObject): number | null;
    getDateFromValueDateString(valueDateString: string): Date | null;
    getDateValueFromValueObject(valueObject: JBDateInputValueObject): Date | null;
    /**
     * @description use when user want component value and convert valueObject to user formatted value string base on format and value type
     */
    getDateValueStringFromValueObject(valueObject: JBDateInputValueObject, type?: ValueType): string;
    getCalendarYear(valueObject: JBDateInputValueObject): number;
    getCalendarMonth(valueObject: JBDateInputValueObject): number;
    getCalendarDay(valueObject: JBDateInputValueObject): number | null;
    setCalendarDefaultDateView(year: number, month: number, inputType?: InputType): void;
    getDateValueObjectBaseOnInputType(year: number, month: number, day: number, oldYear: number | null, oldMonth: number | null, hour?: number, minute?: number, second?: number, millisecond?: number): JBDateInputValueObject;
    getDateValueObjectBaseOnValueType(year: number, month: number, day: number, oldYear: number | null, oldMonth: number | null, hour?: number, minute?: number, second?: number, millisecond?: number): JBDateInputValueObject;
    getDateValueObjectFromTimeStamp(timestamp: number): JBDateInputValueObject;
    /**
  * @description this function return date object base on javascript Date type
  */
    getDateObjectValueFromDateValue(inputValue: Date): JBDateInputValueObject;
    static checkJalaliDateValidation(jalaliYear: number, jalaliMonth: number, jalaliDay: number): DateValidResult;
    static checkGregorianDateValidation(gregorianYear: number, gregorianMonth: number, gregorianDay: number): DateValidResult;
    getDateObjectValueBaseOnFormat(valueString: string, format?: string): InputtedValueInObject;
    static getDate(year: number, month: number, day: number, inputType: InputType, hour?: number, minute?: number, second?: number, millisecond?: number): Date;
    static getDateFromGregorian(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number): Date;
    static getDateFromJalali(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number): Date;
    static getDateFromTimestamp(timestamp: number): Date;
    static get todayGregorianYear(): number;
    static get todayJalaliYear(): number;
    static get todayGregorianMonth(): number;
    static get todayJalaliMonth(): number;
}
//# sourceMappingURL=date-factory.d.ts.map