import type { CalendarConstraintContext, CalendarConstraint, CalendarInterval, CalendarItem, CalendarCursor, CalendarResolution, CalendarConstraintHint } from './types'; export declare function randomId(): string; /** * 날짜 구간의 모든 구간이 조건에 해당하는지 (즉, 연속적인 구간이 모두 조건을 충족하는지) 확인합니다. */ export declare function isEntireSelectionAvailable(constraint: CalendarConstraint, context: CalendarConstraintContext, selection: CalendarInterval): boolean; /** * 특정 시점이 조건에 해당하는지 확인합니다. */ export declare function isInstantAvailable(constraint: CalendarConstraint, context: CalendarConstraintContext, instant: Date): boolean; /** * 캘린더 항목이 유효한지 확인합니다. */ export declare function isItemValid(constraint: CalendarConstraint, context: CalendarConstraintContext, item: CalendarItem): boolean; /** * 현재 수정중인 커서의 세부 항목이 유효한지 확인합니다. */ export declare function isCursorFocusValid(constraint: CalendarConstraint, context: CalendarConstraintContext, cursor?: CalendarCursor | null, target?: 'from' | 'to'): boolean; /** * 현재 수정중인 커서의 입력된 값이 유효한지 확인합니다. 입력되지 않은 값은 무시합니다. */ export declare function isCursorPartiallyValid(constraint: CalendarConstraint, context: CalendarConstraintContext, cursor?: CalendarCursor | null): boolean; /** * selection 구간 안에서 유효한 날짜 구간을 모두 반환합니다. */ export declare function getAvailableIntervals(constraint: CalendarConstraint, context: CalendarConstraintContext, selection: CalendarInterval): CalendarInterval[]; /** * selection 구간 안에서 첫 번째로 유효한 시점을 힌트와 함께 반환합니다. */ export declare function getFirstAvailableInSelectionWithHint(constraint: CalendarConstraint, context: CalendarConstraintContext, selection: CalendarInterval): { date: Date | null; hint: CalendarConstraintHint | null; }; /** * selection 구간 안에서 첫 번째로 유효한 시점을 반환합니다. */ export declare function getFirstAvailableInSelection(constraint: CalendarConstraint, context: CalendarConstraintContext, selection: CalendarInterval): Date | null; /** * selection 구간 안에 유효한 시점이 하나라도 있는지 확인합니다. */ export declare function isSelectionAvailable(constraint: CalendarConstraint, context: CalendarConstraintContext, selection: CalendarInterval): boolean; /** * selection 구간 안에서 마지막으로 유효한 시점을 반환합니다. (non-inclusive기 때문에 실제 유효한 instant를 얻기 위해서는 1밀리초를 빼야 합니다) */ export declare function getLastAvailableInSelection(constraint: CalendarConstraint, context: CalendarConstraintContext, selection: CalendarInterval): Date | null; /** * 해당 instant 시점이 item 구간 안에 있는지 확인합니다. */ export declare function isInstantWithinItem(item: CalendarInterval, instant: Date): boolean; /** * 두 instant 사이에서 겹치는 구간이 있는지 확인합니다. */ export declare function isIntervalOverlappingWithItem(item: CalendarInterval, interval: CalendarInterval): boolean; /** * 아이템 목록 중에서 해당 instant 시점에 겹치는 항목을 반환합니다. */ export declare function findItemAtInstant(items: CalendarItem[], instant: Date): CalendarItem | null; /** * 아이템 목록 중에서 해당 instant 시점에 겹치는 항목들을 반환합니다. */ export declare function findItemsOverlappingWithInterval(items: CalendarItem[], interval: CalendarInterval): CalendarItem[]; /** * interval 구간 중에서 해당 item 항목의 from을 설정할 수 있는지 여부를 힌트와 함께 반환합니다. */ export declare function isSelectionFromAvailableWithHint(constraint: CalendarConstraint, context: CalendarConstraintContext, item: Partial, interval: CalendarInterval, /** * 해당 구간을 설정했을 때 to가 유효하지 않게 되는 경우에도 유효한 것으로 보도록 합니다. */ canOverwriteInvariant?: boolean): { available: boolean; hint: CalendarConstraintHint | null; }; /** * interval 구간 중에서 해당 item 항목의 from을 설정할 수 있는지 여부를 반환합니다. */ export declare function isSelectionFromAvailable(constraint: CalendarConstraint, context: CalendarConstraintContext, item: Partial, interval: CalendarInterval, /** * 해당 구간을 설정했을 때 to가 유효하지 않게 되는 경우에도 유효한 것으로 보도록 합니다. */ canOverwriteInvariant?: boolean): boolean; /** * interval 구간 중에서 해당 item 항목의 from을 최대한 이르게 설정합니다. * @param overwriteInvariant to가 유효하지 않게 되는 상황에서 to를 초기화시킬 지 여부입니다. */ export declare function applyFromWithinInterval(constraint: CalendarConstraint, context: CalendarConstraintContext, item: Partial, interval: CalendarInterval, overwriteInvariant?: boolean): Partial; /** * interval 구간 중에서 해당 item 항목의 to을 설정할 수 있는지 여부를 힌트와 함께 반환합니다. */ export declare function isSelectionToAvailableWithHint(constraint: CalendarConstraint, context: CalendarConstraintContext, item: Partial, interval: CalendarInterval, /** * 해당 구간을 설정했을 때 from이 유효하지 않게 되는 경우에도 유효한 것으로 보도록 합니다. */ canOverwriteInvariant?: boolean): { available: boolean; hint: CalendarConstraintHint | null; }; /** * interval 구간 중에서 해당 item 항목의 to를 설정할 수 있는지 여부를 반환합니다. */ export declare function isSelectionToAvailable(constraint: CalendarConstraint, context: CalendarConstraintContext, item: Partial, interval: CalendarInterval, /** * 해당 interval을 설정했을 때 from이 유효하지 않게 되는 경우에도 유효한 것으로 보도록 합니다. */ canOverwriteInvariant?: boolean): boolean; /** * interval 구간 중에서 해당 item 항목의 to를 최대한 늦게 설정합니다. * @param overwriteInvariant from이 유효하지 않게 되는 상황에서 from을 초기화시킬 지 여부입니다. */ export declare function applyToWithinInterval(constraint: CalendarConstraint, context: CalendarConstraintContext, item: Partial, interval: CalendarInterval, overwriteInvariant?: boolean): Partial; export declare function isCursorItemInterval(item: Partial | null | undefined): item is CalendarInterval; export declare function isCursorItemComplete(item: Partial | null | undefined): item is CalendarItem; export declare function getIntervalOrNull(item: Partial | null | undefined): CalendarInterval | null; /** * subinterval 구간이 interval 구간의 from에 속하는지 확인합니다. */ export declare function isSubintervalStartOfInterval(subinterval: CalendarInterval, interval: Pick): boolean; /** * subinterval 구간이 interval 구간의 to에 속하는지 확인합니다. */ export declare function isSubintervalEndOfInterval(subinterval: CalendarInterval, interval: Pick): boolean; /** * subinterval 구간이 interval 구간의 from/to에 속하지 않지만, 그 사이에 끼어있는지 확인합니다. */ export declare function isSubintervalMiddleOfInterval(subinterval: CalendarInterval, interval: CalendarInterval): boolean; /** * 해당 item 항목의 from/to를 interval과 target에 맞게 설정합니다. 실패하는 경우 오류를 반환합니다. * @param overwriteInvariant to < from이 되는 상황에서 from/to를 초기화시킬 지 여부입니다. */ export declare function applyItemInterval(item: Partial, constraint: CalendarConstraint, context: CalendarConstraintContext, interval: CalendarInterval, target: 'from' | 'to' | 'all', overwriteInvariant?: boolean): { item: Partial; dateSet: Date | null; }; /** * 해당 item 항목의 from/to를 interval과 target에 맞게 설정합니다. 실패하는 경우 fallbackInterval을 설정해봅니다. * @param overwriteInvariant to < from이 되는 상황에서 from/to를 초기화시킬 지 여부입니다. */ export declare function applyItemIntervalWithFallback(item: Partial, constraint: CalendarConstraint, context: CalendarConstraintContext, interval: CalendarInterval, fallbackInterval: CalendarInterval, target: 'from' | 'to' | 'all', overwriteInvariant?: boolean): { item: Partial; dateSet: Date | null; }; /** * donorFrom/donorTo 값을 활용해, date로부터 오프셋 (시각)이 동일한 interval 구간을 계산합니다. * 예: donorFrom이 2025-01-01 14:00:00이고, resolution이 day일 때, date를 2025-03-01 12:34:56으로 넣으면, * from: 2025-03-01 14:00:00, to: 2025-03-02 00:00:00 인 interval이 반환됩니다. */ export declare function resolveIntervalWithOffsets(resolution: CalendarResolution, date: Date, donorFrom?: Date | null, donorTo?: Date | null): CalendarInterval; export declare function getNextFocus(cursor: CalendarCursor | null, target?: 'all' | 'from' | 'to' | null): 'from' | 'to'; export declare function getNewCursorItem(): Partial; export declare function ensureItemId(item: Partial | null): Partial | null;