import { MutableRefObject } from "react";
import { DButtonProps } from "../..";
/**
 * 팝업을 제어하기 위한 외부 인터페이스 타입 정의
 */
export type DPopupRef = {
    show: () => void;
    hide: () => void;
};
/**
 * DPopupInterfaceProps: 팝업 컴포넌트의 props 타입 정의
 */
export type DPopupInterfaceProps<T = unknown> = React.PropsWithChildren & Omit<DButtonProps, "type" | "className" | "size"> & {
    /**
     * @description  팝업이 열릴 때 호출되는 콜백 함수
     * @returns void
     */
    onShow?: () => void;
    /**
     * @description  팝업이 닫힐 때 호출되는 콜백 함수
     * @returns void
     */
    onHide?: () => void;
    /**
     * @description  팝업의 초기 열림 상태 설정
     * @returns boolean
     */
    initialIsPop?: boolean;
    /**
     * @description  모달 헤더의 제목 텍스트
     * @returns string
     */
    title?: string;
    /**
     * @description  팝업을 여는 버튼 형태 설정 (button, icon, 없음)
     * @returns boolean | "button" | "icon"
     */
    useButton?: boolean | "button" | "icon";
    /**
     * @description  버튼의 추가 CSS 클래스명
     * @returns string
     */
    buttonClassName?: string;
    /**
     * @description  커스텀 버튼 요소
     * @returns React.ReactNode
     */
    buttonElement?: React.ReactNode;
    /**
     * @description  버튼 크기 설정 (small, large)
     * @returns "sm" | "lg"
     */
    buttonSize?: "sm" | "lg";
    /**
     * @description  close 시 콜백 처리 여부 (구현에선 사용되지 않음)
     * @returns boolean
     */
    isCallBackClose?: boolean;
    /**
     * @description  명시적인 콜백 인터페이스 제공
     * @returns (data: T) => void
     */
    callBack?: (data: T) => void;
    /**
     * @description  외부에서 팝업을 제어하기 위한 ref 객체
     * @returns MutableRefObject<DPopupRef | null>
     */
    popupRef?: MutableRefObject<DPopupRef | null>;
    /**
     * @description  모달 크기 설정
     * @returns "sm" | "lg" | "xl"
     */
    size?: "sm" | "lg" | "xl";
    /**
     * @description  풀스크린 설정 옵션
     * @returns true | string | "sm-down" | "md-down" | "lg-down" | "xl-down" | "xxl-down"
     */
    fullscreen?: true | string | "sm-down" | "md-down" | "lg-down" | "xl-down" | "xxl-down";
    /**
     * @description  Bootstrap CSS 클래스 prefix 설정
     * @returns string
     */
    bsPrefix?: string;
    /**
     * @description  모달의 중앙 정렬 여부 설정
     * @returns boolean
     */
    centered?: boolean;
    /**
     * @description  백드롭의 CSS 클래스명 설정
     * @returns string
     */
    backdropClassName?: string;
    /**
     * @description  백드롭 설정 (true: 클릭 시 닫힘)
     * @returns boolean
     */
    backDrop?: boolean;
    /**
     * @description  모달 애니메이션 효과 사용 여부
     * @returns boolean
     */
    animation?: boolean;
    /**
     * @description  모달 전체의 추가적인 CSS 클래스명 설정
     * @returns string
     */
    modalClassName?: string;
    /**
     * @description  모달 바디의 추가적인 CSS 클래스명 설정
     * @returns string
     */
    modalBodyClassName?: string;
    /**
     * @description  모달 다이얼로그의 추가적인 CSS 클래스명 설정
     * @returns string
     */
    dialogClassName?: string;
    /**
     * @description  모달 콘텐츠의 추가적인 CSS 클래스명 설정
     * @returns string
     */
    contentClassName?: string;
    /**
     * @description  모달 다이얼로그를 렌더링할 컴포넌트 타입
     * @returns React.ElementType
     */
    dialogAs?: React.ElementType;
    /**
     * @description  모달의 스크롤 가능 여부 설정
     * @returns boolean
     */
    scrollable?: boolean;
    /**
     * @description  팝업 버튼에 사용될 아이콘 클래스
     * @returns string
     */
    icon?: string;
};
/**
 * DPopupInterface 컴포넌트
 * @description 팝업을 생성하고 관리하는 인터페이스 컴포넌트
 */
export declare const DPopupInterface: <T>({ onShow, onHide, initialIsPop, title, useButton, buttonElement, buttonClassName, children, variant, backDrop, iconPosition, buttonSize, defaultIcon, icon, outline, popupRef, sizeRatio, modalClassName, modalBodyClassName, ...modalProps }: DPopupInterfaceProps<T>) => import("react").JSX.Element;
export default DPopupInterface;
