import { TimePickerDisplayParts, TimePickerDisplayVariant, TimePickerGranularity, TimePickerPeriod, TimePickerSegment, TimePickerValueParts } from './types';
import { MaskedFieldSectionRange } from '../../utils/maskedFieldSections';
type TimeInputSectionRange = MaskedFieldSectionRange<TimePickerSegment>;
/**
 * Create a fresh copy of the empty canonical time value.
 */
export declare function createDefaultTimeValueParts(): TimePickerValueParts;
/**
 * Compare canonical time parts without allocating a formatted string.
 */
export declare function areTimeValuePartsEqual(previousValueParts: TimePickerValueParts, nextValueParts: TimePickerValueParts): boolean;
/**
 * Parse a compact digit string into the expected amount of time segments.
 */
export declare function splitTimeDigits(rawValue: string, expectedSegments: number): string[] | null;
/**
 * Parse a free-form time string into canonical 24-hour parts.
 */
export declare function parseTimeValue(rawValue: string, granularity: TimePickerGranularity): TimePickerValueParts | null;
/**
 * Convert canonical 24-hour parts into the parts shown by the current display variant.
 */
export declare function toDisplayParts(valueParts: TimePickerValueParts, displayVariant: TimePickerDisplayVariant): TimePickerDisplayParts;
/**
 * Convert display parts back into canonical 24-hour parts.
 */
export declare function fromDisplayParts(displayParts: TimePickerDisplayParts, displayVariant: TimePickerDisplayVariant): TimePickerValueParts;
/**
 * Format canonical parts into the public string rendered by the component.
 */
export declare function formatTimeValue(valueParts: TimePickerValueParts, displayVariant: TimePickerDisplayVariant, granularity: TimePickerGranularity): string;
/**
 * Format display parts without normalizing them through canonical 24-hour conversion.
 */
export declare function formatDisplayPartsValue(displayParts: TimePickerDisplayParts, displayVariant: TimePickerDisplayVariant, granularity: TimePickerGranularity): string;
/**
 * Return the visible input and popover segments for the current configuration.
 */
export declare function getVisibleSegments(granularity: TimePickerGranularity, displayVariant: TimePickerDisplayVariant): TimePickerSegment[];
/**
 * Return the static character ranges used by each editable segment inside the input.
 */
export declare function getTimeInputSegmentRanges(granularity: TimePickerGranularity, displayVariant: TimePickerDisplayVariant): Array<{
    segment: TimePickerSegment;
    start: number;
    end: number;
}>;
/**
 * Resolve the active masked time section from the current selection.
 */
export declare function getTimeInputSectionRangeFromSelection(selectionStart: number, selectionEnd: number, granularity: TimePickerGranularity, displayVariant: TimePickerDisplayVariant): TimeInputSectionRange | null;
/**
 * Resolve the adjacent masked time section used by left and right navigation.
 */
export declare function getAdjacentTimeInputSectionRange(currentRange: TimeInputSectionRange, direction: -1 | 1, granularity: TimePickerGranularity, displayVariant: TimePickerDisplayVariant): TimeInputSectionRange;
/**
 * Resolve the first or last editable section in the masked time field.
 */
export declare function getTimeInputBoundarySectionRange(boundary: 'start' | 'end', granularity: TimePickerGranularity, displayVariant: TimePickerDisplayVariant): TimeInputSectionRange;
/**
 * Return the next editable caret position in the masked input.
 */
export declare function getNextEditableTimePosition(position: number, granularity: TimePickerGranularity, displayVariant: TimePickerDisplayVariant, includePeriod?: boolean): number | null;
/**
 * Replace a substring in the masked input without changing its total length.
 */
export declare function replaceTimeInputSubstring(currentValue: string, start: number, end: number, replacement: string): string;
/**
 * Replace the targeted numeric segments with their default display value.
 */
export declare function resetTimeInputSegments(currentValue: string, segments: TimePickerSegment[], granularity: TimePickerGranularity, displayVariant: TimePickerDisplayVariant, period: TimePickerPeriod): string;
/**
 * Resolve which segments should reset when delete or backspace is pressed.
 */
export declare function getSegmentsToResetFromSelection(currentValue: string, selectionStart: number, selectionEnd: number, key: 'Backspace' | 'Delete', granularity: TimePickerGranularity, displayVariant: TimePickerDisplayVariant): TimePickerSegment[];
/**
 * Detect when delete or backspace targets protected separators instead of editable digits.
 */
export declare function isProtectedTimeCharacterSelection(currentValue: string, selectionStart: number, selectionEnd: number, key: 'Backspace' | 'Delete'): boolean;
/**
 * Return the default display value for a segment when the user deletes it from the input.
 */
export declare function getDefaultDisplaySegmentValue(segment: TimePickerSegment, displayVariant: TimePickerDisplayVariant, period: TimePickerPeriod): string;
/**
 * Step the currently active masked time section up or down.
 */
export declare function stepTimeInputSection(currentValue: string, selectionStart: number, selectionEnd: number, direction: -1 | 1, granularity: TimePickerGranularity, displayVariant: TimePickerDisplayVariant): {
    nextValue: string;
    sectionRange: TimeInputSectionRange;
} | null;
/**
 * Check whether a raw field string contains only characters supported by the time mask.
 */
export declare function isAllowedTimeInputValue(rawValue: string, displayVariant: TimePickerDisplayVariant): boolean;
/**
 * Normalize an incoming external value into the formatted string used by the component.
 */
export declare function normalizeTimeValue(rawValue: string, displayVariant: TimePickerDisplayVariant, granularity: TimePickerGranularity): string;
export {};
//# sourceMappingURL=helpers.d.ts.map