import { dateInputSlots } from './date-input-styles';
export interface DurationValue {
    hours: number | null;
    minutes: number | null;
    seconds: number | null;
}
export interface DurationSegment {
    type: 'hours' | 'minutes' | 'seconds' | 'literal';
    text: string;
    value: number | null;
    isPlaceholder: boolean;
    placeholder: string;
    isEditable: boolean;
    minValue: number;
    maxValue: number;
}
export interface DurationFieldState {
    segments: DurationSegment[];
    value: DurationValue;
    isInvalid: boolean;
    setSegmentValue: (type: 'hours' | 'minutes' | 'seconds', val: number | null) => void;
}
export interface UseDurationInputProps {
    ref?: React.Ref<HTMLDivElement>;
    value?: DurationValue;
    defaultValue?: DurationValue;
    onChange?: (value: DurationValue) => void;
    name?: string;
    label?: React.ReactNode;
    description?: React.ReactNode;
    errorMessage?: React.ReactNode;
    startContent?: React.ReactNode;
    endContent?: React.ReactNode;
    classNames?: Partial<typeof dateInputSlots>;
    labelPlacement?: 'inside' | 'outside' | 'outside-left';
    className?: string;
    variant?: 'filled' | 'filled-inverted' | 'outlined' | 'outlined-inverted' | 'underlined' | 'underlined-inverted' | 'ghost' | 'ghost-inverted';
    color?: 'primary' | 'secondary' | 'error';
    size?: 'sm' | 'md' | 'lg';
    shape?: 'full' | 'minimal' | 'sharp';
    isInvalid?: boolean;
    isDisabled?: boolean;
    isRequired?: boolean;
}
export declare function parseDuration(value: string): DurationValue;
export declare function formatDuration(value: DurationValue | null | undefined): string;
export declare function useDurationInput(props: UseDurationInputProps): {
    state: DurationFieldState;
    domRef: import('react').RefObject<HTMLDivElement | null>;
    slots: {
        base: string;
        label: string;
        inputWrapper: string;
        innerWrapper: string;
        segment: string;
        helperWrapper: string;
        description: string;
        errorMessage: string;
    };
    classNames: Partial<{
        base: string;
        label: string[];
        inputWrapper: string[];
        innerWrapper: string;
        segment: string[];
        helperWrapper: string;
        description: string;
        errorMessage: string;
    }> | undefined;
    getBaseGroupProps: () => {
        ref: import('react').RefObject<HTMLDivElement | null>;
        className: string;
        'data-slot': string;
        'data-filled': boolean;
        'data-filled-within': boolean;
        'data-invalid': boolean;
        'data-disabled': boolean | undefined;
        label: import('react').ReactNode;
        description: import('react').ReactNode;
        errorMessage: string | number | bigint | true | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<import('react').ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<import('react').ReactNode> | null | undefined> | null;
        isInvalid: boolean;
        startContent: import('react').ReactNode;
        endContent: import('react').ReactNode;
        shouldLabelBeOutside: boolean;
        labelProps: {
            className: string;
        };
        wrapperProps: {
            className: string;
            'data-focus': boolean;
        };
        innerWrapperProps: {
            className: string;
        };
        helperWrapperProps: {
            className: string;
        };
        errorMessageProps: {
            className: string;
        };
        descriptionProps: {
            className: string;
        };
    };
    getFieldProps: () => {
        onFocus: (e: React.FocusEvent) => void;
        onBlur: (e: React.FocusEvent) => void;
        className: string;
    };
    getInputProps: () => {
        type: string;
        name: string | undefined;
        value: string;
        disabled: boolean | undefined;
    };
};
