import type { InternalDateChangeSettings, InternalDateComponentRaw, InternalDateComponentsNumber, InternalDateComponentsRaw, InternalDateConstructorProps, InternalDateFragment, InternalDateSeparator, InternalDateToFragmentsSettings } from './types.js';
import { InternalDateComponentType, InternalDateOrder, InternalDateValidateCheck } from './types.js';
export declare class InternalDate {
    private order;
    private separator;
    private components;
    private canonicalLocale;
    private start;
    private end;
    constructor({ order, separator, langCode, value }?: InternalDateConstructorProps);
    getComponentsRaw(): InternalDateComponentsRaw;
    getComponentsLikeNumber(): InternalDateComponentsNumber;
    getSeparator(): InternalDateSeparator;
    getOrder(): InternalDateOrder;
    getYear(): InternalDateComponentRaw;
    getMonth(): InternalDateComponentRaw;
    getDate(): InternalDateComponentRaw;
    getRangeStart(): InternalDate | null;
    getRangeEnd(): InternalDate | null;
    setOrder(order?: InternalDateOrder): InternalDate;
    setSeparator(separator?: InternalDateSeparator): InternalDate;
    setComponents(components: InternalDateComponentsRaw | null, isNativeMonth?: boolean): InternalDate;
    setYear(year: InternalDateComponentRaw): InternalDate;
    setMonth(month: InternalDateComponentRaw): InternalDate;
    setDate(date: InternalDateComponentRaw): InternalDate;
    shiftYear(step: number, { isLoop, isRange, isCutFeb }?: InternalDateChangeSettings): InternalDate;
    shiftMonth(step: number, { isLoop, isRange, isCutFeb }?: InternalDateChangeSettings): InternalDate;
    shiftDate(step: number, { isLoop, isRange, isCutFeb }?: InternalDateChangeSettings): InternalDate;
    setRangeStart(internalDate: InternalDate | null): InternalDate;
    setRangeEnd(internalDate: InternalDate | null): InternalDate;
    get(type: InternalDateComponentType | null): InternalDateComponentRaw;
    set(type: InternalDateComponentType | null, value: InternalDateComponentRaw): InternalDate;
    shift(type: InternalDateComponentType | null, step: number, settings?: InternalDateChangeSettings): InternalDate;
    parseValue(value?: string | null): InternalDate;
    parseInternalValue(value?: string | null): InternalDate;
    validate({ type, nextValue, checks, }?: {
        type?: InternalDateComponentType;
        nextValue?: InternalDateComponentRaw;
        checks?: InternalDateValidateCheck[];
    }): boolean;
    toFragments(settings?: InternalDateToFragmentsSettings, components?: InternalDateComponentsRaw): InternalDateFragment[];
    /**
     * Перевод даты в числовое представление (**НЕ** аналог `timestamp`)
     * Предназначено для быстрого сравнивания дат `<=>`
     */
    toNumber(): number;
    toString(settings?: InternalDateToFragmentsSettings): string;
    toInternalString(): string;
    toNativeFormat(): InternalDateComponentsNumber | undefined;
    toA11YFormat(): string;
    clone(): InternalDate;
    duplicateOf(pattern: InternalDate): InternalDate;
    restore(type?: InternalDateComponentType | null): InternalDate;
    cutOffExcess(type?: InternalDateComponentType | null, { isLoop, isRange, isCutFeb }?: InternalDateChangeSettings): InternalDate;
    isIncomplete(): boolean;
    isEmpty(): boolean;
    isEqualComponentDate(type: InternalDateComponentType | null, compared: InternalDate): boolean;
    isEqual(compared: InternalDate): boolean;
    private getMinValue;
    private getMaxValue;
}
