
"use client";
import { ModalProps } from "./Modal.js";
import { ReactNode } from "react";

//#region src/components/client/Modal/modalStore.d.ts
type CreateModalProps = Pick<ModalProps, 'onClose' | 'onOpen' | 'portal' | 'modal' | 'includeScrim' | 'hideDismissButton' | 'reduceMotion' | 'closeIcon' | 'maxWidth' | 'maxHeight' | 'fullWidth' | 'fullHeight' | 'scrollBehavior' | 'title' | 'description' | 'content' | 'actions' | 'closeAriaLabel' | 'className' | 'style'>;
type CreateModalOptions = {
  actionStartContent?: ReactNode;
  replace?: boolean;
};
type CreateModalArgs = CreateModalProps & CreateModalOptions;
interface ModalEntry {
  ownerId: number;
  props: CreateModalProps;
  options: CreateModalOptions;
}
interface ModalSlotState {
  slotId: number;
  ownerId: number;
  open: boolean;
  closing: boolean;
  props: CreateModalProps;
  options: CreateModalOptions;
  stack: ModalEntry[];
  pending: ModalEntry | null;
  preserveOnExit: boolean;
}
declare const subscribe: (fn: () => void) => (() => void);
declare const getSnapshot: () => ModalSlotState | null;
declare const addModalEntry: (args: CreateModalArgs) => number;
declare const updateModalEntry: (ownerId: number, next: Partial<CreateModalArgs>) => void;
declare const closeModalEntry: (ownerId: number) => void;
declare const removeModalEntry: (ownerId: number) => void;
//#endregion
export { type CreateModalArgs, type CreateModalOptions, type CreateModalProps, type ModalSlotState, addModalEntry, closeModalEntry, getSnapshot, removeModalEntry, subscribe, updateModalEntry };