import { default as React } from 'react';
import { IAProgressBarProps } from '../AProgressBar/AProgressBar';
import { EDir4 } from '../ATypes/ATypes';
/** 상수 엘리먼트는 Suspense가 fallback을 제대로 표시하지 않을 수 있음 → 컴포넌트로 매 렌더마다 새 엘리먼트 생성 */
export declare const DefaultSuspenseFallback: React.FC;
export interface IABaseProps extends React.HTMLAttributes<HTMLElement> {
    /** progress bar 렌더링 컴포넌트 */
    ProgressRenderer?: React.ComponentType<IAProgressBarProps>;
    /** callback ref */
    abaseCallbackRef?: (instance: HTMLDivElement | null) => void;
    /** object ref */
    abaseRef?: React.RefObject<HTMLDivElement | null>;
    children?: React.ReactNode;
    className?: string;
    /** useErrorBoundary 에러 발생 시 표시할 커스텀 UI */
    errorFallback?: React.ReactNode | ((error: Error) => React.ReactNode);
    /** dimmer 시각적 오버레이 숨김 (상호작용 차단은 유지, 배경색 있는 raw ABase 등에서 사용) */
    hideDimmer?: boolean;
    /** dimming 적용 */
    isDimmed?: boolean;
    /** dimming 적용 + 문자열이면 tooltip으로 표시 */
    isDisabled?: boolean | string;
    /** skeleton UI (dimming/spinner 없이) */
    isInitialLoading?: boolean;
    /** dimming + spinner 적용 */
    isLoading?: boolean;
    /** ErrorBoundary 에러 콜백 (HTML onError 충돌 방지용 별도 명칭) */
    onBoundaryError?: (error: unknown, errorInfo: React.ErrorInfo) => void;
    /** 로딩 진행률 (isLoading과 함께 사용) */
    progress?: number;
    /** progress bar 추가 props */
    progressProps?: Omit<IAProgressBarProps, 'progress'>;
    /** dimmed 상태에서 tooltip을 dimmer 위에 표시 */
    showTooltipOnDimmed?: boolean;
    style?: React.CSSProperties;
    /** useSuspense의 커스텀 fallback (기본값: 스켈레톤) */
    suspenseFallback?: React.ReactNode;
    /** useSuspense fallback 너비 (flex stretch 방지, minWidth와 별도) */
    suspenseWidth?: React.CSSProperties['minWidth'];
    /** tooltip 내용 */
    tooltip?: React.ReactNode;
    /** tooltip 지연 시간 (초) */
    tooltipDelay?: number;
    /** tooltip 방향 */
    tooltipDirection?: EDir4;
    /** tooltip 거리 (px) */
    tooltipDistance?: number;
    /** children을 ErrorBoundary로 래핑 */
    useErrorBoundary?: boolean;
    /** children을 Suspense로 래핑 */
    useSuspense?: boolean;
}
export declare const ABase: (props: IABaseProps) => React.ReactNode;
