import { default as React } from 'react';
/**
 * 값을 주어진 최소값과 최대값 사이로 제한하는 함수
 * @param targetValue 제한할 값
 * @param minValue 최소값 (선택사항)
 * @param maxValue 최대값 (선택사항)
 * @returns 제한된 값
 */
export declare function bound(targetValue: number, minValue?: number, maxValue?: number): number;
/**
 * 텍스트 측정 및 너비 계산을 위한 유틸리티
 */
export declare const textMeasurement: {
    _canvas: HTMLCanvasElement | null;
    _cache: Map<string, number>;
    _fontCache: {
        value: string;
        timestamp: number;
    };
    _charWidthMap: Map<string, number>;
    /**
     * 캐시 초기화
     */
    clearCache(): void;
    /**
     * 문서의 기본 폰트 스타일 가져오기 (캐싱 적용)
     */
    getDefaultFont(): string;
    /**
     * 개별 문자의 너비 측정 (캐싱 적용)
     * @param char 측정할 문자
     * @param font 폰트 정보
     * @returns 문자 너비
     */
    measureCharWidth(char: string, font: string): number;
    /**
     * React 노드에서 텍스트 콘텐츠를 추출
     * @param node React 노드
     * @returns 추출된 텍스트
     */
    extractTextFromNode(node: React.ReactNode): string;
    _measureWithCanvas(text: string, fontToUse: string, cacheKey: string): number | undefined;
    _measureWithDom(text: string, fontToUse: string, cacheKey: string): number | undefined;
    _measureWithCharAccumulation(text: string, fontToUse: string, cacheKey: string): number | undefined;
    _measureWithFontSizeEstimate(text: string, fontToUse: string, cacheKey: string): number;
    /**
     * 텍스트 너비 측정 (정확도 향상 버전)
     * @param text 측정할 텍스트
     * @param font 폰트 스타일
     * @returns 텍스트 너비
     */
    measureTextWidth(text: string, font?: string): number;
    /**
     * 요소의 스타일을 기반으로 텍스트 너비 측정
     * @param element HTML 요소
     * @param text 측정할 텍스트
     * @returns 텍스트 너비
     */
    measureTextWithElementStyle(element: HTMLElement, text: string): number;
    /**
     * React 노드 너비 측정
     */
    measureReactNodeWidth(node: React.ReactNode): number;
    /**
     * 옵션 렌더링 함수를 사용하여 옵션 너비 측정
     */
    measureRenderedOptionWidth<T>(option: T, renderer: (option: T) => React.ReactNode): number;
    _buildOptionsToMeasure<T>(options: readonly T[] | T[]): T[];
    _measureMaxOptionWidth<T>(options: readonly T[] | T[], optionRenderer: (option: T) => React.ReactNode): number;
    _measureSelectedWidth<T>(isMulti: boolean, selectedOption: T | null, selectedOptions: T[], optionRenderer: (option: T) => React.ReactNode): number;
    _computeSelectElementWidth(element: HTMLElement, contentWidth: number, type: "Primary" | "Secondary" | "Raw", isMulti: boolean): number;
    /**
     * Select 컴포넌트의 최적 너비 계산 (정확성 향상 버전)
     */
    calculateOptimalSelectWidth<T>({ elementRef, options, selectedOption, selectedOptions, placeholder, optionRenderer, type, isMulti, }: {
        elementRef: React.RefObject<HTMLElement | null>;
        isMulti?: boolean;
        optionRenderer: (option: T) => React.ReactNode;
        options?: readonly T[] | T[];
        placeholder?: React.ReactNode;
        selectedOption?: T | null;
        selectedOptions?: T[];
        type?: "Primary" | "Secondary" | "Raw";
    }): number;
};
export declare function useOffset(ref: React.RefObject<HTMLElement | null>, upperRef: React.RefObject<HTMLElement | null>): number;
