import { PopupsViewerProps } from './types';
/**
 * Componente PopupsViewer
 *
 * Este componente se encarga de visualizar y gestionar la animación y el ciclo de vida de
 * los popups en la aplicación. Utiliza la librería `react-transition-group` para manejar las
 * transiciones de entrada y salida de los popups, y `zustand` para gestionar el estado global de
 * los popups.
 *
 * ### Funcionamiento:
 *
 * - **Estado de popups:**
 * Se obtienen los identificadores de los popups activos desde el store mediante `usePopupsStore`,
 * filtrando aquellos popups cuyo estado no sea `'closing'` y que pertenezcan al grupo especificado. Además, se obtiene el valor de `baseZindex`
 * para establecer la jerarquía de apilamiento (z-index) de los popups.
 *
 * - **Contenedor:**
 * Se recupera el elemento contenedor a través del método `getContainerElement` del store. Si el contenedor o su tamaño
 * no están disponibles, el componente retorna `null` y no se renderiza nada. Normalmente este se establece cuando ya se renderizo este a través de un ref personalizado.
 *
 * - **Animaciones:**
 * Cada popup se envuelve en un componente `CSSTransition` para gestionar las animaciones. Se definen
 * las clases CSS correspondientes para la animación de entrada (por ejemplo, 'fade-enter', 'fade-enter-active', etc.).
 * Cuando finaliza la animación de salida, se ejecuta la función `removePopup` para eliminar el popup del estado.
 *
 * - **Renderizado:**
 * Los popups se renderizan dentro de un `TransitionGroup` que gestiona la secuencia de aparición y salida de
 * cada popup. El componente `Popup` recibe propiedades como `popupId`, el contenedor y su tamaño, lo que permite
 * que cada popup se posicione correctamente en la pantalla.
 *
 * - **Remoción de popups:**
 * Cuando se cierra un popup se espera a que finalice la animación de salida, una vez termina,
 * se invoca la función `removePopup` para que se pueda eliminar el popup del store.
 * Importante:
 *   Cuando se destruye el componente `PopupsViewer`, se eliminan todos los popups del grupo especificado,
 *   invocando la función `removeAllPopupsByGroupId` debido a que las transiciones de salida no se ejecutaran.
 */
export declare const PopupsViewer: (props: PopupsViewerProps) => import("@emotion/react/jsx-runtime").JSX.Element | null;
export declare const MemonizePopupsViewer: import('react').MemoExoticComponent<(props: PopupsViewerProps) => import("@emotion/react/jsx-runtime").JSX.Element | null>;
//# sourceMappingURL=PopupsViewer.d.ts.map