// Generated by dts-bundle v0.7.3
// Dependencies for this module:
//   ../dayjs
//   ../react
//   ../@mui/material
//   ../history
//   ../@mui/material/TextField
//   ../@mui/material/Box
//   ../@mui/material/Chip
//   ../@mui/material/Button
//   ../@mui/material/IconButton
//   ../@mui/material/Fab
//   ../@mui/material/Stack
//   ../@mui/material/Paper
//   ../@mui/material/styles
//   ../mapbox-gl

declare module "react-declarative" {
  import "./polyfills";
  export {
    SMALL_SIZE_REQUEST,
    LARGE_SIZE_REQUEST,
  } from "react-declarative/components";
  export { ISize } from "react-declarative/model/ISize";
  import { TypedField as TypedFieldInternal } from "react-declarative/model/TypedField";
  import { IValidation as IValidationInternal } from "react-declarative/model/IValidation";
  import { IInvalidField as IInvalidFieldInternal } from "react-declarative/model/IInvalidField";
  import { IField as IFieldInternal } from "react-declarative/model/IField";
  import { IEntity as IEntityInternal } from "react-declarative/model/IEntity";
  import { IManaged as IManagedInternal } from "react-declarative/model/IManaged";
  import { IColumn as IColumnInternal } from "react-declarative/model/IColumn";
  import { IApiPaginatorParams as IApiPaginatorParamsInternal } from "react-declarative/components/List/api/useApiPaginator";
  import { IArrayPaginatorParams as IArrayPaginatorParamsInternal } from "react-declarative/components/List/api/useArrayPaginator";
  /**
   * The given TypeScript code is a modular project structure where functionalities are broken into distinct and reusable parts.
   *
   * The code imports certain modules (files) and then exports some of the classes, hooks, functions, or types defined in these modules for other parts of the application to use.
   *
   * Here are some parts explained:
   *
   * **Imports**
   *
   * Modules are being imported from various locations in the application. Structures like classes, interfaces, and functions are imported. For example:
   *
   * ```typescript
   * import { TypedField as TypedFieldInternal } from './model/TypedField';
   * import { useModal } from './components/ModalProvider';
   * ```
   *
   * **Exports**
   *
   * The code exports some of the imported structures, making them available to be used in other parts of the application. For instance:
   *
   * ```typescript
   * export type IOneApiHandlerParams<Data = any>  = IApiHandlerParamsInternal<Data>;
   * export { useColumnConfig } from './components/List';
   * ```
   *
   * **Type Aliases**
   *
   * The code also creates several type aliases that create a new name for an existing type. For example:
   *
   * ```typescript
   * export type IService = IServiceInternal;
   * ```
   *
   * In the above line, `IService` is now an alias for `IServiceInternal`.
   *
   * **Re-importing and Renaming**
   *
   * Some features like hooks or types are re-imported with more application-appropriate naming. The `as` keyword is used to rename the imports:
   *
   * ```typescript
   * import { IField as IFieldInternal } from './model/IField';
   * ```
   *
   * In this line, `IField` from `./model/IField` is imported and renamed as `IFieldInternal`.
   *
   * Overall, this file seems to act like an intermediary that collects, organizes, restructures, and then re-exports various structures that are used across the application.
   */
  export { useColumnConfig } from "react-declarative/components/List";
  import { IApiHandlerParams as IApiHandlerParamsInternal } from "react-declarative/components/One/api/useApiHandler";
  export type IListApiPaginatorParams<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > = IApiPaginatorParamsInternal<FilterData, RowData>;
  export type ILastArrayPaginatorParams<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > = IArrayPaginatorParamsInternal<FilterData, RowData>;
  export type IOneApiHandlerParams<Data = any> =
    IApiHandlerParamsInternal<Data>;
  export { TileMode } from "react-declarative/components";
  export { FieldType } from "react-declarative/model/FieldType";
  export { ColumnType } from "react-declarative/model/ColumnType";
  export { ActionType } from "react-declarative/model/ActionType";
  export { SelectionMode } from "react-declarative/model/SelectionMode";
  import { IListApi as IListApiInternal } from "react-declarative/model/IListApi";
  import { IOneApi as IOneApiInternal } from "react-declarative/model/IOneApi";
  import { IListOperation as IListOperationInternal } from "react-declarative/model/IListOperation";
  import { IListRowAction as IListRowActionInternal } from "react-declarative/model/IListRowAction";
  import { IListAction as IListActionInternal } from "react-declarative/model/IListProps";
  import { IListChip as IListChipInternal } from "react-declarative/model/IListProps";
  import { IOption as IOptionInternal } from "react-declarative/model/IOption";
  import { IBreadcrumbsOption as IBreadcrumbsOptionInternal } from "react-declarative/model/IBreadcrumbsOption";
  export { createServiceManager } from "react-declarative/helpers/serviceManager";
  export { websocketManager } from "react-declarative/helpers/websocketManager";
  export { serviceManager } from "react-declarative/helpers/serviceManager";
  import { IService as IServiceInternal } from "react-declarative/helpers/serviceManager";
  export type IService = IServiceInternal;
  export { createRouteItemManager } from "react-declarative/helpers/routeManager";
  export { createRouteParamsManager } from "react-declarative/helpers/routeManager";
  export { ArraySet } from "react-declarative/helpers/ArraySet";
  export { usePreventAutofill } from "react-declarative/hooks/usePreventAutofill";
  export { useManagedCursor } from "react-declarative/hooks/useManagedCursor";
  export { useItemModal } from "react-declarative/hooks/useItemModal";
  export { useOneInput } from "react-declarative/hooks/useOneInput";
  export { useContextMenu } from "react-declarative/hooks/useContextMenu";
  export { useChangeDelay } from "react-declarative/hooks/useChangeDelay";
  export { useSingleshot } from "react-declarative/hooks/useSingleshot";
  export { useOnce } from "react-declarative/hooks/useOnce";
  export { useRouteItem } from "react-declarative/hooks/useRouteItem";
  export { useRouteParams } from "react-declarative/hooks/useRouteParams";
  export { useWatchChanges } from "react-declarative/hooks/useWatchChanges";
  export { useForceUpdate } from "react-declarative/hooks/useForceUpdate";
  export { useUserAgent } from "react-declarative/hooks/useUserAgent";
  export { usePointer } from "react-declarative/hooks/usePointer";
  export { useLocalHistory } from "react-declarative/hooks/useLocalHistory";
  export { RouteManager } from "react-declarative/helpers/routeManager";
  export { toRouteUrl } from "react-declarative/utils/toRouteUrl";
  export { parseRouteUrl } from "react-declarative/utils/parseRouteUrl";
  export { prefetch } from "react-declarative/helpers/serviceManager";
  export { unload } from "react-declarative/helpers/serviceManager";
  export { provide } from "react-declarative/helpers/serviceManager";
  export { inject } from "react-declarative/helpers/serviceManager";
  export { waitForProvide } from "react-declarative/helpers/serviceManager";
  import {
    IMenuGroup as IMenuGroupInternal,
    IMenuOption as IMenuOptionInternal,
  } from "react-declarative/model/IMenuGroup";
  import { ListHandlerPagination as ListHandlerPaginationInternal } from "react-declarative/model/IListProps";
  import { ListHandlerSortModel as ListHandlerSortModelInternal } from "react-declarative/model/IListProps";
  import { ListHandlerChips as ListHandlerChipsInternal } from "react-declarative/model/IListProps";
  import { ListHandlerResult as ListHandlerResultInternal } from "react-declarative/model/IListProps";
  import { ListHandler as ListHandlerInternal } from "react-declarative/model/IListProps";
  import { OneHandler as OneHandlerInternal } from "react-declarative/model/IOneProps";
  import { useActualCallback } from "react-declarative/hooks/useActualCallback";
  import { useActualValue } from "react-declarative/hooks/useActualValue";
  import { useActualState } from "react-declarative/hooks/useActualState";
  import { useActualRef } from "react-declarative/hooks/useActualRef";
  import { useRenderWaiter } from "react-declarative/hooks/useRenderWaiter";
  import {
    useOneArray,
    oneArrayIncludes,
    isOneArray,
    toOneArray,
  } from "react-declarative/hooks/useOneArray";
  import { useAsyncProgress } from "react-declarative/hooks/useAsyncProgress";
  import { useAsyncAction } from "react-declarative/hooks/useAsyncAction";
  import { useAsyncValue } from "react-declarative/hooks/useAsyncValue";
  import { useSinglerunAction } from "react-declarative/hooks/useSinglerunAction";
  import { useQueuedAction } from "react-declarative/hooks/useQueuedAction";
  import { useMediaContext } from "react-declarative/hooks/useMediaContext";
  import { useAudioPlayer } from "react-declarative/hooks/useAudioPlayer";
  import { useChangeSubject } from "react-declarative/hooks/useChangeSubject";
  import { useDeepChangeSubject } from "react-declarative/hooks/useDeepChangeSubject";
  import { useReloadTrigger } from "react-declarative/hooks/useReloadTrigger";
  import { useSingleton } from "react-declarative/hooks/useSingleton";
  import { useBehaviorSubject } from "react-declarative/hooks/useBehaviorSubject";
  import { useSubscription } from "react-declarative/hooks/useSubscription";
  import { useSubjectValue } from "react-declarative/hooks/useSubjectValue";
  import { useElementSize } from "react-declarative/hooks/useElementSize";
  import { useWindowSize } from "react-declarative/hooks/useWindowSize";
  import { useSubject } from "react-declarative/hooks/useSubject";
  import { useChange } from "react-declarative/hooks/useChange";
  export { useConstraint } from "react-declarative/components";
  import { useModel } from "react-declarative/hooks/useModel";
  import { useEntity } from "react-declarative/hooks/useEntity";
  import { useListEditor } from "react-declarative/hooks/useListEditor";
  import { useMediaStreamBuilder } from "react-declarative/hooks/useMediaStreamBuilder";
  import { useCollection } from "react-declarative/hooks/useCollection";
  import { useRequestSnackbar } from "react-declarative/hooks/useRequestSnackbar";
  import { useActionSnackbar } from "react-declarative/hooks/useActionSnackbar";
  import { useModal } from "react-declarative/components/ModalProvider";
  import { useSnack } from "react-declarative/components/SnackProvider";
  import { useSize } from "react-declarative/components/SizeProvider";
  export {
    ModalManagerProvider,
    useModalManager,
  } from "react-declarative/components/ModalManager";
  export type { IModal } from "react-declarative/components/ModalManager";
  import { useList } from "react-declarative/hooks/useList";
  import { useFile } from "react-declarative/hooks/useFile";
  import { useConfirm } from "react-declarative/hooks/useConfirm";
  import { usePrompt } from "react-declarative/hooks/usePrompt";
  import { useAlert } from "react-declarative/hooks/useAlert";
  import { useDate } from "react-declarative/hooks/useDate";
  import { useTime } from "react-declarative/hooks/useTime";
  import { useOne } from "react-declarative/hooks/useOne";
  import { useOneTyped } from "react-declarative/hooks/useOne";
  import { useSearchParams } from "react-declarative/hooks/useSearchParams";
  import { useSearchState } from "react-declarative/hooks/useSearchState";
  export { useSearchParams };
  export { useSearchState };
  export { useElementSize };
  export { useWindowSize };
  import IAnything from "react-declarative/model/IAnything";
  import IRowData, { RowId } from "react-declarative/model/IRowData";
  export type { IRowData, RowId };
  import { ISwitchItem as ISwitchItemInternal } from "react-declarative/components";
  import { IActionFilter as IActionFilterInternal } from "react-declarative/components";
  import { IActionTrigger as IActionTriggerInternal } from "react-declarative/components";
  import { IScaffoldOption as IScaffoldOptionInternal } from "react-declarative/components";
  export type ISwitchItem = ISwitchItemInternal;
  export type IActionFilter = IActionFilterInternal;
  export type IActionTrigger<Data extends any = any> =
    IActionTriggerInternal<Data>;
  export type TypedField<
    Data = IAnything,
    Payload = IAnything,
  > = TypedFieldInternal<Data, Payload>;
  export type IField<Data = IAnything, Payload = IAnything> = IFieldInternal<
    Data,
    Payload
  >;
  export type IFieldEntity<
    Data = IAnything,
    Payload = IAnything,
  > = IEntityInternal<Data, Payload>;
  export type IFieldManaged<
    Data = IAnything,
    Value = IAnything,
  > = IManagedInternal<Data, Value>;
  export type IInvalidField<
    Data = IAnything,
    Payload = IAnything,
  > = IInvalidFieldInternal<Data, Payload>;
  export type IValidation = IValidationInternal;
  export type ListHandler<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > = ListHandlerInternal<FilterData, RowData>;
  export type ListHandlerResult<RowData extends IRowData = IAnything> =
    ListHandlerResultInternal<RowData>;
  export type OneHandler<Data = IAnything> = OneHandlerInternal<Data>;
  export type ListHandlerPagination = ListHandlerPaginationInternal;
  export type ListHandlerSortModel<RowData extends IRowData = IAnything> =
    ListHandlerSortModelInternal<RowData>;
  export type ListHandlerChips<RowData extends IRowData = IAnything> =
    ListHandlerChipsInternal<RowData>;
  export type IListRowAction<RowData extends IRowData = IAnything> =
    IListRowActionInternal<RowData>;
  export type IListChip<RowData extends IRowData = IAnything> =
    IListChipInternal<RowData>;
  export type IListOperation<Data extends IRowData = any> =
    IListOperationInternal<Data>;
  export type IListAction<Data extends IRowData = any> =
    IListActionInternal<Data>;
  export type IListApi<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > = IListApiInternal<FilterData, RowData>;
  export type IOneApi<Data = IAnything> = IOneApiInternal<Data>;
  export type IMenuOption<Data = any> = IMenuOptionInternal<Data>;
  export type IMenuGroup<Data = any> = IMenuGroupInternal<Data>;
  export type IOption<Payload = any> = IOptionInternal<Payload>;
  export type IColumn<
    FilterData extends {} = IAnything,
    RowData extends IRowData = any,
    Payload = any,
  > = IColumnInternal<FilterData, RowData, Payload>;
  import {
    TGridSort as TGridSortInternal,
    IGridColumn as IGridColumnInternal,
    IGridAction as IGridActionInternal,
    ITile as ITileInternal,
  } from "react-declarative/components";
  export type ITile<
    RowData extends IRowData = any,
    Payload extends IAnything = IAnything,
  > = ITileInternal<RowData, Payload>;
  export type TGridSort<RowData extends IRowData = any> =
    TGridSortInternal<RowData>;
  export type IGridColumn<
    RowData extends IRowData = any,
    Payload = any,
  > = IGridColumnInternal<RowData, Payload>;
  export type IGridAction<RowData extends IRowData = any> =
    IGridActionInternal<RowData>;
  export type IBreadcrumbsOption<Data = any> = IBreadcrumbsOptionInternal<Data>;
  export type IScaffoldOption<Data = any> = IScaffoldOptionInternal<Data>;
  export type pickOneTypedFn = ReturnType<typeof useOneTyped>;
  export type pickOneFn = ReturnType<typeof useOne>;
  export type pickDateFn = ReturnType<typeof useDate>;
  export type pickTimeFn = ReturnType<typeof useTime>;
  export type pickListFn = ReturnType<typeof useList>;
  export type pickConfirmFn = ReturnType<typeof useConfirm>;
  export type pickPromptFn = ReturnType<typeof usePrompt>;
  export type pickAlertFn = ReturnType<typeof useAlert>;
  export { default as dayjs } from "dayjs";
  export { DocumentView } from "react-declarative/components";
  export { ScrollTopView } from "react-declarative/components";
  export { OutletView } from "react-declarative/components";
  export { AlertView } from "react-declarative/components";
  export { ImageView } from "react-declarative/components";
  export { ConstraintView } from "react-declarative/components";
  export { DragDropView } from "react-declarative/components";
  export { DropAreaView } from "react-declarative/components";
  export { FilesView } from "react-declarative/components";
  export { PaperView } from "react-declarative/components";
  export { ScrollView } from "react-declarative/components";
  export { ScaleView } from "react-declarative/components";
  export { FetchView } from "react-declarative/components";
  export { FadeView } from "react-declarative/components";
  export { WaitView } from "react-declarative/components";
  export { PingView } from "react-declarative/components";
  export { OfflineView } from "react-declarative/components";
  export { RevealView } from "react-declarative/components";
  export { SecretView } from "react-declarative/components";
  export { PortalView } from "react-declarative/components";
  export { ReloadView } from "react-declarative/components";
  export { RecordView } from "react-declarative/components";
  export { CardView } from "react-declarative/components";
  export { HtmlView } from "react-declarative/components";
  export { ErrorView } from "react-declarative/components";
  export { AuthView } from "react-declarative/components";
  export { LoaderView } from "react-declarative/components";
  export { VisibilityView } from "react-declarative/components";
  export { FeatureView } from "react-declarative/components";
  export { CalendarView } from "react-declarative/components";
  export { InfiniteView } from "react-declarative/components";
  export { TabsView } from "react-declarative/components";
  export { RoiView, ICord } from "react-declarative/components";
  export { SearchView, ISearchItem } from "react-declarative/components";
  export {
    WizardView,
    WizardNavigation,
    WizardContainer,
  } from "react-declarative/components";
  export {
    VirtualView,
    VIRTUAL_VIEW_ROOT,
    VIRTUAL_VIEW_CHILD,
  } from "react-declarative/components";
  export { ChatView, ChatController } from "react-declarative/components";
  import { IBoard as IBoardInternal } from "react-declarative/components";
  import { IBoardColumn as IBoardColumnInternal } from "react-declarative/components";
  import { IBoardItem as IBoardItemInternal } from "react-declarative/components";
  import { IBoardRow as IBoardRowInternal } from "react-declarative/components";
  export { IBoardDivider } from "react-declarative/components";
  export type IBoardColumn<Data = any, Payload = any> = IBoardColumnInternal<
    Data,
    Payload
  >;
  export type IBoard<Data = any, Payload = any> = IBoardInternal<Data, Payload>;
  export type IBoardRow<Data = any, Payload = any> = IBoardRowInternal<
    Data,
    Payload
  >;
  export type IBoardItem<Data = any> = IBoardItemInternal<Data>;
  export { KanbanView } from "react-declarative/components";
  import {
    TreeView,
    ITreeViewNode as ITreeViewNodeInternal,
  } from "react-declarative/components";
  import { GridView } from "react-declarative/components";
  export type ITreeViewNode = ITreeViewNodeInternal;
  export { TreeView };
  export { GridView };
  export { ColorButton } from "react-declarative/components";
  import { ICardViewItemData } from "react-declarative/components/CardView";
  import { ICardViewAction as ICardViewActionInternal } from "react-declarative/components/CardView";
  import { ICardViewOperation as ICardViewOperationInternal } from "react-declarative/components/CardView";
  export type ICardViewAction<Data extends ICardViewItemData = any> =
    ICardViewActionInternal<Data>;
  export type ICardViewOperation<Data extends ICardViewItemData = any> =
    ICardViewOperationInternal<Data>;
  import { ICalendarTile as ICalendarTileInternal } from "react-declarative/components/CalendarView";
  import { ICalendarItem as ICalendarItemInternal } from "react-declarative/components/CalendarView";
  import { ICalendarRequest as ICalendarRequestInternal } from "react-declarative/components/CalendarView";
  export type ICalendarTile<
    Data = IAnything,
    Payload = IAnything,
  > = ICalendarTileInternal<Data, Payload>;
  export type ICalendarItem<
    Data = IAnything,
    Payload = IAnything,
  > = ICalendarItemInternal<Data, Payload>;
  export type ICalendarRequest<Payload = IAnything> =
    ICalendarRequestInternal<Payload>;
  import { IFeatureGroup as IFeatureGroupInternal } from "react-declarative/components/FeatureView";
  import { IFeature as IFeatureInternal } from "react-declarative/components/FeatureView";
  export type IFeatureGroup<
    Data = IAnything,
    Payload = IAnything,
  > = IFeatureGroupInternal<Data, Payload>;
  export type IFeature<
    Data = IAnything,
    Payload = IAnything,
  > = IFeatureInternal<Data, Payload>;
  export { FeatureType } from "react-declarative/components/FeatureView";
  export { IVisibilityGroup } from "react-declarative/components/VisibilityView";
  import {
    recordToExcelExport,
    RECORD_NEVER_VALUE,
  } from "react-declarative/components/RecordView";
  export { recordToExcelExport, RECORD_NEVER_VALUE };
  export { ErrorBoundary } from "react-declarative/components";
  export { AutoSizer } from "react-declarative/components";
  export { ActionStopIcon } from "react-declarative/components";
  export { ActionTrigger } from "react-declarative/components";
  export { ActionFilter } from "react-declarative/components";
  export { ActionButton } from "react-declarative/components";
  export { ActionToggle } from "react-declarative/components";
  export { ActionGroup } from "react-declarative/components";
  export { ActionMenu } from "react-declarative/components";
  export { ActionIcon } from "react-declarative/components";
  export { ActionFab } from "react-declarative/components";
  export { ActionChip } from "react-declarative/components";
  export { ActionBounce, ActionState } from "react-declarative/components";
  export {
    ActionModal,
    useActionModal,
    useActionModalTyped,
  } from "react-declarative/components";
  export {
    SearchModal,
    useSearchModal,
    useSearchModalTyped,
  } from "react-declarative/components";
  import { IMasterDetailOption as IMasterDetailOptionInternal } from "react-declarative/components";
  import { MasterDetailMode as MasterDetailModeInternal } from "react-declarative/components";
  export type IMasterDetailOption<Payload = any> =
    IMasterDetailOptionInternal<Payload>;
  export const MasterDetailMode: typeof MasterDetailModeInternal;
  import {
    IOutlet as IOutletInternal,
    IOutletProps as IOutletPropsInternal,
    IOutletModalProps as IOutletModalPropsInternal,
    IOutletModal as IOutletModalInternal,
  } from "react-declarative/components";
  export type IOutlet<
    Data = any,
    Payload = any,
    Params = any,
  > = IOutletInternal<Data, Payload, Params>;
  export type IOutletModal<
    Data = any,
    Payload = any,
    Params = any,
  > = IOutletModalInternal<Data, Payload, Params>;
  export type IOutletProps<
    Data = any,
    Payload = any,
    Params = any,
  > = IOutletPropsInternal<Data, Payload, Params>;
  export type IOutletModalProps<
    Data = any,
    Payload = any,
    Params = any,
  > = IOutletModalPropsInternal<Data, Payload, Params>;
  import {
    IWizardOutlet as IWizardOutletInternal,
    IWizardOutletProps as IWizardOutletPropsInternal,
    IWizardStep as IWizardStepInternal,
    IWizardModal as IWizardModalInternal,
    IWizardModalProps as IWizardModalPropsInternal,
  } from "react-declarative/components";
  export type IWizardStep = IWizardStepInternal;
  export type IWizardOutlet<Data = any, Payload = any> = IWizardOutletInternal<
    Data,
    Payload
  >;
  export type IWizardOutletProps<
    Data = any,
    Payload = any,
  > = IWizardOutletPropsInternal<Data, Payload>;
  export type IWizardModalProps<
    Data = any,
    Payload = any,
  > = IWizardModalPropsInternal<Data, Payload>;
  export type IWizardModal<Data = any, Payload = any> = IWizardModalInternal<
    Data,
    Payload
  >;
  import {
    ITabsOutlet as ITabsOutletInternal,
    IWizardOutletProps as ITabsOutletPropsInternal,
    ITabsStep as ITabsStepInternal,
    ITabsModal as ITabsModalInternal,
    ITabsModalProps as ITabsModalPropsInternal,
  } from "react-declarative/components";
  export type ITabsStep = ITabsStepInternal;
  export type ITabsOutlet<Data = any, Payload = any> = ITabsOutletInternal<
    Data,
    Payload
  >;
  export type ITabsOutletProps<
    Data = any,
    Payload = any,
  > = ITabsOutletPropsInternal<Data, Payload>;
  export type ITabsModalProps<
    Data = any,
    Payload = any,
  > = ITabsModalPropsInternal<Data, Payload>;
  export type ITabsModal<Data = any, Payload = any> = ITabsModalInternal<
    Data,
    Payload
  >;
  export {
    MasterDetail,
    MASTER_DETAIL_HEADER,
    MASTER_DETAIL_ROOT,
  } from "react-declarative/components";
  export { Sheet } from "react-declarative/components";
  export { Async } from "react-declarative/components";
  export { If } from "react-declarative/components";
  export { OneIcon } from "react-declarative/components";
  export { OneButton } from "react-declarative/components";
  export { List, ListTyped } from "react-declarative/components";
  export { One, OneTyped, OneConfig } from "react-declarative/components";
  export { ClassicChipListSlot } from "react-declarative/components";
  export { ClassicFilterListSlot } from "react-declarative/components";
  export { DialogFilterListSlot } from "react-declarative/components";
  export { ModalFilterListSlot } from "react-declarative/components";
  export { ModernChipListSlot } from "react-declarative/components";
  export { DenseFilterListSlot } from "react-declarative/components";
  export { DenseSearchSlot } from "react-declarative/components";
  export { ListActionAdd } from "react-declarative/components";
  export { ListActionFab } from "react-declarative/components";
  export { ListActionMenu } from "react-declarative/components";
  export { ListRules } from "react-declarative/components";
  import { Translate } from "react-declarative/components";
  export { Translate };
  export const registerTr: (
    locale?:
      | {
          [x: string]: string;
        }
      | undefined,
    transform?: ((str: string) => string) | undefined,
    config?: Partial<import("./components").ITranslateConfig> | undefined,
  ) => Translate;
  export { ModalProvider } from "react-declarative/components";
  export { SizeProvider } from "react-declarative/components";
  export { SnackProvider } from "react-declarative/components";
  import { IScaffold2Option as IScaffold2OptionInternal } from "react-declarative/components/Scaffold2";
  import { IScaffold2Action as IScaffold2ActionInternal } from "react-declarative/components/Scaffold2";
  import { IScaffold2Group as IScaffold2GroupInternal } from "react-declarative/components/Scaffold2";
  import { IScaffold2Tab as IScaffold2TabInternal } from "react-declarative/components/Scaffold2";
  export type IScaffold2Action<T = any> = IScaffold2ActionInternal<T>;
  export type IScaffold2Group<T = any> = IScaffold2GroupInternal<T>;
  export type IScaffold2Option<T = any> = IScaffold2OptionInternal<T>;
  export type IScaffold2Tab<T = any> = IScaffold2TabInternal<T>;
  import { IScaffold3Option as IScaffold3OptionInternal } from "react-declarative/components/Scaffold3";
  import { IScaffold3Action as IScaffold3ActionInternal } from "react-declarative/components/Scaffold3";
  import { IScaffold3Group as IScaffold3GroupInternal } from "react-declarative/components/Scaffold3";
  import { IScaffold3Tab as IScaffold3TabInternal } from "react-declarative/components/Scaffold3";
  export type IScaffold3Action<T = any> = IScaffold3ActionInternal<T>;
  export type IScaffold3Group<T = any> = IScaffold3GroupInternal<T>;
  export type IScaffold3Option<T = any> = IScaffold3OptionInternal<T>;
  export type IScaffold3Tab<T = any> = IScaffold3TabInternal<T>;
  import { Breadcrumbs2Type as Breadcrumbs2TypeInternal } from "react-declarative/components/Breadcrumbs2";
  import { IBreadcrumbs2Action as IBreadcrumbs2ActionInternal } from "react-declarative/components/Breadcrumbs2";
  import { IBreadcrumbs2Option as IBreadcrumbs2OptionInternal } from "react-declarative/components/Breadcrumbs2";
  export const Breadcrumbs2Type: typeof Breadcrumbs2TypeInternal;
  export type IBreadcrumbs2Action<Data = any> =
    IBreadcrumbs2ActionInternal<Data>;
  export type IBreadcrumbs2Option<Data = any> =
    IBreadcrumbs2OptionInternal<Data>;
  export { Scaffold } from "react-declarative/components";
  export { Scaffold2 } from "react-declarative/components";
  export { Scaffold3 } from "react-declarative/components";
  export { Countdown } from "react-declarative/components";
  export { Spinner } from "react-declarative/components";
  export { Grid } from "react-declarative/components";
  export { Tile, TileCheckbox } from "react-declarative/components";
  export { CopyButton } from "react-declarative/components";
  export { Copy } from "react-declarative/components";
  export { Chip } from "react-declarative/components";
  export { Map } from "react-declarative/components";
  export {
    OneSlotFactory,
    OneDefaultSlots,
  } from "react-declarative/components";
  export {
    isBaseline,
    isBaselineSimple,
    isBaselineForRoot,
  } from "react-declarative/components";
  export {
    ListSlotFactory,
    ListDefaultSlots,
  } from "react-declarative/components";
  export { Breadcrumbs } from "react-declarative/components";
  export { Breadcrumbs2 } from "react-declarative/components";
  export { Switch } from "react-declarative/components";
  export { Center } from "react-declarative/components";
  export { Square } from "react-declarative/components";
  export { SubjectBinding } from "react-declarative/components";
  export { Dot } from "react-declarative/components";
  export { ScrollAdjust } from "react-declarative/components";
  export { NoSsr } from "react-declarative/components";
  export { OtherComboSlot } from "react-declarative/components";
  export { OtherItemsSlot } from "react-declarative/components";
  export { useHistoryStatePagination } from "react-declarative/components";
  export { useCachedPaginator } from "react-declarative/components";
  export { useArrayPaginator } from "react-declarative/components";
  export { useListSelection } from "react-declarative/components";
  export { useListAction } from "react-declarative/components";
  export { useListModalSort } from "react-declarative/components";
  export { useListDropFilters } from "react-declarative/components";
  export { useListStateAction } from "react-declarative/components";
  export { useListUpsertManager } from "react-declarative/components";
  export { useListToggleHandler } from "react-declarative/components";
  export { useListIntersectionConnect } from "react-declarative/components";
  export { useListIntersectionStorage } from "react-declarative/components";
  export { useListIntersectionListen } from "react-declarative/components";
  export { useApiPaginator } from "react-declarative/components";
  export { useCursorPaginator } from "react-declarative/components";
  export { useOffsetPaginator } from "react-declarative/components";
  export { useGridAction } from "react-declarative/components";
  export { useGridSelection } from "react-declarative/components";
  export { useGridProps } from "react-declarative/components";
  export { useLastPagination } from "react-declarative/components";
  export { useQueryPagination } from "react-declarative/components";
  export { usePreventNavigate } from "react-declarative/components";
  export { useStaticHandler } from "react-declarative/components";
  export { usePreventLeave } from "react-declarative/components";
  export { usePreventAction } from "react-declarative/components";
  export { useLocalHandler } from "react-declarative/components";
  export { useApiHandler } from "react-declarative/components";
  export { useFeatureView } from "react-declarative/components";
  export { useVisibilityView } from "react-declarative/components";
  export { useFilesView } from "react-declarative/components";
  export { useOutletModal } from "react-declarative/components";
  export { useWizardModal } from "react-declarative/components";
  export { createField, makeField } from "react-declarative/components";
  export { createLayout, makeLayout } from "react-declarative/components";
  export {
    useListProps,
    useListCachedRows,
    useListPayload,
    useListChips,
    useListReload,
    useListSelectionState,
  } from "react-declarative/components";
  export {
    useOneProps,
    useOneState,
    useOnePayload,
    useOneFeatures,
    useOneRadio,
    useOneContext,
    useOneMenu,
  } from "react-declarative/components";
  export { useActualCallback };
  export { useActualValue };
  export { useActualState };
  export { useActualRef };
  export { useRenderWaiter };
  export { useOneArray };
  export { oneArrayIncludes };
  export { isOneArray };
  export { toOneArray };
  export { useChangeSubject };
  export { useDeepChangeSubject };
  export { useReloadTrigger };
  export { useSinglerunAction };
  export { useAsyncAction };
  export { useAsyncValue };
  export { useAsyncProgress };
  export { useQueuedAction };
  export { useMediaContext };
  export { useAudioPlayer };
  export { useBehaviorSubject };
  export { useSubjectValue };
  export { useSubscription };
  export { useSingleton };
  export { useSubject };
  export { useChange };
  export { useModel };
  export { useEntity };
  export { useListEditor };
  export { useCollection };
  export { useMediaStreamBuilder };
  export { useRequestSnackbar };
  export { useActionSnackbar };
  export { useOne, useOneTyped };
  export { useDate, useTime };
  export { useConfirm };
  export { usePrompt };
  export { useAlert };
  export { useSnack };
  export { useModal };
  export { useSize };
  export { useList };
  export { useFile };
  import { IOnePublicProps as IOnePublicPropsInternal } from "react-declarative/model/IOnePublicProps";
  export type IOnePublicProps<
    Data = IAnything,
    Field extends IField<Data> = IField<Data>,
  > = IOnePublicPropsInternal<Data, Field>;
  import { ICheckBoxSlot as ICheckBoxSlotInternal } from "react-declarative/components";
  import { IYesNoSlot as IYesNoSlotInternal } from "react-declarative/components";
  import { IComboSlot as IComboSlotInternal } from "react-declarative/components";
  import { IItemsSlot as IItemsSlotInternal } from "react-declarative/components";
  import { ILineSlot as ILineSlotInternal } from "react-declarative/components";
  import { IProgressSlot as IProgressSlotInternal } from "react-declarative/components";
  import { IRadioSlot as IRadioSlotInternal } from "react-declarative/components";
  import { IDateSlot as IDateSlotInternal } from "react-declarative/components";
  import { ITimeSlot as ITimeSlotInternal } from "react-declarative/components";
  import { IFileSlot as IFileSlotInternal } from "react-declarative/components";
  import { IDictSlot as IDictSlotInternal } from "react-declarative/components";
  import { ITreeSlot as ITreeSlotInternal } from "react-declarative/components";
  import { IChooseSlot as IChooseSlotIntetnal } from "react-declarative/components";
  import { IRatingSlot as IRatingSlotInternal } from "react-declarative/components";
  import { ISliderSlot as ISliderSlotInternal } from "react-declarative/components";
  import { ISwitchSlot as ISwitchSlotInternal } from "react-declarative/components";
  import { ITextSlot as ITextSlotInternal } from "react-declarative/components";
  import { ICompleteSlot as ICompleteSlotInternal } from "react-declarative/components";
  import { ITypographySlot as ITypographySlotInternal } from "react-declarative/components";
  import { IButtonSlot as IButtonSlotInternal } from "react-declarative/components";
  import { IActionAddSlot as IActionAddSlotInternal } from "react-declarative/components";
  import { IActionFabSlot as IActionFabSlotInternal } from "react-declarative/components";
  import { IActionMenuSlot as IActionMenuSlotInternal } from "react-declarative/components";
  import { IBodyRowSlot as IBodyRowSlotInternal } from "react-declarative/components";
  import { ICheckboxCellSlot as ICheckboxCellSlotInternal } from "react-declarative/components";
  import { ICommonCellSlot as ICommonCellSlotInternal } from "react-declarative/components";
  import { IHeadRowSlot as IHeadRowSlotInternal } from "react-declarative/components";
  import { IActionListSlot as IActionListSlotInternal } from "react-declarative/components";
  import { IChipListSlot as IChipListSlotInternal } from "react-declarative/components";
  import { IFilterListSlot as IFilterListSlotInternal } from "react-declarative/components";
  import { ISearchSlot as ISearchSlotInternal } from "react-declarative/components";
  import { IOperationListSlot as IOperationListSlotInternal } from "react-declarative/components";
  import { IPositionActionListSlot as IPositionActionListSlotInternal } from "react-declarative/model/IListProps";
  import { History as HistoryInternal } from "react-declarative/model/History";
  export type History = HistoryInternal;
  export type ICheckBoxSlot = ICheckBoxSlotInternal;
  export type IButtonSlot = IButtonSlotInternal;
  export type IComboSlot = IComboSlotInternal;
  export type IYesNoSlot = IYesNoSlotInternal;
  export type IItemsSlot = IItemsSlotInternal;
  export type ILineSlot = ILineSlotInternal;
  export type IProgressSlot = IProgressSlotInternal;
  export type IRadioSlot = IRadioSlotInternal;
  export type IRatingSlot = IRatingSlotInternal;
  export type ISliderSlot = ISliderSlotInternal;
  export type ISwitchSlot = ISwitchSlotInternal;
  export type ITextSlot = ITextSlotInternal;
  export type IDateSlot = IDateSlotInternal;
  export type ITimeSlot = ITimeSlotInternal;
  export type IFileSlot = IFileSlotInternal;
  export type IDictSlot = IDictSlotInternal;
  export type ITreeSlot = ITreeSlotInternal;
  export type IChooseSlot = IChooseSlotIntetnal;
  export type ITypographySlot = ITypographySlotInternal;
  export type ICompleteSlot = ICompleteSlotInternal;
  export type IActionAddSlot = IActionAddSlotInternal;
  export type IActionFabSlot = IActionFabSlotInternal;
  export type IActionMenuSlot = IActionMenuSlotInternal;
  export type IBodyRowSlot = IBodyRowSlotInternal;
  export type ICheckboxCellSlot = ICheckboxCellSlotInternal;
  export type ICommonCellSlot = ICommonCellSlotInternal;
  export type IHeadRowSlot = IHeadRowSlotInternal;
  export type IActionListSlot = IActionListSlotInternal;
  export type IChipListSlot = IChipListSlotInternal;
  export type IFilterListSlot = IFilterListSlotInternal;
  export type ISearchSlot = ISearchSlotInternal;
  export type IOperationListSlot = IOperationListSlotInternal;
  export type IPositionActionListSlot = IPositionActionListSlotInternal;
  import type { IAwaiter as IAwaiterInternal } from "react-declarative/utils/createAwaiter";
  export type IAwaiter<T extends IAnything> = IAwaiterInternal<T>;
  export { list2grid } from "react-declarative/utils/list2grid";
  export { openBlank } from "react-declarative/utils/openBlank";
  export { createDict } from "react-declarative/utils/createDict";
  export { createAwaiter } from "react-declarative/utils/createAwaiter";
  export { createPointer } from "react-declarative/utils/oop/Pointer";
  export { copyToClipboard } from "react-declarative/utils/copyToClipboard";
  export { downloadBlank } from "react-declarative/utils/downloadBlank";
  export { removeSubstring } from "react-declarative/utils/removeSubstring";
  export { randomString } from "react-declarative/utils/randomString";
  export { chooseFile } from "react-declarative/utils/chooseFile";
  export { loadScript } from "react-declarative/utils/loadScript";
  export { reloadPage } from "react-declarative/utils/reloadPage";
  export { compareFulltext } from "react-declarative/utils/compareFulltext";
  export {
    promiseState,
    promiseValue,
  } from "react-declarative/utils/promiseState";
  export { chooseMultipleFiles } from "react-declarative/utils/chooseMultipleFiles";
  export { preventBrowserHistorySwipeGestures } from "react-declarative/utils/preventBrowserHistorySwipeGestures";
  export { errorData } from "react-declarative/utils/errorData";
  export { getMediaContext } from "react-declarative/utils/getMediaContext";
  export { getRouteParams } from "react-declarative/utils/getRouteParams";
  export { getRouteItem } from "react-declarative/utils/getRouteItem";
  export { getElementFromXPath } from "react-declarative/utils/getElementFromXPath";
  export { getXPathFromElement } from "react-declarative/utils/getXPathFromElement";
  export { arrays } from "react-declarative/utils/arrays";
  export { objects } from "react-declarative/utils/objects";
  export { compareArray } from "react-declarative/utils/compareArray";
  export { isObject } from "react-declarative/utils/isObject";
  export { FetchError, fetchApi } from "react-declarative/utils/fetchApi";
  export { createValueProvider } from "react-declarative/utils/createValueProvider";
  export { createStateProvider } from "react-declarative/utils/createStateProvider";
  export { createSsStateProvider } from "react-declarative/utils/createSsStateProvider";
  export { createLsStateProvider } from "react-declarative/utils/createLsStateProvider";
  export { normalizeText } from "react-declarative/utils/normalizeText";
  export { formatText } from "react-declarative/utils/formatText";
  export { roundTicks } from "react-declarative/utils/roundTicks";
  export { wordForm } from "react-declarative/utils/wordForm";
  export {
    scaleRect,
    createScaleRect,
  } from "react-declarative/utils/scaleRect";
  export {
    scaleToSize,
    createScaleToSize,
  } from "react-declarative/utils/scaleToSize";
  export { timeout, TIMEOUT_SYMBOL } from "react-declarative/utils/hof/timeout";
  export { waitForNext } from "react-declarative/utils/hof/waitForNext";
  export { obsolete } from "react-declarative/utils/hof/obsolete";
  export { singleshot } from "react-declarative/utils/hof/singleshot";
  export { singletick } from "react-declarative/utils/hof/singletick";
  export { afterinit } from "react-declarative/utils/hof/afterinit";
  export { execpool } from "react-declarative/utils/hof/execpool";
  export { retry } from "react-declarative/utils/hof/retry";
  export { singlerun, Task } from "react-declarative/utils/hof/singlerun";
  export {
    cancelable,
    CANCELED_SYMBOL as CANCELED_PROMISE_SYMBOL,
  } from "react-declarative/utils/hof/cancelable";
  export { debounce } from "react-declarative/utils/hof/debounce";
  export { queued } from "react-declarative/utils/hof/queued";
  export { lock } from "react-declarative/utils/hof/lock";
  export { cached } from "react-declarative/utils/hof/cached";
  export { memoize } from "react-declarative/utils/hof/memoize";
  export { trycatch } from "react-declarative/utils/hof/trycatch";
  export { ttl } from "react-declarative/utils/hof/ttl";
  export { sleep } from "react-declarative/utils/sleep";
  export { deepFlat } from "react-declarative/utils/deepFlat";
  export { BehaviorSubject } from "react-declarative/utils/rx/BehaviorSubject";
  export { EventEmitter } from "react-declarative/utils/rx/EventEmitter";
  export { Observer } from "react-declarative/utils/rx/Observer";
  export { Operator } from "react-declarative/utils/rx/Operator";
  export { Subject } from "react-declarative/utils/rx/Subject";
  export { Source } from "react-declarative/utils/rx/Source";
  export { has } from "react-declarative/utils/math/has";
  export { and } from "react-declarative/utils/math/and";
  export { or } from "react-declarative/utils/math/or";
  export { not } from "react-declarative/utils/math/not";
  export { match } from "react-declarative/utils/math/match";
  export { first } from "react-declarative/utils/math/first";
  export { join } from "react-declarative/utils/math/join";
  export { last } from "react-declarative/utils/math/last";
  export { truely } from "react-declarative/utils/math/truely";
  export { getAvailableFields } from "react-declarative/utils/getAvailableFields";
  export { getInitialData } from "react-declarative/utils/getInitialData";
  export { getFilterCount } from "react-declarative/utils/getFilterCount";
  export { getInvalidFields } from "react-declarative/utils/getInvalidFields";
  export { getFieldsError } from "react-declarative/utils/getFieldsError";
  export { getFieldVariant } from "react-declarative/utils/getFieldVariant";
  export { isInvalidFieldData } from "react-declarative/utils/isInvalidFieldData";
  export { flatArray } from "react-declarative/utils/flatArray";
  export { removeExtraSpaces } from "react-declarative/utils/removeExtraSpaces";
  export { replaceSubstring } from "react-declarative/utils/replaceSubstring";
  import TSubjectInternal from "react-declarative/model/TSubject";
  import TBehaviorSubjectInternal from "react-declarative/model/TBehaviorSubject";
  import TObserverInternal, {
    TObservable as TObservableInternal,
  } from "react-declarative/model/TObserver";
  import TPaginatorInternal from "react-declarative/model/TPaginator";
  import TOffsetPaginatorInternal from "react-declarative/model/TOffsetPaginator";
  import TCursorPaginatorInternal from "react-declarative/model/TCursorPaginator";
  export type TSubject<Data = void> = TSubjectInternal<Data>;
  export type TObserver<Data = void> = TObserverInternal<Data>;
  export type TObservable<Data = void> = TObservableInternal<Data>;
  export type TBehaviorSubject<Data = unknown> = TBehaviorSubjectInternal<Data>;
  export type TPaginator<
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload = any,
  > = TPaginatorInternal<FilterData, RowData, Payload>;
  export type TOffsetPaginator<
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload = any,
  > = TOffsetPaginatorInternal<FilterData, RowData, Payload>;
  export type TCursorPaginator<
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload = any,
  > = TCursorPaginatorInternal<FilterData, RowData, Payload>;
  export { getErrorMessage } from "react-declarative/utils/getErrorMessage";
  import {
    IEntityAdapter as IEntityAdapterInternal,
    IEntity as IMvvmEntity,
  } from "react-declarative/utils/mvvm/Entity";
  import { ICollectionAdapter as ICollectionAdapterInternal } from "react-declarative/utils/mvvm/Collection";
  import { IModelAdapter as IModelAdapterInternal } from "react-declarative/utils/mvvm/Model";
  export type ICollectionAdapter<T extends IMvvmEntity = any> =
    ICollectionAdapterInternal<T>;
  export type IEntityAdapter<T extends IMvvmEntity = any> =
    IEntityAdapterInternal<T>;
  export type IModelAdapter<T extends {} = any> = IModelAdapterInternal<T>;
  export {
    Collection,
    EntityNotFoundError,
  } from "react-declarative/utils/mvvm/Collection";
  export { Entity } from "react-declarative/utils/mvvm/Entity";
  export { Model } from "react-declarative/utils/mvvm/Model";
  export { formatAmount } from "react-declarative/utils/formatAmount";
  export { templateStr } from "react-declarative/utils/templateStr";
  export { formatStr } from "react-declarative/utils/formatStr";
  export { createWindowHistory } from "react-declarative/utils/createWindowHistory";
  export { createManagedHistory } from "react-declarative/utils/createManagedHistory";
  export { createLsManager } from "react-declarative/utils/createLsManager";
  export { createSsManager } from "react-declarative/utils/createSsManager";
  export { createSsSet } from "react-declarative/utils/createSsSet";
  export { createLsSet } from "react-declarative/utils/createLsSet";
  export { createCustomTag } from "react-declarative/utils/createCustomTag";
  export { mainColor } from "react-declarative/utils/mainColor";
  export { cacheSrc } from "react-declarative/utils/cacheSrc";
  export {
    parseBase64Json,
    stringifyBase64Json,
  } from "react-declarative/utils/base64Json";
  export {
    parseAsciiParams,
    serializeAsciiParams,
  } from "react-declarative/utils/asciiParams";
  export { fromBytes32, toBytes32 } from "react-declarative/utils/asciiParams";
  import * as datetimeInternal from "react-declarative/utils/datetime";
  export { waitForMove } from "react-declarative/utils/waitForMove";
  export const typo: {
    thinsp: " ";
    nbsp: " ";
    emdash: "—";
    endash: "–";
    terminator: "\0";
    bullet: "•";
  };
  export const datetime: {
    DATE_PLACEHOLDER: "DD/MM/YYYY";
    TIME_PLACEHOLDER: "HH:MM";
    DATE_EXPR: RegExp;
    TIME_EXPR: RegExp;
    Time: typeof datetimeInternal.Time;
    Date: typeof datetimeInternal.Date;
    parseDate: (date: string | null) => datetimeInternal.Date | null;
    serializeDate: (date: datetimeInternal.Date | null) => string | null;
    parseTime: (time: string | null) => datetimeInternal.Time | null;
    serializeTime: (time: datetimeInternal.Time | null) => string | null;
    currentDate: () => string;
    currentTime: () => string;
    timeStamp: (str?: string) => number;
    dateStamp: (str?: string) => number;
  };
  export const crypt: {
    crypt: (salt: any, text: any) => any;
    decrypt: (salt: any, encoded: any) => any;
  };
  export { compose } from "react-declarative/utils/compose";
  export {
    getMomentStamp,
    fromMomentStamp,
  } from "react-declarative/utils/getMomentStamp";
  export {
    getTimeStamp,
    fromTimeStamp,
  } from "react-declarative/utils/getTimeStamp";
  export { getGenesisStamp } from "react-declarative/utils/getGenesisStamp";
  export { toUtcDate } from "react-declarative/utils/toUtcDate";
  export {
    addUtcOffset,
    removeUtcOffset,
  } from "react-declarative/utils/addUtcOffset";
  export { paginateDocuments } from "react-declarative/api/paginateDocuments";
  export { distinctDocuments } from "react-declarative/api/distinctDocuments";
  export { resolveDocuments } from "react-declarative/api/resolveDocuments";
  export { filterDocuments } from "react-declarative/api/filterDocuments";
  export { pickDocuments } from "react-declarative/api/pickDocuments";
  export { mapDocuments } from "react-declarative/api/mapDocuments";
  export { iterateDocuments } from "react-declarative/api/iterateDocuments";
  export { iteratePromise } from "react-declarative/api/iteratePromise";
  export { iterateUnion } from "react-declarative/api/iterateUnion";
  export { iterateList } from "react-declarative/api/iterateList";
  export { useOpenDocument } from "react-declarative/view/useOpenDocument";
  export { heavy } from "react-declarative/utils/heavy";
  export { useDebounce } from "react-declarative/components/One/hooks/useDebounce";
  export { useDebouncedCallback } from "react-declarative/components/One/hooks/useDebouncedCallback";
  export { DatePicker } from "react-declarative/components/common/DatePicker/DatePicker";
  export { TimePicker } from "react-declarative/components/common/TimePicker/TimePicker";
  export { VirtualListBox } from "react-declarative/components/One/components/common/VirtualListBox";
  export {
    MetroView,
    IMetroGroup,
    IMetroRoute,
  } from "react-declarative/components";
}

declare module "react-declarative/components" {
  /**
   * The TypeScript code is a bunch of export statements.
   *
   * This file behaves as a central hub for exporting values (like components, functions, or variables) from individual modules. Each `export * from './ModuleName';` statement takes all exports from a corresponding module file and re-exports them.
   *
   * Let's break down each line:
   *
   * `export * from './One';` - This line of code is exporting everything that the file `One.ts` (or `One.tsx`, `One.js`, `One.jsx` depending on your setup) exports, from its current location. The same goes for all the other lines as well.
   *
   * So if `./One` was exporting a function called `function1` like this:
   *
   * ```typescript
   * export function function1() {
   *     return "I'm function 1";
   * }
   * ```
   * Then, with this export in the main file, you will be able to import it elsewhere like:
   *
   * ```typescript
   * import { function1 } from './theMainFile';
   * ```
   *
   * This kind of structure is used to streamline imports in larger projects, where you want to import many things from one place rather than from individual files.
   */
  export * from "react-declarative/components/One";
  export * from "react-declarative/components/OneIcon";
  export * from "react-declarative/components/OneButton";
  export * from "react-declarative/components/Sheet";
  export * from "react-declarative/components/Dot";
  export * from "react-declarative/components/List";
  export * from "react-declarative/components/NoSsr";
  export * from "react-declarative/components/Switch";
  export * from "react-declarative/components/Center";
  export * from "react-declarative/components/Square";
  export * from "react-declarative/components/Scaffold";
  export * from "react-declarative/components/Scaffold2";
  export * from "react-declarative/components/Scaffold3";
  export * from "react-declarative/components/Translate";
  export * from "react-declarative/components/Breadcrumbs";
  export * from "react-declarative/components/Breadcrumbs2";
  export * from "react-declarative/components/ErrorBoundary";
  export * from "react-declarative/components/ColorButton";
  export * from "react-declarative/components/ActionChip";
  export * from "react-declarative/components/ActionMenu";
  export * from "react-declarative/components/ActionGroup";
  export * from "react-declarative/components/ActionButton";
  export * from "react-declarative/components/ActionBounce";
  export * from "react-declarative/components/ActionStopIcon";
  export * from "react-declarative/components/ActionFab";
  export * from "react-declarative/components/ActionFilter";
  export * from "react-declarative/components/ActionTrigger";
  export * from "react-declarative/components/ActionIcon";
  export * from "react-declarative/components/ActionToggle";
  export * from "react-declarative/components/ActionModal";
  export * from "react-declarative/components/SearchModal";
  export * from "react-declarative/components/SearchView";
  export * from "react-declarative/components/SizeProvider";
  export * from "react-declarative/components/ModalProvider";
  export * from "react-declarative/components/SnackProvider";
  export * from "react-declarative/components/ConstraintView";
  export * from "react-declarative/components/ScrollTopView";
  export * from "react-declarative/components/OutletView";
  export * from "react-declarative/components/AlertView";
  export * from "react-declarative/components/PaperView";
  export * from "react-declarative/components/DragDropView";
  export * from "react-declarative/components/DropAreaView";
  export * from "react-declarative/components/FilesView";
  export * from "react-declarative/components/ScrollView";
  export * from "react-declarative/components/ScaleView";
  export * from "react-declarative/components/AutoSizer";
  export * from "react-declarative/components/FadeView";
  export * from "react-declarative/components/TabsView";
  export * from "react-declarative/components/FetchView";
  export * from "react-declarative/components/WaitView";
  export * from "react-declarative/components/PingView";
  export * from "react-declarative/components/HtmlView";
  export * from "react-declarative/components/OfflineView";
  export * from "react-declarative/components/MetroView";
  export * from "react-declarative/components/RevealView";
  export * from "react-declarative/components/SecretView";
  export * from "react-declarative/components/VisibilityView";
  export * from "react-declarative/components/WizardView";
  export * from "react-declarative/components/PortalView";
  export * from "react-declarative/components/RecordView";
  export * from "react-declarative/components/ErrorView";
  export * from "react-declarative/components/AuthView";
  export * from "react-declarative/components/CardView";
  export * from "react-declarative/components/KanbanView";
  export * from "react-declarative/components/ReloadView";
  export * from "react-declarative/components/InfiniteView";
  export * from "react-declarative/components/VirtualView";
  export * from "react-declarative/components/LoaderView";
  export * from "react-declarative/components/FeatureView";
  export * from "react-declarative/components/CalendarView";
  export * from "react-declarative/components/DocumentView";
  export * from "react-declarative/components/ImageView";
  export * from "react-declarative/components/TreeView";
  export * from "react-declarative/components/GridView";
  export * from "react-declarative/components/ChatView";
  export * from "react-declarative/components/RoiView";
  export * from "react-declarative/components/Grid";
  export * from "react-declarative/components/Tile";
  export * from "react-declarative/components/Spinner";
  export * from "react-declarative/components/Async";
  export * from "react-declarative/components/Copy";
  export * from "react-declarative/components/If";
  export * from "react-declarative/components/Map";
  export * from "react-declarative/components/CopyButton";
  export * from "react-declarative/components/SubjectBinding";
  export * from "react-declarative/components/Countdown";
  export * from "react-declarative/components/Chip";
  export * from "react-declarative/components/ScrollAdjust";
  export * from "react-declarative/components/MasterDetail";
}

declare module "react-declarative/model/ISize" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents a size with height and width dimensions.
   *
   * @interface
   */
  export interface ISize {
    height: number;
    width: number;
  }
  /**
   * Type definition for a callback function that handles size and data changes.
   *
   * @template Data - The type of data being passed to the callback function.
   * @param data - The data being passed to the callback function.
   * @param size - The size information.
   * @param ref - The reference to the HTML div element.
   * @returns A string representing the result of the callback function.
   */
  export type ISizeCallback<Data = IAnything> = (
    data: Data,
    size: ISize,
    ref: HTMLDivElement,
  ) => string;
  export default ISize;
}

declare module "react-declarative/model/TypedField" {
  import IManaged, { IManagedShallow } from "react-declarative/model/IManaged";
  import IEntity from "react-declarative/model/IEntity";
  import FieldType from "react-declarative/model/FieldType";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Компоновки
   */
  import { IFragmentLayoutProps } from "react-declarative/components/One/layouts/FragmentLayout";
  import { IDivLayoutProps } from "react-declarative/components/One/layouts/DivLayout";
  import { IBoxLayoutProps } from "react-declarative/components/One/layouts/BoxLayout";
  import { ITabsLayoutProps } from "react-declarative/components/One/layouts/TabsLayout";
  import { ICenterLayoutProps } from "react-declarative/components/One/layouts/CenterLayout";
  import { IStretchLayoutProps } from "react-declarative/components/One/layouts/StretchLayout";
  import { IGroupLayoutProps } from "react-declarative/components/One/layouts/GroupLayout";
  import { IOutlineLayoutProps } from "react-declarative/components/One/layouts/OutlineLayout";
  import { IPaperLayoutProps } from "react-declarative/components/One/layouts/PaperLayout";
  import { IExpansionLayoutProps } from "react-declarative/components/One/layouts/ExpansionLayout";
  import { IHeroLayoutProps } from "react-declarative/components/One/layouts/HeroLayout";
  import { IConditionLayoutProps } from "react-declarative/components/One/layouts/ConditionLayout";
  import { ICustomLayoutProps } from "react-declarative/components/One/layouts/CustomLayout";
  /**
   * Поля ввода
   */
  import { ICheckboxFieldProps } from "react-declarative/components/One/fields/CheckboxField";
  import { IIconFieldProps } from "react-declarative/components/One/fields/IconField";
  import { IButtonFieldProps } from "react-declarative/components/One/fields/ButtonField";
  import { IFileFieldProps } from "react-declarative/components/One/fields/FileField";
  import { IComboFieldProps } from "react-declarative/components/One/fields/ComboField";
  import { IComponentFieldProps } from "react-declarative/components/One/fields/ComponentField";
  import { IItemsFieldProps } from "react-declarative/components/One/fields/ItemsField";
  import { ILineFieldProps } from "react-declarative/components/One/fields/LineField";
  import { IProgressFieldProps } from "react-declarative/components/One/fields/ProgressField";
  import { IRadioFieldProps } from "react-declarative/components/One/fields/RadioField";
  import { IRatingFieldProps } from "react-declarative/components/One/fields/RatingField";
  import { ISliderFieldProps } from "react-declarative/components/One/fields/SliderField";
  import { ISwitchFieldProps } from "react-declarative/components/One/fields/SwitchField";
  import { ITextFieldProps } from "react-declarative/components/One/fields/TextField";
  import { IDateFieldProps } from "react-declarative/components/One/fields/DateField";
  import { ITimeFieldProps } from "react-declarative/components/One/fields/TimeField";
  import { ICompleteFieldProps } from "react-declarative/components/One/fields/CompleteField";
  import { ITypographyFieldProps } from "react-declarative/components/One/fields/TypographyField";
  import { IChooseFieldProps } from "react-declarative/components/One/fields/ChooseField";
  import { IYesNoFieldProps } from "react-declarative/components/One/fields/YesNoField";
  import { IInitFieldProps } from "react-declarative/components/One/fields/InitField";
  import { IDictFieldProps } from "react-declarative/components/One/fields/DictField";
  import { ITreeFieldProps } from "react-declarative/components/One/fields/TreeField";
  /**
   * Исключения из правила
   */
  import { IPhonyField } from "react-declarative/model/IPhonyField";
  /**
   * Represents a class that excludes certain properties from a given type.
   *
   * @template Data - The type of data for the managed object.
   * @template Payload - The type of payload for the managed object.
   * @type Exclude<Data, Payload>
   */
  type Exclude<Data = IAnything, Payload = IAnything> = Omit<
    IManaged<Data, Payload>,
    keyof IEntity<Data, Payload>
  >;
  /**
   * A factory class for creating typed fields.
   *
   * @template Type - The type of field.
   * @template Fields - The interface for the fields.
   * @template Data - The type of data.
   * @template Payload - The type of payload.
   */
  type TypedFieldFactory<
    Type extends FieldType,
    Fields extends {},
    Data = IAnything,
    Payload = IAnything,
  > = {
    [Prop in keyof Omit<Fields, keyof Exclude<Data, Payload>>]?: Fields[Prop];
  } & {
    type: Type;
  };
  /**
   * Represents a factory for creating typed fields with a shallow data structure.
   *
   * @template Type - The type of the field.
   * @template Fields - The field definitions.
   * @template Data - The data type.
   * @template Payload - The payload type.
   *
   * @typedef TypedFieldFactoryShallow
   * @property Type - The type of the field.
   * @property Fields - The field definitions.
   * @property Data - The data type.
   * @property Payload - The payload type.
   */
  type TypedFieldFactoryShallow<
    Type extends FieldType,
    Fields extends {},
    Data = IAnything,
    Payload = IAnything,
  > = IManagedShallow<Data, Payload> &
    TypedFieldFactory<Type, Fields, Data, Payload>;
  type Group<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Group,
    IGroupLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Custom<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Layout,
    ICustomLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Paper<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Paper,
    IPaperLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Outline<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Outline,
    IOutlineLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Expansion<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Expansion,
    IExpansionLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Fragment<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Fragment,
    IFragmentLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Div<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Div,
    IDivLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Box<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Box,
    IBoxLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Tabs<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Tabs,
    ITabsLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Hero<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Hero,
    IHeroLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Center<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Center,
    ICenterLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Stretch<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Stretch,
    IStretchLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Condition<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Condition,
    IConditionLayoutProps<Data, Payload>,
    Data,
    Payload
  >;
  type Line<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
    FieldType.Line,
    ILineFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Checkbox<
    Data = IAnything,
    Payload = IAnything,
  > = TypedFieldFactoryShallow<
    FieldType.Checkbox,
    ICheckboxFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Icon<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Icon,
    IIconFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Button<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Button,
    IButtonFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Combo<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Combo,
    IComboFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Component<
    Data = IAnything,
    Payload = IAnything,
  > = TypedFieldFactoryShallow<
    FieldType.Component,
    IComponentFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Items<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Items,
    IItemsFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Progress<
    Data = IAnything,
    Payload = IAnything,
  > = TypedFieldFactoryShallow<
    FieldType.Progress,
    IProgressFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Radio<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Radio,
    IRadioFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Rating<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Rating,
    IRatingFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Slider<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Slider,
    ISliderFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Switch<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Switch,
    ISwitchFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Text<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Text,
    ITextFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type File<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.File,
    IFileFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Choose<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Choose,
    IChooseFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type YesNo<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.YesNo,
    IYesNoFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Init<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Init,
    IInitFieldProps,
    Data,
    Payload
  >;
  type Phony<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Phony,
    IPhonyField,
    Data,
    Payload
  >;
  type Dict<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Dict,
    IDictFieldProps,
    Data,
    Payload
  >;
  type Tree<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Tree,
    ITreeFieldProps,
    Data,
    Payload
  >;
  type Date<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Date,
    IDateFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Time<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
    FieldType.Time,
    ITimeFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Complete<
    Data = IAnything,
    Payload = IAnything,
  > = TypedFieldFactoryShallow<
    FieldType.Complete,
    ICompleteFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  type Typography<
    Data = IAnything,
    Payload = IAnything,
  > = TypedFieldFactoryShallow<
    FieldType.Typography,
    ITypographyFieldProps<Data, Payload>,
    Data,
    Payload
  >;
  /**
   * Логическое ветвление компонентов
   * Typescript type-guard
   */
  export type TypedFieldRegistry<
    Data = IAnything,
    Payload = IAnything,
    Target = any,
  > =
    Target extends Expansion<Data, Payload>
      ? Expansion<Data, Payload>
      : Target extends Group<Data, Payload>
        ? Group<Data, Payload>
        : Target extends Paper<Data, Payload>
          ? Paper<Data, Payload>
          : Target extends Outline<Data, Payload>
            ? Outline<Data, Payload>
            : Target extends Checkbox<Data, Payload>
              ? Checkbox<Data, Payload>
              : Target extends Button<Data, Payload>
                ? Button<Data, Payload>
                : Target extends Icon<Data, Payload>
                  ? Icon<Data, Payload>
                  : Target extends Combo<Data, Payload>
                    ? Combo<Data, Payload>
                    : Target extends Component<Data, Payload>
                      ? Component<Data, Payload>
                      : Target extends Items<Data, Payload>
                        ? Items<Data, Payload>
                        : Target extends Line<Data, Payload>
                          ? Line<Data, Payload>
                          : Target extends Progress<Data, Payload>
                            ? Progress<Data, Payload>
                            : Target extends Radio<Data, Payload>
                              ? Radio<Data, Payload>
                              : Target extends Rating<Data, Payload>
                                ? Rating<Data, Payload>
                                : Target extends Slider<Data, Payload>
                                  ? Slider<Data, Payload>
                                  : Target extends Switch<Data, Payload>
                                    ? Switch<Data, Payload>
                                    : Target extends Text<Data, Payload>
                                      ? Text<Data, Payload>
                                      : Target extends File<Data, Payload>
                                        ? File<Data, Payload>
                                        : Target extends Choose<Data, Payload>
                                          ? Choose<Data, Payload>
                                          : Target extends YesNo<Data, Payload>
                                            ? YesNo<Data, Payload>
                                            : Target extends Date<Data, Payload>
                                              ? Date<Data, Payload>
                                              : Target extends Time<
                                                    Data,
                                                    Payload
                                                  >
                                                ? Time<Data, Payload>
                                                : Target extends Complete<
                                                      Data,
                                                      Payload
                                                    >
                                                  ? Complete<Data, Payload>
                                                  : Target extends Typography<
                                                        Data,
                                                        Payload
                                                      >
                                                    ? Typography<Data, Payload>
                                                    : Target extends Fragment<
                                                          Data,
                                                          Payload
                                                        >
                                                      ? Fragment<Data, Payload>
                                                      : Target extends Div<
                                                            Data,
                                                            Payload
                                                          >
                                                        ? Div<Data, Payload>
                                                        : Target extends Custom<
                                                              Data,
                                                              Payload
                                                            >
                                                          ? Custom<
                                                              Data,
                                                              Payload
                                                            >
                                                          : Target extends Box<
                                                                Data,
                                                                Payload
                                                              >
                                                            ? Box<Data, Payload>
                                                            : Target extends Tabs<
                                                                  Data,
                                                                  Payload
                                                                >
                                                              ? Tabs<
                                                                  Data,
                                                                  Payload
                                                                >
                                                              : Target extends Center<
                                                                    Data,
                                                                    Payload
                                                                  >
                                                                ? Center<
                                                                    Data,
                                                                    Payload
                                                                  >
                                                                : Target extends Stretch<
                                                                      Data,
                                                                      Payload
                                                                    >
                                                                  ? Stretch<
                                                                      Data,
                                                                      Payload
                                                                    >
                                                                  : Target extends Hero<
                                                                        Data,
                                                                        Payload
                                                                      >
                                                                    ? Hero<
                                                                        Data,
                                                                        Payload
                                                                      >
                                                                    : Target extends Condition<
                                                                          Data,
                                                                          Payload
                                                                        >
                                                                      ? Condition<
                                                                          Data,
                                                                          Payload
                                                                        >
                                                                      : Target extends Init<
                                                                            Data,
                                                                            Payload
                                                                          >
                                                                        ? Init<
                                                                            Data,
                                                                            Payload
                                                                          >
                                                                        : Target extends Phony<
                                                                              Data,
                                                                              Payload
                                                                            >
                                                                          ? Phony<
                                                                              Data,
                                                                              Payload
                                                                            >
                                                                          : Target extends Dict<
                                                                                Data,
                                                                                Payload
                                                                              >
                                                                            ? Dict<
                                                                                Data,
                                                                                Payload
                                                                              >
                                                                            : Target extends Tree<
                                                                                  Data,
                                                                                  Payload
                                                                                >
                                                                              ? Tree<
                                                                                  Data,
                                                                                  Payload
                                                                                >
                                                                              : never;
  /**
   * IOneProps - генерик, для прикладного программиста мы можем подменить IField
   * на TypedField.  Это  позволит  автоматически  выбрать  интерфейс  props для
   * IntelliSense после указания *type* или методом исключения
   */
  export type TypedField<
    Data = IAnything,
    Payload = IAnything,
  > = TypedFieldRegistry<Data, Payload> & {
    name?: string;
    fields?: TypedField<Data, Payload>[];
    child?: TypedField<Data, Payload>;
  };
  export default TypedField;
}

declare module "react-declarative/model/IValidation" {
  /**
   * Interface representing validation options for a form field.
   * @interface
   * @property [required] - Indicates if the field is required or not.
   * @property [minLength] - Minimum length required for the field value.
   * @property [maxLength] - Maximum length allowed for the field value.
   * @property [pattern] - Regular expression pattern for validating the field value.
   */
  export interface IValidation {
    required?: boolean;
    numeric?: boolean;
    minLength?: number;
    maxLength?: number;
    minNum?: number;
    maxNum?: number;
    pattern?: RegExp;
    date?: boolean;
    time?: boolean;
  }
  export default IValidation;
}

declare module "react-declarative/model/IInvalidField" {
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  export interface IInvalidField<Data = IAnything, Payload = IAnything> {
    field: IField<Data, Payload>;
    title: IField<Data, Payload>["title"];
    name: IField<Data, Payload>["name"];
    error: string;
  }
  export default IInvalidField;
}

declare module "react-declarative/model/IField" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import type ComponentFieldInstance from "react-declarative/model/ComponentFieldInstance";
  import type { IDebug } from "react-declarative/model/ComponentFieldInstance";
  import { ISizeCallback } from "react-declarative/model/ISize";
  import FieldType from "react-declarative/model/FieldType";
  import IAnything from "react-declarative/model/IAnything";
  import ISearchItem from "react-declarative/components/SearchView/model/ISearchItem";
  import ISearchViewProps from "react-declarative/components/SearchView/model/ISearchViewProps";
  import IFieldMenu from "react-declarative/model/IFieldMenu";
  import ITreeNode from "react-declarative/model/ITreeNode";
  import IValidation from "react-declarative/model/IValidation";
  /**
   * Represents any possible variable value of <One /> component field.
   *
   * @typedef Value - Represents a value in JavaScript.
   */
  export type Value = string | string[] | number | boolean | null;
  /**
   * Объект поля для прикладного программиста
   */
  export interface IField<Data = IAnything, Payload = IAnything> {
    /**
     * Иконка для FieldType.Button и FieldType.Icon
     */
    icon?: React.ComponentType<any>;
    /**
     * Размер иконки для FieldType.Icon
     */
    iconSize?: number;
    /**
     * Цвет иконки для FieldType.Icon
     */
    iconColor?:
      | "inherit"
      | "default"
      | "primary"
      | "secondary"
      | "error"
      | "info"
      | "success"
      | "warning";
    /**
     * Цвет фона иконки для FieldType.Icon
     */
    iconBackground?:
      | "inherit"
      | "primary"
      | "secondary"
      | "success"
      | "error"
      | "info"
      | "warning";
    /**
     * Тип заливки кнопки для FieldType.Button
     */
    buttonVariant?: "text" | "outlined" | "contained";
    /**
     * Тип размера кнопки для FieldType.Button
     */
    buttonSize?: "small" | "medium" | "large";
    /**
     * Тип цвета кнопки для FieldType.Button
     */
    buttonColor?:
      | "inherit"
      | "primary"
      | "secondary"
      | "success"
      | "error"
      | "info"
      | "warning";
    /**
     * Отменяет ожидание фокуса для валидации
     */
    dirty?: boolean;
    /**
     * Параметры фабрики для создания коллбека isInvalid
     */
    validation?: IValidation;
    /**
     * Атрибут, который будет передат в data-testid
     * корневому элементу компоновки
     */
    testId?: string;
    /**
     * Общие поля. Поле name позволяет задать забор
     * поля из целевого объекта, не нужен для group,
     * expansion и line.
     */
    name?: string;
    /**
     * Коллбек для отладки
     */
    debug?: (params: IDebug<Data, Payload>) => void;
    /**
     * Позволяет создать контекстное меню
     */
    menuItems?: IFieldMenu[];
    /**
     * Флаг, убирающий поле из древа отрисовки. Следует использовать для
     * создания динамических значений полей компонента
     */
    hidden?: boolean | ((payload: Payload) => boolean);
    /**
     * Исключает группу из DOM древа на телефоне
     */
    phoneHidden?: boolean | ((payload: Payload) => boolean);
    /**
     * Исключает группу из DOM древа на планшете
     */
    tabletHidden?: boolean | ((payload: Payload) => boolean);
    /**
     * Исключает группу из DOM древа на компьютере
     */
    desktopHidden?: boolean | ((payload: Payload) => boolean);
    /**
     * Список бизнес-функций, необходимых для отображения поля
     */
    features?: string[];
    /**
     * Отключает нижний baseline для текущей компоновки
     */
    noBaseline?: boolean;
    /**
     * Принудительно включает нижний baseline для текущей компоновки
     */
    baseline?: boolean;
    /**
     * Флаг, удерживающий подпись текстового поля при пустом
     * значении
     */
    labelShrink?: boolean;
    /**
     * Коллбеки, вызываемый при фокусировке и потере фокуса.
     * Подразумевается изменение формы со стороны прикладного
     * программиста, а не работа с полем ввода
     * (например, обновление ссылки на изображение)
     */
    focus?: (
      name: string,
      data: Data,
      payload: Payload,
      onValueChange: (value: Value) => void,
      onChange: (data: Data) => void,
    ) => void;
    blur?: (
      name: string,
      data: Data,
      payload: Payload,
      onValueChange: (value: Value) => void,
      onChange: (data: Data) => void,
    ) => void;
    /**
     * Коллбек для обработки клика по элементу контекстного меню
     */
    menu?: (
      name: string,
      action: string,
      data: Data,
      payload: Payload,
      onValueChange: (value: Value) => void,
      onChange: (data: Data) => void,
    ) => void;
    /**
     * Перехват клика по полю, следует использовать для копирования значения
     * у карточек просмотра без редактирования
     */
    click?: (
      name: string,
      e: React.MouseEvent<HTMLElement>,
      data: Data,
      payload: Payload,
      onValueChange: (value: Value) => void,
      onChange: (data: Data) => void,
    ) => void | Promise<void>;
    /**
     * Флаг только на чтение и "круглой окаймовки"
     */
    readonly?: boolean;
    outlined?: boolean;
    /**
     * Передает ссылку при перерисовках
     */
    groupRef?: (element?: HTMLDivElement | null) => void;
    inputRef?: (element?: HTMLInputElement | null) => void;
    /**
     * Автофокус и постоянное отключение поля
     */
    autoFocus?: boolean;
    disabled?: boolean;
    /**
     * Поле, специфичное для RadioField и позволяющее
     * задать значение при выборе элемента кликом
     */
    radioValue?: string;
    /**
     * Отключает цвет для Switch
     */
    switchNoColor?: boolean;
    /**
     * Применяет к Switch второй title
     */
    switchActiveLabel?: string;
    /**
     * Поле type для MatTextField
     */
    inputType?: keyof {
      text: never;
      color: never;
      date: never;
      email: never;
      month: never;
      number: never;
      password: never;
      search: never;
      tel: never;
      time: never;
      url: never;
      week: never;
    };
    /**
     * Паттерн для MatTextField
     * (inputmode: 'decimal' и pattern: '[0-9.,]+' добавят запятую на iOS клавиатуре)
     */
    inputPattern?: string;
    /**
     * Поле inputmode для MatTextField
     */
    inputMode?: keyof {
      none: never;
      text: never;
      tel: never;
      url: never;
      email: never;
      numeric: never;
      decimal: never;
      search: never;
    };
    /**
     * Форматтер, преобразующий пользовательский
     * ввод к нужному шаблону
     */
    inputFormatter?: (input: string) => string;
    /**
     * Шаблонов для форматтера
     */
    inputFormatterTemplate?: string;
    /**
     * Разделитель шаблона форматтера,
     * по дефолту 0
     */
    inputFormatterSymbol?: string;
    /**
     * Разрешенные к вводу символы
     */
    inputFormatterAllowed?: RegExp | ((char: string, idx: number) => boolean);
    /**
     * Замена символов для форматерра, например
     * запятую на точку в числе
     */
    inputFormatterReplace?: (char: string) => string | null;
    inputAutocomplete?: keyof {
      "new-password": never;
      on: never;
      off: never;
      false: never;
    };
    /**
     * Список вкладок для TabLayout
     */
    tabList?: string[];
    /**
     * Номер активной вкладки по-умолчанию
     */
    tabIndex?: number;
    /**
     * Вариант вывода вкладок для TabLayout
     */
    tabVariant?: "fullWidth" | "standard" | "scrollable";
    /**
     * Цвет вкладок для TabLayout
     */
    tabColor?: "primary" | "secondary";
    /**
     * Позволяет содержимому растягивать высоту блока
     * у TabLayout
     */
    tabKeepFlow?: boolean;
    /**
     * Событие изменения вкладки
     */
    tabChange?: (idx: number) => void;
    /**
     * Отделяет табы отчерком у TabLayout
     */
    tabLine?: boolean;
    /**
     * Закрашивает фон TabLayout в темный цвет
     */
    tabBackground?: boolean;
    /**
     * Делает TextField многострочным, если
     * inputRows больше единицы
     */
    inputRows?: number;
    /**
     * Ripple эффект для иконок
     */
    leadingIconRipple?: boolean;
    trailingIconRipple?: boolean;
    /**
     * Иконки для MatTextField
     */
    leadingIcon?: React.ComponentType<any>;
    trailingIcon?: React.ComponentType<any>;
    /**
     * При клике на иконку мы можем запросить данные из модального
     * окна, расположенного в коде прикладного программиста. Коллбек
     * получает на вход текущее значение поля и функцию onChange...
     */
    leadingIconClick?: (
      value: Value,
      data: Data,
      payload: Payload,
      onValueChange: (v: Value) => void,
      onChange: (data: Data) => void,
    ) => void;
    trailingIconClick?: (
      value: Value,
      data: Data,
      payload: Payload,
      onValueChange: (v: Value) => void,
      onChange: (data: Data) => void,
    ) => void;
    /**
     * Если нужно убрать фокус после нажатия tab
     */
    leadingIconTabIndex?: number;
    trailingIconTabIndex?: number;
    /**
     * Максимальное число для высчитывания процента
     * (минимальное число всегда ноль)
     */
    maxPercent?: number;
    /**
     * Отключает отчерк у линии
     */
    lineTransparent?: boolean;
    /**
     * Показывает процент числом слева
     */
    showPercentLabel?: boolean;
    /**
     * Внутренние отступы для Paper
     */
    innerPadding?: string;
    /**
     * Превращает FieldType.Paper в FieldType.Outline
     */
    outlinePaper?: boolean;
    transparentPaper?: boolean;
    /**
     * - Коллбеки, позволяющий перекрасить SliderField.
     * Работают только если заданы все вместе
     * - ВНИМАНИЕ! Потенциально возможна просадка производительности,
     * так как осуществляет рекомпиляцию стилей material-ui
     */
    sliderThumbColor?: (v: number) => string;
    sliderTrackColor?: (v: number) => string;
    sliderRailColor?: (v: number) => string;
    /**
     *  - Коллбеки, позволяющие перекрасить ProgressField.
     * Работают только если заданы все вместе
     *  - ВНИМАНИЕ! Потенциально возможна просадка производительности,
     * так как осуществляет рекомпиляцию стилей material-ui
     */
    progressColor?: (v: number) => string;
    progressBarColor?: (v: number) => string;
    /**
     * Поля, специфичные для SliderField
     */
    minSlider?: number;
    maxSlider?: number;
    stepSlider?: number;
    labelFormatSlider?: (v: number) => string | number;
    /**
     * Подсказки для CompleteField
     */
    tip?:
      | string[]
      | ((
          value: string,
          data: Data,
          payload: Payload,
        ) => string[] | Promise<string[]>);
    /**
     * Коллбек выбора элемента из CompleteField
     */
    tipSelect?: (
      value: string,
      data: Data,
      payload: Payload,
      onChange: (data: Data) => void,
    ) => void;
    /**
     * Поле, позволяющее передавать собственные значения в FieldType.Items и FieldType.Combo
     */
    freeSolo?: boolean;
    /**
     * Позволяет включить виртуализацию для FieldType.List и FieldType.Combo
     */
    virtualListBox?: boolean;
    /**
     * Варианты выбора для ComboField и ItemsField
     */
    itemList?:
      | string[]
      | ((data: Data, payload: Payload) => string[])
      | ((data: Data, payload: Payload) => Promise<string[]>);
    /**
     * Вариант выбора для TreeField
     */
    itemTree?:
      | ITreeNode[]
      | ((data: Data, payload: Payload) => ITreeNode[])
      | ((data: Data, payload: Payload) => Promise<ITreeNode[]>);
    /**
     * Отключает возможность сброса выбора значения для Items и Combo
     */
    noDeselect?: boolean;
    /**
     * Включает change-detection для выпадающих меню. По умолчанию выключено
     */
    watchItemList?: boolean;
    /**
     * Включает change-detection для выпадающих меню. По умолчанию выключено
     */
    watchItemTree?: boolean;
    /**
     * Включает change-detection для поля компонента. По умолчанию выключено
     */
    watchOneContext?: boolean;
    /**
     * Позволяет мемоизировать вызов compute
     */
    shouldRecompute?: (
      prevData: Data,
      nextData: Data,
      payload: Payload,
    ) => boolean;
    /**
     * Позволяет мемоизировать перевод
     */
    shouldUpdateTr?: (
      prevArgs: [string, Data],
      currentArgs: [string, Data],
      payload: Payload,
    ) => boolean;
    /**
     * Позволяет мемоизировать список элементов
     */
    shouldUpdateItemList?: (
      prevData: Data,
      currentData: Data,
      payload: Payload,
    ) => boolean;
    /**
     * Позволяет перевести значения у ComboField и ItemsField
     * из поле itemList на человеческий, если
     * используются константы
     */
    tr?:
      | ((s: string, data: Data, payload: Payload) => string)
      | ((s: string, data: Data, payload: Payload) => Promise<string>);
    /**
     * Отключает fulltext фильтр для FieldType.Complete
     */
    keepRaw?: boolean;
    /**
     * Тип поля для логического ветвления при рендеринге
     */
    type: FieldType;
    /**
     * Наименование класса для корневого элемента поля (опционально)
     */
    className?: string;
    /**
     * Стиль корневого элемента для поля (опционально)
     */
    style?: React.CSSProperties;
    /**
     * Заголовок и описание, если возможен вывод у поля
     */
    title?: string;
    description?: string;
    /**
     * placeholder для TextField, ComboField, ItemsField
     */
    placeholder?: string;
    /**
     * Колонки для One. Не используются в List (кроме фильтров).
     * Если указано поле columns, то остальные приравниваются к
     * его значению
     */
    columns?: string;
    phoneColumns?: string;
    tabletColumns?: string;
    desktopColumns?: string;
    /**
     * Специальное поле только для MUI
     */
    sx?: SxProps<any>;
    /**
     * Произвольное количество колонок в строке
     */
    columnsOverride?: string;
    /**
     * Дочерние поля для групп
     */
    fields?: IField<Data>[];
    child?: IField<Data>;
    /**
     * Функция, позволяющая организовать валидацию. Если
     * возвращаемое значение не равно null, считается за
     * ошибкую
     */
    isInvalid?: (v: Data, payload: Payload) => null | string;
    /**
     * Функция, позволяющая огранизовать неблокирующую валидацию. Проверка
     * правописания (spellcheck) должен быть отображен в UI, но не должен
     * блокировать кнопку "Сохранить"
     */
    isIncorrect?: (v: Data, payload: Payload) => null | string;
    /**
     * Функция, позволяющая скрыть поле, исходя из целевого
     * объекта
     */
    isVisible?: (v: Data, payload: Payload) => boolean;
    /**
     * Функция, позволяющая отключить поле, исходя из целевого
     * объекта
     */
    isDisabled?: (v: Data, payload: Payload) => boolean;
    /**
     * Функция, позволяющая отключить ввод данных в поле, исходя из целевого
     * объекта
     */
    isReadonly?: (v: Data, payload: Payload) => boolean;
    /**
     * Функция, применяемая если значение поля вычисляется динамически.
     * Включает readonly.
     */
    compute?: (v: Data, payload: Payload) => Promise<Value> | Value;
    /**
     * Инъекция JSX для ComponentField
     */
    element?: React.ComponentType<ComponentFieldInstance<Data, Payload>>;
    /**
     * Коллбек, вызываемый у поля при не прохождении
     * валидации
     */
    invalidity?: (name: string, e: string, payload: Payload) => void;
    /**
     * Коллбек для 2Way биндингов. Вызывается если поле валидно
     * перед применением нового целевого объекта при исходящем изменении
     */
    map?: (data: Data, payload: Payload) => Data;
    /**
     * Значение по-умолчанию для поля
     */
    defaultValue?: Value | ((payload: Payload) => Value);
    /**
     * Позволяет задать limit для поля справочника
     */
    dictLimit?: number;
    /**
     * Позволяет задать задержку для api запросов поля справочника
     */
    dictDelay?: number;
    /**
     * Обработчик запроса справочника. Если число объектов
     * меньше dictLimit, подразумевается, что все данные выгружены
     * на фронт и новые запросы не выполняются
     */
    dictSearch?: (dto: {
      search: string;
      limit: number;
      offset: number;
      initial: boolean;
      rows: ISearchItem[];
      data: Data;
      payload: Payload;
    }) => ISearchItem[] | Promise<ISearchItem[]>;
    /**
     * Поле справочника позволяет создавать новые записи, если
     * поиск не дал результата
     */
    dictOnAppend?: (
      search: string,
      data: Data,
      payload: Payload,
      onValueChange: (value: string | null) => void,
      onChange: (value: Data) => void,
    ) => void;
    /**
     * Функция вызывается на каждое изменение текста. Подразумевается
     * запись в целевой объект. Для контекстного поиска по label, value можно записать в другое поле
     */
    dictOnText?: (
      text: string,
      data: Data,
      payload: Payload,
      onValueChange: (value: string | null) => void,
      onChange: (data: Data) => void,
    ) => void;
    /**
     * Функция вызывается на каждый выбор из модалки. Подразумевается
     * запись в целевой объект. Для контекстного поиска по label, value можно записать в другое поле
     */
    dictOnItem?: (
      value: string | null,
      data: Data,
      payload: Payload,
      onValueChange: (value: string | null) => void,
      onChange: (data: Data) => void,
    ) => void;
    /**
     * Функция позволяет загрузить label для выбранного элемента асинхронно
     */
    dictValue?: (
      value: string,
      data: Data,
      payload: Payload,
    ) => ISearchItem | Promise<ISearchItem>;
    /**
     * Функция позволяет загрузить searchText для выбранного элемента асинхронно
     */
    dictSearchText?: (data: Data, payload: Payload) => string | Promise<string>;
    /**
     * Функция позволяет переопределить компонент элемента списка
     * из модалки
     */
    dictSearchItem?: ISearchViewProps["SearchItem"];
    /**
     * Функция позволяет переопределить компонент создание записи
     * в словарь из модалки
     */
    dictCreateButton?: ISearchViewProps["CreateButton"];
    /**
     * Позволяет выключить отступ. Можно использовать по аналогии
     * с исключением последней запятой при склеивании массива
     * руками, если раздражает
     */
    fieldRightMargin?: string;
    fieldBottomMargin?: string;
    /**
     * Шрифт для поля Typography
     */
    typoVariant?: keyof {
      h1: "h1";
      h2: "h2";
      h3: "h3";
      h4: "h4";
      h5: "h5";
      h6: "h6";
      subtitle1: "subtitle1";
      subtitle2: "subtitle2";
      body1: "body1";
      body2: "body2";
      caption: "caption";
    };
    /**
     * Поле для ExpansionLayout
     */
    expansionOpened?: boolean;
    /**
     * Коллбек, позволяющий применить собственную компоновку
     */
    customLayout?: (
      props: React.PropsWithChildren<
        Data & {
          onChange: (data: Partial<Data>) => void;
          _fieldData: Data;
          _fieldParams: IField;
          _payload: Payload;
        }
      >,
    ) => React.ReactElement;
    /**
     * Предикат для компоновки Condition
     */
    condition?:
      | ((data: Data, payload: Payload) => boolean)
      | ((data: Data, payload: Payload) => Promise<boolean>);
    /**
     * Позволяет мемоизировать вызов condition
     */
    shouldCondition?: (
      prevData: Data,
      nextData: Data,
      payload: Payload,
    ) => boolean;
    /**
     * Компонент отображения загрузки condition
     */
    conditionLoading?: React.ComponentType<{
      data: Data;
      payload: Payload;
    }>;
    /**
     * Компонент отображения else для condition
     */
    conditionElse?: React.ComponentType<{
      data: Data;
      payload: Payload;
    }>;
    /**
     * mime тип выбираемого файла
     */
    fileAccept?: string;
    /**
     * Функция для загрузки файла на сервер
     */
    upload?: (
      file: File,
      data: Data,
      payload: Payload,
    ) => Promise<string> | string;
    view?: (file: string, data: Data, payload: Payload) => Promise<void> | void;
    /**
     * Функция для выбора документа из справочника
     * для useSearchModal
     */
    choose?: (
      data: Data,
      payload: Payload,
    ) => Promise<string | string[] | null> | string | string[] | null;
    /**
     * Свойства для компоновки Hero - инструмента настройки отступов
     */
    top?: string | ISizeCallback<Data>;
    phoneTop?: string | ISizeCallback<Data>;
    tabletTop?: string | ISizeCallback<Data>;
    desktopTop?: string | ISizeCallback<Data>;
    left?: string | ISizeCallback<Data>;
    phoneLeft?: string | ISizeCallback<Data>;
    tabletLeft?: string | ISizeCallback<Data>;
    desktopLeft?: string | ISizeCallback<Data>;
    right?: string | ISizeCallback<Data>;
    phoneRight?: string | ISizeCallback<Data>;
    tabletRight?: string | ISizeCallback<Data>;
    desktopRight?: string | ISizeCallback<Data>;
    bottom?: string | ISizeCallback<Data>;
    phoneBottom?: string | ISizeCallback<Data>;
    tabletBottom?: string | ISizeCallback<Data>;
    desktopBottom?: string | ISizeCallback<Data>;
    height?: string | ISizeCallback<Data>;
    phoneHeight?: string | ISizeCallback<Data>;
    tabletHeight?: string | ISizeCallback<Data>;
    desktopHeight?: string | ISizeCallback<Data>;
    minHeight?: string | ISizeCallback<Data>;
    phoneMinHeight?: string | ISizeCallback<Data>;
    tabletMinHeight?: string | ISizeCallback<Data>;
    desktopMinHeight?: string | ISizeCallback<Data>;
    maxHeight?: string | ISizeCallback<Data>;
    phoneMaxHeight?: string | ISizeCallback<Data>;
    tabletMaxHeight?: string | ISizeCallback<Data>;
    desktopMaxHeight?: string | ISizeCallback<Data>;
    width?: string | ISizeCallback<Data>;
    phoneWidth?: string | ISizeCallback<Data>;
    tabletWidth?: string | ISizeCallback<Data>;
    desktopWidth?: string | ISizeCallback<Data>;
    minWidth?: string | ISizeCallback<Data>;
    phoneMinWidth?: string | ISizeCallback<Data>;
    tabletMinWidth?: string | ISizeCallback<Data>;
    desktopMinWidth?: string | ISizeCallback<Data>;
    maxWidth?: string | ISizeCallback<Data>;
    phoneMaxWidth?: string | ISizeCallback<Data>;
    tabletMaxWidth?: string | ISizeCallback<Data>;
    desktopMaxWidth?: string | ISizeCallback<Data>;
    heroOuterStyle?: React.CSSProperties;
    heroOuterPhoneStyle?: React.CSSProperties;
    heroOuterTabletStyle?: React.CSSProperties;
    heroOuterDesktopStyle?: React.CSSProperties;
    heroInnerStyle?: React.CSSProperties;
    heroInnerPhoneStyle?: React.CSSProperties;
    heroInnerTabletStyle?: React.CSSProperties;
    heroInnerDesktopStyle?: React.CSSProperties;
  }
  export default IField;
}

declare module "react-declarative/model/IEntity" {
  import IAnything from "react-declarative/model/IAnything";
  import IField, { Value } from "react-declarative/model/IField";
  type exclude = "defaultValue";
  /**
   * Объект сущность представляет собой поле прикладного
   * программииста, расширенное входным параметром и
   * коллбеком изменения для внутренней организации
   * работы. ВАЖНО - изменение поля влечет изменение
   * всего целевого объекта, следуя паттерну immutable
   */
  export interface IEntity<Data = IAnything, Payload = IAnything>
    extends Omit<IField<Data, Payload>, exclude> {
    readTransform?: (
      value: Value,
      name: string,
      data: Data,
      payload: Payload,
    ) => Value;
    writeTransform?: (
      value: Value,
      name: string,
      data: Data,
      payload: Payload,
    ) => Value;
    change?: (object: Data, invalidMap: Record<string, boolean>) => void;
    invalidity: (name: string, msg: string, payload: Payload) => void;
    fallback: (e: Error) => void;
    isBaselineAlign: boolean;
    outlinePaper: boolean;
    transparentPaper: boolean;
    dirty?: boolean;
    prefix: string;
    ready: () => void;
    object: Data;
  }
  export default IEntity;
}

declare module "react-declarative/model/IManaged" {
  import IField from "react-declarative/model/IField";
  import IEntity from "react-declarative/model/IEntity";
  import IAnything from "react-declarative/model/IAnything";
  export type PickProp<T extends {}, P extends keyof T> = T[P];
  export type DeepPartial<T> = {
    [P in keyof T]?: DeepPartial<T[P]>;
  };
  /**
   * Represents a layout with various properties that control its visibility, disabled state, and other features.
   *
   * @template Data - The data type used by the layout.
   * @template Payload - The payload type used by the layout.
   */
  export interface IWrappedLayout<Data = IAnything, Payload = IAnything> {
    /**
     * Идентификатор для отладки json шаблона
     */
    testId?: PickProp<IField<Data, Payload>, "testId">;
    /**
     * Represents the `isVisible` property of a field in a form.
     *
     * @typedef isVisible
     * @property isVisible - Indicates whether the field is visible or not.
     */
    isVisible?: PickProp<IField<Data, Payload>, "isVisible">;
    /**
     * Represents the `isDisabled` property of a field in a form.
     * The `isDisabled` property determines whether the field is disabled or not.
     *
     * @typedef isDisabled
     * @property [isDisabled] - Indicates whether the field is disabled.
     */
    isDisabled?: PickProp<IField<Data, Payload>, "isDisabled">;
    /**
     * Retrieves the value of the 'isReadonly' property from the given variable.
     *
     * @param variable - The variable to retrieve the property from.
     * @returns The value of the 'isReadonly' property.
     */
    isReadonly?: PickProp<IField<Data, Payload>, "isReadonly">;
    /**
     * Retrieves the 'features' property from a given variable.
     *
     * @template T - The type of the variable.
     * @template K - The property name to retrieve.
     * @param variable - The variable to extract the property from.
     * @returns - The extracted 'features' property.
     */
    features?: PickProp<IField<Data, Payload>, "features">;
    /**
     * Represents the `disabled` property of a field.
     *
     * @typedef Disabled
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents the `phoneHidden` property of a field object.
     *
     * @typedef phoneHidden
     * @property phoneHidden - Specifies whether the phone field should be hidden.
     */
    phoneHidden?: PickProp<IField<Data, Payload>, "phoneHidden">;
    /**
     * Represents the optional property 'tabletHidden' in a field object.
     *
     * @typedef tabletHidden
     */
    tabletHidden?: PickProp<IField<Data, Payload>, "tabletHidden">;
    /**
     * Represents the optional property `desktopHidden` of type `PickProp<IField<Data, Payload>, 'desktopHidden'>`.
     *
     * @typedef desktopHidden
     */
    desktopHidden?: PickProp<IField<Data, Payload>, "desktopHidden">;
    /**
     * Represents the 'hidden' property of an object.
     *
     * @template IField - The type of the field object.
     * @template Data - The type of the data object.
     * @template Payload - The type of the payload object.
     *
     * @typedef Hidden
     */
    hidden?: PickProp<IField<Data, Payload>, "hidden">;
    /**
     * Represents an optional property `noBaseline` that is picked from the interface `IField` using the `PickProp` utility type.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     *
     * @typedef noBaseline
     *
     * @property [noBaseline] - Specifies whether the field has a baseline or not.
     */
    noBaseline?: PickProp<IField<Data, Payload>, "noBaseline">;
    /**
     * Represents an optional property `baseline` that is picked from the interface `IField` using the `PickProp` utility type.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     *
     * @typedef baseline
     *
     * @property [baseline] - Specifies whether the field has a baseline or not.
     */
    baseline?: PickProp<IField<Data, Payload>, "baseline">;
  }
  /**
   * Типизацию компоновки следует вынести отдельно
   */
  export interface IManagedLayout<Data = IAnything, Payload = IAnything>
    extends IWrappedLayout<Data, Payload> {
    /**
     * Represents override columns configuration for a field.
     *
     * @typedef columnsOverride
     *
     * @property - The name of the field for which the columns are overridden.
     */
    columnsOverride?: PickProp<IField<Data, Payload>, "columnsOverride">;
    /**
     * Represents the 'sx' property of the 'PickProp' type.
     *
     * @typedef IFieldKey
     * @typedef PickProp<IField<Data, Payload>, 'sx'> SxProp
     *
     * @property sx - The key of the 'IField' type that represents the 'sx' property.
     */
    sx?: PickProp<IField<Data, Payload>, "sx">;
    /**
     * Retrieves the specific columns from a given object.
     */
    columns?: PickProp<IField<Data, Payload>, "columns">;
    /**
     * Represents the phone columns configuration for a field
     */
    phoneColumns?: PickProp<IField<Data, Payload>, "phoneColumns">;
    /**
     * Represents the number of columns for the "tablet" viewport size of a field.
     * This property is optional.
     *
     * @typedef tabletColumns
     */
    tabletColumns?: PickProp<IField<Data, Payload>, "tabletColumns">;
    /**
     * Represents the number of columns on a desktop layout for a field in a data payload object.
     *
     * @typedef desktopColumns
     * @property desktopColumns - The number of columns on a desktop layout.
     * @property desktopColumns - Optional property to pick the 'desktopColumns' property from 'IField<Data, Payload>' interface.
     */
    desktopColumns?: PickProp<IField<Data, Payload>, "desktopColumns">;
    /**
     * Represents the right margin of a field.
     *
     * @typedef FieldRightMargin
     */
    fieldRightMargin?: PickProp<IField<Data, Payload>, "fieldRightMargin">;
    /**
     * Represents the optional configuration for the bottom margin
     * of a field.
     *
     * @typedef FieldBottomMargin
     */
    fieldBottomMargin?: PickProp<IField<Data, Payload>, "fieldBottomMargin">;
    /**
     * Returns the picked 'features' property from the given variable.
     *
     * @template Data - The type of data.
     * @template Payload - The type of payload.
     * @template T - The type of the variable.
     * @param variable - The variable from which to pick the 'features' property.
     * @returns - The picked 'features' property.
     */
    features?: PickProp<IField<Data, Payload>, "features">;
  }
  /**
   * Компонент высшего порядка makeField
   * перехватывает управление над свойствами
   * поля
   */
  export interface IManagedShallow<Data = IAnything, Payload = IAnything>
    extends IManagedLayout<Data> {
    /**
     * Отменяет ожидание фокуса для валидации
     */
    dirty?: PickProp<IField<Data, Payload>, "dirty">;
    /**
     * Идентификатор для тестирования шаблона
     */
    testId?: PickProp<IField<Data, Payload>, "testId">;
    /**
     * Represents the `isDisabled` property of a field object.
     *
     * @typedef PickProp
     * @typedef IField
     * @typedef Data
     * @typedef Payload
     *
     * @type {PickProp<IField<Data, Payload>, 'isDisabled'>}
     *
     * @description
     * The `isDisabled` property indicates whether a field is disabled or not.
     * If `isDisabled` is `true`, the field is disabled, meaning it cannot be interacted with.
     * If `isDisabled` is `false`, the field is enabled and can be interacted with.
     *
     */
    isDisabled?: PickProp<IField<Data, Payload>, "isDisabled">;
    /**
     * Determines the visibility of a field.
     *
     * @typedef isVisible
     * @description The `isVisible` property is used to determine whether a field is visible or hidden.
     *
     * @param field - The field object that contains the `isVisible` property.
     *
     * @returns - Returns `true` if the field is visible, `false` otherwise.
     */
    isVisible?: PickProp<IField<Data, Payload>, "isVisible">;
    /**
     * Determines if the field is readonly.
     *
     * @typedef isReadonly
     */
    isReadonly?: PickProp<IField<Data, Payload>, "isReadonly">;
    /**
     * Represents the `isInvalid` field of a given field.
     *
     * @typedef IsInvalid
     */
    isInvalid?: PickProp<IField<Data, Payload>, "isInvalid">;
    /**
     * Checks if the field is incorrect.
     *
     * @template T - The object type to check.
     * @template K - The propertyname to pick from the object type.
     * @param obj - The object to check.
     * @param prop - The property name to pick from the object type.
     * @returns - A boolean indicating whether the field is incorrect.
     */
    isIncorrect?: PickProp<IField<Data, Payload>, "isIncorrect">;
    invalidity?: PickProp<IField<Data, Payload>, "invalidity">;
    /**
     * Determines if the field should be recomputed.
     *
     * @typedef shouldRecompute
     *
     * @property shouldRecompute - Indicates whether the field should be recomputed.
     */
    shouldRecompute?: PickProp<IField<Data, Payload>, "shouldRecompute">;
    /**
     * Check if 'shouldUpdateItemList' property is present in the given variable.
     *
     * @typedef shouldUpdateItemList
     * @param shouldUpdateItemList - The variable to be checked.
     * @returns - Returns true if 'shouldUpdateItemList' property is present, otherwise false.
     */
    shouldUpdateItemList?: PickProp<
      IField<Data, Payload>,
      "shouldUpdateItemList"
    >;
    /**
     * Determines if the 'shouldUpdateTr' property should be updated.
     *
     * @typedef shouldUpdateTr
     * @property shouldUpdateTr.value - The current value of the 'shouldUpdateTr' property.
     * @property shouldUpdateTr.isReady - Indicates if the 'shouldUpdateTr' property is ready for update.
     * @property shouldUpdateTr.isEnabled - Determines if the 'shouldUpdateTr' property is enabled.
     */
    shouldUpdateTr?: PickProp<IField<Data, Payload>, "shouldUpdateTr">;
    /**
     * Represents the debug property of a field.
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     * @typedef debug
     *
     * @property value - The value of the debug property.
     * @property props - Additional properties of the field.
     */
    debug?: PickProp<IField<Data, Payload>, "debug">;
    /**
     * Type definition for the `compute` property of an object.
     *
     * @template T - The type of the `IField` object.
     * @template Payload - The type of the payload used in the `IField` object.
     * @template K - The property key to pick from `IField<Data, Payload>`.
     *
     * @typedef compute
     *
     * @param object - The `IField` object to pick the `compute` property from.
     *
     * @returns - The value of the `compute` property from the `IField` object.
     */
    compute?: PickProp<IField<Data, Payload>, "compute">;
    /**
     * Represents the "click" property of a specific field in a data object.
     *
     * @template Data - The type of the data object containing the field.
     * @template Payload - The type of the payload associated with the click event.
     */
    click?: PickProp<IField<Data, Payload>, "click">;
    /**
     * Type definition for the `focus` property with pick properties.
     *
     * The `focus` property is used to pick a specific property from an object type.
     * This type definition is a utility type that leverages Pick and keyof to select
     * the specified property from the provided object type.
     *
     * @template T - The object type from which to pick the property.
     * @template K - The name of the property to select.
     *
     * @typedef PickProp
     * @type {Pick<T, K>}
     */
    focus?: PickProp<IField<Data, Payload>, "focus">;
    /**
     * Type definition for the 'blur' property.
     *
     * The 'blur' property is an optional property of type PickProp<IField<Data, Payload>, 'blur'>.
     * It represents whether the field should be blurred or not.
     *
     * @template Data - The data object type.
     * @template Payload - The payload type.
     * @property blur - The properties of the field to be blurred.
     *
     * @typedef BlurType
     */
    blur?: PickProp<IField<Data, Payload>, "blur">;
    /**
     * Represents the menuItems property of a field in a form.
     *
     * @typedef menuItems
     */
    menuItems?: PickProp<IField<Data, Payload>, "menuItems">;
    /**
     * Represents the 'menu' variable.
     *
     * @typedef menu
     * @property - The original field object from which the 'menu' property was picked
     * @property menu - The 'menu' property of the field object
     * @property menu.data - The data associated with the 'menu' property
     * @property menu.payload - The payload associated with the 'menu' property
     */
    menu?: PickProp<IField<Data, Payload>, "menu">;
    /**
     * Represents a map property of a field.
     *
     * @template Data - The type of data object associated with the field.
     * @template Payload - The type of payload associated with the map property.
     *
     * @typedef Map
     *
     * @property key - The key associated with the map property.
     * @property value - The value associated with the map property.
     */
    map?: PickProp<IField<Data, Payload>, "map">;
    /**
     * Retrieves the defaultValue property from the given field.
     *
     * @param field - The field to get the defaultValue from.
     * @returns - The defaultValue of the field, if defined.
     */
    defaultValue?: PickProp<IField<Data, Payload>, "defaultValue">;
    /**
     * Type definition for the 'hidden' property of a field in a form.
     *
     * @template Data - The type of data object expected by the form.
     * @template Payload - The type of payload expected when submitting the form.
     * @template T - The type of the 'hidden' property in the field.
     *
     * @typedef hidden
     *
     * @property hidden - The value of the 'hidden' property of the field.
     */
    hidden?: PickProp<IField<Data, Payload>, "hidden">;
    /**
     * Extracts the 'features' property from the given variable.
     *
     * @param variable - The variable to pick 'features' property from.
     *
     * @returns - The extracted 'features' property.
     */
    features?: PickProp<IField<Data, Payload>, "features">;
  }
  /**
   * Свойства, не доступные управляемому полю
   */
  type Exclude<Data = IAnything> = {
    object: never;
    type: never;
    focus: never;
    blur: never;
    click: never;
    ready: never;
    check: never;
    change: never;
    name: never;
    menu: never;
    map: never;
    menuItems: never;
    readTransform: never;
    writeTransform: never;
  } & IManagedShallow<Data>;
  /**
   * Свойства сущности, обернутой в компонент высшего порядка
   * Предоставляется удобная абстракция
   */
  export interface IManaged<Data = IAnything, Value = any>
    extends Omit<IEntity<Data>, keyof Exclude<Data>> {
    name: string;
    value: Value;
    dirty: boolean;
    withContextMenu: true | undefined;
    disabled: boolean;
    loading: boolean;
    readonly: boolean;
    fieldReadonly: boolean;
    incorrect: string | null;
    invalid: string | null;
    object: Data;
    click: (e: React.MouseEvent<any>) => void | Promise<void>;
    onChange: (
      v: Value,
      config?: {
        skipReadonly?: boolean;
      },
    ) => void;
  }
  export default IManaged;
}

declare module "react-declarative/model/IColumn" {
  import { SxProps } from "@mui/material";
  import ColumnType from "react-declarative/model/ColumnType";
  import {
    IListActionOption,
    ListHandlerChips,
    ListHandlerPagination,
    ListHandlerSortModel,
  } from "react-declarative/model/IListProps";
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  import { Value } from "react-declarative/model/IField";
  /**
   * Represents a column in a table.
   *
   * @template FilterData - The type of filter data that can be used with the column.
   * @template RowData - The type of row data used in the table.
   * @template Payload - The type of payload used with the column.
   */
  export interface IColumn<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
    Payload = IAnything,
  > {
    type: ColumnType;
    field?: string;
    sx?: SxProps<any>;
    primary?: boolean;
    secondary?: boolean;
    avatar?: boolean;
    headerName?: string;
    fullName?: string;
    fullWidth?: boolean;
    pin?: boolean;
    description?: string;
    /**
     * Represents the width of an element.
     *
     * @typedef Width
     */
    width: string | ((width: number) => string | number);
    minHeight?: string | number;
    phoneOrder?: number;
    phoneHidden?: boolean;
    tabletOrder?: number;
    tabletHidden?: boolean;
    desktopOrder?: number;
    desktopHidden?: boolean;
    columnMenu?: IListActionOption[];
    isVisible?: (params: {
      filterData: FilterData;
      pagination: ListHandlerPagination;
      sortModel: ListHandlerSortModel<RowData>;
      chips: ListHandlerChips<RowData>;
      search: string;
      payload: Payload;
    }) => boolean;
    compute?: (
      row: RowData & {
        _payload: Payload;
      },
      payload: Payload,
    ) => Promise<Value> | Value;
    serialize?: (
      row: RowData & {
        _payload: Payload;
      },
      payload: Payload,
    ) => Promise<Value> | Value;
    element?: React.ComponentType<
      RowData & {
        _payload: Payload;
      }
    >;
    sortable?: boolean;
  }
  export default IColumn;
}

declare module "react-declarative/components/List/api/useApiPaginator" {
  import {
    ListHandler,
    ListHandlerChips,
    ListHandlerResult,
    ListHandlerSortModel,
    ListHandlerPagination,
  } from "react-declarative/model/IListProps";
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Represents the parameters required for pagination in an API request.
   *
   * @template FilterData - The type of filter data.
   * @template RowData - The type of row data.
   */
  export interface IApiPaginatorParams<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > {
    origin?: string;
    fetch?: typeof window.fetch;
    requestMap?: (url: URL) => URL;
    removeEmptyFilters?: (data: FilterData) => Partial<FilterData>;
    filterHandler?: (url: URL, filterData: FilterData) => URL;
    chipsHandler?: (url: URL, chips: ListHandlerChips<RowData>) => URL;
    sortHandler?: (url: URL, sort: ListHandlerSortModel<RowData>) => URL;
    searchHandler?: (url: URL, search: string) => URL;
    paginationHandler?: (url: URL, pagination: ListHandlerPagination) => URL;
    onLoadBegin?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    withAbortSignal?: boolean;
    withPagination?: boolean;
    withFilters?: boolean;
    withChips?: boolean;
    withSearch?: boolean;
    withSort?: boolean;
    fetchParams?: () => RequestInit;
    fallback?: (e: Error) => void;
    abortSignal?: AbortSignal;
    responseMap?: <T extends IRowData>(
      json: RowData[],
    ) => ListHandlerResult<T> | Promise<ListHandlerResult<T>>;
  }
  /**
   * Function that generates a list handler for API pagination.
   *
   * @param path - The API endpoint path.
   * @param options - The options object.
   * @param options.fetch - The fetch function to use for making API requests (default: window.fetch).
   * @param options.origin - The origin of the API (default: window.location.origin).
   * @param options.abortSignal - The AbortSignal object to use for aborting API requests.
   * @param options.removeEmptyFilters - The function to remove empty filters from the filter data (default: removeEmptyFiltersDefault).
   * @param options.fetchParams - The function to generate fetch parameters (e.g. headers, method, body) (default: null).
   * @param options.fallback - The function to handle error fallback (default: null).
   * @param options.onLoadBegin - The function to call before the API request is made (default: null).
   * @param options.onLoadEnd - The function to call after the API request is completed (default: null).
   * @param options.requestMap - The function to map the request URL (default: (url) => url).
   * @param options.responseMap - The function to map the API response (default: (data) => data).
   * @param options.filterHandler - The function to handle filters in the URL (default: (url, filterData) => { ... }).
   * @param options.chipsHandler - The function to handle chips in the URL (default: (url, chips) => { ... }).
   * @param options.sortHandler - The function to handle sorting in the URL (default: (url, sort) => { ... }).
   * @param options.searchHandler - The function to handle search in the URL (default: (url, search) => { ... }).
   * @param options.paginationHandler - The function to handle pagination in the URL (default: (url, pagination) => { ... }).
   * @param options.withAbortSignal - A flag to enable/disable abort signal usage (default: true).
   * @param options.withPagination - A flag to enable/disable pagination (default: true).
   * @param options.withFilters - A flag to enable/disable filters (default: true).
   * @param options.withSearch - A flag to enable/disable search (default: true).
   * @param options.withChips - A flag to enable/disable chips (default: true).
   * @param options.withSort - A flag to enable/disable sorting (default: true).
   * @returns - The list handler function.
   */
  export const useApiPaginator: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
  >(
    path: string,
    {
      fetch,
      origin,
      abortSignal: signal,
      removeEmptyFilters,
      fetchParams,
      fallback,
      onLoadBegin,
      onLoadEnd,
      requestMap,
      responseMap,
      filterHandler,
      chipsHandler,
      sortHandler,
      searchHandler,
      paginationHandler,
      withAbortSignal,
      withPagination,
      withFilters,
      withSearch,
      withChips,
      withSort,
    }?: IApiPaginatorParams<FilterData, RowData>,
  ) => ListHandler<FilterData, RowData, any>;
  export default useApiPaginator;
}

declare module "react-declarative/components/List/api/useArrayPaginator" {
  import {
    ListHandler,
    ListHandlerChips,
    ListHandlerSortModel,
    ListHandlerPagination,
  } from "react-declarative/model/IListProps";
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  import { IState as ILastPaginationState } from "react-declarative/components/List/api/useLastPagination";
  /**
   * Interface representing the parameters for array pagination.
   *
   * @template FilterData - The data type for the filter data.
   * @template RowData - The data type for each row of data.
   */
  export interface IArrayPaginatorParams<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > {
    filterHandler?: (rows: RowData[], filterData: FilterData) => RowData[];
    chipsHandler?: (
      rows: RowData[],
      chips: ListHandlerChips<RowData>,
    ) => RowData[];
    sortHandler?: (
      rows: RowData[],
      sort: ListHandlerSortModel<RowData>,
    ) => RowData[];
    paginationHandler?: (
      rows: RowData[],
      pagination: ListHandlerPagination,
    ) => RowData[];
    responseMap?: (
      json: RowData[],
    ) => Record<string, any>[] | Promise<Record<string, any>[]>;
    searchHandler?: (rows: RowData[], search: string) => RowData[];
    compareFn?: (a: RowData, b: RowData, field: keyof RowData) => number;
    removeEmptyFilters?: (data: FilterData) => Partial<FilterData>;
    withPagination?: boolean;
    withFilters?: boolean;
    withChips?: boolean;
    withSort?: boolean;
    withTotal?: boolean;
    withSearch?: boolean;
    searchEntries?: string[];
    searchFilterChars?: string[];
    fallback?: (e: Error) => void;
    onData?: (
      rows: RowData[],
      state: ILastPaginationState<FilterData, RowData>,
    ) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
  }
  /**
   * A utility function for pagination and filtering an array of data rows.
   *
   * @template FilterData - The type of the filter data object.
   * @template RowData - The type of the row data object.
   *
   * @param rowsHandler - The function that retrieves the data rows.
   * @param options - The optional configuration options.
   * @param options.searchEntries - The array of property names to search in when using the search feature. Defaults to SEARCH_ENTRIES.
   * @param options.searchFilterChars - The array of characters to filter in the search feature. Defaults to FILTER_CHARS.
   * @param options.responseMap - The function to map the rows data to the desired output shape. Defaults to mapping to RowData.
   * @param options.removeEmptyFilters - The flag to remove empty filters from the filter data object. Defaults to removeEmptyFiltersDefault.
   * @param options.compareFn - The function to compare two rows based on a field value. Defaults to a default comparison logic.
   * @param options.filterHandler - The function to filter the rows based on the filter data. Defaults to a default filter
   * logic.
   * @param options.chipsHandler - The function to filter the rows based on the chip data. Defaults to a default chip filter logic
   *.
   * @param options.sortHandler - The function to sort the rows based on the sort model. Defaults
   * to a default sort logic.
   * @param options.searchHandler - The function to search for rows based on a search string. Defaults to a default search logic
   *.
   * @param options.paginationHandler - The function to paginate the rows based on the pagination
   * model. Defaults to a default pagination logic.
   * @param options.withPagination - The flag to enable pagination. Defaults to true.
   * @param options.withFilters - The flag to enable filtering. Defaults to true.
   * @param options.withChips - The flag to enable chip filtering. Defaults to true.
   * @param options.withSort - The flag to enable sorting. Defaults to true.
   * @param options.withTotal - The flag to enable total count. Defaults to true.
   * @param options.withSearch - The flag to enable searching. Defaults to true.
   * @param options.fallback - The function to handle errors. Defaults to null.
   * @param options.onLoadStart - The function to call when the data loading starts. Defaults to null.
   * @param options.onLoadEnd - The function to call when the data loading ends. Defaults to null.
   * @param options.onData - The function to call when the data is received. Defaults to null.
   *
   * @returns - The list handler function.
   */
  export const useArrayPaginator: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
  >(
    rowsHandler: ListHandler<FilterData, RowData, any>,
    {
      searchEntries,
      searchFilterChars,
      responseMap,
      removeEmptyFilters,
      compareFn,
      filterHandler,
      chipsHandler,
      sortHandler,
      searchHandler,
      paginationHandler,
      withPagination,
      withFilters,
      withChips,
      withSort,
      withTotal,
      withSearch,
      fallback,
      onLoadStart,
      onLoadEnd,
      onData,
    }?: IArrayPaginatorParams<FilterData, RowData>,
  ) => ListHandler<FilterData, RowData, any>;
  export default useArrayPaginator;
}

declare module "react-declarative/components/List" {
  export * from "react-declarative/components/List/List";
  export * from "react-declarative/components/List/slots";
  export { useProps as useListProps } from "react-declarative/components/List/hooks/useProps";
  export { useCachedRows as useListCachedRows } from "react-declarative/components/List/hooks/useCachedRows";
  export { useApiPaginator } from "react-declarative/components/List/api/useApiPaginator";
  export { useLastPagination } from "react-declarative/components/List/api/useLastPagination";
  export { useQueryPagination } from "react-declarative/components/List/api/useQueryPagination";
  export { useCachedPaginator } from "react-declarative/components/List/api/useCachedPaginator";
  export { useArrayPaginator } from "react-declarative/components/List/api/useArrayPaginator";
  export { useHistoryStatePagination } from "react-declarative/components/List/api/useHistoryStatePagination";
  export { useListSelection } from "react-declarative/components/List/api/useListSelection";
  export { useListAction } from "react-declarative/components/List/api/useListAction";
  export { default as ListSlotFactory } from "react-declarative/components/List/components/SlotFactory";
  export { defaultSlots as ListDefaultSlots } from "react-declarative/components/List/components/SlotFactory";
  export { useFilterData as useListFilterData } from "react-declarative/components/List/hooks/useFilterData";
  export { usePagination as useListPagination } from "react-declarative/components/List/hooks/usePagination";
  export { useSortModel as useListSortModel } from "react-declarative/components/List/hooks/useSortModel";
  export { useChips as useListChips } from "react-declarative/components/List/hooks/useChips";
  export { useSearch as useListSearch } from "react-declarative/components/List/hooks/useSearch";
  export { usePayload as useListPayload } from "react-declarative/components/List/hooks/usePayload";
  export { useReload as useListReload } from "react-declarative/components/List/hooks/useReload";
  export { useSelection as useListSelectionState } from "react-declarative/components/List/hooks/useSelection";
  export { useModalSort as useListModalSort } from "react-declarative/components/List/hooks/useModalSort";
  export { useDropFilters as useListDropFilters } from "react-declarative/components/List/hooks/useDropFilters";
  export { useStateAction as useListStateAction } from "react-declarative/components/List/hooks/useStateAction";
  export { useUpsertManager as useListUpsertManager } from "react-declarative/components/List/hooks/useUpsertManager";
  export { useToggleHandler as useListToggleHandler } from "react-declarative/components/List/hooks/useToggleHandler";
  export { useIntersectionConnect as useListIntersectionConnect } from "react-declarative/components/List/hooks/useIntersection";
  export { useIntersectionStorage as useListIntersectionStorage } from "react-declarative/components/List/hooks/useIntersection";
  export { useIntersectionListen as useListIntersectionListen } from "react-declarative/components/List/hooks/useIntersection";
  export { ClassicChipListSlot } from "react-declarative/components/List/common/ClassicChipListSlot";
  export { ClassicFilterListSlot } from "react-declarative/components/List/common/ClassicFilterListSlot";
  export { DialogFilterListSlot } from "react-declarative/components/List/common/DialogFilterListSlot";
  export { ModalFilterListSlot } from "react-declarative/components/List/common/ModalFilterListSlot";
  export { ModernChipListSlot } from "react-declarative/components/List/common/ModernChipListSlot";
  export { DenseFilterListSlot } from "react-declarative/components/List/common/DenseFilterListSlot";
  export { DenseSearchSlot } from "react-declarative/components/List/common/DenseSearchSlot";
  export { ListActionAdd } from "react-declarative/components/List/components/common/ListActionAdd";
  export { ListActionFab } from "react-declarative/components/List/components/common/ListActionFab";
  export { ListActionMenu } from "react-declarative/components/List/components/common/ListActionMenu";
  export * from "react-declarative/components/List/hooks/useColumnConfig";
  export * as ListRules from "react-declarative/components/List/rules";
  export { default } from "react-declarative/components/List/List";
}

declare module "react-declarative/components/One/api/useApiHandler" {
  import { OneHandler } from "react-declarative/model/IOneProps";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents the parameters for an API handler.
   *
   * @template Data - The type of the response data.
   */
  export interface IApiHandlerParams<Data extends IAnything = IAnything> {
    origin?: string;
    requestMap?: (url: URL) => URL;
    responseMap?: (
      json: Data,
    ) => Record<string, any> | Promise<Record<string, any>>;
    onLoadBegin?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    withAbortSignal?: boolean;
    fetchParams?: () => RequestInit;
    fallback?: (e: Error) => void;
    abortSignal?: AbortSignal;
    fetch?: typeof window.fetch;
  }
  /**
   * This function is a generic API handler that fetches data from a specified path using the Fetch API.
   * It provides options for customizing the fetch request, handling loading state, aborting the request, and error handling.
   *
   * @template Data - The type of the data returned from the API
   * @param path - The relative or absolute path to fetch from
   * @param options - An object containing optional configuration options for the API handler
   * @param options.fetch - The fetch function to use (default: window.fetch)
   * @param options.origin - The origin to use when constructing the URL (default: window.location.origin)
   * @param options.abortSignal - The AbortSignal object to use for aborting the request (default: abortManager.signal)
   * @param options.requestMap - A function to transform the URL before making the request (default: (url) => url)
   * @param options.responseMap - A function to transform the JSON response from the API (default: (json) => json as never)
   * @param options.onLoadBegin - An optional callback function to execute when the request begins loading
   * @param options.onLoadEnd - An optional callback function to execute when the request finishes loading
   * @param options.withAbortSignal - Whether to use the abort signal to cancel the request (default: true)
   * @param options.fetchParams - An optional function to retrieve additional fetch parameters to be passed to fetch
   * @param options.fallback - An optional function to handle errors and provide fallback behavior
   * @returns - The API handler function that can be invoked to make the request and retrieve the data
   */
  export const useApiHandler: <Data extends unknown = any>(
    path: string,
    {
      fetch,
      origin,
      abortSignal: signal,
      requestMap,
      responseMap,
      onLoadBegin,
      onLoadEnd,
      withAbortSignal,
      fetchParams,
      fallback,
    }?: IApiHandlerParams<Data>,
  ) => OneHandler<Data, any>;
  export default useApiHandler;
}

declare module "react-declarative/model/FieldType" {
  /**
   * Represents the type of a field in a <One /> component.
   */
  export enum FieldType {
    Layout = "custom-layout",
    Switch = "switch-field",
    YesNo = "yesno-field",
    Line = "line-field",
    File = "file-field",
    Group = "group-layout",
    Paper = "paper-layout",
    Outline = "outline-layout",
    Expansion = "expansion-layout",
    Radio = "radio-field",
    Checkbox = "checkbox-field",
    Text = "text-field",
    Date = "date-field",
    Time = "time-field",
    Progress = "progress-field",
    Component = "component-field",
    Slider = "slider-field",
    Combo = "combo-field",
    Choose = "choose-field",
    Tree = "tree-field",
    Dict = "dict-field",
    Init = "init-field",
    Phony = "phony-field",
    Button = "button-field",
    Icon = "icon-field",
    Complete = "complete-field",
    Items = "items-field",
    Rating = "rating-field",
    Typography = "typography-field",
    Fragment = "fragment-layout",
    Div = "div-layout",
    Box = "box-layout",
    Tabs = "tabs-layout",
    Hero = "hero-layout",
    Center = "center-layout",
    Stretch = "stretch-layout",
    Condition = "condition-layout",
  }
  export default FieldType;
}

declare module "react-declarative/model/ColumnType" {
  /**
   * Represents the possible types of a column in a table.
   */
  export enum ColumnType {
    Text = "text-cell",
    Action = "action-cell",
    CheckBox = "checkbox-cell",
    Compute = "compute-cell",
    Component = "component-cell",
  }
  export default ColumnType;
}

declare module "react-declarative/model/ActionType" {
  /**
   * Represents different types of actions.
   */
  export enum ActionType {
    Add = "add-action",
    Fab = "fab-action",
    Menu = "menu-action",
  }
  export default ActionType;
}

declare module "react-declarative/model/SelectionMode" {
  /**
   * Enum representing different selection modes.
   *
   * @enum
   */
  export enum SelectionMode {
    Single = "single-selection",
    Multiple = "multiple-selection",
    None = "none-selection",
  }
  export default SelectionMode;
}

declare module "react-declarative/model/IListApi" {
  import { IListState } from "react-declarative/model/IListProps";
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Represents an API for manipulating and retrieving data from a list.
   *
   * @template FilterData - The data type for the filter.
   * @template RowData - The data type for each row in the list.
   */
  export interface IListApi<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > {
    /**
     * Reloads the data.
     *
     * @param [keepPagination] - Indicates whether to keep the current pagination state.
     *
     * @returns A promise that resolves when the data has been reloaded.
     */
    reload: (keepPagination?: boolean) => Promise<void>;
    /**
     * Function to trigger a re-render of the component or element.
     *
     * @function rerender
     * @returns Returns nothing.
     */
    rerender: () => void;
    /**
     * Sets the limit value for a given variable.
     *
     * @param limit - The limit value to be set.
     * @returns
     */
    setLimit: (limit: number) => void;
    /**
     * Sets the current page number of the application.
     *
     * @param page - The page number to set.
     * @returns
     */
    setPage: (page: number) => void;
    /**
     * Sets the rows for the data table.
     *
     * @param rows - An array of row data to set.
     * @returns
     */
    setRows: (rows: RowData[]) => void;
    /**
     * Sets the filter data for filtering data.
     *
     * @param filterData - The filter data object.
     * @returns
     */
    setFilterData: (filterData: FilterData) => void;
    /**
     * Retrieves the state of the list.
     *
     * @returns The state of the list.
     */
    getState: () => IListState<FilterData, RowData>;
  }
  export default IListApi;
}

declare module "react-declarative/model/IOneApi" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents an interface for interacting with the One component by api ref.
   * @template Data - The type of data that the OneApi operates on.
   */
  export interface IOneApi<Data = IAnything> {
    /**
     * Reloads the current page.
     *
     * @function reload
     * @returns - A Promise that resolves when the page reload is completed.
     */
    reload: () => Promise<void>;
    /**
     * Changes the provided data.
     *
     * @param data - The data to be changed.
     * @param [initial=false] - Indicates if the change is an initial change.
     * @returns
     */
    change: (data: Data, initial?: boolean) => void;
    /**
     * Retrieves the data.
     *
     * @function
     * @name getData
     * @returns The retrieved data.
     */
    getData: () => Data;
  }
  export default IOneApi;
}

declare module "react-declarative/model/IListOperation" {
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  import IOption from "react-declarative/model/IOption";
  /**
   * Represents an operation that can be performed on a list of row data.
   *
   * @template RowData The type of the row data in the list.
   * @template Payload The type of the payload for the operation.
   */
  export interface IListOperation<
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
  > extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
      }
    > {
    /**
     * Determines if the 'isAvailable' variable is a function or a boolean.
     *
     * @param rowIds - Array of row identifiers.
     * @param isAll - Indicates if all rows are considered.
     * @param payload - Additional payload data.
     *
     * @returns - A boolean value or a promise resolving to a boolean indicating availability.
     */
    isAvailable?:
      | ((
          rowIds: RowData[],
          isAll: boolean,
          payload: Payload,
        ) => boolean | Promise<boolean>)
      | boolean;
  }
  export default IListOperation;
}

declare module "react-declarative/model/IListRowAction" {
  import IOption from "react-declarative/model/IOption";
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Represents a row action for a list row.
   *
   * @template RowData - The type of data for the row.
   * @template Payload - The type of payload for the action.
   */
  export interface IListRowAction<
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
  > extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
      }
    > {
    /**
     * Determines the visibility of a row based on the provided row data and payload.
     *
     * @param row - The data for the row being evaluated.
     * @param payload - Additional information or data that can be used to determine the row's visibility.
     *
     * @returns - A boolean value indicating whether the row should be visible or not.
     *
     * @async
     */
    isVisible?: (row: RowData, payload: Payload) => Promise<boolean> | boolean;
    /**
     * Checks if a row is disabled based on the row data and payload.
     *
     * @param row - The row data to check.
     * @param payload - The payload to use for checking.
     * @returns - A Promise or boolean indicating if the row is disabled.
     */
    isDisabled?: (row: RowData, payload: Payload) => Promise<boolean> | boolean;
    enabled?: boolean;
  }
  export default IListRowAction;
}

declare module "react-declarative/model/IListProps" {
  import { Ref } from "react";
  import { SxProps } from "@mui/material";
  import ActionType from "react-declarative/model/ActionType";
  import SelectionMode from "react-declarative/model/SelectionMode";
  import IAnything from "react-declarative/model/IAnything";
  import IOneProps from "react-declarative/model/IOneProps";
  import IRowData, { RowId } from "react-declarative/model/IRowData";
  import IColumn from "react-declarative/model/IColumn";
  import IListOperation from "react-declarative/model/IListOperation";
  import IListRowAction from "react-declarative/model/IListRowAction";
  import IField from "react-declarative/model/IField";
  import IListApi from "react-declarative/model/IListApi";
  import IOption from "react-declarative/model/IOption";
  import IOnePublicProps from "react-declarative/model/IOnePublicProps";
  import ITile from "react-declarative/components/Tile/model/ITile";
  import ISize from "react-declarative/model/ISize";
  import { TSubject } from "react-declarative/utils/rx/Subject";
  import { ISlotFactoryContext } from "react-declarative/components/List/components/SlotFactory";
  import { IChipListSlot, TileMode } from "react-declarative/components";
  /**
   * An interface representing the update options for a list action.
   *
   * @typeparam RowData - The type of row data.
   *
   * @extends IListActionOption<RowData>
   */
  interface IUpdateOption<RowData extends IRowData = IAnything>
    extends Omit<
      IListActionOption<RowData>,
      keyof {
        label: never;
        icon: never;
      }
    > {
    action: "update-now";
    label?: IOption["label"];
    icon?: IOption["icon"];
  }
  /**
   * Represents a resort option for a list action.
   * @interface
   * @template RowData - The type of row data for the resort option.
   * @extends {Omit<IListActionOption<RowData>, "label" | "icon">}
   */
  interface IResortOption<RowData extends IRowData = IAnything>
    extends Omit<
      IListActionOption<RowData>,
      keyof {
        label: never;
        icon: never;
      }
    > {
    action: "resort-action";
    label?: IOption["label"];
    icon?: IOption["icon"];
  }
  /**
   * Represents the options for the "drop-filters" action in a list.
   *
   * @template RowData - The type of the row data.
   *
   * @interface IDropFiltersOption
   * @extends {Omit<IListActionOption<RowData>, 'label' | 'icon'>}
   */
  interface IDropFiltersOption<RowData extends IRowData = IAnything>
    extends Omit<
      IListActionOption<RowData>,
      keyof {
        label: never;
        icon: never;
      }
    > {
    action: "drop-filters";
    label?: IOption["label"];
    icon?: IOption["icon"];
  }
  /**
   * Represents an option for adding filters.
   *
   * @template RowData - The type of the row data.
   */
  interface IAddFiltersOption<RowData extends IRowData = IAnything>
    extends Omit<
      IListActionOption<RowData>,
      keyof {
        label: never;
        icon: never;
      }
    > {
    action: "add-action";
    label?: IOption["label"];
    icon?: IOption["icon"];
  }
  /**
   * Represents an option for a list action.
   *
   * @template RowData - The type of the row data.
   * @template Payload - The type of the payload.
   */
  export interface IListActionOption<
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
  > extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
      }
    > {
    /**
     * Check if a specific condition is satisfied for the visibility of an element.
     *
     * @param selectedRows - An array of selected rows.
     * @param payload - The payload object containing additional data.
     * @returns - A Promise resolving to a boolean value indicating the visibility, or a boolean value indicating the visibility of the element.
     */
    isVisible?: (
      selectedRows: RowData[],
      payload: Payload,
    ) => Promise<boolean> | boolean;
    /**
     * Checks whether the entity is disabled based on the provided selected rows and payload.
     *
     * @param selectedRows - The array of selected rows.
     * @param payload - The payload object containing additional data.
     * @returns - A promise or boolean indicating whether the entity is disabled.
     */
    isDisabled?: (
      selectedRows: RowData[],
      payload: Payload,
    ) => Promise<boolean> | boolean;
  }
  /**
   * Represents an action that can be performed on a list of data.
   * @template RowData - The type of the row data.
   * @template Payload - The type of the payload.
   */
  export interface IListAction<
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
  > {
    type: ActionType;
    action?: string;
    label?: string;
    /**
     * Determines the visibility of a certain element based on the provided parameters.
     *
     * @param selectedRows - An array of selected rows.
     * @param payload - The payload containing additional information.
     * @returns - A promise resolving to a boolean value indicating the visibility, or a boolean value indicating the visibility directly.
     */
    isVisible?: (
      selectedRows: RowData[],
      payload: Payload,
    ) => Promise<boolean> | boolean;
    /**
     * Checks if a row or a payload is disabled
     * @param selectedRows - The selected rows to check against
     * @param payload - The payload to check against
     * @returns - A promise that resolves with a boolean indicating if the row or the payload is disabled, or a boolean indicating if the row or the payload
     * is disabled
     */
    isDisabled?: (
      selectedRows: RowData[],
      payload: Payload,
    ) => Promise<boolean> | boolean;
    /**
     * Represents the icon component in React.
     *
     * @typedef IconType
     */
    icon?: React.ComponentType<any>;
    /**
     * @typedef IListActionOption<T>
     * @property rowData - The data of the row.
     *
     * @typedef IUpdateOption<T>
     * @property rowData - The data of the row.
     *
     * @typedef IResortOption<T>
     * @property rowData - The data of the row.
     *
     * @typedef IDropFiltersOption<T>
     * @property rowData - The data of the row.
     *
     * @typedef IAddFiltersOption<T>
     * @property rowData - The data of the row.
     *
     * @typedef Options
     *
     * @param options - An array of options.
     */
    options?: (
      | IListActionOption<RowData>
      | IUpdateOption<RowData>
      | IResortOption<RowData>
      | IDropFiltersOption<RowData>
      | IAddFiltersOption<RowData>
    )[];
  }
  /**
   * Represents a chip in a list.
   *
   * @template RowData - The type of the row data associated with the chip.
   */
  export interface IListChip<RowData extends IRowData = IAnything> {
    name: keyof RowData;
    label: string;
    color?: string;
    enabled?: boolean;
  }
  /**
   * Represents the result of a list handling operation.
   *
   * @template RowData - The type of the row data.
   * @typedef ListHandlerResult
   * @typedef {{
   *   rows: RowData[];
   *   total: number | null;
   * }} ListHandlerResult[]
   */
  export type ListHandlerResult<RowData extends IRowData = IAnything> =
    | RowData[]
    | {
        rows: RowData[];
        total: number | null;
      };
  /**
   * Represents the avatar for the list item.
   * @typedef ListAvatar
   * @property  [src] - The source URL for the avatar image.
   * @property  [alt] - The alternate text for the avatar image.
   */
  export type ListAvatar = {
    src?: string;
    alt?: string;
  };
  /**
   * Represents a pagination handler for a list.
   *
   * @typedef ListHandlerPagination
   * @property  limit - The number of items to retrieve per page.
   * @property  offset - The starting index of the items to retrieve.
   */
  export type ListHandlerPagination = {
    limit: number;
    offset: number;
  };
  /**
   * Represents a list handler for chips.
   * @template RowData - The type of row data.
   */
  export type ListHandlerChips<RowData extends IRowData = IAnything> = Partial<
    Record<keyof RowData, boolean>
  >;
  /**
   * Represents a sorting model for a list handler.
   *
   * @template RowData - The type of data in list rows.
   */
  export type ListHandlerSortModel<RowData extends IRowData = IAnything> =
    IListSortItem<RowData>[];
  /**
   * Represents a ListHandler class that handles filtering, pagination, sorting, and searching data.
   *
   * @param <FilterData> The type of data used for filtering.
   * @param <RowData> The type of data in each row.
   * @param <Payload> Optional payload data.
   */
  export type ListHandler<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
    Payload = IAnything,
  > =
    | RowData[]
    | ((
        data: FilterData,
        pagination: ListHandlerPagination,
        sort: ListHandlerSortModel<RowData>,
        chips: ListHandlerChips<RowData>,
        search: string,
        payload: Payload,
      ) => Promise<ListHandlerResult<RowData>> | ListHandlerResult<RowData>);
  /**
   * Represents the state of a list.
   *
   * @template FilterData - The type of the filter data.
   * @template RowData - The type of the row data.
   */
  export interface IListState<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > {
    initComplete: boolean;
    payload: IAnything;
    filterData: FilterData;
    isChooser: boolean;
    isInfinite: boolean;
    isCustom: boolean;
    isPageItem: boolean;
    rows: RowData[];
    limit: number;
    offset: number;
    total: number | null;
    loading: boolean;
    search: string;
    filtersCollapsed: boolean;
    sort: ListHandlerSortModel<RowData>;
    chips: ListHandlerChips<RowData>;
    rerender: boolean;
  }
  /**
   * Interface contract for callback functions used in IList functionality.
   *
   * @template FilterData - The type of data to be used in filter operations.
   * @template RowData - The type of data contained in each row.
   */
  export interface IListCallbacks<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > {
    /**
     * Handles the list state reset.
     *
     * @function
     * @name handleDefault
     * @returns A promise that resolves with no value.
     */
    handleDefault: () => Promise<void>;
    /**
     * Handles the sort model for the given sort.
     *
     * @param sort - The sort model to handle.
     * @returns
     */
    handleSortModel: (sort: ListHandlerSortModel<RowData>) => void;
    /**
     * Handles the filter action.
     *
     * @param data - The filter data to be processed.
     * @param [keepPagination] - Indicates whether to keep the pagination state.
     *                                    Defaults to false.
     * @returns
     */
    handleFilter: (data: FilterData, keepPagination?: boolean) => void;
    /**
     * Handle page change function.
     *
     * @param page - The page number being handled.
     * @returns - There is no return value.
     */
    handlePageChange: (page: number) => void;
    /**
     * Handles a change in the limit value.
     *
     * @param limit - The new limit value.
     * @returns
     */
    handleLimitChange: (limit: number) => void;
    /**
     * Callback function to handle changes in rows.
     *
     * @param rows - An array of row data.
     * @returns - This function does not return anything.
     */
    handleRowsChange: (rows: RowData[]) => void;
    /**
     * Handles the event when the filters are collapsed or expanded.
     *
     * @param filtersCollapsed - Indicates whether the filters are collapsed or expanded.
     * @returns
     */
    handleFiltersCollapsed: (filtersCollapsed: boolean) => void;
    /**
     * Handles the chips list.
     *
     * @param chips - The list of chips to be handled.
     * @returns
     */
    handleChips: (chips: ListHandlerChips) => void;
    /**
     * Reloads the data and updates the UI.
     *
     * @param [keepPagination=false] - Determines whether to keep the current pagination state.
     *                                            If set to true, the pagination will not be reset after reloading.
     *                                            If not provided or set to false, the pagination will be reset to its initial state.
     * @returns - A promise that resolves once the data has been reloaded and the UI has been updated.
     */
    handleReload: (keepPagination?: boolean) => Promise<void>;
    /**
     * Handles the search action.
     *
     * @param search - The search query entered by the user.
     * @returns
     */
    handleSearch: (search: string) => void;
    /**
     * Function to handle re-rendering.
     *
     * @function
     * @name handleRerender
     * @returns
     */
    handleRerender: () => void;
    computeKeepPageOnReload: () => boolean;
  }
  /**
   * Represents a slot of position action in a list.
   * @interface
   * @template FilterData - The type of filter data.
   * @template RowData - The type of row data.
   * @template Payload - The type of payload.
   */
  export interface IPositionActionListSlot<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
  > extends IListCallbacks<FilterData, RowData> {
    filterData: Record<string, any>;
    pagination: ListHandlerPagination;
    sortModel: ListHandlerSortModel<RowData>;
    chips: Record<string | number | symbol, boolean | undefined>;
    search: string;
    payload: Payload;
  }
  /**
   * Represents an item used for sorting in a list.
   * @template RowData - The type of the row data in the list.
   */
  export interface IListSortItem<RowData extends IRowData = IAnything> {
    field: keyof RowData;
    sort: "asc" | "desc";
  }
  /**
   * Interface for the List datagrid component props.
   * @template FilterData The type of the filter data.
   * @template RowData The type of the row data.
   * @template Payload The type of the payload.
   * @template Field The type of the field.
   */
  export interface IListProps<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
    Field extends IField = IField<FilterData, Payload>,
  > {
    isBaseline?: IOneProps["isBaseline"];
    isBaselineForRoot?: IOneProps["isBaselineForRoot"];
    apiRef?: Ref<IListApi<FilterData, RowData>>;
    /**
     * Subject for trigger action externally
     */
    actionSubject?: TSubject<string>;
    /**
     * Represents a React component that will be rendered after the chip list.
     */
    AfterChips?: React.ComponentType<IChipListSlot>;
    /**
     * Represents a React component type for BeforeSelectionLabel.
     *
     * @template FilterData - The type of data used for filtering.
     * @template RowData - The type of data used for individual rows.
     * @template Payload - The type of payload for action.
     */
    BeforeSelectionLabel?: React.ComponentType<any>;
    /**
     * Represents a React component type for BeforeActionList.
     *
     * @template FilterData - The type of data used for filtering.
     * @template RowData - The type of data used for individual rows.
     * @template Payload - The type of payload for action.
     */
    BeforeActionList?: React.ComponentType<
      IPositionActionListSlot<FilterData, RowData, Payload>
    >;
    /**
     * Represents a React component for AfterActionList.
     *
     * @typeparam FilterData - The type of filter data.
     * @typeparam RowData - The type of row data.
     * @typeparam Payload - The type of payload.
     */
    AfterActionList?: React.ComponentType<
      IPositionActionListSlot<FilterData, RowData, Payload>
    >;
    /**
     * A React component that represents a list of position actions before an operation.
     *
     * @typedef BeforeOperationList
     * @template FilterData - The type of data used for filtering the list
     * @template RowData - The type of data used for each row in the list
     * @template Payload - The type of data sent as a payload during an operation
     *
     */
    BeforeOperationList?: React.ComponentType<
      IPositionActionListSlot<FilterData, RowData, Payload>
    >;
    /**
     * Represents the AfterOperationList component.
     *
     * This component is a React component that renders a list of actions to be displayed after a specific operation.
     * It is used to render the list of available actions, typically used for filtering or manipulating data.
     *
     * @template FilterData - The type of data used for filtering.
     * @template RowData - The type of data associated with each row.
     * @template Payload - The type of payload used for each action.
     *
     * @component
     */
    AfterOperationList?: React.ComponentType<
      IPositionActionListSlot<FilterData, RowData, Payload>
    >;
    /**
     * Represents a custom template component for rendering a tile.
     *
     * @typedef customTemplate
     * @property customTemplate - The custom template component used for rendering a tile.
     * @template {RowData} - The type of data for the tile row.
     * @template {Payload} - The type of payload associated with the tile.
     */
    customTemplate?: React.ComponentType<ITile<RowData, Payload>>;
    /**
     * Represents a custom template component for rendering a tile.
     *
     * @typedef pageItemTemplate
     * @property pageItemTemplate - The custom template component used for rendering a tile.
     * @template {RowData} - The type of data for the tile row.
     * @template {Payload} - The type of payload associated with the tile.
     */
    pageItemTemplate?: React.ComponentType<ITile<RowData, Payload>>;
    /**
     * Tiling mode for custom template
     */
    tileMode?: TileMode;
    /**
     * Represents the minimum height for a custom template.
     *
     * @type {number|undefined}
     */
    customTemplateMinHeight?: number;
    /**
     * Represents the minimum height for a page template.
     *
     * @type {number|undefined}
     */
    pageItemTemplateMinHeight?: number;
    /**
     * Represents the debounce time in milliseconds for performing fetch requests.
     */
    fetchDebounce?: number;
    className?: string;
    /**
     * Represents the height of an element, measured in pixels.
     *
     * @type {number}
     */
    denseHeight?: number;
    style?: React.CSSProperties;
    title?: string;
    withRawSearch?: boolean;
    withRestorePos?: boolean;
    filterLabel?: string;
    actions?: IListAction<RowData, Payload>[];
    operations?: IListOperation<RowData, Payload>[];
    itemSx?: SxProps;
    limit?: number;
    page?: number;
    sizeByElement?: boolean;
    selectedRows?: RowId[];
    features?: IOnePublicProps<FilterData>["features"];
    readTransform?: IOnePublicProps<FilterData>["readTransform"];
    writeTransform?: IOnePublicProps<FilterData>["writeTransform"];
    incomingTransform?: IOnePublicProps<FilterData>["incomingTransform"];
    outgoingTransform?: IOnePublicProps<FilterData>["outgoingTransform"];
    /**
     * Represents a function that calculates the desired height based on the provided input height.
     *
     * @param height - The input height value.
     * @return {number} - The calculated desired height.
     */
    heightRequest?: (height: number) => number;
    /**
     * Represents a function that takes a width value and returns a number.
     *
     * @param width - The width value to pass to the function.
     * @returns - The number value returned by the function.
     */
    widthRequest?: (width: number) => number;
    onRows?: (rows: RowData[]) => void;
    onSelectedRows?: (rowIds: RowId[], initialChange: boolean) => void;
    onFilterChange?: (data: FilterData) => void;
    onChipsChange?: (data: ListHandlerChips<RowData>) => void;
    onSearchChange?: (search: string) => void;
    onSortModelChange?: (sort: ListHandlerSortModel<RowData>) => void;
    onOperation?: (
      action: string,
      selectedRows: RowData[],
      isAll: boolean,
      reload: (keepPagination?: boolean) => Promise<void>,
    ) => void;
    onRowAction?: (
      action: string,
      row: RowData,
      reload: (keepPagination?: boolean) => Promise<void>,
    ) => void;
    onRowClick?: (
      row: RowData,
      reload: (keepPagination?: boolean) => Promise<void>,
    ) => void;
    onPageChange?: (page: number) => void;
    onColumnAction?: (
      field: string,
      action: string,
      selectedRows: RowData[],
      reload: (keepPagination?: boolean) => Promise<void>,
    ) => void;
    onLimitChange?: (limit: number) => void;
    onLoadStart?: (source: string) => void;
    onLoadEnd?: (isOk: boolean, source: string) => void;
    onAction?: (
      action: string,
      selectedRows: RowData[],
      reload: (keepPagination?: boolean) => Promise<void>,
    ) => void;
    columns: IColumn<FilterData, RowData, Payload>[];
    filters?: Field[];
    handler: ListHandler<FilterData, RowData>;
    payload?: Payload | (() => Payload);
    rowMark?: ((row: RowData) => string) | ((row: RowData) => Promise<string>);
    rowColor?: ((row: RowData) => string) | ((row: RowData) => Promise<string>);
    /**
     * Custom sizeRequest for modal filters
     */
    modalSizeRequest?: (size: ISize) => {
      height: number;
      width: number;
      sx?: SxProps<any>;
    };
    /**
     * Determines if a row is disabled based on various parameters.
     *
     * @param row - The row data object.
     * @param params - The parameters used to determine row disablement.
     * @param params.filterData - The filter data object.
     * @param params.pagination - The pagination object.
     * @param params.sortModel - The sort model object.
     * @param params.chips - The chips object.
     * @param params.search - The search string.
     * @param params.payload - The payload object.
     * @returns - True if the row is disabled, false otherwise.
     */
    isRowDisabled?: (
      row: RowData,
      params: {
        filterData: FilterData;
        pagination: ListHandlerPagination;
        sortModel: ListHandlerSortModel<RowData>;
        chips: ListHandlerChips<RowData>;
        search: string;
        payload: Payload;
      },
    ) => boolean;
    /**
     * Returns a string containing information about the displayed rows label.
     *
     * @param paginationInfo - An object containing pagination information.
     * @param paginationInfo.from - The starting index of the displayed rows.
     * @param paginationInfo.to - The ending index of the displayed rows.
     * @param paginationInfo.count - The total count of rows.
     * @param paginationInfo.page - The current page.
     * @returns - The label displaying information about the displayed rows.
     */
    labelDisplayedRows?: (paginationInfo: {
      from: number;
      to: number;
      count: number;
      page: number;
    }) => string;
    fallback?: (e: Error) => void;
    reloadSubject?: TSubject<void>;
    rerenderSubject?: TSubject<void>;
    setLimitSubject?: TSubject<number>;
    setPageSubject?: TSubject<number>;
    setRowsSubject?: TSubject<RowData[]>;
    setFilterDataSubject?: TSubject<FilterData>;
    rowActions?: IListRowAction[];
    noDisplayedRows?: boolean;
    withOutlinePaper?: boolean;
    withTransparentPaper?: boolean;
    withSingleChip?: boolean;
    withAllListOperations?: boolean;
    withSelectOnRowClick?: boolean;
    withToggledFilters?: boolean;
    withSingleSort?: boolean;
    withSearch?: boolean;
    withLoader?: boolean;
    withMobile?: boolean;
    withHideIfEmpty?: boolean;
    withArrowPagination?: boolean;
    withRangePagination?: boolean;
    withInitialLoader?: boolean;
    selectionLabel?: (size: number) => string | Promise<string>;
    rowsPerPage?: Array<
      | number
      | {
          value: number;
          label: string;
        }
    >;
    selectionMode?: SelectionMode;
    chips?: IListChip<RowData>[];
    chipData?: ListHandlerChips<RowData>;
    search?: string;
    filterData?: Partial<FilterData>;
    sortModel?: ListHandlerSortModel<RowData>;
    isChooser?: boolean;
    isInfinite?: boolean;
    isCustom?: boolean;
    isPageItem?: boolean;
    isDense?: boolean;
    slots?: Partial<ISlotFactoryContext>;
  }
  export default IListProps;
}

declare module "react-declarative/model/IOption" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents an option for a specific action or behavior.
   *
   * @template Payload - The payload type for evaluating option visibility and disabled state.
   */
  export interface IOption<Payload = IAnything> {
    label?: string;
    action?: string;
    divider?: boolean;
    primary?: boolean | number;
    icon?: React.ComponentType<any>;
    /**
     * Checks the visibility of a given payload.
     *
     * @param payload - The payload to check visibility for.
     * @returns - A Promise that resolves to a boolean value indicating the visibility status of the payload, or a boolean value directly indicating the visibility
     * status.
     */
    isVisible?: (payload: Payload) => Promise<boolean> | boolean;
    /**
     * Checks if the provided payload indicates that the element is disabled.
     *
     * @param payload - The payload to check.
     * @returns - A boolean value indicating if the element is disabled.
     */
    isDisabled?: (payload: Payload) => Promise<boolean> | boolean;
  }
  export default IOption;
}

declare module "react-declarative/model/IBreadcrumbsOption" {
  import IOption from "react-declarative/model/IOption";
  /**
   * Represents the options for the Breadcrumbs component.
   *
   * @template T - The type of the payload that can be passed to the isVisible and isDisabled functions.
   */
  export interface IBreadcrumbsOption<T extends any = any>
    extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
      }
    > {
    /**
     * Determines whether the given payload is visible.
     *
     * @param payload - The payload to be checked for visibility.
     * @returns - A promise that resolves to a boolean or a direct boolean value indicating the visibility of the payload.
     */
    isVisible?: (payload: T) => Promise<boolean> | boolean;
    /**
     * Checks if the payload is disabled.
     *
     * @param payload - The payload to check.
     *
     * @returns - A promise or a boolean indicating if the payload is disabled.
     */
    isDisabled?: (payload: T) => Promise<boolean> | boolean;
  }
  export default IBreadcrumbsOption;
}

declare module "react-declarative/helpers/serviceManager" {
  type Key = string | symbol;
  /**
   * Represents a service for service lifecycle.
   * @interface
   */
  export interface IService {
    prefetch?: () => Promise<void>;
    unload?: () => Promise<void>;
  }
  /**
   * Class representing a Service Manager.
   */
  class ServiceManager {
    constructor(_name?: string);
    /**
     * Registers an instance with a given key.
     *
     * @template T - The type of the instance.
     * @param key - The key to register the instance with.
     * @param inst - The instance to register.
     * @returns
     */
    registerInstance: <T = object>(key: Key, inst: T) => void;
    /**
     * Registers a creator function for a given key.
     *
     * @param key - The unique key to identify the creator function.
     * @param ctor - The constructor function that creates an instance of type T.
     * @template T - The type of the object created by the constructor function.
     * @returns
     */
    registerCreator: <T = object>(key: Key, ctor: () => T | Promise<T>) => void;
    /**
     * Injects a service instance based on the provided key.
     *
     * @template T - The type of the service instance.
     * @param key - The key of the service.
     * @param [verbose=true] - Whether to display console errors when the service is unknown.
     * @returns - The service instance.
     * @throws - Throws an error if the service is unknown and `verbose` is `true`.
     */
    inject: <T = object>(key: Key, verbose?: boolean) => T;
    /**
     * A variable that represents a single shot function for waiting until a specific condition is met.
     *
     * @typedef waitForProvide
     * @param [verbose=false] - Whether to enable verbose mode or not.
     * @returns - A promise that resolves when the specified condition is met.
     *
     */
    waitForProvide: ((verbose?: any) => Promise<void>) &
      import("../utils/hof/singleshot").IClearable;
    /**
     * Executes prefetch operation for all service instances in a service manager.
     *
     * @param [verbose=true] - Flag to enable verbose logging.
     * @returns - Promise that resolves when prefetch operation is completed.
     * @throws - Throws an error if an error occurs during prefetch operation.
     */
    prefetch: ((verbose?: any) => Promise<void>) &
      import("../utils/hof/singleshot").IClearable;
    /**
     * Unload function that unloads services and clears prefetch.
     *
     * @param verbose - Optional parameter to enable verbose logging.
     * @returns - A promise that resolves when all services are unloaded.
     * @throws - If any error occurs during the unload process.
     */
    unload: ((verbose?: any) => Promise<void>) &
      import("../utils/hof/singleshot").IClearable;
    /**
     * Clears the state of the current instance.
     * Resets the resolution order, reverse counter, creators, instances, prefetch, and unload.
     *
     * @function clear
     * @memberof <YourPackageName>
     * @instance
     * @returns
     */
    clear: () => void;
    /**
     * Converts a resolution tree to a YAML UML representation.
     * Prints the UML representation to the console and returns it as a string.
     *
     * @returns The YAML UML representation of the resolution tree.
     */
    toUML: (maxNesting?: number) => string;
    /**
     * Disable UML log collection. Increase performance
     * on production
     */
    disableUML: () => void;
  }
  global {
    interface Window {
      __reactDeclarative_ServiceManager: ServiceManager;
    }
  }
  /**
   * An implementation of the IServiceManager interface.
   *
   * @class
   */
  export const serviceManager: {
    _serviceManager: ServiceManager;
    /**
     * Registers an instance with the service manager.
     *
     * @param key - The key for the registered instance.
     * @param inst - The instance to be registered.
     * @returns
     */
    registerInstance: <T = object>(key: Key, inst: T) => void;
    /**
     * Registers a creator function for a given key.
     *
     * @param key - The key to associate with the creator function.
     * @param ctor - The creator function that returns the desired object or a promise resolving to the desired object.
     * @returns
     */
    registerCreator: <T_1 = object>(
      key: Key,
      ctor: () => T_1 | Promise<T_1>,
    ) => void;
    /**
     * Injects a dependency using the given key and returns an instance of the dependency.
     *
     * @template T - The type of the dependency being injected.
     * @param key - The key used to locate the dependency.
     * @param [verbose=true] - A flag indicating whether verbose logging should be enabled (default is true).
     * @returns - An instance of the dependency.
     */
    inject: <T_2 = object>(key: Key, verbose?: boolean) => T_2;
    /**
     * Wait for the service to be provided.
     *
     * @async
     * @param verbose - Whether to output verbose logs.
     * @returns - A promise that resolves when the service is provided.
     */
    waitForProvide: (verbose?: boolean) => Promise<void>;
    /**
     * Prefetches data using the `_serviceManager.prefetch` method.
     *
     * @param [verbose=true] - Specifies whether to enable verbose mode.
     * @returns - A promise that resolves when the prefetching is complete.
     */
    prefetch: (verbose?: boolean) => Promise<void>;
    /**
     * Unloads a resource using the _serviceManager.
     *
     * @async
     * @param [verbose=true] - Whether to output verbose information. Default value is true.
     * @returns - A promise that resolves when the resource is unloaded.
     */
    unload: (verbose?: boolean) => Promise<void>;
    /**
     * Clears the service.
     *
     * @memberOf SomeClass
     * @function
     * @name clear
     * @instance
     *
     * @returns Returns nothing.
     */
    clear: () => void;
    /**
     * Converts a resolution tree to a YAML UML representation.
     * Prints the UML representation to the console and returns it as a string.
     *
     * @returns The YAML UML representation of the resolution tree.
     */
    toUML: () => string;
    /**
     * Disable UML log collection. Increase performance
     * on production
     */
    disableUML: () => void;
  };
  const provide: <T = object>(key: Key, ctor: () => T | Promise<T>) => void,
    waitForProvide: (verbose?: boolean) => Promise<void>,
    inject: <T = object>(key: Key, verbose?: boolean) => T,
    prefetch: (verbose?: boolean) => Promise<void>,
    unload: (verbose?: boolean) => Promise<void>;
  export { provide, inject, waitForProvide, prefetch, unload };
  /**
   * Create a service manager with the given name.
   *
   * @param name - The name of the service manager. Default value is 'unknown'.
   * @returns - An object containing various methods related to the service manager.
   */
  export const createServiceManager: (name?: string) => {
    serviceManager: ServiceManager;
    provide: <T = object>(key: Key, ctor: () => T | Promise<T>) => void;
    inject: <T_1 = object>(key: Key) => T_1;
    prefetch: () => Promise<void>;
    unload: () => Promise<void>;
    dispose: () => Promise<void>;
  };
  export default createServiceManager;
}

declare module "react-declarative/helpers/websocketManager" {
  import Subject from "react-declarative/utils/rx/Subject";
  /**
   * WebSocket manager for handling WebSocket disconnect event
   */
  export const websocketManager: {
    /**
     * Subject for handling WebSocket close events.
     * @type The subject for close events.
     * @private
     */
    readonly _closeSubject: Subject<CloseEvent>;
    /**
     * Initializes the WebSocket manager by overriding the native WebSocket class.
     */
    init: () => void;
    /**
     * Subscribes to WebSocket close events.
     * @param fn - The function to call when a WebSocket is closed.
     * @returns An unsubscribe function.
     */
    listenDisconnect: (fn: (e: CloseEvent) => void) => () => void;
  };
  export default websocketManager;
}

declare module "react-declarative/helpers/routeManager" {
  import { BrowserHistory, HashHistory, MemoryHistory } from "history";
  import { ISwitchItem } from "react-declarative/utils/getRouteParams";
  import Subject from "react-declarative/utils/rx/Subject";
  /**
   * Class representing a RouteManager.
   *
   * @template T - Type for the route parameters.
   * @template I - Type for the route items.
   */
  export class RouteManager<
    T extends Record<string, any> = Record<string, any>,
    I extends ISwitchItem = ISwitchItem,
  > extends Subject<void> {
    /**
     * Returns the value of the params property.
     *
     * @returns The value of the params property, which can be of type T or null.
     */
    get params(): T | null;
    /**
     * Retrieves the value of the item.
     *
     * @return The value of the item. Returns null if item is not set.
     */
    get item(): I | null;
    constructor(
      routes: I[],
      history: MemoryHistory | BrowserHistory | HashHistory,
    );
    /**
     * Disposes of the current object by unsubscribing from any subscriptions.
     * @function
     * @memberof Object
     * @name dispose
     * @returns
     */
    dispose: () => void;
  }
  /**
   * Creates a route parameters manager.
   *
   * @template T - The type of the route parameters object.
   * @extends {Record<string, any>}
   * @template I - The type of the switch item object.
   * @extends {ISwitchItem}
   *
   * @param routes - The list of routes.
   * @param history - The history object.
   *
   * @returns - The function that returns the current route parameters object.
   */
  export const createRouteParamsManager: <
    T extends Record<string, any> = Record<string, any>,
    I extends ISwitchItem = ISwitchItem,
  >(
    routes: I[],
    history: MemoryHistory | BrowserHistory | HashHistory,
  ) => {
    (): T | null;
    clear: void;
  };
  /**
   * A function that creates a route item manager.
   *
   * @param routes - An array of switch items representing routes.
   * @param history - The history object to be used for navigation.
   *
   * @returns - A function that returns the current route item.
   */
  export const createRouteItemManager: <
    T extends Record<string, any> = Record<string, any>,
    I extends ISwitchItem = ISwitchItem,
  >(
    routes: I[],
    history: MemoryHistory | BrowserHistory | HashHistory,
  ) => {
    (): I | null;
    clear: void;
  };
  export { ISwitchItem };
  export default RouteManager;
}

declare module "react-declarative/helpers/ArraySet" {
  interface IArraySet<T = any> extends Array<T> {
    toArray: () => Array<T>;
  }
  export class ArraySet<T = any> extends Array<T> implements IArraySet<T> {
    constructor(_source: T[]);
    includes: (searchElement: T) => boolean;
    filter: IArraySet["filter"];
    map: IArraySet["map"];
    push: IArraySet["push"];
    pop: IArraySet["pop"];
    unshift: IArraySet["unshift"];
    shift: IArraySet["shift"];
    splice: IArraySet["splice"];
    slice: IArraySet["slice"];
    concat: IArraySet["concat"];
    toArray: () => T[];
  }
  export default ArraySet;
}

declare module "react-declarative/hooks/usePreventAutofill" {
  import * as React from "react";
  /**
   * Interface representing parameters for a component.
   *
   * @template T - The type of the input element.
   */
  interface IParams<T = HTMLInputElement> {
    onFocus?: React.FocusEventHandler<T>;
    onTouchStart?: React.TouchEventHandler<T>;
    onContextMenu: React.MouseEventHandler<T>;
    readOnly?: boolean;
  }
  /**
   * Interface for representing the result of an operation or request.
   * @template T - The type of the element being handled.
   */
  interface IResult<T = HTMLInputElement> {
    readOnly: boolean;
    onFocus: React.FocusEventHandler<T>;
    onTouchStart: React.TouchEventHandler<T>;
    onContextMenu: React.MouseEventHandler<T>;
  }
  /**
   * This function takes an object with optional parameters and returns an object with properties and event handlers related to preventing autofill behavior on an HTMLInputElement.
   *
   * @see https://stackoverflow.com/questions/15738259/disabling-chrome-autofill/36283282
   *
   * @template T - The type of the HTMLInputElement.
   * @param [params={}] - An object containing optional parameters.
   * @param [params.readOnly] - Specifies whether the input element is read-only.
   * @param [params.onFocus] - Event handler for the "focus" event.
   * @param [params.onTouchStart] - Event handler for the "touchstart" event.
   * @param [params.onContextMenu] - Event handler for the "contextmenu" event.
   * @returns - An object with properties and event handlers related to preventing autofill behavior on an HTMLInputElement.
   */
  export const usePreventAutofill: <T = HTMLInputElement>({
    readOnly: upperReadOnly,
    onFocus,
    onTouchStart,
    onContextMenu,
  }?: Partial<IParams<T>>) => IResult<T>;
  export default usePreventAutofill;
}

declare module "react-declarative/hooks/useManagedCursor" {
  import { ChangeEvent } from "react";
  import IField from "react-declarative/model/IField";
  interface IParams {
    inputFormatterSymbol?: IField["inputFormatterSymbol"];
    inputFormatterAllowed?: IField["inputFormatterAllowed"];
    inputFormatterReplace?: IField["inputFormatterReplace"];
    inputFormatterTemplate?: IField["inputFormatterTemplate"];
    inputFormatter?: IField["inputFormatter"];
    value?: string;
    onChange?: (value: string) => void;
  }
  export const useManagedCursor: ({
    inputFormatterSymbol: symbol,
    inputFormatterAllowed: allowed,
    inputFormatterReplace: replace,
    inputFormatterTemplate: template,
    inputFormatter,
    value: upperValue,
    onChange,
  }: IParams) => {
    inputRef: import("react").MutableRefObject<HTMLInputElement>;
    inputValue: string;
    onInputChange: (e: ChangeEvent<HTMLInputElement>) => void;
  };
  export default useManagedCursor;
}

declare module "react-declarative/hooks/useItemModal" {
  import { IItemModalProps } from "react-declarative/components/common/ItemModal";
  interface IParams extends IItemModalProps {
    payload: Record<string, unknown>;
    _autofocusDelay?: number;
  }
  export const useItemModal: (params: IParams) => () => void;
  export default useItemModal;
}

declare module "react-declarative/hooks/useOneInput" {
  import IAnything from "react-declarative/model/IAnything";
  interface IParams<T extends IAnything = IAnything> {
    onValueChange: (value: T) => void;
    readonly: boolean;
    value: T;
  }
  export const useOneInput: <T extends unknown = any>({
    readonly,
    value: upperValue,
    onValueChange,
  }: IParams<T>) => {
    key: string;
    readOnly: boolean;
    value: T | undefined;
    defaultValue: T;
    onBlur: (e: any) => void;
  };
  export default useOneInput;
}

declare module "react-declarative/hooks/useContextMenu" {
  import * as React from "react";
  import { IAsyncProps } from "react-declarative/components/Async";
  import IOption from "react-declarative/model/IOption";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents the parameters for a certain action.
   * @template T - The type of the payload object.
   */
  interface IParams<T extends any = object> {
    keepMounted?: boolean;
    options: Partial<IOption>[];
    onAction?: (action: string) => void;
    fallback?: (e: Error) => void;
    deps?: any[];
    throwError?: boolean;
    reloadSubject?: TSubject<void>;
    payload?: IAsyncProps<T>["payload"];
    onLoadStart?: IAsyncProps<T>["onLoadStart"];
    onLoadEnd?: IAsyncProps<T>["onLoadEnd"];
    BeforeContent?: React.ComponentType<any>;
    AfterContent?: React.ComponentType<any>;
  }
  /**
   * @interface IResult
   * Represents the interface for a context menu.
   * @property elementProps - The properties for the result element.
   * @property elementProps.onContextMenu - The callback function for the context menu event.
   * @property render - The function that renders the result.
   */
  interface IResult {
    elementProps: {
      onContextMenu: React.MouseEventHandler<HTMLDivElement>;
    };
    render: () => React.ReactNode;
  }
  /**
   * Represents a utility for displaying a context menu.
   *
   * @template T - The type of the payload object.
   *
   * @param params - The parameters for configuring the context menu.
   * @param [params.keepMounted=false] - Flag indicating if the menu should remain mounted when closed.
   * @param [params.AfterContent] - The component to render after the menu items.
   * @param [params.BeforeContent] - The component to render before the menu items.
   * @param [params.deps] - Dependencies to trigger reload of menu items.
   * @param [params.payload] - The payload object to pass to menu item handlers.
   * @param [params.onLoadStart] - The callback to invoke when the menu items start loading.
   * @param [params.onLoadEnd] - The callback to invoke when the menu items finish loading.
   * @param [params.onAction=() => undefined] - The callback to invoke when a menu item is clicked.
   * @param [params.options=[]] - The array of options to render as menu items.
   * @param [params.fallback] - The component to render as a fallback during loading.
   * @param [params.reloadSubject] - The subject to trigger a reload of menu items.
   * @param [params.throwError] - Flag indicating if an error should be thrown on loading failures.
   *
   * @returns - The object containing the properties and methods for rendering the context menu.
   * @property elementProps - The properties to apply to the element that triggers the context menu.
   * @property render - The function to render the context menu component.
   */
  export const useContextMenu: <T extends unknown = object>({
    keepMounted,
    AfterContent,
    BeforeContent,
    deps,
    payload,
    onLoadStart,
    onLoadEnd,
    onAction,
    options,
    fallback,
    reloadSubject,
    throwError,
  }: IParams<T>) => IResult;
  export default useContextMenu;
}

declare module "react-declarative/hooks/useChangeDelay" {
  export const useChangeDelay: (delay?: number) => {
    delay$: import("react").MutableRefObject<boolean>;
    doDelay: () => Promise<void>;
  };
  export default useChangeDelay;
}

declare module "react-declarative/hooks/useSingleshot" {
  import { IClearable } from "react-declarative/utils/hof/singleshot";
  export const useSingleshot: <T extends (...args: any[]) => any>(
    run: T,
  ) => T & IClearable;
  export default useSingleshot;
}

declare module "react-declarative/hooks/useOnce" {
  interface IParams {
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
  }
  export const useOnce: (
    fn: () => void | Promise<any> | (() => void),
    params?: IParams,
  ) => void;
  export default useOnce;
}

declare module "react-declarative/hooks/useRouteItem" {
  import { BrowserHistory, HashHistory, MemoryHistory } from "history";
  import { ISwitchItem } from "react-declarative/helpers/routeManager";
  /**
   * Returns the current item based on the provided routes and history.
   *
   * @template T - The type of the record for route parameters and data.
   * @template I - The type of the switch item.
   *
   * @param routes - An array of switch items representing the different routes.
   * @param history - The history object used for navigation.
   *
   * @returns - The current switch item based on the provided routes and history.
   */
  export const useRouteItem: <
    T extends Record<string, any> = Record<string, any>,
    I extends ISwitchItem = ISwitchItem,
  >(
    routes: I[],
    history: MemoryHistory | BrowserHistory | HashHistory,
  ) => I | null;
  export default useRouteItem;
}

declare module "react-declarative/hooks/useRouteParams" {
  import { BrowserHistory, HashHistory, MemoryHistory } from "history";
  import { ISwitchItem } from "react-declarative/helpers/routeManager";
  /**
   * The `useRouteParams` hook is used to retrieve the parameters of the currently active route.
   *
   * @template T - The type of the route parameters.
   * @template I - The type of the switch items.
   *
   * @param routes - Array of route items.
   * @param history - The history object to track route changes.
   *
   * @returns - The parameters of the currently active route.
   */
  export const useRouteParams: <
    T extends Record<string, any> = Record<string, any>,
    I extends ISwitchItem = ISwitchItem,
  >(
    routes: I[],
    history: MemoryHistory | BrowserHistory | HashHistory,
  ) => T | null;
  export default useRouteParams;
}

declare module "react-declarative/hooks/useWatchChanges" {
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Watches for changes in dependencies and provides a subject to track changes.
   * An object containing methods and properties for watching changes.
   */
  interface IResult<T extends any[] = any[]> {
    useChanges: () => void;
    changeSubject: TSubject<void>;
    waitForChanges: () => Promise<T>;
    watch: {
      resetWatcher: () => void;
      beginWatch: () => void;
      stopWatch: () => void;
    };
  }
  /**
   * Watches for changes in dependencies and provides a subject to track changes.
   *
   * @param deps - The dependencies to watch for changes.
   * @returns An object containing methods and properties for watching changes.
   */
  export const useWatchChanges: <T extends any[] = any[]>(deps?: T) => IResult;
  export default useWatchChanges;
}

declare module "react-declarative/hooks/useForceUpdate" {
  /**
   * A custom hook that returns a function for force updating a component.
   *
   * @returns The function to be used for force updating.
   */
  export const useForceUpdate: () => () => void;
  export default useForceUpdate;
}

declare module "react-declarative/hooks/useUserAgent" {
  /**
   * Returns an object that contains information about the user agent.
   * @returns - The user agent information.
   * @property isAppleMobile - Indicates whether the user agent is an Apple mobile device (iPad, iPhone, or iPod).
   */
  export const useUserAgent: () => {
    isAppleMobile: boolean;
  };
  export default useUserAgent;
}

declare module "react-declarative/hooks/usePointer" {
  /**
   * Creates a pointer using the given reference.
   *
   * @template T - The type of the reference object.
   * @param ref - The reference object.
   * @returns - The pointer object.
   */
  export const usePointer: <T extends object>(
    ref?: T | undefined,
  ) => readonly [{}, (ref: T) => void];
  export default usePointer;
}

declare module "react-declarative/hooks/useLocalHistory" {
  import { Update } from "history";
  import History from "react-declarative/model/History";
  /**
   * Represents the parameters for navigating to a specific pathname in a web application.
   *
   * @interface
   */
  interface IParams {
    history?: History;
    pathname: string;
    onNavigate?: (update: Update) => void;
  }
  /**
   * Initializes and manages a local history object.
   *
   * @param options - The options for the local history.
   * @param options.history - The upper history object to sync with.
   * @param [options.pathname="/"] - The initial pathname for the history.
   *
   * @return - The local history object.
   */
  export const useLocalHistory: ({
    history: upperHistory,
    pathname,
    onNavigate,
  }?: Partial<IParams>) => {
    history: import("history").MemoryHistory;
  };
  export default useLocalHistory;
}

declare module "react-declarative/utils/toRouteUrl" {
  /**
   * Converts a template string and params object into a route URL.
   * @param template - The template string representing the route URL.
   * @param params - The parameters object to be filled into the template.
   * @returns The generated route URL.
   */
  export const toRouteUrl: (template: string, params: object) => string;
  export default toRouteUrl;
}

declare module "react-declarative/utils/parseRouteUrl" {
  /**
   * Parses the given route template and URL to match them and returns the result.
   *
   * @param template - The route template to match against.
   * @param url - The URL to be matched.
   * @returns - The matched result or null if no match is found.
   */
  export const parseRouteUrl: (
    template: string,
    url: string,
  ) => import("path-to-regexp").MatchResult<object> | null;
  export default parseRouteUrl;
}

declare module "react-declarative/model/IMenuGroup" {
  import * as React from "react";
  /**
   * Represents a menu option.
   *
   * @template T - The type of the payload for dynamic properties.
   */
  export interface IMenuOption<T extends any = any> {
    name?: string;
    label: string;
    /**
     * Represents a variable called 'icon' which is a React component type that can accept any props.
     *
     * @typedef Icon
     */
    icon?: React.ComponentType<any>;
    lifted?: boolean;
    roles?: string[];
    bold?: boolean;
    visible?: boolean;
    disabled?: boolean;
    getRoles?: ((payload: T) => string[]) | ((payload: T) => Promise<string[]>);
    /**
     * Determines whether the payload is in bold format.
     *
     * @typeparam T - The type of the payload.
     * @param payload - The payload to check.
     * @returns - Returns `true` if the payload is in bold format,
     * otherwise returns `false` or a promise that resolves to `true` or `false`.
     */
    isBold?: ((payload: T) => boolean) | ((payload: T) => Promise<boolean>);
    /**
     * Determines if the payload is disabled.
     *
     * @param payload - The payload to check for disablement.
     * @return {boolean | Promise<boolean>} - Returns `true` if the payload is disabled, otherwise `false`.
     *
     * @callback IsDisabledCallback
     * @param payload - The payload to check for disablement.
     * @return {boolean} - Returns `true` if the payload is disabled, otherwise `false`.
     *
     * @callback IsDisabledAsyncCallback
     * @param payload - The payload to check for disablement.
     * @return {Promise<boolean>} - Returns a promise that resolves to `true` if the payload is disabled, otherwise `false`.
     */
    isDisabled?: ((payload: T) => boolean) | ((payload: T) => Promise<boolean>);
    /**
     * Determines the visibility of a payload based on specified conditions.
     *
     * @param isVisible - A function that takes a payload as a parameter and returns a boolean value or a Promise that resolves
     * to a boolean value indicating visibility.
     *
     * @returns - If the isVisible function returns a boolean value, this function will return the evaluated value. If the isVisible function returns a Promise
     *, this function will return a Promise that resolves to a boolean value.
     */
    isVisible?: ((payload: T) => boolean) | ((payload: T) => Promise<boolean>);
  }
  export interface IMenuGroup<T extends any = any> extends IMenuOption<T> {
    options?: IMenuGroup<T>[];
  }
  export default IMenuGroup;
}

declare module "react-declarative/model/IOneProps" {
  import React from "react";
  import { SxProps } from "@mui/material";
  import IField, { Value } from "react-declarative/model/IField";
  import IEntity from "react-declarative/model/IEntity";
  import IAnything from "react-declarative/model/IAnything";
  import IOneApi from "react-declarative/model/IOneApi";
  import { TSubject } from "react-declarative/utils/rx/Subject";
  import { ISlotFactoryContext } from "react-declarative/components/One/components/SlotFactory";
  type DataOrNull<Data = IAnything> = Data | null;
  /**
   * Represents a OneHandler class that can handle data or perform asynchronous tasks with payload.
   * @template Data - The type of data that the OneHandler can handle.
   * @template Payload - The type of payload that the OneHandler can accept.
   */
  export type OneHandler<Data = IAnything, Payload = IAnything> =
    | Data
    | ((payload: Payload) => DataOrNull<Data>)
    | ((payload: Payload) => Promise<DataOrNull<Data>>)
    | null;
  /**
   * Properties of the <One /> template engine component
   */
  export interface IOneProps<
    Data = IAnything,
    Payload = IAnything,
    Field = IField<Data, Payload>,
  > {
    /**
     * Привязывет поля к нижнему краю
     */
    baseline?: boolean;
    /**
     * Привязывает поля и компоновки к верхнему краю
     */
    noBaseline?: boolean;
    /**
     * Ссылка на объект API
     */
    apiRef?: React.Ref<IOneApi>;
    /**
     * Контекст кастомных полей, в отличие от
     * payload доступен к change detection
     */
    context?: Record<string, any>;
    /**
     * Эмиттер для запроса данных
     */
    reloadSubject?: TSubject<void>;
    /**
     * Генерирует плейсхолдеры согласно схеме полей целевого объекта
     */
    withNamedPlaceholders?: boolean;
    /**
     * Эмиттер для перезаписи данных. Вызывает change(data, true)
     */
    changeSubject?: TSubject<Data>;
    /**
     * Эмиттер для изменения данных. Вызывает change(data, false)
     */
    updateSubject?: TSubject<Data>;
    /**
     * Функция, определяющая, нужно ли включить baseline зависимо от
     * расположения поля в иерархии композиции потомков
     */
    isBaseline?: (field: IField) => boolean;
    /**
     * Корневой компонент привязывает поля к нижнему краю только если
     * нет ни одной компоновки
     */
    isBaselineForRoot?: (field: IField) => boolean;
    /**
     * Фабрика для создания полей пользователя
     */
    createField?: (
      entity: IEntity<Data>,
      currentPath: string,
    ) => React.ReactElement;
    /**
     * Фабрика для создания компоновок пользователя
     */
    createLayout?: (
      entity: IEntity<Data>,
      children: React.ReactNode,
      currentPath: string,
    ) => React.ReactElement;
    /**
     * Класс корневой группы
     */
    className?: string;
    /**
     * Если флаг включен, показываем валидацию до фокусировки по полю
     */
    dirty?: boolean;
    /**
     * Список бизнес-функций, ограничивающий отображение полей
     */
    features?: string[];
    /**
     * Стиль корневой группы
     */
    style?: React.CSSProperties;
    /**
     * SX для корневой группы
     */
    sx?: SxProps<any>;
    /**
     * Позволяет загружать данные в компонент
     */
    handler?: OneHandler<Data, Payload>;
    /**
     * Объект, передающийся в пользовательские
     * поля через контекст
     */
    payload?: Payload | (() => Payload);
    /**
     * Вызывается при ошибке в handler
     */
    fallback?: (e: Error) => void;
    /**
     * Коллбек, вызываемый при не прохождении
     * валидации
     */
    invalidity?: (name: string, msg: string, payload: Payload) => void;
    /**
     * Вызываются при фокусировки по филду
     * в компоненте и потере фокуса
     */
    focus?: (
      name: string,
      data: Data,
      payload: Payload,
      onValueChange: (value: Value) => void,
      onChange: (data: Data) => void,
    ) => void;
    blur?: (
      name: string,
      data: Data,
      payload: Payload,
      onValueChange: (value: Value) => void,
      onChange: (data: Data) => void,
    ) => void;
    /**
     * crypt/decrypt значения, получаемого в `makeField` из
     * управляемого объекта
     */
    readTransform?: (
      value: Value,
      name: string,
      data: Data,
      payload: Payload,
    ) => Value;
    writeTransform?: (
      value: Value,
      name: string,
      data: Data,
      payload: Payload,
    ) => Value;
    /**
     * Методы для преобразования целевого объекта, например сериализации/десереализации,
     * чтобы хранить в data страницы строку, синхронизируемую через AJAX
     */
    incomingTransform?: (data: IAnything, payload: Payload) => Data;
    outgoingTransform?: (data: IAnything, payload: Payload) => Data;
    /**
     * Коллбек для управления контекстным меню
     */
    menu?: (
      name: string,
      action: string,
      data: Data,
      payload: Payload,
      onValueChange: (value: Value) => void,
      onChange: (data: Data) => void,
    ) => void;
    /**
     * Коллбек для перехвата клика по полю
     */
    click?: (
      name: string,
      data: Data,
      payload: Payload,
      onValueChange: (value: Value) => void,
      onChange: (data: Data) => void,
      e: React.MouseEvent,
    ) => void | Promise<void>;
    /**
     * Вызывается, когда все поля успели отрисоваться
     * в первый раз, после появления формы
     */
    ready?: () => void;
    /**
     * Вызывается после изменения и передает измененный
     * объект прикладному программисту
     */
    change?: (Data: Data, initial: boolean) => void;
    /**
     * Массив полей, выводимый в компоненте
     */
    fields: Field[];
    /**
     * Префикс для формирования ключей элементов
     */
    prefix?: string;
    /**
     * Коллбеки управления отображением
     * состоянием загрузки
     */
    loadStart?: (source: string) => void;
    loadEnd?: (isOk: boolean, source: string) => void;
    /**
     * Превращает FieldType.Paper в FieldType.Outline
     */
    outlinePaper?: boolean;
    transparentPaper?: boolean;
    /**
     * Блокирует ввод данных
     */
    readonly?: boolean;
    /**
     * Отключает поля ввода
     */
    disabled?: boolean;
    /**
     * Слоты для полей ввода
     */
    slots?: Partial<ISlotFactoryContext>;
    /**
     * Debounce для FieldType.Text
     */
    fieldDebounce?: number;
  }
  export default IOneProps;
}

declare module "react-declarative/hooks/useActualCallback" {
  /**
   * Executes a given callback function while preserving its reference and memoizing it with specified dependencies.
   *
   * @template T - Type of the callback function
   * @param run - The callback function to be executed
   * @param [deps=[]] - The dependencies to be memoized
   * @returns - The memoized callback function
   */
  export const useActualCallback: <T extends (...args: any[]) => any>(
    run: T,
    deps?: any[],
  ) => T;
  export default useActualCallback;
}

declare module "react-declarative/hooks/useActualValue" {
  /**
   * Initializes a ref with the provided value and keeps it up to date.
   *
   * @template T - The type of the value.
   * @param value - The initial value.
   * @returns - A reference object that contains the provided value.
   */
  export const useActualValue: <T = undefined>(
    value: T,
  ) => import("react").MutableRefObject<T>;
  export default useActualValue;
}

declare module "react-declarative/hooks/useActualState" {
  /**
   * Returns an array of values representing the current state and a function to update the state.
   *
   * @template S - The type of the state.
   * @param [initialState] - Optional initial state.
   * @returns - An array containing the mutable reference to the state and the state update function
   *.
   */
  export const useActualState: <S = undefined>(
    initialState?: S | (() => S) | undefined,
  ) => readonly [
    import("react").MutableRefObject<S>,
    import("react").Dispatch<import("react").SetStateAction<S>>,
  ];
  export default useActualState;
}

declare module "react-declarative/hooks/useActualRef" {
  /**
   * Custom hook that creates a mutable reference to a state value
   * and a function to update the state value.
   *
   * @template S - The type of the state value
   * @param initialState - The initial state value or a function that returns the initial state value
   * @returns - An array containing the state reference and handleState function
   */
  export const useActualRef: <S = undefined>(
    initialState?: S | (() => S) | undefined,
  ) => readonly [
    import("react").MutableRefObject<S>,
    (dispatch: S | ((prevState: S) => S)) => void,
  ];
  export default useActualRef;
}

declare module "react-declarative/hooks/useRenderWaiter" {
  /**
   * Creates a render waiter hook.
   *
   * @param [deps] - Optional array of dependencies. When the dependencies change, the render waiter will trigger a re-render.
   * @param [delay=0] - Optional delay in milliseconds before triggering the render waiter.
   * @returns - Render waiter function that returns a promise that resolves when the render is complete.
   */
  export const useRenderWaiter: (
    deps?: any[] | undefined,
    delay?: number,
  ) => () => Promise<void>;
  export default useRenderWaiter;
}

declare module "react-declarative/hooks/useOneArray" {
  /**
   * Hook that manages an array of data.
   *
   * @template T - The type of elements in the array
   * @param [initialValue] - Optional initial value for the array
   * @returns - A tuple containing the managed array and a function to update it
   */
  export const useOneArray: <T = any>(
    initialValue?: T[] | (() => T[]) | null | undefined,
  ) => readonly [
    T[],
    import("react").Dispatch<import("react").SetStateAction<T[] | null>>,
  ];
  /**
   * Checks if an array includes any of the provided items.
   *
   * @template T - The type of the array element and items.
   * @param data - The array to be checked for inclusion.
   * @param items - The items to check for inclusion in the array.
   * @returns - True if any of the items is found in the array, false otherwise.
   */
  export const oneArrayIncludes: <T = any>(
    data: T[] | null,
    ...items: T[]
  ) => boolean;
  export const isOneArray: <T = any>(data: T[]) => boolean;
  export const toOneArray: <T = any>(data: T[]) => unknown[] | null;
  export default useOneArray;
}

declare module "react-declarative/hooks/useAsyncProgress" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents the parameters for a function or method.
   * @interface
   * @template Data - The type of data to be processed.
   * @template Result - The type of result to be returned.
   */
  interface IParams<Data extends IAnything, Result = void> {
    delay?: number;
    onBegin?: () => void;
    onEnd?: (isOk: boolean) => void;
    onFinish?: (
      data: Data[],
      errors: IError[],
      result: (Result | null)[],
    ) => void;
    onError?: (errors: IError[]) => void | boolean;
    onProgress?: (progress: number) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
  }
  /**
   * Represents the interface for an Error object.
   * @interface
   */
  interface IError {
    label: string;
    message: string;
    error: Error;
  }
  /**
   * The `IProcess` interface represents a process with a label and associated data.
   * @template Data - The type of data associated with the process.
   */
  interface IProcess<Data extends IAnything> {
    label: string;
    data: Data;
  }
  /**
   * Executes a process asynchronously with progress tracking and error handling.
   *
   * @template Data - The type of data to be processed.
   * @template Result - The type of the process result.
   * @param process - The process function to be executed on each item.
   * @param options - Optional parameters for customizing the process behavior.
   * @param options.delay - The delay in milliseconds before each item processing. Default is 0.
   * @param options.onError - Callback function to be executed when an error occurs during processing. Default is an empty function.
   * @param options.onProgress - Callback function to be executed on each progress update. Default is an empty function.
   * @param options.onFinish - Callback function to be executed when all items are finished processing. Default is an empty function.
   * @param options.onBegin - Callback function to be executed when the process begins. Default is an empty function.
   * @param options.onEnd - Callback function to be executed when the process ends. Default is an empty function.
   * @returns An object containing the execute function, loading state, progress, and errors.
   *
   */
  export const useAsyncProgress: <Data extends unknown = any, Result = void>(
    process: (item: IProcess<Data>) => Result | Promise<Result>,
    {
      delay,
      onError,
      onProgress,
      onFinish,
      onBegin,
      onEnd,
      ...otherParams
    }: IParams<Data, Result>,
  ) => {
    readonly errors: IError[];
    readonly progress: number;
    readonly execute: (items: IProcess<Data>[]) => void;
    readonly loading: boolean;
    readonly label: string;
  };
  export default useAsyncProgress;
}

declare module "react-declarative/hooks/useAsyncAction" {
  /**
   * Interface for defining optional parameters for a function.
   *
   * @typedef IParams
   * @property [fallback] - Function to handle error if it occurs.
   * @property [onLoadStart] - Function to be called when loading starts.
   * @property [onLoadEnd] - Function to be called when loading ends,
   *                                                  with a boolean indicating if it was successful or not.
   * @property [throwError] - Whether to throw an error or not.
   */
  interface IParams {
    fallback?: (e: Error) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    throwError?: boolean;
  }
  /**
   * Represents the result of an operation.
   *
   * @template Data - The type of data returned by the operation.
   * @template Payload - The type of payload accepted by the execute method.
   */
  export interface IResult<
    Data extends any = any,
    Payload extends any = object,
  > {
    loading: boolean;
    error: boolean;
    execute: (p?: Payload) => Promise<Data | null>;
  }
  /**
   * Executes an asynchronous action with options for handling loading, error, and cancellation.
   *
   * @template Data - The data type returned by the action.
   * @template Payload - The payload type passed to the action.
   * @param run - The action function to execute.
   * @param options - Optional parameters for customizing behavior.
   * @param options.onLoadStart - A callback function to run when the action starts loading.
   * @param options.onLoadEnd - A callback function to run when the action finishes loading.
   * @param options.fallback - A callback function to handle errors when throwError is set to false.
   * @param options.throwError - Whether to throw an error when the action fails.
   * @returns - An object containing loading, error, and execute properties.
   */
  export const useAsyncAction: <
    Data extends unknown = any,
    Payload extends unknown = any,
  >(
    run: (p: Payload) => Data | Promise<Data>,
    { onLoadStart, onLoadEnd, fallback, throwError }?: IParams,
  ) => IResult<Data, Payload>;
  export default useAsyncAction;
}

declare module "react-declarative/hooks/useAsyncValue" {
  import { MutableRefObject } from "react";
  import { IResult } from "react-declarative/hooks/useAsyncAction";
  /**
   * Represents the options for configuring various parameters.
   */
  interface IParams {
    fallback?: (e: Error) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    throwError?: boolean;
    deps?: any[];
  }
  /**
   * This function allows you to manage an asynchronous value by providing a run function and optional parameters.
   *
   * @template Data - The data type of the async value.
   * @param run - A function that returns the async value or a promise that resolves to the async value.
   * @param [params={}] - Optional parameters for customizing the behavior of the async value.
   * @returns - An array containing the current async value, action object for executing the async action, and a setter function
   * to update the async value.
   */
  export const useAsyncValue: <Data extends unknown = any>(
    run: () => Data | Promise<Data>,
    params?: IParams,
  ) => [
    Data | null,
    IResult<void, void>,
    (data: Data) => void,
    {
      waitForResult: () => Promise<Data>;
      data$: MutableRefObject<Data | null>;
    },
  ];
  export default useAsyncValue;
}

declare module "react-declarative/hooks/useSinglerunAction" {
  /**
   * @typedef IParams
   * @property [fallback] - The function to be called when an error occurs.
   * @property [onLoadStart] - The function to be called when the load starts.
   * @property [onLoadEnd] - The function to be called when the load ends.
   * @property [throwError=false] - Determines if an error should be thrown.
   */
  interface IParams {
    fallback?: (e: Error) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    throwError?: boolean;
  }
  /**
   * Interface representing the result of an operation.
   *
   * @template Data - The type of the data returned by the operation.
   * @template Payload - The type of the payload used for the operation.
   */
  interface IResult<Data extends any = any, Payload extends any = object> {
    loading: boolean;
    error: boolean;
    execute: IExecute<Data, Payload>;
  }
  /**
   * Represents an interface for executing an action with a payload and returning data asynchronously.
   * @template Data - The type of data returned by the execution.
   * @template Payload - The type of payload accepted by the execution.
   */
  export interface IExecute<
    Data extends any = any,
    Payload extends any = object,
  > {
    (payload?: Payload): Promise<Data | null>;
    clear(): void;
  }
  /**
   * Function useSinglerunAction
   *
   * @description This function is a custom hook that helps to handle asynchronous actions and manage loading and error states.
   *
   * @template Data - The type of data that the asynchronous action will return.
   * @template Payload - The type of payload that the asynchronous action accepts.
   *
   * @param run - The asynchronous action to be executed.
   * @param options - Additional options for the hook.
   * @param [options.onLoadStart] - Callback function called when the asynchronous action starts.
   * @param [options.onLoadEnd] - Callback function called when the asynchronous action ends.
   * @param [options.fallback] - Callback function called when an error occurs, if `throwError` is set to `false`.
   * @param [options.throwError] - Flag to determine whether to throw an error or call the `fallback` function when an error occurs. Default is `true`.
   *
   * @returns - An object containing the loading state, error state, and an `execute` function to execute the asynchronous action.
   */
  export const useSinglerunAction: <
    Data extends unknown = any,
    Payload extends unknown = any,
  >(
    run: (p: Payload) => Data | Promise<Data>,
    { onLoadStart, onLoadEnd, fallback, throwError }?: IParams,
  ) => IResult<Data, Payload>;
  export default useSinglerunAction;
}

declare module "react-declarative/hooks/useQueuedAction" {
  import { CANCELED_SYMBOL } from "react-declarative/utils/hof/queued";
  /**
   * Interface for defining parameters of an asynchronous operation.
   */
  interface IParams {
    fallback?: (e: Error) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    throwError?: boolean;
  }
  /**
   * Represents the result of an asynchronous operation.
   * @template Data - The type of the data returned by the operation.
   * @template Payload - The type of the payload used by the operation.
   */
  export interface IResult<
    Data extends any = any,
    Payload extends any = object,
  > {
    loading: boolean;
    error: boolean;
    execute: IExecute<Data, Payload>;
  }
  /**
   * @interface IExecute
   * @template Data, Payload
   */
  export interface IExecute<
    Data extends any = any,
    Payload extends any = object,
  > {
    (payload?: Payload): Promise<Data | null>;
    clear(): void;
    cancel(): void;
  }
  /**
   * Executes an asynchronous action with queuing and provides loading and error state.
   *
   * @template Data - The type of data returned by the action.
   * @template Payload - The type of payload accepted by the action.
   *
   * @param run - The function that represents the action to be executed.
   * @param options - Optional parameters for configuring the behavior of the action execution.
   * @param options.onLoadStart - Callback function to be executed when the action starts loading.
   * @param options.onLoadEnd - Callback function to be executed when the action finishes loading.
   * @param options.fallback - Callback function to be executed when an error occurs and `throwError` is set to `false`.
   * @param options.throwError - Specifies whether to throw an error if one occurs during the action execution.
   *
   * @returns - The result object containing the loading state, error state, and the execute function to trigger the action execution.
   */
  export const useQueuedAction: <
    Data extends unknown = any,
    Payload extends unknown = any,
  >(
    run: (p: Payload) => Data | Promise<Data>,
    { onLoadStart, onLoadEnd, fallback, throwError }?: IParams,
  ) => IResult<Data, Payload>;
  export { CANCELED_SYMBOL };
  export default useQueuedAction;
}

declare module "react-declarative/hooks/useMediaContext" {
  /**
   * Returns an object containing information about the current media context.
   *
   * @return The media context object.
   * @property isPhone - Indicates whether the current device is a phone.
   * @property isTablet - Indicates whether the current device is a tablet.
   * @property isDesktop - Indicates whether the current device is a desktop.
   * @property isWide - Indicates whether the current device is a tablet or desktop.
   * @property isMobile - Indicates whether the current device is a phone.
   */
  export const useMediaContext: () => {
    isPhone: boolean;
    isTablet: boolean;
    isDesktop: boolean;
    isWide: boolean;
    isMobile: boolean;
  };
  export default useMediaContext;
}

declare module "react-declarative/hooks/useAudioPlayer" {
  import * as React from "react";
  /**
   * Represents the parameters for a specific operation.
   * @interface
   */
  interface IParams {
    src: string;
  }
  /**
   * Creates an audio player that can be used to play audio files.
   *
   * @param params - The parameters for the audio player.
   * @returns An object with properties and functions for controlling the audio player.
   */
  export const useAudioPlayer: ({ src }: IParams) => {
    audioRef: React.RefObject<HTMLAudioElement>;
    render: () => JSX.Element;
    play: () => void;
  };
  export default useAudioPlayer;
}

declare module "react-declarative/hooks/useChangeSubject" {
  import Subject from "react-declarative/utils/rx/Subject";
  /**
   * Creates a subject that emits the given value whenever it changes.
   *
   * @template T - The type of the value to be emitted by the subject.
   *
   * @param value - The initial value of the subject.
   *
   * @returns - The subject that emits the value whenever it changes.
   */
  export const useChangeSubject: <T = undefined>(value: T) => Subject<T>;
  export default useChangeSubject;
}

declare module "react-declarative/hooks/useDeepChangeSubject" {
  export const useDeepChangeSubject: <T extends object = any>(
    object: T,
  ) => import("..").Subject<T>;
  export default useDeepChangeSubject;
}

declare module "react-declarative/hooks/useReloadTrigger" {
  /**
   * Hook for setting up a reload trigger.
   *
   * @param autoReload - The interval for automatic reload triggering in milliseconds. Default is 0 (disabled).
   * @returns - Object containing the reload trigger value and the reload function.
   */
  export const useReloadTrigger: (autoReload?: number) => {
    reloadTrigger: string;
    doReload: () => void;
  };
  export default useReloadTrigger;
}

declare module "react-declarative/hooks/useSingleton" {
  /**
   * Returns a singleton instance of a given value or a function that creates the value.
   *
   * @template T - The type of the value to be returned.
   * @param value - The value or function that creates the value.
   * @returns The singleton instance of the value.
   */
  export const useSingleton: <T = undefined>(value: T | (() => T)) => T;
  export default useSingleton;
}

declare module "react-declarative/hooks/useBehaviorSubject" {
  import BehaviorSubject from "react-declarative/utils/rx/BehaviorSubject";
  /**
   * Initializes a new BehaviorSubject with optional initial data value.
   *
   * @template Data The type of data stored in the BehaviorSubject.
   * @param [data=null] The initial value of the BehaviorSubject. Defaults to null.
   * @returns The newly created BehaviorSubject instance.
   */
  export const useBehaviorSubject: <Data = any>(
    data?: Data | null,
  ) => BehaviorSubject<Data>;
  export default useBehaviorSubject;
}

declare module "react-declarative/hooks/useSubscription" {
  /**
   * Subscribes to a function and triggers it as a side effect.
   *
   * @param fn - The function to be subscribed to.
   */
  export const useSubscription: (fn: () => () => void) => void;
  export default useSubscription;
}

declare module "react-declarative/hooks/useSubjectValue" {
  import { TSubject } from "react-declarative/utils/rx/Subject";
  /**
   * A function that retrieves and sets the value of a subject.
   *
   * @template Data - The type of data stored in the subject.
   * @param target - The subject to subscribe to.
   * @param [value] - The initial value for the subject, if not provided the subject's initial value will be used.
   * @returns - The current value of the subject.
   */
  export const useSubjectValue: <Data = any>(
    target: TSubject<Data>,
    value?: Data | (() => Data) | undefined,
  ) => Data;
  export default useSubjectValue;
}

declare module "react-declarative/hooks/useElementSize" {
  /**
   * Represents the size of an object or element.
   *
   * @interface
   */
  interface ISize {
    height: number;
    width: number;
  }
  /**
   * Represents the parameters used by a class.
   *
   * @template Size - The size type used in the class.
   *
   * @property [defaultSize] - The default size to be used if size is not provided.
   * @property [target] - The target element for the operation.
   * @property [closest] - The closest element selector.
   * @property [selector] - The element selector.
   * @property [debounce] - The debounce time in milliseconds.
   * @property [compute] - The function used to compute the size.
   * @property [onResize] - The callback function to be executed on resize.
   */
  interface IParams<Size extends ISize> {
    defaultSize?: ISize;
    target?: HTMLElement | null;
    map?: (child: HTMLElement) => HTMLElement | null;
    closest?: string;
    selector?: string;
    debounce?: number;
    compute?: (size: ISize) => Size;
    onResize?: (size: Size) => void;
  }
  /**
   * Calculates the size of an HTML element and updates it when it changes.
   *
   * @template T - The type of the HTML element.
   * @template Size - The interface defining the size object type.
   *
   * @typedef  ISize - The interface defining the size object type.
   *
   * @typedef IParams - The interface defining the optional parameters for the useElementSize function.
   * @property defaultSize - The default size of the element.
   * @property target - The target element to calculate the size for. If not provided, the component's element will be used.
   * @property closest - The selector for the closest ancestor element.
   * @property selector - The selector for a specific descendant element.
   * @property debounce - The debounce delay in milliseconds for resizing events. Defaults to 0 (no debounce).
   * @property compute - A function to compute the size object based on the raw size object. Defaults to a simple type casting.
   * @property onResize - A callback function called when the element size changes.
   *
   * @param options - The optional parameters for the useElementSize function.
   * @returns - An object containing a ref to the element and the current size.
   */
  export const useElementSize: <
    T extends HTMLElement,
    Size extends ISize = ISize,
  >({
    defaultSize: { height, width },
    target,
    map,
    closest,
    selector,
    debounce: delay,
    compute,
    onResize,
  }?: Partial<IParams<Size>>) => {
    elementRef: import("react").RefObject<T>;
    size: Size;
  };
  export default useElementSize;
}

declare module "react-declarative/hooks/useWindowSize" {
  import ISize from "react-declarative/model/ISize";
  /**
   * Represents a set of parameters with generic size and optional resize event handler.
   * @interface
   * @template Size - The type of the size the parameters can compute and resize to.
   */
  interface IParams<Size extends ISize> {
    debounce: number;
    compute: (size: ISize) => Size;
    onResize?: (size: Size) => void;
  }
  /**
   * Returns the size of the window.
   * @template Size - The type of the size object.
   * @param [options] - Optional configuration options.
   * @param [options.debounce] - The delay in milliseconds for debouncing the resize event. Default is `RESIZE_DEBOUNCE`.
   * @param [options.compute] - A function that computes the size object from the window size. Default is `(size) => size as Size`.
   * @param [options.onResize] - A callback function to be called when the window size changes.
   * @returns The size of the window.
   */
  export const useWindowSize: <Size extends ISize = ISize>({
    debounce: delay,
    compute,
    onResize,
  }?: Partial<IParams<Size>>) => Size;
  export default useWindowSize;
}

declare module "react-declarative/hooks/useSubject" {
  import Subject, { TSubject } from "react-declarative/utils/rx/Subject";
  /**
   * Creates and returns a subject that can be subscribed to.
   *
   * @template Data - The data type of the subject.
   * @param target - An optional target subject to subscribe to.
   * @returns - The created subject.
   */
  export const useSubject: <Data = any>(
    target?: TSubject<Data> | null | undefined,
  ) => Subject<Data>;
  export default useSubject;
}

declare module "react-declarative/hooks/useChange" {
  /**
   * Hook for managing the execution of an effect based on changes in dependencies.
   *
   * @param effect - The effect to be executed.
   * @param [deps=[]] - The dependencies to watch for changes.
   * @param [stopWatchByDefault=false] - Whether to initially stop watching for changes.
   * @returns - An object containing utility functions for managing the watcher.
   */
  export const useChange: (
    effect: React.EffectCallback,
    deps?: import("react").DependencyList,
    stopWatchByDefault?: boolean,
  ) => {
    resetWatcher: () => void;
    beginWatch: () => void;
    stopWatch: () => void;
  };
  export default useChange;
}

declare module "react-declarative/hooks/useModel" {
  import Model, { IModelAdapter } from "react-declarative/utils/mvvm/Model";
  import Subject from "react-declarative/utils/rx/Subject";
  /**
   * Represents the parameters for a class.
   * @template T - The type of the initial value.
   */
  export interface IParams<T extends {} = any> {
    initialValue: T | Model<T> | (() => T);
    onChange?: (item: ModelAdapter<T>) => void;
    debounce?: number;
  }
  /**
   * ModelAdapter class that implements the IModelAdapter interface.
   * It adapts a React.MutableRefObject<Model<T>> and provides methods to interact with the underlying model.
   */
  export class ModelAdapter<T extends {} = any> implements IModelAdapter<T> {
    constructor(
      _model$: React.MutableRefObject<Model<T>>,
      _dispose: Subject<true>,
    );
    /**
     * Retrieves the current data value from the model.
     *
     * @returns The current data value.
     */
    get data(): T;
    /**
     * Sets the data of the variable.
     *
     * @param data - The data to set. It can be a partial object of type T or a function that accepts the previous data and returns a partial
     * object of type T.
     * @returns - A promise that resolves when the data is set.
     */
    setData: (
      data: Partial<T> | ((prevData: T) => Partial<T>),
    ) => Promise<void>;
    /**
     * Asynchronously refreshes the current model.
     *
     * @returns A Promise that resolves when the model has been refreshed.
     */
    refresh: () => Promise<void>;
    /**
     * Converts the current state of the object to a plain JavaScript object.
     *
     * @function toObject
     * @instance
     * @returns The object converted to a plain JavaScript object.
     */
    toObject: () => T;
    /**
     * Retrieves the current state of the model.
     *
     * @returns The current state of the model.
     */
    toModel: () => Model<T>;
  }
  /**
   * Custom hook that creates and manages a model object for a given value.
   *
   * @template T - The type of the initial value and model data.
   * @param params - The parameters for the useModel hook.
   * @param params.initialValue - The initial value for the model.
   * @param [params.onChange=() => null] - The function to be called whenever the model value changes.
   * @param [params.debounce=CHANGE_DEBOUNCE] - The debounce value for handling model value changes.
   * @returns - The model adapter object.
   */
  export const useModel: <T extends {} = any>({
    initialValue,
    onChange,
    debounce,
  }: IParams<T>) => ModelAdapter<T>;
  export default useModel;
}

declare module "react-declarative/hooks/useEntity" {
  import Entity, {
    IEntity,
    IEntityAdapter,
  } from "react-declarative/utils/mvvm/Entity";
  import Subject from "react-declarative/utils/rx/Subject";
  /**
   * Represents the parameters for a class.
   *
   * @template T - The type of the entity.
   */
  export interface IParams<T extends IEntity = any> {
    initialValue: T | Entity<T> | (() => T);
    onChange?: (item: EntityAdapter<T>) => void;
    debounce?: number;
  }
  /**
   * Class representing an Entity Adapter.
   *
   * @template T - The type of the entity.
   */
  export class EntityAdapter<T extends IEntity = any>
    implements IEntityAdapter<T>
  {
    /**
     * Represents a Constructor.
     * @class
     * @param _entity$ - The _entity$ parameter.
     * @param _dispose - The _dispose parameter.
     * @constructor
     */
    constructor(
      _entity$: React.MutableRefObject<Entity<T>>,
      _dispose: Subject<true>,
    );
    /**
     * Retrieves the data associated with the current entity.
     *
     * @returns The data object.
     */
    get data(): T;
    /**
     * Retrieve the ID of the current entity.
     *
     * @returns The ID of the current entity.
     */
    get id(): string | number;
    /**
     * Sets the data for the object.
     *
     * @param data - The data to set.
     *                  Can be either a partial object of type T or a function that takes the previous data of type T and returns a partial object of type T.
     * @return - A Promise that resolves after the data is set.
     */
    setData: (
      data: Partial<T> | ((prevData: T) => Partial<T>),
    ) => Promise<void>;
    /**
     * Refreshes the entity data.
     * @async
     * @function refresh
     * @returns
     */
    refresh: () => Promise<void>;
    /**
     * Converts the current value of the `_entity$` property to an object.
     *
     * @function toObject
     * @returns The `_entity$` property value converted to an object.
     */
    toObject: () => T;
    /**
     * Retrieves the current entity object.
     *
     * @returns The current entity object.
     */
    toEntity: () => Entity<T>;
  }
  /**
   * Creates a hook that manages an entity state.
   *
   * @template T - The type of the entity.
   * @param params - The parameters to configure the hook.
   * @param params.initialValue - The initial value of the entity.
   * @param [params.onChange=() => null] - The callback function to execute when the entity changes.
   * @param [params.debounce=CHANGE_DEBOUNCE] - The debounce delay in milliseconds.
   * @returns - The entity adapter object.
   */
  export const useEntity: <T extends IEntity = any>({
    initialValue,
    onChange,
    debounce,
  }: IParams<T>) => EntityAdapter<T>;
  export default useEntity;
}

declare module "react-declarative/hooks/useListEditor" {
  import React from "react";
  type RowId = number;
  /**
   * Creates a list editor that allows adding, updating, and removing items.
   *
   * @template Data - The type of data for each item in the list.
   * @param renderItem - The function that renders each item in the list.
   * @param options - The options for the list editor.
   * @param [options.initialValue=[]] - The initial list of items.
   * @param [options.onChange] - The callback function called when the list of items changes.
   * @returns An object with the following properties and methods:
   *   - onAddItem: a function that adds a new item to the list.
   *   - onUpdateItem: a function that updates an item in the list.
   *   - onRemoveItem: a function that removes an item from the list.
   *   - items: an array of the current items in the list.
   *   - render: a function that renders the list of items.
   */
  export const useListEditor: <Data extends unknown = undefined>(
    renderItem: (id: RowId, item: Data) => React.ReactElement,
    {
      initialValue,
      onChange,
    }: {
      initialValue?: Data[] | undefined;
      onChange?: ((items: Data[]) => void) | undefined;
    },
  ) => {
    onAddItem: (data: Data) => number;
    onUpdateItem: (id: RowId, data: Data) => void;
    onRemoveItem: (id: RowId) => void;
    items: Data[];
    render: () => JSX.Element;
  };
  export default useListEditor;
}

declare module "react-declarative/hooks/useMediaStreamBuilder" {
  /**
   * Represents the parameters for a certain functionality.
   *
   * @interface IParams
   * @property [fallback] - Callback function to handle errors.
   * @property [onChange] - Callback function called when a change occurs.
   * @property [onLoadStart] - Callback function called when the load starts.
   * @property [onLoadEnd] - Callback function called when the load ends.
   * @property [throwError] - Flag indicating whether to throw an error.
   * @property [compressFrame] - Number representing the compression frame.
   * @property [maxFps] - Number representing the maximum frames per second.
   * @property [withInitialVideo] - Flag indicating whether initial video is present.
   * @property [withInitialAudio] - Flag indicating whether initial audio is present.
   */
  interface IParams {
    fallback?: (e: Error) => void;
    onChange?: (
      stream: MediaStream,
      ids: {
        audioCaptureId: string;
        cameraCaptureId: string;
        screenCaptureId: string;
      },
    ) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    throwError?: boolean;
    compressFrame?: number;
    maxFps?: number;
    withInitialVideo?: boolean;
    withInitialAudio?: boolean;
  }
  /**
   * Creates a media stream builder that provides functionality to capture audio, video, and screen using the WebRTC API.
   * @param [params] - The parameters for the media stream builder.
   * @param [params.fallback] - The fallback function to be called when an error occurs during capture. It receives an Error object as its argument.
   * @param [params.onLoadStart] - The callback function to be called when the capture starts.
   * @param [params.onLoadEnd] - The callback function to be called when the capture ends.
   * @param [params.onChange] - The callback function to be called when the media stream changes. It receives the media stream and an object with the current capture IDs as
   * arguments.
   * @param [params.throwError=false] - Determines whether to throw an error when an error occurs during capture instead of using the fallback function.
   * @param [params.withInitialVideo=false] - Determines whether to capture video when the media stream builder is initialized.
   * @param [params.withInitialAudio=false] - Determines whether to capture audio when the media stream builder is initialized.
   * @param [params.compressFrame=COMPRESS_FRAME] - The factor to compress the video frame by. (COMPRESS_FRAME is a constant value)
   * @param [params.maxFps=MAX_FPS] - The maximum frame rate of the video capture. (MAX_FPS is a constant value)
   * @returns The media stream builder.
   * @property mediaStream - The media stream that contains the captured audio and video tracks.
   * @property hasAudioCapture - Determines whether audio capture is currently active.
   * @property hasCameraCapture - Determines whether camera capture is currently active.
   * @property hasScreenCapture - Determines whether screen capture is currently active.
   * @property requestScreenCapture - Function to request screen capture.
   * @property requestCameraCapture - Function to request camera capture.
   * @property requestAudioCapture - Function to request audio capture.
   * @property stopScreenCapture - Function to stop screen capture.
   * @property stopCameraCapture - Function to stop camera capture.
   * @property stopAudioCapture - Function to stop audio capture.
   */
  export const useMediaStreamBuilder: ({
    fallback,
    onLoadStart,
    onLoadEnd,
    onChange,
    throwError,
    withInitialVideo,
    withInitialAudio,
    compressFrame,
    maxFps,
  }?: IParams) => {
    mediaStream: MediaStream;
    hasAudioCapture: boolean;
    hasCameraCapture: boolean;
    hasScreenCapture: boolean;
    requestScreenCapture: () => Promise<void>;
    requestCameraCapture: () => Promise<void>;
    requestAudioCapture: () => Promise<void>;
    stopScreenCapture: () => void;
    stopCameraCapture: () => void;
    stopAudioCapture: () => void;
  };
  export default useMediaStreamBuilder;
}

declare module "react-declarative/hooks/useCollection" {
  import Subject from "react-declarative/utils/rx/Subject";
  import Collection, {
    ICollectionAdapter,
  } from "react-declarative/utils/mvvm/Collection";
  import Entity, {
    IEntity,
    IEntityAdapter,
  } from "react-declarative/utils/mvvm/Entity";
  /**
   * Interface representing the parameters for a specific operation.
   *
   * @template T - Type of the entity.
   */
  export interface IParams<T extends IEntity = any> {
    initialValue?: T[] | (() => T[]) | Entity<T>[] | Collection<T>;
    onChange?: (
      item: CollectionAdapter<T>,
      target: CollectionEntityAdapter<T> | null,
    ) => void;
    debounce?: number;
  }
  /**
   * Class representing a Collection Entity Adapter.
   * @implements {IEntityAdapter<T>}
   */
  export class CollectionEntityAdapter<T extends IEntity = any>
    implements IEntityAdapter<T>
  {
    readonly id: IEntity["id"];
    constructor(
      id: IEntity["id"],
      _collection$: React.MutableRefObject<Collection<T>>,
      _dispose: Subject<true>,
    );
    get data(): T;
    /**
     * Sets the data for the entity.
     *
     * @async
     * @param data - The data to set. It can be either a partial object of type T or a function that takes the previous data of type T and returns
     * a partial object of type T.
     * @returns - A promise that resolves when the data is set.
     * @throws - If the entity (with the given ID) is not found in the collection.
     */
    setData: (
      data: Partial<T> | ((prevData: T) => Partial<T>),
    ) => Promise<void>;
    /**
     * Refreshes the entity asynchronously.
     *
     * @returns A Promise that resolves once the entity is refreshed.
     * @throws If an error occurs while refreshing the entity.
     */
    refresh: () => Promise<void>;
    /**
     * Converts the current object to a plain JavaScript object.
     *
     * @memberOf [variable name]
     *
     * @throws If the entity is not found in the collection.
     *
     * @return A plain JavaScript object representing the current entity.
     */
    toObject: () => T;
    /**
     * Retrieves the entity with the specified ID from the current collection.
     *
     * @throws If the entity is not found in the collection.
     *
     * @returns The entity with the specified ID.
     */
    toEntity: () => Entity<T>;
  }
  /**
   * CollectionAdapter class is used to adapt a collection of entities.
   * It provides various methods for manipulating and accessing the collection.
   * @typeparam T - The type of entity in the collection
   */
  export class CollectionAdapter<T extends IEntity = any>
    implements ICollectionAdapter<T>
  {
    /**
     * Constructor for creating an instance of the class.
     *
     * @param _collection$ - The mutable reference object for the collection.
     * @param _dispose - The subject used for disposing.
     */
    constructor(
      _collection$: React.MutableRefObject<Collection<T>>,
      _dispose: Subject<true>,
    );
    /**
     * Retrieves the IDs from the current collection.
     *
     * @returns The IDs from the current collection.
     */
    get ids(): (string | number)[];
    /**
     * Returns the last index from the current collection.
     * @return The last index of the current collection.
     */
    get lastIdx(): number;
    /**
     * Retrieve the items from the current collection.
     *
     * @return An array of CollectionEntityAdapter instances.
     */
    get items(): CollectionEntityAdapter<T>[];
    /**
     * Checks if the collection is empty.
     *
     * @function
     * @returns - True if the collection is empty, otherwise false.
     */
    get isEmpty(): boolean;
    /**
     * Sets new data for the collection.
     *
     * @param items - The new collection data.
     * @returns - A promise that resolves when the new data is set.
     */
    setData: (items: T[]) => Promise<void>;
    /**
     * Refreshes the current collection after waiting for listeners.
     *
     * @async
     * @function
     * @returns A promise that resolves after the collection is refreshed.
     */
    refresh: () => Promise<void>;
    /**
     * Clears the collection.
     * @async
     * @function
     * @returns
     */
    clear: () => Promise<void>;
    /**
     * Asynchronously pushes item(s) to the collection.
     *
     * @param items - The item(s) to push.
     * @returns A Promise that resolves once the item(s) are pushed to the collection.
     */
    push: (...items: T[] | T[][]) => Promise<void>;
    /**
     * Upserts one or more items into the current collection.
     *
     * @param items - One or more items to upsert into the collection.
     *
     * @returns - A Promise that resolves when the upsert operation is complete.
     */
    upsert: (...items: T[] | T[][]) => Promise<void>;
    /**
     * Removes an entity from the collection.
     *
     * @param entity - The entity to be removed from the collection.
     * @returns - A Promise that resolves when the entity is successfully removed.
     */
    remove: (entity: IEntity) => Promise<void>;
    /**
     * Removes an item from the collection by its ID.
     *
     * @async
     * @param id - The ID of the item to remove.
     * @returns A promise that resolves with no value.
     */
    removeById: (id: string | number) => Promise<void>;
    /**
     * Removes all items from the collection.
     *
     * @async
     * @function removeAll
     * @instance
     *
     * @returns A promise that resolves once all items are removed.
     */
    removeAll: () => Promise<void>;
    /**
     * Finds an entity by its ID in the current collection.
     *
     * @param id - The ID of the entity to be found.
     * @returns - An instance of CollectionEntityAdapter representing the found entity.
     */
    findById: (id: string | number) => CollectionEntityAdapter<T>;
    /**
     * Checks if any element of the collection satisfies the provided testing function.
     *
     * @param fn - The testing function to apply to each element of the collection.
     *                       It should take two arguments: the current element of the collection
     *                       and its index. Returns a boolean value indicating whether the element
     *                       satisfies the testing condition.
     * @returns - A boolean value indicating whether any element of the collection satisfies
     *                     the testing function.
     */
    some: (
      fn: (value: CollectionEntityAdapter<T>, idx: number) => boolean,
    ) => boolean;
    /**
     * Performs a given function on each element of the collection.
     *
     * @param fn - The function to be executed on each element.
     *        The function should take two parameters: the current value in the collection
     *        and the index of the current value.
     */
    forEach: (
      fn: (value: CollectionEntityAdapter<T>, idx: number) => void,
    ) => void;
    /**
     * Finds the first element in the collection that satisfies the given condition.
     *
     * @param fn - The condition to be satisfied.
     * @return - The first element that satisfies the condition, or undefined if no element satisfies the condition.
     */
    find: (
      fn: (value: CollectionEntityAdapter<T>, idx: number) => boolean,
    ) => CollectionEntityAdapter<T> | undefined;
    /**
     * Filters the items in the collection based on the provided function.
     *
     * @param fn - A function used to filter the collection items.
     *   The function should accept two parameters: value and idx.
     *   - value: The current item being processed in the collection.
     *   - idx: The index of the current item being processed in the collection.
     *
     * @returns - An array containing the filtered items from the collection.
     */
    filter: (
      fn: (value: CollectionEntityAdapter<T>, idx: number) => boolean,
    ) => CollectionEntityAdapter<T>[];
    /**
     * Maps over the items in the collection and returns an array of values.
     *
     * @template V - The type of the mapped values.
     * @param fn - The mapping function.
     * @returns - An array of values obtained by applying the mapping function to each item.
     */
    map: <V extends unknown = any>(
      fn: (value: CollectionEntityAdapter<T>, idx: number) => V,
    ) => V[];
    /**
     * Retrieves an array representation of the current collection.
     *
     * @returns - An array representation of the current collection.
     */
    toArray: () => T[];
    /**
     * Retrieve the current value of the collection.
     *
     * @returns The current value of the collection.
     */
    toCollection: () => Collection<T>;
  }
  /**
   * A custom hook that provides a collection management functionality.
   *
   * @template T - The type of entities in the collection.
   * @param [initialValue=[]] - The initial value of the collection.
   * @param [onChange=() => null] - A callback function to execute when the collection changes.
   * @param [debounce=CHANGE_DEBOUNCE] - The debounce duration in milliseconds for the collection changes.
   * @returns - A memoized instance of the CollectionAdapter class.
   */
  export const useCollection: <T extends IEntity = any>({
    initialValue,
    onChange,
    debounce,
  }?: IParams<T>) => CollectionAdapter<T>;
  export default useCollection;
}

declare module "react-declarative/hooks/useRequestSnackbar" {
  /**
   * Represents the parameters for a certain functionality.
   *
   * @interface IParams
   */
  export interface IParams {
    noSnackOnOk?: boolean;
    message?: string;
    loading: boolean | null;
    error: string | null;
    delay?: number;
    onClose?: (isOk: boolean) => void;
  }
  /**
   * Represents a custom hook to display a snackbar with request feedback.
   *
   * @param options - The options for the snackbar.
   * @param options.message - The message to display in the snackbar. Default: "Client update successful".
   * @param options.noSnackOnOk - Whether to not display a snackbar when the request is successful. Default: false.
   * @param options.loading - Whether the request is still loading.
   * @param options.error - The error message, if any, to display in the snackbar.
   * @param options.delay - The duration for which the snackbar should be displayed. Default: AUTO_HIDE_DURATION.
   * @param options.onClose - The callback function to execute when the snackbar is closed. Default: () => undefined.
   *
   * @returns - The snackbar hook object.
   * @returns beginWatch - The function to start watching for changes in the loading and error states.
   * @returns resetWatcher - The function to reset the watch state.
   * @returns stopWatch - The function to stop watching for changes.
   * @returns render - The function to render the snackbar element.
   */
  export const useRequestSnackbar: ({
    message,
    noSnackOnOk,
    loading,
    error,
    delay,
    onClose,
  }: IParams) => {
    beginWatch: () => void;
    resetWatcher: () => void;
    stopWatch: () => void;
    render: () => JSX.Element;
  };
  export default useRequestSnackbar;
}

declare module "react-declarative/hooks/useActionSnackbar" {
  /**
   * Represents a set of parameters for a specific task.
   *
   * @interface IParams
   */
  interface IParams {
    duration: number;
    onResult: (result: boolean) => void;
  }
  /**
   * Represents a snack notification.
   *
   * @interface
   */
  interface ISnack {
    message: string;
    button?: string;
  }
  /**
   * A hook for displaying a snackbar with an action button.
   *
   * @param [options] - Optional parameters for the snackbar.
   * @param [options.duration] - The duration in milliseconds for which the snackbar is displayed.
   * @returns An object with two methods:
   *   - render: A method that renders the snackbar.
   *   - pickData: A method that displays the snackbar and waits for the user response.
   */
  export const useActionSnackbar: ({
    duration,
    onResult,
  }?: Partial<IParams>) => {
    render: () => JSX.Element;
    pickData: ({ message, button }: ISnack) => Promise<boolean>;
    close: () => Promise<void>;
  };
  export default useActionSnackbar;
}

declare module "react-declarative/components/ModalProvider" {
  export * from "react-declarative/components/ModalProvider/ModalProvider";
  export { default } from "react-declarative/components/ModalProvider/ModalProvider";
}

declare module "react-declarative/components/SnackProvider" {
  export * from "react-declarative/components/SnackProvider/SnackProvider";
  export { default } from "react-declarative/components/SnackProvider/SnackProvider";
}

declare module "react-declarative/components/SizeProvider" {
  export * from "react-declarative/components/SizeProvider/SizeProvider";
  export { default } from "react-declarative/components/SizeProvider/SizeProvider";
}

declare module "react-declarative/components/ModalManager" {
  export * from "react-declarative/components/ModalManager/ModalManagerProvider";
  export * from "react-declarative/components/ModalManager/model/IModal";
  export * from "react-declarative/components/ModalManager/model/ModalRender";
  export { useModalManager } from "react-declarative/components/ModalManager/hooks/useModalManager";
  export { default } from "react-declarative/components/ModalManager/ModalManagerProvider";
}

declare module "react-declarative/hooks/useList" {
  import IColumn from "react-declarative/model/IColumn";
  import IRowData from "react-declarative/model/IRowData";
  import IAnything from "react-declarative/model/IAnything";
  import IListProps from "react-declarative/model/IListProps";
  import SelectionMode from "react-declarative/model/SelectionMode";
  import { IListPickerProps } from "react-declarative/components/common/ListPicker";
  /**
   * Represents a function that takes an array of data as input.
   *
   * @template Data - The type of data that the function takes as input.
   */
  type Fn<Data = IAnything> = (d: Data[] | null) => void;
  /**
   * Represents a set of parameters for the IParams class.
   * @template RowData - The type of the row data.
   */
  interface IParams<RowData extends IRowData = IAnything>
    extends Omit<
      IListPickerProps<RowData>,
      keyof {
        onChange: never;
        selectionMode: never;
        selectedRows: never;
        minHeight: never;
        minWidth: never;
        title: never;
        columns: never;
        open: never;
      }
    > {
    selectionMode?: SelectionMode.Single | SelectionMode.Multiple;
    selectedRows?: IListProps<RowData>["selectedRows"];
    columns: Omit<
      IColumn<RowData>,
      keyof {
        headerName: never;
        width: never;
      }
    >[];
    minHeight?: number;
    minWidth?: number;
    title?: string;
  }
  /**
   * Creates a ListPicker modal with default or custom configurations and returns a promise that resolves with the selected rows.
   *
   * @template RowData - The type of the row data.
   *
   * @param options - The options object.
   * @param options.handler - The handler function to be called when a row is selected.
   * @param options.columns - The columns to be displayed in the ListPicker.
   * @param options.rowActions - The actions to be displayed for each row in the ListPicker.
   * @param options.payload - The payload to be passed to the ListPicker component.
   * @param options.features - The features to be enabled in the ListPicker.
   * @param [options.selectionMode=SelectionMode.Single] - The selection mode for the ListPicker.
   * @param [options.title="Pick item"] - The title of the ListPicker modal.
   * @param [options.minWidth=425] - The minimum width of the ListPicker modal.
   * @param [options.minHeight=375] - The minimum height of the ListPicker modal.
   * @param [options.selectedRows] - The initially selected rows in the ListPicker.
   *
   * @returns - A function that creates and opens the ListPicker modal.
   */
  export const useList: <RowData extends IRowData = any>({
    handler,
    columns,
    rowActions,
    payload,
    features,
    selectionMode,
    title: titleDefault,
    minWidth: minWidthDefault,
    minHeight: minHeightDefault,
    selectedRows: selectedRowsDefault,
  }: IParams<RowData>) => ({
    title,
    minWidth,
    minHeight,
    selectedRows,
  }?: Partial<IParams<RowData>>) => {
    then: (onData: Fn) => void;
    toPromise: () => Promise<RowData[] | null>;
  };
  export default useList;
}

declare module "react-declarative/hooks/useFile" {
  /**
   * Represents a set of parameters for a function or method.
   *
   * @interface
   */
  interface IParams {
    accept?: string;
    onSelect?: (...files: File[]) => void;
  }
  /**
   * Represents and provides functionality for a file input element.
   */
  export const useFile: ({ accept, onSelect }: IParams) => {
    render: () => JSX.Element;
    open: () => void;
  };
  export default useFile;
}

declare module "react-declarative/hooks/useConfirm" {
  type Fn = (result: boolean) => void;
  /**
   * Represents the parameters for a certain operation.
   *
   * @interface IParams
   */
  interface IParams {
    title?: string;
    msg?: string;
    canCancel?: boolean;
  }
  /**
   * A hook that provides a confirm dialog functionality.
   *
   * @param params - The parameter object.
   * @param params.title - The default title of the confirm dialog.
   * @param params.msg - The default message of the confirm dialog.
   * @param params.canCancel - The default cancelability flag of the confirm dialog.
   *
   * @returns - A function that can be invoked to show the confirm dialog.
   */
  export const useConfirm: ({
    title: defaultTitle,
    msg: defaultMsg,
    canCancel: defaultCanCancel,
  }?: IParams) => ({ canCancel, title, msg }?: Partial<IParams>) => {
    then: (onData: Fn) => void;
    toPromise: () => Promise<boolean>;
  };
  export default useConfirm;
}

declare module "react-declarative/hooks/usePrompt" {
  type Fn = (result: string | null) => void;
  /**
   * Represents the parameters for a component.
   *
   * @interface IParams
   */
  interface IParams {
    title?: string;
    value?: string;
    large?: boolean;
    placeholder?: string;
    canCancel?: boolean;
    inputType?: string;
  }
  /**
   * A function that creates and displays a prompt modal.
   *
   * @param usePrompt - The configuration options for the prompt.
   * @param usePrompt.title - The title of the prompt modal.
   * @param usePrompt.value - The default value of the prompt input.
   * @param usePrompt.placeholder - The placeholder text for the prompt input.
   * @param usePrompt.canCancel - Whether the prompt can be cancelled.
   * @param usePrompt.large - Whether to display a large prompt modal.
   * @returns A function that creates and displays the prompt modal when called.
   */
  export const usePrompt: ({
    title: defaultTitle,
    value: defaultValue,
    placeholder: defaultPlaceholder,
    canCancel: defaultCanCancel,
    large,
    inputType,
  }?: IParams) => ({
    canCancel,
    title,
    placeholder,
    value,
  }?: Partial<IParams>) => {
    then: (onData: Fn) => void;
    toPromise: () => Promise<string | null>;
  };
  export default usePrompt;
}

declare module "react-declarative/hooks/useAlert" {
  type Fn = () => void;
  /**
   * Represents the interface for the parameters used in a specific context.
   *
   * @interface IParams
   */
  interface IParams {
    title?: string;
    description?: string;
    large?: boolean;
  }
  /**
   * Function for displaying an alert modal.
   * @param params - The alert parameters.
   * @param params.title - The title of the alert. Default is "Alert".
   * @param params.description - The description of the alert. Default is an empty string.
   * @param params.large - Whether to display a large alert. Default is false.
   * @returns - A function that, when called, displays the alert and returns a Promise.
   *                      The Promise resolves when the alert is closed.
   */
  export const useAlert: ({
    title: defaultTitle,
    description: defaultDescription,
    large,
  }?: IParams) => ({ description, title }?: Partial<IParams>) => {
    then: (onData: Fn) => void;
    toPromise: () => Promise<void>;
  };
  export default useAlert;
}

declare module "react-declarative/hooks/useDate" {
  import dayjs from "dayjs";
  type Fn = (d: dayjs.Dayjs | null) => void;
  /**
   * useDate
   *
   * A custom hook that returns a function for using a modal with a DatePicker component.
   * The returned function can be used to display the modal and retrieve the selected date.
   *
   * @returns A function that can be called to display the modal and retrieve the selected date.
   */
  export const useDate: () => () => {
    then: (onData: Fn) => void;
    toPromise: () => Promise<dayjs.Dayjs | null>;
  };
  export default useDate;
}

declare module "react-declarative/hooks/useTime" {
  import dayjs from "dayjs";
  type Fn = (d: dayjs.Dayjs | null) => void;
  /**
   * useTime is a custom hook/function that provides a time picker modal functionality.
   * It returns an object with methods to interact with the time picker.
   *
   * @returns - A function that returns an object with methods.
   */
  export const useTime: () => () => {
    then: (onData: Fn) => void;
    toPromise: () => Promise<dayjs.Dayjs | null>;
  };
  export default useTime;
}

declare module "react-declarative/hooks/useOne" {
  import IField from "react-declarative/model/IField";
  import IAnything from "react-declarative/model/IAnything";
  import TypedField from "react-declarative/model/TypedField";
  import IOneProps, { OneHandler } from "react-declarative/model/IOneProps";
  import IOnePublicProps from "react-declarative/model/IOnePublicProps";
  type Fn<Data = IAnything> = (d: Data | null) => void;
  /**
   * Represents the parameters for a specific functionality or operation.
   *
   * @template Data - The type of data associated with the functionality or operation.
   * @template Payload - The type of payload associated with the functionality or operation.
   * @template Field - The type of field associated with the functionality or operation.
   */
  interface IParams<
    Data extends IAnything = IAnything,
    Payload = IAnything,
    Field = IField<Data, Payload>,
  > {
    fields: Field[];
    title?: string;
    large?: boolean;
    canCancel?: boolean;
    handler?: OneHandler<Data, Payload>;
    payload?: IOneProps<Data, Payload, Field>["payload"];
    isBaseline?: IOneProps<Data, Payload, Field>["isBaseline"];
    isBaselineForRoot?: IOneProps<Data, Payload, Field>["isBaselineForRoot"];
    readTransform?: IOnePublicProps<Data, Payload, Field>["readTransform"];
    writeTransform?: IOnePublicProps<Data, Payload, Field>["writeTransform"];
    incomingTransform?: IOnePublicProps<
      Data,
      Payload,
      Field
    >["incomingTransform"];
    outgoingTransform?: IOnePublicProps<
      Data,
      Payload,
      Field
    >["outgoingTransform"];
    features?: IOnePublicProps<Data, Payload, Field>["features"];
    waitForChangesDelay?: number;
  }
  /**
   * Function useOne
   *
   * @template Data - The type of data.
   * @template Payload - The type of the payload.
   * @template Field - The type of the field.
   *
   * @param params - The parameters object.
   * @param params.fields - The fields array.
   * @param params.large - Indicates if the picker is large.
   * @param params.title - The default title.
   * @param params.handler - The default handler function.
   * @param params.payload - The default payload.
   * @param params.waitForChangesDelay - The delay for waiting changes.
   * @param params.features - The additional features.
   *
   * @returns - The function to open the picker.
   */
  export const useOne: <
    Data extends unknown = any,
    Payload = any,
    Field = IField<Data, Payload>,
  >({
    fields,
    large,
    canCancel,
    title: defaultTitle,
    handler: defaultHandler,
    payload: defaultPayload,
    waitForChangesDelay,
    readTransform,
    writeTransform,
    incomingTransform,
    outgoingTransform,
    isBaseline,
    isBaselineForRoot,
    features,
  }: IParams<Data, Payload, Field>) => ({
    handler,
    payload,
    title,
  }?: Partial<IParams<Data, Payload, Field>>) => {
    then: (onData: Fn) => void;
    toPromise: () => Promise<Data | null>;
  };
  export const useOneTyped: <Data extends unknown = any, Payload = any>(
    params: IParams<Data, Payload, TypedField<Data, Payload>>,
  ) => ({
    handler,
    payload,
    title,
  }?: Partial<IParams<Data, Payload, TypedField<Data, Payload>>>) => {
    then: (onData: Fn) => void;
    toPromise: () => Promise<Data | null>;
  };
  export default useOne;
}

declare module "react-declarative/hooks/useSearchParams" {
  export type Value = string | number | boolean | null | undefined;
  /**
   * Returns an object representing the parsed search parameters from the current URL.
   * The object will have the specified default values, which can be a partial object or a function that returns a partial object.
   * The returned object will have the same properties as the default values, with values parsed from the URL search parameters.
   *
   * @template T - The type of the default values object.
   * @param [defaultValues={}] - The default values object or function. Defaults to an empty object.
   * @param [prefix] - The prefix for search params if managing search
   * @returns - The parsed search parameters object.
   */
  export const useSearchParams: <T = Record<string, Value>>(
    defaultValues?: Partial<T> | (() => Partial<T>),
    prefix?: string,
  ) => T;
  export default useSearchParams;
}

declare module "react-declarative/hooks/useSearchState" {
  import { Value } from "react-declarative/hooks/useSearchParams";
  /**
   * Represents the configuration for the search state.
   * @interface
   */
  interface ISearchStateConfig {
    prefix?: string;
    updateDelay?: number;
    noCleanupOnLeave?: boolean;
    noCleanupExtra?: boolean;
  }
  /**
   * Custom hook useSearchState for managing search state in the URL.
   *
   * @template T - Type of the search state object.
   * @param defaultValues - Default values for the search state object.
   * @param config - The config for search state behaviour
   * @returns - An array containing the search state object and a function to update the search state.
   */
  export const useSearchState: <T extends Record<string, Value>>(
    defaultValues?: Partial<T> | (() => Partial<T>),
    {
      prefix,
      updateDelay,
      noCleanupExtra,
      noCleanupOnLeave,
    }?: ISearchStateConfig,
  ) => readonly [
    T,
    import("react").Dispatch<import("react").SetStateAction<T>>,
  ];
  export default useSearchState;
}

declare module "react-declarative/model/IAnything" {
  export type IAnything = any;
  export default IAnything;
}

declare module "react-declarative/model/IRowData" {
  /**
   * Represents a data row in a table.
   * @interface
   */
  export interface IRowData {
    id: RowId;
  }
  /**
   * Represents a unique identifier for a row in a data table.
   */
  export type RowId = string | number;
  export default IRowData;
}

declare module "react-declarative/components/CardView" {
  export * from "react-declarative/components/CardView/CardView";
  export * from "react-declarative/components/CardView/model/ICardViewAction";
  export * from "react-declarative/components/CardView/model/ICardViewOperation";
  export { IItemData as ICardViewItemData } from "react-declarative/components/CardView/model/IItemData";
  export { default } from "react-declarative/components/CardView/CardView";
}

declare module "react-declarative/components/CalendarView" {
  export * from "react-declarative/components/CalendarView/CalendarView";
  export * from "react-declarative/components/CalendarView/model/ICalendarItem";
  export * from "react-declarative/components/CalendarView/model/ICalendarRequest";
  export * from "react-declarative/components/CalendarView/model/ICalendarTile";
  export { default } from "react-declarative/components/CalendarView/CalendarView";
}

declare module "react-declarative/components/FeatureView" {
  export * from "react-declarative/components/FeatureView/FeatureView";
  export * from "react-declarative/components/FeatureView/hooks/useFeatureView";
  export * from "react-declarative/components/FeatureView/model/IFeature";
  export * from "react-declarative/components/FeatureView/model/IFeatureGroup";
  export * from "react-declarative/components/FeatureView/model/FeatureType";
  export { default } from "react-declarative/components/FeatureView/FeatureView";
}

declare module "react-declarative/components/VisibilityView" {
  export * from "react-declarative/components/VisibilityView/VisibilityView";
  export * from "react-declarative/components/VisibilityView/model/IVisibilityGroup";
  export * from "react-declarative/components/VisibilityView/hooks/useVisibilityView";
  export { default } from "react-declarative/components/VisibilityView/VisibilityView";
}

declare module "react-declarative/components/RecordView" {
  export * from "react-declarative/components/RecordView/RecordView";
  export { RECORD_NEVER_VALUE } from "react-declarative/components/RecordView/constant/RECORD_NEVER_VALUE";
  export { excelExport as recordToExcelExport } from "react-declarative/components/RecordView/helpers/excelExport";
  export { default } from "react-declarative/components/RecordView/RecordView";
}

declare module "react-declarative/components/Scaffold2" {
  export * from "react-declarative/components/Scaffold2/Scaffold2";
  export * from "react-declarative/components/Scaffold2/model/IScaffold2Action";
  export * from "react-declarative/components/Scaffold2/model/IScaffold2Group";
  export * from "react-declarative/components/Scaffold2/model/IScaffold2Option";
  export * from "react-declarative/components/Scaffold2/model/IScaffold2Tab";
  export { default } from "react-declarative/components/Scaffold2/Scaffold2";
}

declare module "react-declarative/components/Scaffold3" {
  export * from "react-declarative/components/Scaffold3/Scaffold3";
  export * from "react-declarative/components/Scaffold3/model/IScaffold3Action";
  export * from "react-declarative/components/Scaffold3/model/IScaffold3Group";
  export * from "react-declarative/components/Scaffold3/model/IScaffold3Option";
  export * from "react-declarative/components/Scaffold3/model/IScaffold3Tab";
  export { default } from "react-declarative/components/Scaffold3/Scaffold3";
}

declare module "react-declarative/components/Breadcrumbs2" {
  export * from "react-declarative/components/Breadcrumbs2/Breadcrumbs2";
  export * from "react-declarative/components/Breadcrumbs2/model/Breadcrumbs2Type";
  export * from "react-declarative/components/Breadcrumbs2/model/IBreadcrumbs2Action";
  export * from "react-declarative/components/Breadcrumbs2/model/IBreadcrumbs2Option";
  export { default } from "react-declarative/components/Breadcrumbs2/Breadcrumbs2";
}

declare module "react-declarative/model/IOnePublicProps" {
  import IAnything from "react-declarative/model/IAnything";
  import IField, { Value } from "react-declarative/model/IField";
  import IOneProps from "react-declarative/model/IOneProps";
  /**
   * Represents the interface for the public properties of the class IOnePublicProps.
   *
   * @template Data - The type of data.
   * @template Payload - The type of payload.
   * @template Field - The type of field.
   *
   * @interface IOnePublicProps
   * @extends Omit<IOneProps<Data, Payload, Field>, keyof { features: never }>
   */
  export interface IOnePublicProps<
    Data = IAnything,
    Payload = IAnything,
    Field = IField<Data>,
  > extends Omit<
      IOneProps<Data, Payload, Field>,
      keyof {
        features: never;
        readTransform: never;
        writeTransform: never;
      }
    > {
    /**
     * Represents an alternative way to provide data into
     * component except `handler`. The casual way more native to React developers
     */
    data?: Data | null;
    /**
     * Represents an optional onFocus event handler.
     *
     * @template Data - The data type of the component.
     * @template Payload - The type of the event payload.
     * @template Field - The type of the focused field.
     *
     * @param data - The current data of the component.
     * @param payload - The event payload.
     * @param field - The focused field.
     *
     * @return {void} - This function does not return any value.
     */
    onFocus?: IOneProps<Data, Payload, Field>["focus"];
    /**
     * Called when the blur event is triggered on the component.
     *
     * @callback onBlurCallback
     * @param data - The data related to the component.
     * @param payload - The payload associated with the blur event.
     * @param field - The field on which the blur event occurred.
     */
    onBlur?: IOneProps<Data, Payload, Field>["blur"];
    /**
     * Represents the optional 'onMenu' property of type `IOneProps<Data, Payload, Field>['menu']`.
     * This property is used to define the event handler function when a menu action is triggered.
     * The event handler will receive three arguments: `data`, `payload`, and `field`.
     *
     * @typeParam Data - The data type for the menu.
     * @typeParam Payload - The payload type for the menu.
     * @typeParam Field - The field type for the menu.
     *
     * @param data - The data associated with the menu.
     * @param payload - The payload associated with the menu.
     * @param field - The field associated with the menu.
     *
     * @returns
     */
    onMenu?: IOneProps<Data, Payload, Field>["menu"];
    /**
     * Represents the `onReady` property of `IOneProps`.
     *
     * @template Data - The type of the data being handled.
     * @template Payload - The type of the payload being used.
     * @template Field - The type of the field being manipulated.
     *
     * @property [onReady] - Optional property that defines a callback
     * function to be executed when the component is ready.
     */
    onReady?: IOneProps<Data, Payload, Field>["ready"];
    /**
     * The `onChange` function is an optional property of the `IOneProps` interface.
     * It represents the callback function that is invoked when a change event occurs.
     *
     * @template Data - The type of data being handled.
     * @template Payload - The type of payload being passed to the callback function.
     * @template Field - The type of field being modified.
     *
     * @param payload - The payload passed to the callback function.
     * @param field - The field being modified.
     * @returns
     */
    onChange?: IOneProps<Data, Payload, Field>["change"];
    /**
     * Represents a callback function that gets triggered when an onClick event occurs.
     *
     * @template Data - The type of data associated with the component.
     * @template Payload - The type of payload that is passed to the function.
     * @template Field - The type of field used by the component.
     *
     * @param data - The data associated with the component.
     * @param payload - The payload passed to the function.
     * @param field - The field used by the component.
     *
     * @returns
     */
    onClick?: IOneProps<Data, Payload, Field>["click"];
    /**
     * Represents the onInvalid callback function, an optional property of the IOneProps interface.
     * This function is executed when the invalidity condition is met.
     *
     * @template Data - The type of data being processed.
     * @template Payload - The type of payload being passed.
     * @template Field - The type of field being validated.
     *
     * @param invalidity - The invalidity details of the field being validated.
     *
     * @returns void
     */
    onInvalid?: IOneProps<Data, Payload, Field>["invalidity"];
    /**
     * Represents the `onLoadStart` event handler of a component.
     *
     * @template Data - The type of data passed to the component.
     * @template Payload - The type of payload passed to the event handler.
     * @template Field - The type of field associated with the event.
     *
     * @param payload - The payload passed to the event handler.
     *
     * @returns
     */
    onLoadStart?: IOneProps<Data, Payload, Field>["loadStart"];
    /**
     * Represents the optional `onLoadEnd` property of the `IOneProps` interface.
     *
     * This property defines a callback function that is invoked when the loading of data ends.
     *
     * @template Data - The type of the data being loaded.
     * @template Payload - The type of the payload sent with the load operation.
     * @template Field - The type of the field affected by the load operation.
     *
     * @param data - The loaded data.
     * @param payload - The payload sent with the load operation.
     * @param field - The field affected by the load operation.
     * @returns
     */
    onLoadEnd?: IOneProps<Data, Payload, Field>["loadEnd"];
    /**
     * Represents the features of a variable.
     *
     * @typedef Features
     */
    features?:
      | Record<string, Value>
      | string[]
      | (() => string[] | Record<string, Value>);
    /**
     * Represents the field value transform factory
     *
     * @typedef Features
     */
    readTransform?: (
      value: string | string[],
      name: string,
      data: Data,
      payload: Payload,
    ) => Value;
    writeTransform?: (
      value: string | string[],
      name: string,
      data: Data,
      payload: Payload,
    ) => Value;
  }
  export default IOnePublicProps;
}

declare module "react-declarative/model/History" {
  import { BrowserHistory, HashHistory, MemoryHistory } from "history";
  /**
   * Represents a history object used for navigation.
   * @typedef History
   */
  export type History = MemoryHistory | BrowserHistory | HashHistory;
  export default History;
}

declare module "react-declarative/utils/createAwaiter" {
  /**
   * Represents an object used for awaiting a value or a promise.
   *
   * @template T - The type of the value to be resolved.
   *
   * @interface
   * @function
   * @param value - The value or promise to resolve.
   * @param reason - The reason for rejecting the promise.
   */
  export interface IAwaiter<T extends unknown> {
    resolve(value: T | PromiseLike<T>): void;
    reject(reason?: any): void;
  }
  /**
   * Creates an awaiter object along with a promise.
   *
   * @template T - The type of the value to be resolved.
   *
   * @function
   * @returns An array containing the promise and the awaiter object.
   */
  export const createAwaiter: <T extends unknown>() => [
    Promise<T>,
    IAwaiter<T>,
  ];
  export default createAwaiter;
}

declare module "react-declarative/utils/list2grid" {
  import { IGridColumn } from "react-declarative/components/Grid";
  import IColumn from "react-declarative/model/IColumn";
  interface IConfig {
    minWidth: number;
  }
  /**
   * Converts a list of columns and a payload into a grid configuration.
   *
   * @param columns - The list of columns.
   * @param payload - The payload data used for formatting.
   * @returns - The grid configuration.
   */
  export const list2grid: (
    columns: IColumn[],
    { minWidth }?: Partial<IConfig>,
  ) => IGridColumn[];
  export default list2grid;
}

declare module "react-declarative/utils/openBlank" {
  /**
   * Opens the given URL in a new browser tab.
   *
   * @param url - The URL to open in a new tab.
   *
   * @returns
   */
  export const openBlank: {
    (url: string): Promise<void>;
    override(ref: (url: string) => void): void;
    listen(fn: (url: string) => void): () => void;
  };
  export default openBlank;
}

declare module "react-declarative/utils/createDict" {
  type Dict = Record<string, any>;
  /**
   * Creates a dictionary object from the given record object.
   *
   * @template T - The type of the dictionary object.
   * @param record - The record object to create the dictionary from.
   * @returns - The frozen dictionary object.
   */
  export const createDict: <T extends Dict = Dict>(record: T) => any;
  export default createDict;
}

declare module "react-declarative/utils/oop/Pointer" {
  /**
   * Represents a pointer that can be assigned to another object asynchronously without updating reference.
   *
   * @template T - The type of the object reference.
   * @param ref - The object reference to be assigned.
   * @returns - The pointer object with instance and setPointer methods.
   */
  export const createPointer: <T extends object>(
    ref?: T | undefined,
  ) => {
    pointer: {};
    setPointer(ref: T): void;
  };
  export default createPointer;
}

declare module "react-declarative/utils/copyToClipboard" {
  /**
   * Copies the given text to the clipboard.
   *
   * @param text - The text to be copied.
   * @returns - A promise that resolves to a boolean indicating whether the copy operation was successful.
   */
  export const copyToClipboard: {
    (text: string): Promise<boolean>;
    override(ref: (text: string) => void | Promise<void>): void;
    listen(fn: (text: string) => void): () => void;
  };
  export default copyToClipboard;
}

declare module "react-declarative/utils/downloadBlank" {
  /**
   * Downloads a file from the given URL with the specified name.
   * If overrideRef is defined, it will be invoked before initiating the download.
   * The file will be downloaded in a new browser tab or window.
   *
   * @param url - The URL of the file to download.
   * @param name - The name to be used for the downloaded file.
   * @returns
   */
  export const downloadBlank: {
    (url: string, name: string): Promise<void>;
    override(ref: (url: string, name: string) => void): void;
    listen(fn: (dto: { url: string; name: string }) => void): () => void;
  };
  export default downloadBlank;
}

declare module "react-declarative/utils/removeSubstring" {
  /**
   * Removes specified substrings from a given text.
   *
   * @param text - The input text to remove substrings from.
   * @param remove - One or more substrings to remove from the text.
   * @return - The modified text with the specified substrings removed.
   */
  export const removeSubstring: (text: string, ...remove: string[]) => string;
  export default removeSubstring;
}

declare module "react-declarative/utils/randomString" {
  /**
   * Generates a random string using the UUID library.
   *
   * @returns A randomly generated string.
   */
  export const randomString: () => string;
  export default randomString;
}

declare module "react-declarative/utils/chooseFile" {
  /**
   * Opens a file chooser dialog and allows the user to select a file.
   *
   * @param [accept] - Optional file type filter. Can be a comma-separated list of MIME types or file extensions.
   * @returns A promise that resolves with the selected file or null if the selection was canceled.
   */
  export const chooseFile: (
    accept?: string | undefined,
  ) => Promise<File | null>;
  export default chooseFile;
}

declare module "react-declarative/utils/loadScript" {
  /**
   * Loads an external script dynamically.
   *
   * @param src - The source URL of the script to load.
   * @param [async=false] - Whether to load the script asynchronously.
   * @returns - A promise that resolves when the script is loaded successfully, or rejects when an error occurs.
   */
  export const loadScript: (src: string, async?: boolean) => Promise<void>;
  export default loadScript;
}

declare module "react-declarative/utils/reloadPage" {
  global {
    /**
     * Represents a location reload callback with clear cache argument.
     * @interface
     */
    interface Location {
      reload(forceReload: boolean): void;
    }
  }
  /**
   * Reloads the current page.
   *
   * @returns A promise that resolves when the page has reloaded.
   */
  export const reloadPage: {
    (): Promise<void>;
    override(ref: () => void): void;
    listen(fn: () => void): () => void;
  };
  export default reloadPage;
}

declare module "react-declarative/utils/compareFulltext" {
  /**
   * Compares the full text in a given data object with a search term.
   *
   * @template T - The generic type for the data object.
   * @param data - The data object to compare.
   * @param search - The search term to compare against the data object.
   * @param keys - The keys in the data object to compare against.
   * @returns - Returns true if the full text in the data object contains the search term, false otherwise.
   */
  export const compareFulltext: <T extends Record<string, any>>(
    data: T,
    search: string,
    ...keys: string[]
  ) => boolean;
  export default compareFulltext;
}

declare module "react-declarative/utils/promiseState" {
  /**
   * Determines the state of a given promise.
   *
   * @param promise - The promise to check the state of.
   *
   * @returns - The state of the promise, which can be either 'sync' or 'async'.
   */
  export const promiseState: <T = any>(
    promise: T | Promise<T>,
  ) => "async" | "sync";
  export const promiseValue: <T = any>(promise: T | Promise<T>) => T | null;
  export default promiseState;
}

declare module "react-declarative/utils/chooseMultipleFiles" {
  /**
   * Creates a file chooser dialog that allows the user to select multiple files.
   *
   * @param accept - Optional MIME type filter for accepted file types.
   * @returns - A promise that resolves to an array of selected files
   * or null if the dialog was canceled.
   */
  export const chooseMultipleFiles: (
    accept?: string | undefined,
  ) => Promise<File[] | null>;
  export default chooseMultipleFiles;
}

declare module "react-declarative/utils/preventBrowserHistorySwipeGestures" {
  /**
   * Prevents browser history swipe gestures.
   *
   * This function adds an event listener to the `touchstart` event and checks if the touch event occurs
   * at the edges of the screen. If a touch event occurs at the left or right 10% of the screen width,
   * it prevents the default behavior which could trigger browser history swipe gestures.
   *
   * @return The function to remove the event listener.
   */
  export const preventBrowserHistorySwipeGestures: () => () => void;
  export default preventBrowserHistorySwipeGestures;
}

declare module "react-declarative/utils/errorData" {
  /**
   * Extracts the enumerable properties from an Error object and returns them in a new object.
   *
   * @param error - The Error object.
   * @returns - An object containing the enumerable properties of the Error object.
   */
  export const errorData: (error: Error) => {};
  export default errorData;
}

declare module "react-declarative/utils/getMediaContext" {
  interface IBreakpoints {
    xs: number;
    sm: number;
    md: number;
    lg: number;
    xl: number;
  }
  /**
   * Calculates the media context based on provided breakpoints.
   * @param breakpoints - The breakpoints to use for the media context calculation.
   * @param [breakpoints.xs=0] - The extra small breakpoint.
   * @param [breakpoints.sm=600] - The small breakpoint.
   * @param [breakpoints.lg=1280] - The large breakpoint.
   * @returns - The media context object.
   * @property isPhone - Indicates if the media context is for a phone.
   * @property isTablet - Indicates if the media context is for a tablet.
   * @property isDesktop - Indicates if the media context is for a desktop.
   * @property isWide - Indicates if the media context is for a wide screen.
   * @property isMobile - Indicates if the media context is for a mobile device.
   */
  export const getMediaContext: ({ xs, sm, lg }?: Partial<IBreakpoints>) => {
    isPhone: boolean;
    isTablet: boolean;
    isDesktop: boolean;
    isWide: boolean;
    isMobile: boolean;
  };
  export default getMediaContext;
}

declare module "react-declarative/utils/getRouteParams" {
  /**
   * Represents an item that can be switched.
   *
   * @interface ISwitchItem
   */
  export interface ISwitchItem {
    path: string;
  }
  /**
   * Retrieves the route parameters from a given pathname based on a set of routes.
   *
   * @template T - The type of object to return as the parameters.
   * @param routes - The array of route objects to search through.
   * @param pathname - The pathname to extract the parameters from.
   * @returns - The extracted route parameters or null if no match is found.
   */
  export const getRouteParams: <T = Record<string, any>>(
    routes: ISwitchItem[],
    pathname: string,
  ) => T | null;
  export default getRouteParams;
}

declare module "react-declarative/utils/getRouteItem" {
  import { ISwitchItem } from "react-declarative/utils/getRouteParams";
  /**
   * Finds a route item that matches the given pathname from the provided routes array.
   *
   * @param routes - An array of switch items.
   * @param pathname - The pathname to match against the route items.
   * @return - The matched route item, or null if no match is found.
   */
  export const getRouteItem: <T extends ISwitchItem = ISwitchItem>(
    routes: T[],
    pathname: string,
  ) => T | null;
  export default getRouteItem;
}

declare module "react-declarative/utils/getElementFromXPath" {
  /**
   * Retrieves the first element matching the given XPath expression.
   *
   * @param xpath - The XPath expression to match the element(s).
   * @returns - The first element that matches the XPath expression, or null if no match is found.
   */
  export const getElementFromXPath: (xpath: string) => Node | null;
  export default getElementFromXPath;
}

declare module "react-declarative/utils/getXPathFromElement" {
  /**
   * Get the XPath of a given HTML element.
   *
   * @param element - The HTML element to get the XPath from.
   * @returns - The XPath of the element, or null if it couldn't be determined.
   */
  export const getXPathFromElement: (element: HTMLElement) => string | null;
  export default getXPathFromElement;
}

declare module "react-declarative/utils/arrays" {
  /**
   * Converts nested object properties to arrays.
   *
   * @param root - The root object to convert.
   * @param [forceArray=false] - Optional parameter to force conversion to arrays even if no numeric keys are present.
   * @returns - The converted object with nested properties converted to arrays.
   */
  export const arrays: (root: any, forceArray?: boolean) => any;
  export default arrays;
}

declare module "react-declarative/utils/objects" {
  /**
   * Recursively processes an object and its nested properties.
   *
   * @param root - The root object to be processed.
   * @returns - The processed object.
   */
  export const objects: (root: any) => any;
  export default objects;
}

declare module "react-declarative/utils/compareArray" {
  /**
   * Compares two arrays and determines if they are equal.
   *
   * @param a_arr - The first array to compare.
   * @param b_arr - The second array to compare.
   * @returns - Returns `true` if the arrays are equal, otherwise `false`.
   */
  export const compareArray: (a_arr: any, b_arr: any) => boolean;
  export default compareArray;
}

declare module "react-declarative/utils/isObject" {
  /**
   * Check if a given value is an object.
   *
   * @param obj - The value to check.
   * @returns - Returns `true` if the value is an object, else `false`.
   */
  export const isObject: (obj: any) => boolean;
  export default isObject;
}

declare module "react-declarative/utils/fetchApi" {
  /**
   * Represents an error that occurs during a fetch request.
   *
   * @class
   * @extends Error
   */
  export class FetchError extends Error {
    readonly originalError: any;
    readonly request: RequestInfo;
    readonly response: Response | undefined;
    constructor(
      originalError: any,
      request: RequestInfo,
      response: Response | undefined,
    );
  }
  /**
   * Makes an asynchronous HTTP request using the Fetch API.
   *
   * @param input - The resource URL or an instance of the URL class.
   * @param [init] - The request options.
   * @returns - The response data as a Promise.
   * @throws - If an error occurs during the request.
   */
  export const fetchApi: <T = any>(
    input: RequestInfo | URL,
    init?: RequestInit | undefined,
  ) => Promise<T>;
  export default fetchApi;
}

declare module "react-declarative/utils/createValueProvider" {
  import React from "react";
  /**
   * Creates a value provider with a default value.
   * @param defaultValue - The default value for the provider.
   * @returns A tuple containing the provider component and a hook to access the value.
   */
  export const createValueProvider: <P extends unknown = object>(
    defaultValue?: P | undefined,
  ) => readonly [
    ({
      children,
      payload,
    }: {
      children: React.ReactNode;
      payload: P;
    }) => JSX.Element,
    () => P,
  ];
  export default createValueProvider;
}

declare module "react-declarative/utils/createStateProvider" {
  import * as React from "react";
  /**
   * Creates a state provider with a given state type.
   *
   * @template S - The type of the state
   * @returns - A tuple containing the Provider component and the useStateProvider function.
   */
  export const createStateProvider: <S extends unknown>() => readonly [
    ({
      children,
      initialState,
      onChange,
    }: {
      onChange?: ((state: S) => void) | undefined;
      children: React.ReactNode;
      initialState: S | (() => S);
    }) => JSX.Element,
    () => readonly [S, (state: S | ((prevState: S) => S)) => void],
  ];
  export default createStateProvider;
}

declare module "react-declarative/utils/createSsStateProvider" {
  import * as React from "react";
  /**
   * Creates a state provider for React components with support for persistent state storage.
   * @param storageKey - The key used to store the state in the storage manager.
   * @returns - An array containing the WrappedStateProvider and useStateProvider components.
   * @template S - The type of the state object.
   */
  export const createSsStateProvider: <S extends unknown>(
    storageKey: string,
  ) => readonly [
    ({
      children,
      initialState,
      onChange,
    }: {
      onChange?: ((state: S) => void) | undefined;
      children: React.ReactNode;
      initialState: S | (() => S);
    }) => JSX.Element,
    () => readonly [S, (state: S | ((prevState: S) => S)) => void],
  ];
  export default createSsStateProvider;
}

declare module "react-declarative/utils/createLsStateProvider" {
  import * as React from "react";
  /**
   * Creates a state provider that persists state in local storage using a given storage key.
   *
   * @template S The type of the state.
   * @param storageKey The key used to store the state value in local storage.
   * @returns A tuple containing the wrapped state provider
   * component and the state hook.
   */
  export const createLsStateProvider: <S extends unknown>(
    storageKey: string,
  ) => readonly [
    ({
      children,
      initialState,
      onChange,
    }: {
      onChange?: ((state: S) => void) | undefined;
      children: React.ReactNode;
      initialState: S | (() => S);
    }) => JSX.Element,
    () => readonly [S, (state: S | ((prevState: S) => S)) => void],
  ];
  export default createLsStateProvider;
}

declare module "react-declarative/utils/normalizeText" {
  import IField from "react-declarative/model/IField";
  /**
   * Represents the configuration options for input formatting.
   * @interface
   */
  interface IConfig {
    inputFormatterSymbol: IField["inputFormatterSymbol"];
    inputFormatterAllowed: IField["inputFormatterAllowed"];
    inputFormatterReplace: IField["inputFormatterReplace"];
    inputFormatterTemplate: IField["inputFormatterTemplate"];
    inputFormatter: IField["inputFormatter"];
  }
  /**
   * Normalize text by applying inputFormatter function to each character.
   *
   * @param text - The input text to normalize.
   * @param config - The configuration object.
   * @param [config.inputFormatterSymbol='0'] - The symbol used in input formatter.
   * @param [config.inputFormatterAllowed] - The list of allowed characters in input formatter.
   * @param [config.inputFormatterReplace] - The mapping of characters to be replaced in input formatter.
   * @param [config.inputFormatterTemplate=''] - The template used in input formatter.
   * @param [config.inputFormatter] - The input formatter function to apply on each character.
   * @returns - The normalized text.
   */
  export const normalizeText: (
    text: string,
    {
      inputFormatterSymbol: symbol,
      inputFormatterAllowed: allowed,
      inputFormatterReplace: replace,
      inputFormatterTemplate: template,
      inputFormatter,
    }?: Partial<IConfig>,
  ) => string;
  export default normalizeText;
}

declare module "react-declarative/utils/formatText" {
  /**
   * Represents a set of parameters for custom symbol validation and replacement.
   * @interface
   */
  interface IParams {
    symbol?: string;
    allowed?: RegExp | ((char: string, idx: number) => boolean);
    replace?: (char: string) => string | null;
  }
  /**
   * Formats a raw string using a template and optional parameters.
   *
   * @param raw - The raw string to be formatted.
   * @param template - The template string used for formatting.
   * @param [params] - Optional parameters for customization.
   * @param [params.symbol='0'] - The symbol used in the template to indicate characters to be replaced.
   * @param [params.allowed] - A function or regular expression used to filter characters in the raw string.
   * @param [params.replace] - A function used to replace characters in the raw string.
   * @returns The formatted string.
   */
  export const formatText: (
    raw: string,
    template: string,
    { symbol, allowed, replace }?: IParams,
  ) => string;
  export default formatText;
}

declare module "react-declarative/utils/roundTicks" {
  /**
   * Rounds a number and formats it as a string with a fixed number of decimal places.
   *
   * @param price - The number to be formatted.
   * @param [tickSize=8] - The number of decimal places to round to.
   * @return - The formatted number as a string.
   */
  export const roundTicks: (price: number, tickSize?: number) => string;
  export default roundTicks;
}

declare module "react-declarative/utils/wordForm" {
  /**
   * Represents a word form with singular, optional dual, and plural forms.
   * @interface
   */
  interface IWordForm {
    one: string;
    two?: string;
    many: string;
  }
  /**
   * Returns a word form based on a given number value.
   *
   * @param value - The number value to determine the word form for.
   * @param options - The options object.
   * @param options.one - The word form for when the value is 1.
   * @param options.many - The word form for when the value is 0 or ends with 0, or when the value is between 11 and 20 (inclusive).
   * @param [options.two=options.many] - The word form for when the value ends with 2 (e.g., 12, 22, 32).
   * @return The word form with the given number value.
   */
  export const wordForm: (
    value: number,
    { one, many, two }: IWordForm,
  ) => string;
  export default wordForm;
}

declare module "react-declarative/utils/scaleRect" {
  import ISize from "react-declarative/model/ISize";
  interface IParams {
    maxHeight?: number;
    maxWidth?: number;
  }
  export const createScaleRect: ({
    maxHeight,
    maxWidth,
  }?: IParams) => ({ height, width }: ISize) => ISize;
  export const scaleRect: ({ height, width }: ISize) => ISize;
  export default createScaleRect;
}

declare module "react-declarative/utils/scaleToSize" {
  export const createScaleToSize: (
    maxSize?: number,
    maxExec?: number,
  ) => import("./hof/execpool").IWrappedFn<Blob, [blob: Blob | File]>;
  export const scaleToSize: import("./hof/execpool").IWrappedFn<
    Blob,
    [blob: Blob | File]
  >;
  export default scaleToSize;
}

declare module "react-declarative/utils/hof/timeout" {
  export const TIMEOUT_SYMBOL: unique symbol;
  export const timeout: <T extends unknown = any, P extends any[] = any[]>(
    run: (...args: P) => Promise<T>,
    delay?: number,
  ) => (...args: P) => Promise<symbol | T>;
  export default timeout;
}

declare module "react-declarative/utils/hof/waitForNext" {
  import { TIMEOUT_SYMBOL } from "react-declarative/utils/hof/timeout";
  import { TSubject } from "react-declarative/utils/rx/Subject";
  export const waitForNext: <T = any>(
    subject: TSubject<T>,
    condition: (t: T) => boolean,
    delay?: number,
  ) => Promise<typeof TIMEOUT_SYMBOL | T>;
  export default waitForNext;
}

declare module "react-declarative/utils/hof/obsolete" {
  export const obsolete: <T extends unknown = any, P extends any[] = any[]>(
    run: (...args: P) => Promise<T>,
  ) => (...args: P) => Promise<T>;
  export default obsolete;
}

declare module "react-declarative/utils/hof/singleshot" {
  /**
   * @interface IClearable
   * @description An interface representing an object that can be cleared.
   */
  export interface IClearable {
    clear: () => void;
  }
  /**
   * Creates a function that is only executed once, and then memoizes and returns the result.
   *
   * @template T - The type of the function to be executed once.
   * @param run - The function to be executed once.
   * @returns - The executed function with additional "clear" method to reset the execution state.
   */
  export const singleshot: <T extends (...args: any[]) => any>(
    run: T,
  ) => T & IClearable;
  export default singleshot;
}

declare module "react-declarative/utils/hof/singletick" {
  /**
   * Represents a clearable object.
   * @interface
   */
  export interface IClearable {
    clear: () => void;
  }
  /**
   * Wraps a function with a single event loop ticking behavior.
   *
   * @param run - The function to be wrapped.
   * @returns A wrapped function that executes with a single ticking behavior.
   */
  export const singletick: {
    <T extends (...args: any[]) => any>(run: T): T & IClearable;
    delay: number;
  };
  export default singletick;
}

declare module "react-declarative/utils/hof/afterinit" {
  /**
   * Represents a function wrapped in a promise that can be executed and cleared.
   *
   * @template T - The type of the promise result.
   * @template P - The type of the function arguments.
   */
  export interface IWrappedFn<T extends any = any, P extends any[] = any> {
    (...args: P): Promise<T>;
    clear(): void;
  }
  /**
   * Creates a wrapped function that only executes the provided function after the initial call has completed.
   * The wrapped function can be cleared to allow subsequent calls to execute the provided function again.
   *
   * @template T The type of the promise resolved by the provided function.
   * @template P The type of the arguments passed to the provided function.
   * @param run The function to be wrapped.
   * @returns The wrapped function.
   */
  export const afterinit: <T extends unknown = any, P extends any[] = any[]>(
    run: (...args: P) => Promise<T>,
  ) => IWrappedFn<T, P>;
  export default afterinit;
}

declare module "react-declarative/utils/hof/execpool" {
  /**
   * Represents the configuration options for the execution pool.
   *
   * @interface
   * @property maxExec - The maximum number of executions allowed concurrently.
   * @property delay - The delay in milliseconds between executions.
   */
  interface IConfig {
    maxExec: number;
    delay: number;
  }
  /**
   * Represents a wrapped function that returns a promise.
   *
   * @template T - The type of the result of the wrapped function.
   * @template P - The types of the parameters of the wrapped function.
   *
   * @interface
   * @function
   * @param args - The arguments to pass to the wrapped function.
   * @returns A promise that resolves with the result of the wrapped function.
   * @function clear - Clears all pending executions in the execution pool.
   */
  export interface IWrappedFn<T extends any = any, P extends any[] = any> {
    (...args: P): Promise<T>;
    clear(): void;
  }
  /**
   * Creates an execution pool for asynchronous functions with a limited concurrency.
   *
   * @template T - The type of the result of the wrapped function.
   * @template P - The types of the parameters of the wrapped function.
   *
   * @function
   * @param run - The function to be executed in the pool.
   * @param options - Optional configuration options for the execution pool.
   * @returns A wrapped function that executes asynchronously within the execution pool.
   */
  export const execpool: <T extends unknown = any, P extends any[] = any[]>(
    run: (...args: P) => Promise<T>,
    { maxExec, delay }?: Partial<IConfig>,
  ) => IWrappedFn<T, P>;
  export default execpool;
}

declare module "react-declarative/utils/hof/retry" {
  import { CANCELED_SYMBOL } from "react-declarative/utils/hof/queued";
  /**
   * Represents a wrapped function that returns a promise.
   * @template T - The type of the promise's resolved value.
   * @template P - The type of the function's arguments.
   */
  export interface IWrappedFn<T extends any = any, P extends any[] = any> {
    (...args: P): Promise<T | typeof CANCELED_SYMBOL>;
    cancel(): void;
    clear(): void;
  }
  /**
   * Retries a function multiple times until it succeeds or reaches the maximum number of retries.
   *
   * @param run - The function to run.
   * @param count - The maximum number of retries (default is 5).
   * @returns - The wrapped function that can be canceled.
   */
  export const retry: <T extends unknown = any, P extends any[] = any[]>(
    run: (...args: P) => Promise<T>,
    count?: number,
  ) => IWrappedFn<T, P>;
  export default retry;
}

declare module "react-declarative/utils/hof/singlerun" {
  /**
   * Interface for classes that can be cleared.
   * @interface
   */
  export interface IClearable {
    clear: () => void;
  }
  /**
   * Interface for reading task status
   * @interface
   */
  interface ITaskStatus {
    getStatus: () => "pending" | "fulfilled" | "rejected" | "ready";
  }
  /**
   * A class representing a task.
   *
   * @class
   */
  export class Task {
    readonly target: Promise<any>;
    /**
     * Retrieves the current status value.
     *
     * @return The value of the status.
     */
    get status(): "pending" | "fulfilled" | "rejected";
    /**
     * Constructor for creating an instance of the class.
     *
     * @param target - The target promise to be handled.
     *
     * @return - This method does not return any value.
     */
    constructor(target: Promise<any>);
  }
  /**
   * Represents a higher-order function that runs a task only once and provides a way to clear the result.
   * @template T - The function type.
   * @param run - The function to be executed.
   * @returns - The wrapped function with additional clear functionality.
   */
  export const singlerun: <T extends (...args: any[]) => any>(
    run: T,
  ) => T & IClearable & ITaskStatus;
  export default singlerun;
}

declare module "react-declarative/utils/hof/cancelable" {
  /**
   * Represents a wrapped function that returns a promise.
   * @template T - The type of the result of the wrapped function.
   * @template P - The types of the parameters of the wrapped function.
   */
  export interface IWrappedFn<T extends any = any, P extends any[] = any> {
    (...args: P): Promise<T | typeof CANCELED_SYMBOL>;
    cancel(): void;
  }
  /**
   * Symbol representing cancellation status.
   *
   * @type {Symbol}
   * @name CANCELED_SYMBOL
   */
  export const CANCELED_SYMBOL: unique symbol;
  /**
   * Wraps a promise function and provides cancellation functionality.
   *
   * @param promise - The promise function to wrap.
   * @returns The wrapped function with cancellation capability.
   * @template T - The type of the promise's resolved value.
   * @template P - The type of the promise function's arguments.
   */
  export const cancelable: <T extends unknown = any, P extends any[] = any[]>(
    promise: (...args: P) => Promise<T>,
  ) => IWrappedFn<T, P>;
  export default cancelable;
}

declare module "react-declarative/utils/hof/debounce" {
  /**
   * Interface representing an object that can be cleared and flushed.
   */
  export interface IClearable {
    clear: () => void;
    flush: () => void;
    pending: () => boolean;
  }
  /**
   * Creates a debounced version of a function.
   *
   * @template T - The type of the original function.
   * @param run - The function to debounce.
   * @param [delay=1000] - The delay in milliseconds before executing the debounced function.
   * @returns - The debounced function with additional methods for clearing and flushing.
   */
  export const debounce: <T extends (...args: any[]) => any>(
    run: T,
    delay?: number,
  ) => T & IClearable;
  export default debounce;
}

declare module "react-declarative/utils/hof/queued" {
  import { CANCELED_SYMBOL } from "react-declarative/utils/hof/cancelable";
  /**
   * Represents a wrapped function that returns a Promise.
   * @template T - The type of the value returned by the wrapped function.
   * @template P - The types of the parameters of the wrapped function.
   */
  export interface IWrappedFn<T extends any = any, P extends any[] = any> {
    (...args: P): Promise<T | typeof CANCELED_SYMBOL>;
    clear(): void;
    cancel(): void;
  }
  /**
   * Creates a wrapper function for a Promise that allows for cancellation and clearing of queued Promises.
   *
   * @template T - The resolved value of the Promise.
   * @template P - The types of the arguments passed to the promise function.
   * @param promise - The promise function to be wrapped.
   * @returns - The wrapped function.
   */
  export const queued: <T extends unknown = any, P extends any[] = any[]>(
    promise: (...args: P) => Promise<T>,
  ) => IWrappedFn<T, P>;
  export { CANCELED_SYMBOL };
  export default queued;
}

declare module "react-declarative/utils/hof/lock" {
  import { IWrappedFn as IWrappedFnInternal } from "react-declarative/utils/hof/queued";
  /**
   * Represents a wrapped function definition.
   * @template T - The return type of the wrapped function.
   * @template P - The parameter types of the wrapped function.
   */
  interface IWrappedFn<T extends any = any, P extends any[] = any>
    extends IWrappedFnInternal<T, P> {
    beginLock(): void;
    endLock(): Promise<void>;
  }
  /**
   * Wraps a promise function with lock functionality.
   *
   * @param promise - The promise function to be wrapped.
   * @returns The wrapped function with lock functionality.
   */
  export const lock: <T extends unknown = any, P extends any[] = any[]>(
    promise: (...args: P) => Promise<T>,
  ) => IWrappedFn<T, P>;
  export default lock;
}

declare module "react-declarative/utils/hof/cached" {
  /**
   * Interface for objects that can be cleared.
   *
   * @interface
   */
  interface IClearable {
    clear: () => void;
  }
  /**
   * Caches the result of a function based on the change of arguments.
   * @template T - The type of the function to be cached.
   * @template A - The type of the arguments of the function.
   * @param changed - Function to determine if the arguments have changed.
   * @param run - The function to be cached.
   * @returns - The cached function with additional clear method.
   */
  export const cached: <T extends (...args: A) => any, A extends any[]>(
    changed: (prevArgs: A, currentArgs: A) => boolean,
    run: T,
  ) => T & IClearable;
  export default cached;
}

declare module "react-declarative/utils/hof/memoize" {
  /**
   * Interface representing a clearable object.
   * @template K - The type of the key.
   */
  export interface IClearable<K = string> {
    clear: (key?: K) => void;
  }
  /**
   * Represents a reference to a value of type T.
   *
   * @template T - The type of the value referenced by this reference.
   */
  export interface IRef<T = any> {
    current: T;
  }
  /**
   * Represents a generic control interface with key-value pair operations.
   * @template K The type of keys.
   * @template V The type of values.
   * @interface
   */
  export interface IControl<K, V> {
    /**
     * Adds a key-value pair to the control.
     * @param key The key to add.
     * @param value The value to associate with the key.
     */
    add: (key: K, value: V) => void;
    /**
     * Removes a key and its associated value from the control.
     * @param key The key to remove.
     * @returns true if ok
     */
    remove: (key: K) => boolean;
  }
  /**
   * Defines the GET_VALUE_MAP constant.
   *
   * This symbol is used to uniquely identify the 'get-value-map' property in an object or map.
   * It can be used as a key to retrieve or set a value from a map.
   *
   * @const {symbol} GET_VALUE_MAP - The symbol representing the 'get-value-map' property.
   */
  export const GET_VALUE_MAP: unique symbol;
  /**
   * A memoization function that caches the result of a function based on its arguments.
   *
   * @template T - The function type that will be memoized
   * @template A - The argument types of the function
   * @template K - The key type used to store the memoized results
   * @param key - A function that generates a unique key based on the arguments of the original function
   * @param run - The original function to be memoized
   * @returns - A memoized version of the original function with the ability to clear the cache
   */
  export const memoize: <
    T extends (...args: A) => any,
    A extends any[],
    K = string,
  >(
    key: (args: A) => K,
    run: T,
  ) => T & IClearable<K> & IControl<K, ReturnType<T>>;
  export default memoize;
}

declare module "react-declarative/utils/hof/trycatch" {
  interface IError extends Error {}
  /**
   * Represents a configuration interface.
   *
   * @interface
   */
  interface IConfig {
    allowedErrors?: {
      new (): IError;
    }[];
    fallback?: (error: Error) => void;
    defaultValue: null | false;
  }
  /**
   * A higher-order function that wraps the provided function with a try-catch block. It catches any errors that occur during the execution of the function and handles them according to
   * the specified configuration.
   *
   * @template T - The type of the function being wrapped
   * @template A - An array of arguments that the function accepts
   * @template V - The type of the value returned by the function
   *
   * @param run - The function to be wrapped
   * @param config - The configuration object
   * @param config.fallback - The fallback function to be called with the caught error (optional)
   * @param config.defaultValue - The default value to be returned if an error occurs (optional, default: null)
   *
   * @returns - The wrapped function that handles errors and returns the result or the default value
   */
  export const trycatch: <
    T extends (...args: A) => any,
    A extends any[],
    V extends unknown,
  >(
    run: T,
    { allowedErrors, fallback, defaultValue }?: Partial<IConfig>,
  ) => (...args: A) => ReturnType<T> | null;
  export default trycatch;
}

declare module "react-declarative/utils/hof/ttl" {
  import {
    IClearable as IClearableInternal,
    IControl,
  } from "react-declarative/utils/hof/memoize";
  /**
   * Represents a clearable object that can be garbage collected.
   *
   * @template K - The type of key used for clearing.
   */
  export interface IClearable<K = string> extends IClearableInternal<K> {
    gc: () => void;
  }
  /**
   * Wrap a function with time-to-live (TTL) caching.
   *
   * @template T - The function type.
   * @template A - The argument types of the function.
   * @template K - The key type for caching.
   * @param run - The function to wrap.
   * @param options - The configuration options.
   * @param [options.key] - The key generator function that generates a key based on function arguments.
   * @param [options.timeout] - The TTL duration in milliseconds.
   * @returns - The wrapped function with caching capability.
   */
  export const ttl: <
    T extends (...args: A) => any,
    A extends any[],
    K = string,
  >(
    run: T,
    {
      key,
      timeout,
    }?: {
      key?: ((args: A) => K) | undefined;
      timeout?: number | undefined;
    },
  ) => T & IClearable<K> & IControl<K, ReturnType<T>>;
  export default ttl;
}

declare module "react-declarative/utils/sleep" {
  /**
   * Delays the execution for the specified amount of time.
   *
   * @param [timeout=1000] - The duration to wait in milliseconds.
   * @returns A promise that resolves once the timeout has elapsed.
   */
  export const sleep: (timeout?: number) => Promise<void>;
  export default sleep;
}

declare module "react-declarative/utils/deepFlat" {
  /**
   * A utility function to deep flatten an array of objects.
   *
   * @param arr - The input array to be deep flattened.
   * @returns - The deep flattened array.
   * @template T - The type of elements in the input array.
   */
  export const deepFlat: <T = any>(arr?: T[]) => T[];
  export default deepFlat;
}

declare module "react-declarative/utils/rx/BehaviorSubject" {
  import Subject from "react-declarative/utils/rx/Subject";
  import TBehaviorSubject from "react-declarative/model/TBehaviorSubject";
  import TObserver, { TObservable } from "react-declarative/model/TObserver";
  /**
   * Represents a BehaviorSubject that extends the Subject class and provides the functionality of an observable and an observer.
   *
   * @template Data - The type of the data that the BehaviorSubject holds.
   */
  export class BehaviorSubject<Data = any>
    extends Subject<Data>
    implements TBehaviorSubject<Data>, TObservable<Data>
  {
    constructor(_data?: Data | null);
    /**
     * Retrieves the data stored in the instance.
     *
     * @return The data stored in the instance.
     */
    get data(): Data | null;
    /**
     * Sets the given data and calls the next method of the super class asynchronously.
     *
     * @param data - The data to be set.
     * @return Resolves when super class's next method is called.
     */
    next: (data: Data) => Promise<void>;
    /**
     * Creates a new observer.
     *
     * @returns The observer instance.
     */
    toObserver: () => TObserver<Data>;
  }
  export { TBehaviorSubject };
  export default BehaviorSubject;
}

declare module "react-declarative/utils/rx/EventEmitter" {
  type EventKey = string | symbol;
  type Function = (...args: any[]) => void;
  /**
   * Class representing an event emitter.
   * @class
   */
  export class EventEmitter {
    /**
     * Check if the object has any listeners attached to it.
     *
     * @return True if the object has listeners, false otherwise.
     */
    get hasListeners(): boolean;
    /**
     * Retrieves the listeners associated with the given event key.
     *
     * @param key - The event key to retrieve the listeners for.
     * @returns An array of listeners associated with the given event key.
     */
    getListeners: (key: EventKey) => Function[];
    /**
     * Subscribes a callback function to the specified event name.
     *
     * @param eventName - The key of the event.
     * @param callback - The callback function to be executed when the event is triggered.
     * @returns
     */
    subscribe: (eventName: EventKey, callback: Function) => void;
    /**
     * Removes a callback function from the list of event listeners for the specified event.
     *
     * @param eventName - The key of the event to unsubscribe from.
     * @param callback - The callback function to remove from the event listeners.
     * @returns
     */
    unsubscribe: (eventName: EventKey, callback: Function) => void;
    /**
     * Clears all event handlers registered for the current object.
     * @function
     * @returns
     */
    unsubscribeAll: () => void;
    /**
     * Subscribes a callback function to the given event name. The callback function will be triggered only once when the event is emitted.
     *
     * @param eventName - The name of the event to subscribe to.
     * @param callback - The callback function to be executed when the event is emitted.
     * @returns - A function that can be called to unsubscribe the callback function from the event.
     */
    once: (eventName: EventKey, callback: Function) => () => void;
    /**
     * Emits the given event with the specified arguments.
     *
     * @param eventName - The name of the event to emit.
     * @param args - The arguments to pass to the event listeners.
     * @returns - A promise that resolves when all event listeners have completed.
     */
    emit: (eventName: EventKey, ...args: any[]) => Promise<void>;
  }
  export default EventEmitter;
}

declare module "react-declarative/utils/rx/Observer" {
  import TObserver from "react-declarative/model/TObserver";
  export const LISTEN_CONNECT: unique symbol;
  export const LISTEN_DISCONNECT: unique symbol;
  type Fn = (...args: any[]) => void;
  /**
   * A class representing an Observer.
   *
   * @template Data - The type of data to observe.
   */
  export class Observer<Data = any> implements TObserver<Data> {
    /**
     * Returns the current value of the 'isShared' property.
     *
     * @returns - The value of the 'isShared' property.
     */
    get isShared(): boolean;
    /**
     * Returns whether the given event has any listeners.
     *
     * @returns True if there are listeners for the event, otherwise false.
     */
    get hasListeners(): boolean;
    constructor(dispose: Fn);
    /**
     * Sets up a listener for the connect event on the broadcast channel.
     *
     * @param fn - The callback function to be executed once the connect event is triggered.
     * @returns
     */
    [LISTEN_CONNECT](fn: () => void): void;
    /**
     * Adds a listener for the DISCONNECT_EVENT.
     *
     * @param fn - The function to be executed when the event occurs.
     */
    [LISTEN_DISCONNECT](fn: () => void): void;
    /**
     * Creates a new Observer.
     * @template T - The type of the value emitted by the observer.
     * @param callbackfn - A function to apply to each value emitted by the observer.
     * @returns - The created Observer.
     */
    map: <T = any>(callbackfn: (value: Data) => T) => Observer<T>;
    /**
     * Applies a callback function to each value emitted by the Observable and flattens the resulting values into a new Observable.
     *
     * @template T - The type of values emitted by the Observable.
     *
     * @param callbackfn - A callback function that accepts a value emitted by the Observable and returns an array of values or a single value.
     *
     * @returns - A new Observer that emits the flattened values.
     */
    flatMap: <T = any>(callbackfn: (value: Data) => T[]) => Observer<T>;
    /**
     * Operator function to create a new observer with a transformed data type.
     *
     * @template T - The type of the transformed data.
     * @param callbackfn - A callback function that takes the target observer and returns a new observer with transformed data.
     * @returns - A new observer with the transformed data type.
     */
    operator: <T = any>(
      callbackfn: (target: TObserver<Data>) => TObserver<T>,
    ) => TObserver<T>;
    /**
     * Reduces the data emitted by an Observer using a callback function and an initial value.
     *
     * @template T - The type of the accumulator and the return value.
     * @param callbackfn - The callback function to execute on each emitted value.
     *   It takes an accumulator value and the current value being emitted, and returns the new accumulator value.
     * @param begin - The initial value of the accumulator.
     * @returns - An Observer that emits the accumulated value after each emission.
     */
    reduce: <T = any>(
      callbackfn: (acm: T, cur: Data) => T,
      begin: T,
    ) => Observer<T>;
    /**
     * Creates and returns an observer function that splits an array of data
     * into a nested array of a specified length.
     *
     * @returns The split observer function.
     */
    split: () => Observer<ReadonlyArray<FlatArray<Data[], 20>>>;
    /**
     * Creates an Observer with asynchronous mapping functionality.
     *
     * @template T - The type of the result of the mapping function.
     * @param callbackfn - The function used to map the incoming data.
     * @param [fallbackfn] - An optional fallback function to handle error cases. If not provided, the error will be rethrown.
     * @returns - The created Observer.
     */
    mapAsync: <T = any>(
      callbackfn: (value: Data) => Promise<T>,
      fallbackfn?: ((e: Error) => void) | undefined,
    ) => Observer<T>;
    /**
     * Creates a filtered observer.
     *
     * @param callbackfn - The filter callback function.
     * @returns The filtered observer.
     */
    filter: (callbackfn: (value: Data) => boolean) => Observer<Data>;
    /**
     * Attaches a callback function to the tap observer. The callback function will be called with a value of type `Data` when the tap observer is triggered.
     *
     * @param callbackfn - A callback function that takes a value of type `Data` as an argument.
     * @returns - An observer object that can be used to manage the tap subscription.
     */
    tap: (callbackfn: (value: Data) => void) => Observer<Data>;
    /**
     * Creates a debounced observer that emits values at a specified delay.
     *
     * @param delay - The delay (in milliseconds) between value emissions.
     * @returns The debounced observer.
     */
    debounce: (delay?: number | undefined) => Observer<Data>;
    /**
     * Creates a delayed observer that emits values at a specified delay.
     *
     * @param delay - The delay (in milliseconds) between value emissions.
     * @returns The debounced observer.
     */
    delay: (delay?: number | undefined) => Observer<Data>;
    /**
     * Emits the specified data to all observers.
     *
     * @param data - The data to be emitted.
     */
    emit: (data: Data) => Promise<void>;
    /**
     * Subscribes to the `OBSERVER_EVENT` and invokes the provided callback function.
     * Emits the `CONNECT_EVENT`.
     * Returns a composed function that will try to dispose and unsubscribe the callback.
     *
     * @param callbackfn - The callback function to be invoked when `OBSERVER_EVENT` is emitted.
     * @returns - The composed function that will try to dispose and unsubscribe the callback.
     */
    connect: (
      callbackfn: (value: Data) => void,
    ) => import("../compose").Function;
    /**
     * Executes a callback function once and provides a way to unsubscribe from further executions.
     *
     * @param callbackfn - The callback function to be executed once.
     * @returns - A function that can be called to unsubscribe from further executions of the callback.
     */
    once: (callbackfn: (value: Data) => void) => Fn;
    /**
     * Marks a variable as shared.
     *
     * @returns The shared variable object.
     */
    share: () => this;
    /**
     * Creates an observable sequence that emits values at specified intervals.
     * @param [interval=1000] - The time interval between emissions in milliseconds.
     * @returns The observer object to subscribe to.
     */
    repeat: (interval?: number) => Observer<Data>;
    /**
     * Merges an observer with the given observer, returning a new observer that emits values from both observers.
     *
     * @template T - The type of value emitted by the observer.
     * @param observer - The observer to merge with.
     * @returns - The merged observer.
     */
    merge: <T = any>(observer: TObserver<T>) => Observer<Data | T>;
    /**
     * Unsubscribes from all events and performs cleanup.
     *
     * @function
     * @name unsubscribe
     * @memberOf undefined
     *
     * @returns
     */
    unsubscribe: () => void;
    /**
     * Converts the current instance to a Promise that resolves with the data.
     *
     * @returns A Promise that resolves with the data.
     */
    toPromise: () => Promise<Data>;
    /**
     * Creates a context for iterating asynchronously using a generator function.
     *
     * @returns The iterator context object.
     * @property iterate - The generator function that can be used to iterate over the values.
     * @property done - Marks the iteration as complete.
     */
    toIteratorContext: () => {
      iterate: () => AsyncGenerator<Awaited<Data>, void, unknown>;
      done(): void;
    };
  }
  export { TObserver };
  export default Observer;
}

declare module "react-declarative/utils/rx/Operator" {
  /**
   * Represents a collection of static operator functions.
   */
  export class Operator {
    static take: <T = any>(
      count: number,
    ) => (
      target: import("./Observer").TObserver<T>,
    ) => import("./Observer").TObserver<T>;
    static skip: <T = any>(
      the: number,
    ) => (
      target: import("./Observer").TObserver<T>,
    ) => import("./Observer").TObserver<T>;
    static pair: <T = any>(
      by?: number,
    ) => (
      target: import("./Observer").TObserver<T>,
    ) => import("./Observer").TObserver<[T, T]>;
    static group: <T = any>(
      by: number,
    ) => (
      target: import("./Observer").TObserver<T>,
    ) => import("./Observer").TObserver<T[]>;
    static strideTricks: <T = any>(
      strideSize: number,
      step?: number,
    ) => (
      target: import("./Observer").TObserver<T[]>,
    ) => import("./Observer").TObserver<T[][]>;
    static distinct: <T = any, V = any>(
      getCompareValue?: (value: T) => V,
    ) => (
      target: import("./Observer").TObserver<T>,
    ) => import("./Observer").TObserver<T>;
    static liveness: <T = any>(
      fallbackfn: () => void,
      waitFor?: number,
    ) => (
      target: import("./Observer").TObserver<T>,
    ) => import("./Observer").TObserver<T>;
    static count: <T = any>() => (
      target: import("./Observer").TObserver<T>,
    ) => import("./Observer").TObserver<import("./lib/count").ICounted<T>>;
  }
  export default Operator;
}

declare module "react-declarative/utils/rx/Subject" {
  import Observer from "react-declarative/utils/rx/Observer";
  import TSubject from "react-declarative/model/TSubject";
  import TObserver, { TObservable } from "react-declarative/model/TObserver";
  export const SUBJECT_EVENT: unique symbol;
  type Function = (...args: any[]) => void;
  /**
   * Represents a subject that can emit data and be subscribed to.
   * @class
   * @implements {TSubject<Data>}
   * @implements {TObservable<Data>}
   * @template Data - The type of data that the subject emits.
   */
  export class Subject<Data = any>
    implements TSubject<Data>, TObservable<Data>
  {
    constructor();
    /**
     * Maps the values of the observer using the given callback function.
     *
     * @template T - The type of the mapped values.
     * @param callbackfn - A function that maps each value of the observer.
     * @returns - An observer with the mapped values.
     */
    map: <T = any>(callbackfn: (value: Data) => T) => TObserver<T>;
    /**
     * Applies a transformation function to each value emitted by the observer and flattens the result into a single observer.
     * @template T - The type of values emitted by the observer.
     * @param callbackfn - The transformation function to apply to each value emitted by the observer.
     * @returns - The observer that emits the flattened values.
     */
    flatMap: <T = any>(callbackfn: (value: Data) => T[]) => TObserver<T>;
    /**
     * Applies a reducer function to each value emitted by the observer and returns a single accumulated value.
     *
     * @template T - The type of the accumulated value and emitted values
     * @param callbackfn - A function that accepts the accumulated value and the current emitted value, and returns the new accumulated value
     * @param begin - The initial value for the accumulator
     * @returns - An observer that emits the accumulated value when the original observer completes
     */
    reduce: <T = any>(
      callbackfn: (acm: T, cur: Data) => T,
      begin: T,
    ) => TObserver<T>;
    /**
     * Asynchronously maps the emitted values of the observer using the provided callback function.
     *
     * @template T - The type of the mapped values.
     * @param callbackfn - The callback function that maps the emitted values of the observer.
     * @param [fallbackfn] - The optional fallback function that handles errors during mapping.
     * @returns - Returns a new observer that emits the mapped values.
     */
    mapAsync: <T = any>(
      callbackfn: (value: Data) => Promise<T>,
      fallbackfn?: ((e: Error) => void) | undefined,
    ) => TObserver<T>;
    /**
     * Applies a filtering function to the observer and returns a new observer with filtered values.
     *
     * @param callbackfn - A function that tests each value in the observer. Should return true or false.
     * @returns - A new observer with filtered values.
     */
    filter: (callbackfn: (value: Data) => boolean) => TObserver<Data>;
    /**
     * The tap function allows you to perform side effects without modifying the observed data.
     *
     */
    tap: (callbackfn: (value: Data) => void) => TObserver<Data>;
    /**
     * Applies a callback function to the values emitted by an observer.
     *
     * @param callbackfn - The callback function to apply to the emitted values.
     * @returns - An observer with the applied operator.
     *
     * @template T - The type of values emitted by the observer.
     *
     * @category Observables
     */
    operator: <T = any>(
      callbackfn: (value: TObserver<Data>) => TObserver<T>,
    ) => TObserver<T>;
    /**
     * Splits the observed data into batches of arrays.
     *
     * @returns - The observer that emits batches of arrays.
     */
    split: () => Observer<ReadonlyArray<FlatArray<Data[], 20>>>;
    /**
     * Creates a debounced observer with an optional delay.
     * @param [delay] - The delay in milliseconds before emitting the data.
     * @returns - The debounced observer.
     */
    debounce: (delay?: number | undefined) => TObserver<Data>;
    /**
     * Creates a delayed observer with an optional delay.
     * @param [delay] - The delay in milliseconds before emitting the data.
     * @returns - The delayed observer.
     */
    delay: (delay?: number | undefined) => TObserver<Data>;
    /**
     * Creates an observer that repeats emitting values at a specified interval.
     *
     * @param [interval] - The time interval at which to repeat emitting values.
     * @returns - The created observer.
     */
    repeat: (interval?: number | undefined) => TObserver<Data>;
    /**
     * Merges the provided observer with the current observer instance.
     * Returns a new observer that emits values from both observers.
     *
     * @param observer - The observer to merge with the current observer.
     * @returns - A new observer that emits values from both observers.
     */
    merge: <T = any>(observer: TObserver<T>) => TObserver<Data | T>;
    /**
     * Subscribes to an event.
     *
     * @param callback - The callback function to be invoked when the event is triggered.
     * @returns - A function to unsubscribe from the event.
     */
    subscribe: (callback: Function) => () => void;
    /**
     * Unsubscribes all event listeners.
     *
     * @function unsubscribeAll
     * @instance
     * @returns - No return value.
     */
    unsubscribeAll: () => void;
    /**
     * Executes the provided callback function only once.
     * The callback function will be invoked when the specified event occurs for the first time.
     *
     * @param callback - The function to be executed only once.
     * @returns - A function that removes the registered event listener.
     */
    once: (callback: Function) => () => void;
    /**
     * Calls the next method to emit the specified data using the SUBJECT_EVENT event.
     *
     * @param data - The data to be emitted.
     * @return - Resolves when the emission is complete.
     */
    next(data: Data): Promise<void>;
    /**
     * Creates a new observer to observe the data emitted by a source.
     *
     * @template TObserver - The type of observer.
     * @template Data - The type of data emitted by the source.
     * @returns - The created observer.
     */
    toObserver(): TObserver<Data>;
    /**
     * Converts an observer-based asynchronous operation into a promise-based asynchronous operation.
     *
     * @function toPromise
     * @instance
     * @returns A promise representing the completion or failure of the asynchronous operation.
     */
    toPromise: () => Promise<Data>;
    /**
     * Converts the current object to an iterator context.
     *
     * @function
     * @returns The iterator context representing the current object.
     */
    toIteratorContext: () => {
      iterate(): AsyncGenerator<Data, void, unknown>;
      done(): void;
    };
  }
  export { TSubject };
  export default Subject;
}

declare module "react-declarative/utils/rx/Source" {
  import Observer from "react-declarative/utils/rx/Observer";
  import TObserver from "react-declarative/model/TObserver";
  import { TSubject } from "react-declarative/utils/rx/Subject";
  import { TBehaviorSubject } from "react-declarative/utils/rx/BehaviorSubject";
  /**
   * The Source class provides utility functions for creating and manipulating Observers.
   */
  export class Source {
    /**
     * Merges multiple observers into a single observer.
     *
     * @template A - The type of observer A.
     * @template B - The type of observer B.
     * @template C - The type of observer C.
     * @template D - The type of observer D.
     * @template E - The type of observer E.
     * @template F - The type of observer F.
     * @template G - The type of observer G.
     * @template H - The type of observer H.
     * @template I - The type of observer I.
     * @template J - The type of observer J.
     *
     * @param observers - An array of observers to merge.
     *
     * @returns - The merged observer.
     */
    static merge: <
      A = never,
      B = never,
      C = never,
      D = never,
      E = never,
      F = never,
      G = never,
      H = never,
      I = never,
      J = never,
    >(
      observers: [
        TObserver<A>,
        (TObserver<B> | undefined)?,
        (TObserver<C> | undefined)?,
        (TObserver<D> | undefined)?,
        (TObserver<E> | undefined)?,
        (TObserver<F> | undefined)?,
        (TObserver<G> | undefined)?,
        (TObserver<H> | undefined)?,
        (TObserver<I> | undefined)?,
        (TObserver<J> | undefined)?,
      ],
    ) => TObserver<A | B | C | D | E | F | G | H | I | J>;
    /**
     * Creates a join observer that combines the values emitted by multiple Observers into a single Observable.
     *
     * @template A - The type of the value emitted by the first Observer.
     * @template B - The type of the value emitted by the second Observer.
     * @template C - The type of the value emitted by the third Observer.
     * @template D - The type of the value emitted by the fourth Observer.
     * @template E - The type of the value emitted by the fifth Observer.
     * @template F - The type of the value emitted by the sixth Observer.
     * @template G - The type of the value emitted by the seventh Observer.
     * @template H - The type of the value emitted by the eighth Observer.
     * @template I - The type of the value emitted by the ninth Observer.
     * @template J - The type of the value emitted by the tenth Observer.
     *
     * @param observers - An array of Observers to join.
     * @param options - Optional parameters for the join operation, including a buffer and a race flag.
     * @param options.buffer - An array to store the latest emitted values from each Observer. Defaults to an empty array.
     * @param options.race - A boolean flag indicating whether to emit the combined values immediately or wait for all Observers to emit a value. Defaults to false.
     *
     * @returns An Observer that emits an array of values, each value being the latest emitted value from the corresponding Observer.
     */
    static join: <
      A = never,
      B = never,
      C = never,
      D = never,
      E = never,
      F = never,
      G = never,
      H = never,
      I = never,
      J = never,
    >(
      observers: [
        TObserver<A>,
        (TObserver<B> | undefined)?,
        (TObserver<C> | undefined)?,
        (TObserver<D> | undefined)?,
        (TObserver<E> | undefined)?,
        (TObserver<F> | undefined)?,
        (TObserver<G> | undefined)?,
        (TObserver<H> | undefined)?,
        (TObserver<I> | undefined)?,
        (TObserver<J> | undefined)?,
      ],
      {
        race,
        buffer,
      }?: {
        buffer?:
          | [
              A,
              (B | undefined)?,
              (C | undefined)?,
              (D | undefined)?,
              (E | undefined)?,
              (F | undefined)?,
              (G | undefined)?,
              (H | undefined)?,
              (I | undefined)?,
              (J | undefined)?,
            ]
          | undefined;
        race?: boolean | undefined;
      },
    ) => TObserver<[A, B, C, D, E, F, G, H, I, J]>;
    /**
     * @typedef Unicast
     * @template Data - The type of data the observer handles.
     *
     * @property factory - A factory function to create the observer.
     * @property isUnicasted - Indicates whether the observer is unicast.
     *
     * @returns - A unicast observer instance.
     */
    static unicast: <Data = any>(
      factory: () => TObserver<Data>,
    ) => TObserver<Data> & {
      isUnicasted: true;
    };
    /**
     * Creates a multicast observer.
     *
     * @template Data - The type of data being observed.
     * @param factory - A factory function that creates the observer.
     * @returns - The multicast observer.
     */
    static multicast: <Data = any>(
      factory: () => TObserver<Data>,
    ) => TObserver<Data> & {
      isMulticasted: true;
      getRef: any;
    };
    /**
     * Creates a hot observable that emits data as it is received from the given emitter.
     *
     * @template Data The type of data emitted by the observable.
     * @param emitter The function that receives a callback to emit data. It should return a cleanup function or `undefined`.
     * @returns The observer that allows subscribing to and unsubscribing from the emitted data.
     */
    static createHot: <Data = any>(
      emitter: (next: (data: Data) => void) => (() => void) | void,
    ) => Observer<Data>;
    /**
     * Creates a cold observable.
     *
     * @param emitter - The emitter function which is called when a subscriber is added.
     *                            It should return a function that is called when the subscription is unsubscribed,
     *                            or return `undefined` if no cleanup is needed.
     * @returns - The created observer.
     */
    static createCold: <Data = any>(
      emitter: (next: (data: Data) => void) => (() => void) | void,
    ) => Observer<Data>;
    /**
     * Creates a new instance of the Cold object.
     */
    static create: <Data = any>(
      emitter: (next: (data: Data) => void) => (() => void) | void,
    ) => Observer<Data>;
    /**
     * Creates a pipe that connects an observer to a subject and emits output values based on a given emitter function.
     *
     * @param target - The observer that will receive output values.
     * @param emitter - A function that takes a subject and a next function and returns an unsubscribe function.
     * @returns The observer that is connected to the subject and emits output values.
     * @template Data - The type of data that will be observed.
     * @template Output - The type of output that will be emitted.
     */
    static pipe: <Data = any, Output = any>(
      target: TObserver<Data>,
      emitter: (
        subject: TSubject<Data>,
        next: (output: Output) => void,
      ) => (() => void) | void,
    ) => Observer<Output>;
    static fromInterval: (delay: number) => TObserver<number>;
    static fromPromise: <Data = any>(
      callbackfn: () => Promise<Data>,
      fallbackfn?: ((e: Error) => void) | undefined,
    ) => TObserver<Data>;
    static fromDelay: (delay: number) => TObserver<void>;
    static fromArray: <Data = any>(
      data: Data,
    ) => TObserver<
      readonly (Data extends readonly (infer InnerArr)[]
        ? InnerArr extends readonly (infer InnerArr)[]
          ? InnerArr extends readonly (infer InnerArr)[]
            ? InnerArr extends readonly (infer InnerArr)[]
              ? InnerArr extends readonly (infer InnerArr)[]
                ? InnerArr extends readonly (infer InnerArr)[]
                  ? InnerArr extends readonly (infer InnerArr)[]
                    ? InnerArr extends readonly (infer InnerArr)[]
                      ? InnerArr extends readonly (infer InnerArr)[]
                        ? InnerArr extends readonly (infer InnerArr)[]
                          ? InnerArr extends readonly (infer InnerArr)[]
                            ? any
                            : InnerArr
                          : InnerArr
                        : InnerArr
                      : InnerArr
                    : InnerArr
                  : InnerArr
                : InnerArr
              : InnerArr
            : InnerArr
          : InnerArr
        : Data)[]
    >;
    static fromEvent: (
      event: keyof DocumentEventMap,
    ) => TObserver<
      | Event
      | MouseEvent
      | UIEvent
      | FocusEvent
      | ErrorEvent
      | ProgressEvent<EventTarget>
      | SubmitEvent
      | ClipboardEvent
      | AnimationEvent
      | InputEvent
      | CompositionEvent
      | DragEvent
      | FormDataEvent
      | PointerEvent
      | KeyboardEvent
      | SecurityPolicyViolationEvent
      | TouchEvent
      | TransitionEvent
      | WheelEvent
    >;
    /**
     * Creates a new observer that emits a value from the given data or function.
     *
     * @param data - The data or function to emit from the observer.
     * @returns - The created observer.
     */
    static fromValue: <Data = any>(
      data: Data | (() => Data),
    ) => TObserver<Data>;
    /**
     * Creates an observer from the given subject and returns it.
     *
     * @template Data - The type of data emitted by the observer.
     * @param subject - The subject to create the observer from.
     * @returns - The observer created from the subject.
     */
    static fromSubject: <Data = any>(subject: TSubject<Data>) => Observer<Data>;
    /**
     * Creates an observer from a BehaviorSubject.
     *
     * @template Data The type of data emitted by the BehaviorSubject.
     * @param subject - The BehaviorSubject to create the observer from.
     * @returns The observer created from the BehaviorSubject.
     */
    static fromBehaviorSubject: <Data = any>(
      subject: TBehaviorSubject<Data>,
    ) => Observer<Data>;
  }
  export default Source;
}

declare module "react-declarative/utils/math/has" {
  export const has: <T = unknown>(
    arr: T | Set<T> | Map<T, unknown> | T[] | null | undefined,
    value: T,
  ) => boolean;
  export default has;
}

declare module "react-declarative/utils/math/and" {
  type Value = number | boolean;
  /**
   * Performs a logical AND operation on multiple values.
   *
   * @template T - The type of the values
   * @param args - The values to perform the logical AND operation on
   * @returns - The result of the logical AND operation
   */
  export const and: <T = Promise<Value>>(...args: T[]) => T;
  export default and;
}

declare module "react-declarative/utils/math/or" {
  type Value = number | boolean;
  /**
   * Returns a value of type T representing the logical OR operation on the given arguments.
   *
   * @param args - The arguments to be evaluated for the logical OR operation.
   * @returns A value of type T representing the result of the logical OR operation.
   * @throws If any of the arguments is a rejected promise.
   * @typeparam T - The type of the arguments and the return value.
   */
  export const or: <T = Promise<Value>>(...args: T[]) => T;
  export default or;
}

declare module "react-declarative/utils/math/not" {
  type Value = number | boolean;
  /**
   * Applies the logical negation operator to the given argument.
   * If the argument is a Promise, it returns a new Promise that resolves to the negation of the resolved value of the argument Promise.
   * If the argument is not a Promise, it returns the negation of the argument.
   *
   * @template T - The type of the argument and the return value.
   * @param arg - The argument to apply the logical negation operator.
   * @returns - The result of apply the logical negation operator to the argument.
   */
  export const not: <T = Promise<Value>>(arg: T) => T;
  export default not;
}

declare module "react-declarative/utils/math/match" {
  type Value = number | boolean;
  /**
   * Executes conditional branching based on the provided conditions and returns the appropriate value.
   *
   * @template A - Type of the condition value.
   * @template T - Type of the run value.
   * @template E - Type of the not value.
   *
   * @param params - The parameters object.
   * @param params.condition - The condition value or a function that returns the condition value.
   * @param params.run - The run value or a function that returns the run value.
   * @param [params.not=false] - The not value or a function that returns the not value. Defaults to false.
   *
   * @returns - The result of executing the condition and returning the appropriate value.
   */
  export const match: <A = Promise<Value>, T = Promise<Value>, E = false>({
    condition,
    run,
    not,
  }: {
    condition: A | (() => A);
    run: T | (() => T);
    not?: E | (() => E) | undefined;
  }) => A | T | E;
  export default match;
}

declare module "react-declarative/utils/math/first" {
  /**
   * Returns the first element of an array.
   *
   * @template T - The type of array elements.
   * @param arr - The input array.
   * @returns - The first element of the array, or null if the array is null or empty.
   */
  export const first: <T = any>(arr: T[] | null | undefined) => T | null;
  export default first;
}

declare module "react-declarative/utils/math/join" {
  /**
   * Joins multiple arrays into a single array, removing duplicates and filtering out null values.
   *
   * @param arr - The arrays to join.
   * @returns - The joined array.
   *
   * @template T - The type of values in the array.
   */
  export const join: <T = string>(
    ...arr: (T | T[] | null)[] | (T | T[] | null)[][]
  ) => T[];
  export default join;
}

declare module "react-declarative/utils/math/last" {
  /**
   * Returns the last element of an array or null if the array is empty or not an array.
   *
   * @param arr - The array from which to retrieve the last element.
   * @returns - The last element of the array or null.
   */
  export const last: <T = any>(arr: T[] | null | undefined) => T | null;
  export default last;
}

declare module "react-declarative/utils/math/truely" {
  /**
   * Filters an array and removes null values, casting the resulting array to a specific generic type if specified.
   *
   * @param arr - The input array containing values of type T or null.
   * @returns - The filtered array with null values removed.
   *
   * @template T - The generic type of the array elements.
   */
  export const truely: <T = string>(arr: (T | null)[]) => T[];
  export default truely;
}

declare module "react-declarative/utils/getAvailableFields" {
  import IField from "react-declarative/model/IField";
  import IOnePublicProps from "react-declarative/model/IOnePublicProps";
  /**
   * Returns an array of available fields based on the provided features.
   *
   * @param fields - The list of fields.
   * @param data - The data object.
   * @param payload - The payload object.
   * @param [_features] - The optional features.
   * @returns - The available fields.
   */
  export const getAvailableFields: (
    fields: IField[],
    data: Record<string, any>,
    payload: Record<string, any>,
    _features?: IOnePublicProps["features"],
  ) => {
    visible: IField<any, any>[];
    hidden: IField<any, any>[];
  };
  export default getAvailableFields;
}

declare module "react-declarative/utils/getInitialData" {
  import IField from "react-declarative/model/IField";
  /**
   * Generates initial data based on provided field definitions and payload.
   *
   * @template Data - The type of data object to create.
   * @template Payload - The type of payload used for populating default values.
   *
   * @param fields - The array of field definitions.
   * @param [payload={}] - The payload object used for populating default values.
   *
   * @returns - The generated initial data object.
   */
  export const getInitialData: <
    Data extends {} = any,
    Payload extends unknown = any,
  >(
    fields: IField<Data, Payload>[],
    payload?: Payload,
  ) => Data;
  export default getInitialData;
}

declare module "react-declarative/utils/getFilterCount" {
  /**
   * Counts the number of non-empty and non-ignored values in the given filter data object.
   *
   * @param filterData - The filter data object.
   * @param ignore - The function to determine if a key-value pair should be ignored. It should accept
   *                            a key and a value, and return true if the pair should be ignored, or false otherwise.
   *                            Default value is a function that always returns false.
   * @returns - The count of non-empty and non-ignored values in the filter data object.
   */
  export const getFilterCount: (
    filterData: Record<string, unknown>,
    ignore?: (key: string, value: any) => boolean,
  ) => number;
  export default getFilterCount;
}

declare module "react-declarative/utils/getInvalidFields" {
  import IInvalidField from "react-declarative/model/IInvalidField";
  import IField from "react-declarative/model/IField";
  export const getInvalidFields: <Data = any, Payload = any>(
    fields: IField<Data, Payload>[],
    data: Data,
    payload: Payload,
  ) => IInvalidField<Data, Payload>[] | null;
  export default getInvalidFields;
}

declare module "react-declarative/utils/getFieldsError" {
  import IField from "react-declarative/model/IField";
  export const getFieldsError: <Data = any, Payload = any>(
    fields: IField<Data, Payload>[],
    data: Data,
    payload: Payload,
  ) => string | null;
  export default getFieldsError;
}

declare module "react-declarative/utils/getFieldVariant" {
  import IField from "react-declarative/model/IField";
  /**
   * Retrieves a list of variants based on the given fields.
   *
   * @param fields - The array of fields to process.
   * @param keyToTitle - (Optional) A function to derive the title from the field name. Default is identity function.
   * @returns - The list of variants, each containing a label and value.
   */
  export const getFieldVariant: (
    fields: IField[],
    {
      keyToTitle,
      ignore,
    }?: {
      keyToTitle?: ((v: string) => string) | undefined;
      ignore?: ((key: string) => boolean) | undefined;
    },
  ) => {
    label: string;
    value: string;
  }[];
  export default getFieldVariant;
}

declare module "react-declarative/utils/isInvalidFieldData" {
  import IField from "react-declarative/model/IField";
  export const isInvalidFieldData: <Data = any, Payload = any>(
    fields: IField<Data, Payload>[],
    data: Data,
    payload: Payload,
    fallback?:
      | ((
          error: string,
          title: string | undefined,
          name: string | undefined,
        ) => void)
      | undefined,
  ) => boolean;
  export default isInvalidFieldData;
}

declare module "react-declarative/utils/flatArray" {
  /**
   * A function that flattens a given array to a single level.
   *
   * @param arr - The array(s) to be flattened.
   * @returns - The flattened array.
   * @template T
   */
  export const flatArray: <T = any>(...arr: any[]) => T[];
  export default flatArray;
}

declare module "react-declarative/utils/removeExtraSpaces" {
  /**
   * Removes extra spaces from a given string.
   *
   * @param str - The input string to remove extra spaces from.
   * @returns The modified string with extra spaces removed.
   */
  export const removeExtraSpaces: (str: string) => string;
  export default removeExtraSpaces;
}

declare module "react-declarative/utils/replaceSubstring" {
  /**
   * Replaces substrings in a given string with specified replacements.
   *
   * @param str - The original string.
   * @param from - The substring(s) to be replaced. Can be an array or a single string.
   * @param to - The replacement(s) for the substrings. Can be an array or a single string.
   * @returns - The modified string with the replaced substrings.
   */
  export const replaceSubstring: (
    str: string,
    from: string[] | string,
    to: string[] | string,
  ) => string;
  export default replaceSubstring;
}

declare module "react-declarative/model/TSubject" {
  /**
   * Interface representing a subject that can be subscribed to and trigger callbacks when data is updated.
   *
   * @template Data - The type of data that the subject emits.
   */
  export interface TSubject<Data = unknown> {
    /**
     * Subscribe to receive data updates.
     *
     * @param callback - The callback function to be called when data is received.
     *                             It takes a single parameter, `data`, of type `Data`.
     *                             The callback function is expected to have a `void` return type.
     *
     * @returns - The unsubscribe function. Call this function to stop receiving data updates.
     *                      It has a `void` return type.
     *
     * @typedef Data - The data received by the callback function.
     * @property [property1] - The first property of the data.
     * @property [property2] - The second property of the data.
     * @property [property3] - The third property of the data.
     */
    subscribe: (callback: (data: Data) => void) => () => void;
    /**
     * Executes the provided callback function once, and returns a cleanup function.
     *
     * @param callback - A callback function to be executed once.
     *                            - The callback function is expected to take one argument of type Data and have no return value.
     *
     * @returns - A cleanup function that can be executed to cancel any pending or ongoing execution of the callback.
     */
    once: (callback: (data: Data) => void) => () => void;
    /**
     * Executes the next function with the provided data.
     *
     * @param data - The data to be passed to the next function.
     * @returns
     */
    next: (data: Data) => void;
  }
  export default TSubject;
}

declare module "react-declarative/model/TBehaviorSubject" {
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents a behavior subject.
   * @template Data The type of data that the behavior subject holds.
   * @extends TSubject<Data>
   * @interface
   */
  export interface TBehaviorSubject<Data = unknown> extends TSubject<Data> {
    data: Data | null;
  }
  export default TBehaviorSubject;
}

declare module "react-declarative/model/TObserver" {
  /**
   * TObserver is an interface that represents an observable object.
   * It provides various methods to transform, filter, merge, and consume data emitted by the observable.
   *
   * @template Data - The type of data emitted by the observable.
   */
  export interface TObserver<Data = unknown> {
    /**
     * Unsubscribe Function
     *
     * @returns
     */
    unsubscribe: () => void;
    /**
     * Applies a callback function to each value in a map and returns an observer for the result.
     *
     * @template T - The generic type of the result
     * @param callbackfn - The callback function to be applied to each value
     * @returns - An observer for the result of the callback function
     */
    map: <T = unknown>(callbackfn: (value: Data) => T) => TObserver<T>;
    /**
     * Applies a callback function to each element of the Data array and flattens the result into a single array.
     *
     * @template T - The type of elements in the result array.
     * @param callbackfn - A function that transforms each element of the Data array into an array of values.
     * @returns - An observer that emits the flattened array of transformed values.
     */
    flatMap: <T = any>(callbackfn: (value: Data) => T[]) => TObserver<T>;
    /**
     * Represents a function to reduce the data in an array-like structure.
     *
     * @template T - The type of the accumulator and current value.
     * @param callbackfn - A function that accepts the accumulator (acm) and the current value (cur), and returns the new accumulator value.
     * @param begin - The initial value of the accumulator.
     * @returns - Returns a TObserver object to observe the reduced value.
     */
    reduce: <T = any>(
      callbackfn: (acm: T, cur: Data) => T,
      begin: T,
    ) => TObserver<T>;
    /**
     * Asynchronously applies a callback function to each element of the data stream and returns a TObserver<T> object.
     *
     * @template T - The type of the result returned by the callback function.
     * @param callbackfn - The callback function to apply to each element of the data stream.
     * @param [fallbackfn] - Optional fallback function to handle any errors that occur during the mapping process.
     * @returns - The observer object that can be used to subscribe and handle the mapped data stream.
     */
    mapAsync: <T = unknown>(
      callbackfn: (value: Data) => Promise<T>,
      fallbackfn?: (e: Error) => void,
    ) => TObserver<T>;
    /**
     * @template T - The type of the target observer
     * @param callbackfn - The callback function to be executed
     * @returns - The observer of type T
     */
    operator: <T = any>(
      callbackfn: (target: TObserver<Data>) => TObserver<T>,
    ) => TObserver<T>;
    /**
     * Creates a filtered observer that applies a callback function to each value emitted by the source observer and only emits the values for which the callback returns true.
     *
     * @param callbackfn - A function called for each value emitted by the source observer. Should return true to include the value in the filtered observer
     *, or false otherwise.
     * @returns A new observer that only emits values for which the callback returns true.
     */
    filter: (callbackfn: (value: Data) => boolean) => TObserver<Data>;
    /**
     * Merges the provided observer with another observer of type T, returning a new observer that emits values
     * of type `Data | T`.
     *
     * @template T - The type of the observer to merge with.
     * @param observer - The observer to merge with.
     * @returns - The merged observer.
     */
    merge: <T = unknown>(observer: TObserver<T>) => TObserver<Data | T>;
    /**
     * Represents a tap function that takes a callback function to be executed.
     *
     * @param callbackfn - The callback function to be executed.
     * @returns - The observer used for subscribing to the tap function.
     *
     * @template Data - The type of data that the callback function takes as input.
     */
    tap: (callbackfn: (value: Data) => void) => TObserver<Data>;
    /**
     * Represents a function that splits an array into multiple arrays of a specified length.
     *
     * @returns An observer that emits an array of arrays where each subarray contains a maximum of 20 elements.
     */
    split: () => TObserver<ReadonlyArray<FlatArray<Data[], 20>>>;
    /**
     * Creates a debounced observer with optional delay.
     *
     * @param [delay] - The delay in milliseconds before emitting the observation.
     * @returns - The debounced observer.
     */
    debounce: (delay?: number) => TObserver<Data>;
    /**
     * Creates a delayed observer with optional delay.
     *
     * @param [delay] - The delay in milliseconds before emitting the observation.
     * @returns - The debounced observer.
     */
    delay: (delay?: number) => TObserver<Data>;
    /**
     * A function that returns an observer with optional interval.
     *
     * @param [interval] - The optional interval in milliseconds.
     * @returns - An observer.
     */
    repeat: (interval?: number) => TObserver<Data>;
    /**
     * Represents a connection with a callback function.
     * @typicalname connect
     *
     * @param callbackfn - The callback function to be executed when a value is received.
     * @param value - The value received by the callback function.
     * @returns - A function that can be used to disconnect the connection.
     */
    connect: (callbackfn: (value: Data) => void) => () => void;
    /**
     * Executes a given callback function once and returns a function that can be used to cancel the execution.
     *
     * @param callbackfn - The callback function to execute once.
     * @returns - A function that can be used to cancel the execution of the callback function.
     */
    once: (callbackfn: (value: Data) => void) => () => void;
    /**
     * Represents a function that returns a TObserver object.
     *
     * @typedef share
     * @returns The TObserver object
     */
    share: () => TObserver<Data>;
    /**
     * Converts the given value to a Promise with the specified data type.
     *
     * @function toPromise
     * @returns A Promise with the specified data type.
     */
    toPromise: () => Promise<Data>;
    /**
     * Represents an iterator context.
     *
     * @interface
     */
    toIteratorContext: () => {
      iterate(): AsyncGenerator<Data, void, unknown>;
      done(): void;
    };
  }
  /**
   * Represents an observable class that can be used to observe changes in data.
   * @template Data - The type of data that the observable emits.
   */
  export type TObservable<Data = unknown> = Omit<
    TObserver<Data>,
    keyof {
      unsubscribe: never;
      connect: never;
      once: never;
      share: never;
    }
  >;
  export default TObserver;
}

declare module "react-declarative/model/TPaginator" {
  import {
    ListHandlerChips,
    ListHandlerPagination,
    ListHandlerSortModel,
  } from "react-declarative/model/IListProps";
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Type definition for TPaginator.
   *
   * @template FilterData - The type of data used for filtering.
   * @template RowData - The type of data representing a row.
   * @template Payload - The type of additional payload data.
   *
   * @param data - The filter data.
   * @param pagination - The pagination settings.
   * @param sort - The sorting settings.
   * @param chips - The chip filters.
   * @param search - The search string.
   * @param payload - The additional payload data.
   *
   * @returns A promise that resolves to either an array of row data or an object containing rows and total count.
   */
  export type TPaginator<
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload = any,
  > = (
    data: FilterData,
    pagination: ListHandlerPagination,
    sort: ListHandlerSortModel<RowData>,
    chips: ListHandlerChips<RowData>,
    search: string,
    payload: Payload,
  ) => Promise<
    | {
        rows: RowData[];
        total: number | null;
      }
    | RowData[]
  >;
  export default TPaginator;
}

declare module "react-declarative/model/TOffsetPaginator" {
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Represents a type for offset pagination.
   * @typeparam FilterData - The type of filter data.
   * @typeparam RowData - The type of row data.
   * @typeparam Payload - The type of payload.
   *
   * @param filterData - The filter data to be applied to the dataset.
   * @param limit - The maximum number of records to be returned.
   * @param offset - The offset from which to start retrieving records.
   * @param payload - The payload containing additional parameters for filtering.
   *
   * @returns - A promise resolving to an array of filtered row data or an array of filtered row data.
   */
  export interface TOffsetPaginator<
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload = any,
  > {
    (
      filterData: FilterData,
      limit: number,
      offset: number,
      payload: Payload,
    ): Promise<RowData[]> | RowData[];
  }
  export default TOffsetPaginator;
}

declare module "react-declarative/model/TCursorPaginator" {
  import IRowData, { RowId } from "react-declarative/model/IRowData";
  /**
   * Represents a type for cursor pagination.
   * @typeparam FilterData - The type of filter data.
   * @typeparam RowData - The type of row data.
   * @typeparam Payload - The type of payload.
   *
   * @param filterData - The filter data to be applied to the dataset.
   * @param lastId - The last id from which to start retrieving records.
   * @param payload - The payload containing additional parameters for filtering.
   *
   * @returns - A promise resolving to an array of filtered row data or an array of filtered row data.
   */
  export interface TCursorPaginator<
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload = any,
  > {
    (
      filterData: FilterData,
      lastId: RowId,
      payload: Payload,
    ): Promise<RowData[]> | RowData[];
  }
  export default TCursorPaginator;
}

declare module "react-declarative/utils/getErrorMessage" {
  /**
   * Returns the error message from the given error object.
   *
   * @param error - The error object.
   * @returns The error message.
   */
  export const getErrorMessage: (error: any) => string;
  export default getErrorMessage;
}

declare module "react-declarative/utils/mvvm/Entity" {
  import Model from "react-declarative/utils/mvvm/Model";
  export {
    CHANGE_DEBOUNCE,
    CHANGE_SYMBOL,
    REFRESH_SYMBOL,
  } from "react-declarative/utils/mvvm/Model";
  /**
   * Represents an entity with an identifier.
   */
  export interface IEntity {
    id: string | number;
  }
  /**
   * Represents an interface for an entity adapter.
   *
   * @template T - The type of the entity.
   */
  export interface IEntityAdapter<T extends IEntity = any> {
    /**
     * An identifier representing the unique identity of an entity.
     *
     * @typedef IEntityId
     */
    id: IEntity["id"];
    /**
     * Sets the data for the given object.
     *
     * @param data - The data to be set. It can be either a partial object of type T or a function that takes the previous data of type T as
     * input and returns a partial object of type T.
     * @returns
     */
    setData(data: Partial<T> | ((prevData: T) => Partial<T>)): void;
    /**
     * Represents a variable of type T.
     *
     * @typeparam T - The type of data stored in the variable.
     */
    data: T;
    /**
     * Refreshes the view or data associated with the current state.
     * This method internally handles the logic to update the view or fetch the latest data
     * based on the current state of the application.
     * Note that this method does not return any value.
     *
     * @function
     * @name refresh
     * @returns
     */
    refresh(): void;
    /**
     * Converts the current object to its corresponding type T.
     *
     * @returns The converted object of type T.
     */
    toObject(): T;
  }
  /**
   * @description MVVM Object wrapper. Emmits change after setData
   */
  export class Entity<T extends IEntity = any>
    extends Model<T>
    implements IEntityAdapter<T>
  {
    /**
     * Retrieves the id value from the data object.
     *
     * @returns The id value.
     */
    get id(): string | number;
    constructor(
      _data: T | Entity<T> | (() => T),
      _debounce?: number,
      _prevData?: () => T,
    );
    /**
     * Sets the data for the given variable.
     *
     * @param data - The data to be set.
     *    This can either be a partial object of type T or a function that takes the previous data
     *    of type T and returns a partial object of type T.
     *
     * @returns
     */
    setData: (data: Partial<T> | ((prevData: T) => Partial<T>)) => void;
    /**
     * Handles change events.
     *
     * @param change - The change event handler function.
     * @returns - The function to unregister the change event.
     */
    handleChange: (change: (item: Entity<T>) => void) => () => void;
  }
  export default Entity;
}

declare module "react-declarative/utils/mvvm/Collection" {
  import EventEmitter from "react-declarative/utils/rx/EventEmitter";
  import Entity, {
    IEntity,
    IEntityAdapter,
  } from "react-declarative/utils/mvvm/Entity";
  export const REORDER_SYMBOL: unique symbol;
  /**
   * An interface representing a collection adapter.
   * @template T - The type of entities in the collection.
   */
  export interface ICollectionAdapter<T extends IEntity = any> {
    /**
     * Represents an array of IEntityAdapter objects.
     *
     * @template T - The type of entities that the adapters handle.
     */
    items: IEntityAdapter<T>[];
    /**
     * Represents the last index of an array or string.
     *
     * @type {number}
     */
    lastIdx: number;
    /**
     * Represents an array of entity IDs.
     *
     * @typedef IEntityIds
     */
    ids: IEntity["id"][];
    /**
     * Checks if a value is empty or not.
     *
     * @param value - The value to check if it is empty.
     * @returns - True if the value is empty, otherwise false.
     */
    isEmpty: boolean;
    /**
     * Sets the data for the items.
     *
     * @param items - An array of items to be set as the data.
     * @return {void}
     */
    setData(items: T[]): void;
    /**
     * Applies a mapping function to each value of an entity adapter and returns an array of the mapped values.
     *
     * @template V - The type of values in the resulting array.
     * @param callbackfn - The mapping function to be applied to each value.
     *                    It takes two arguments: the value itself and its index in the entity adapter.
     * @returns An array containing the mapped values.
     */
    map<V = any>(callbackfn: (value: IEntityAdapter<T>, idx: number) => V): V[];
    /**
     * Filters an array of IEntityAdapter<T> objects based on a provided predicate function.
     *
     * @param predicate - The predicate function used to test each IEntityAdapter<T> object.
     *                              The function should accept two arguments:
     *                              - value: The current IEntityAdapter<T> object being processed.
     *                              - idx: The index of the current IEntityAdapter<T> object being processed.
     *                              The predicate function should return a boolean value indicating whether to include the entity in the filtered array.
     * @returns - An array of IEntityAdapter<T> objects that satisfy the provided predicate.
     */
    filter(
      predicate: (value: IEntityAdapter<T>, idx: number) => boolean,
    ): IEntityAdapter<T>[];
    /**
     * Finds the first element in the IEntityAdapter array that satisfies the provided testing function.
     *
     * @param predicate - The testing function that determines whether the element is found or not.
     *                              It should accept two parameters: value (IEntityAdapter<T>) and idx (number).
     * @returns - The first element that satisfies the testing function, or undefined if no such element is found.
     */
    find(
      predicate: (value: IEntityAdapter<T>, idx: number) => boolean,
    ): IEntityAdapter<T> | undefined;
    /**
     * Checks if any of the elements in the array satisfies the provided predicate.
     *
     * @param predicate - The predicate function to be executed for each element in the array.
     *        It takes two parameters:
     *          - value: The current element being processed.
     *          - idx: The index of the current element being processed.
     *        The function should return a boolean value indicating whether the element satisfies the condition.
     *
     * @return {boolean} - Returns true if at least one element satisfies the predicate, otherwise returns false.
     */
    some(
      predicate: (value: IEntityAdapter<T>, idx: number) => boolean,
    ): boolean;
    /**
     * Executes a provided function once for each entity in the adapter.
     *
     * @param callbackfn - The function to execute for each entity. It accepts two arguments: the current entity value and the index
     * of the entity in the adapter.
     * @return {void}
     */
    forEach(callbackfn: (value: IEntityAdapter<T>, idx: number) => void): void;
    /**
     * Pushes one or more items onto the end of the array.
     *
     * @param items - The items to push onto the array.
     * @return {void}
     */
    push(...items: T[] | T[][]): void;
    /**
     * Upserts the given items into the database.
     *
     * @param items - The items to be upserted. Can be a single array or an array of arrays.
     */
    upsert(...items: T[] | T[][]): void;
    /**
     * Removes the specified item from the collection.
     *
     * @param item - The item to be removed from the collection.
     * @return {void}
     */
    remove(item: IEntity): void;
    /**
     * Removes an entity from the collection by its id.
     *
     * @param id - The id of the entity to be removed.
     * @return {void}
     */
    removeById(id: IEntity["id"]): void;
    /**
     * Removes all elements from the collection.
     *
     * @return {void}
     */
    removeAll(): void;
    /**
     * Finds an entity by its ID.
     *
     * @param id - The ID of the entity to find.
     * @returns - The entity adapter containing the found entity, if any.
     */
    findById(id: IEntity["id"]): IEntityAdapter<T>;
    /**
     * Clears the data of the object.
     *
     * @returns
     */
    clear(): void;
    /**
     * Refreshes the content of the page.
     *
     * @return {void} This method has no return value.
     */
    refresh(): void;
    /**
     * Converts the collection into an array.
     *
     * @return {T[]} An array containing the elements of the collection.
     */
    toArray(): T[];
  }
  export class EntityNotFoundError extends Error {}
  /**
   * @description MVVM Array wrapper. Emmits `change` after push/pop/change of element
   */
  export class Collection<T extends IEntity = any>
    extends EventEmitter
    implements ICollectionAdapter<T>
  {
    protected _debounce: number;
    protected _prevData: () => Entity<T>[];
    /**
     * Retrieves the items stored in the current instance.
     *
     * @returns The array of items stored in the current instance.
     */
    get items(): Entity<T>[];
    /**
     * Returns the last index of the items in the object.
     *
     * @return The last index of the items.
     */
    get lastIdx(): number;
    /**
     * Returns an array of all the IDs stored in the object.
     *
     * @returns An array containing all the IDs stored in the object.
     */
    get ids(): (string | number)[];
    /**
     * Constructor for the Collection class.
     * Initializes a new instance of Collection with the given entities and optional debounce value and prevData function.
     *
     * @param entities - The initial entities for the Collection.
     *     It can be an array of entities, a function that returns an array of entities, an array of Entity objects,
     *     or an instance of Collection.
     * @param [_debounce=CHANGE_DEBOUNCE] - Optional debounce value for entity changes.
     * @param [_prevData=() => this.items] - Optional function that returns the previous data of the Collection items.
     * @return
     */
    constructor(
      entities?: T[] | (() => T[]) | Entity<T>[] | Collection<T>,
      _debounce?: number,
      _prevData?: () => Entity<T>[],
    );
    /**
     * Checks if the collection is empty.
     *
     * @returns - True if the collection is empty, false otherwise.
     */
    get isEmpty(): boolean;
    /**
     * Sets the data for the software and performs necessary operations.
     *
     * @param items - The array of items to set as data.
     * @returns
     */
    setData: (items: T[]) => void;
    /**
     * Clear function that performs the following operations:
     * 1. Disposes of any resources held by this class.
     * 2. Reorders any elements as necessary.
     *
     * @function
     * @name clear
     * @memberof global
     * @returns
     */
    clear: () => void;
    /**
     * Applies a callback function to each value in the map and returns a new array of the results.
     *
     * @template V - The type of the elements in the resulting array.
     * @param callbackfn - A function that accepts a value and its index, and returns a new value.
     * @returns An array containing the results of applying the callback function to each value in the map.
     */
    map: <V = any>(callbackfn: (value: Entity<T>, idx: number) => V) => V[];
    /**
     * Filter method for an array of items.
     *
     * @param predicate - The function used to test each item in the array.
     * @returns - The filtered array of items.
     */
    filter: (
      predicate: (value: Entity<T>, idx: number) => boolean,
    ) => Entity<T>[];
    /**
     * Finds an entity in the list of items based on the given predicate.
     *
     * @param predicate - The predicate function used to determine if an entity matches the condition.
     *                              The predicate should accept two parameters: value and idx, representing
     *                              the current entity and its index respectively. It should return a boolean
     *                              value indicating whether the entity matches the condition.
     *
     * @returns - The entity that matches the condition specified by the predicate. If no entity
     *                        matches the condition, undefined is returned.
     */
    find: (
      predicate: (value: Entity<T>, idx: number) => boolean,
    ) => Entity<T> | undefined;
    /**
     * Checks if at least one element in the array passes the provided test.
     *
     * @param predicate - The test function used to check each element.
     * @param predicate.value - The current element being checked.
     * @param predicate.idx - The index of the current element being checked.
     * @returns - True if any element passes the test, false otherwise.
     */
    some: (predicate: (value: Entity<T>, idx: number) => boolean) => boolean;
    /**
     * Calls a function for each element in the array and passes the value and index as arguments.
     *
     * @param callbackfn - The function to call for each element, accepts the value and index as arguments.
     */
    forEach: (callbackfn: (value: Entity<T>, idx: number) => void) => void;
    /**
     * Adds items to the collection and performs necessary operations.
     *
     * @param items - The items to be added to the collection.
     */
    push: (...items: T[] | T[][]) => void;
    /**
     * Upsert function for adding or updating items in a collection.
     *
     * @param items - An array of items to be added or updated.
     */
    upsert: (...items: T[] | T[][]) => void;
    /**
     * Removes an item from the collection by its ID.
     *
     * @param item - The item to be removed.
     * @returns
     */
    remove: (item: IEntity) => void;
    /**
     * Removes an item from the collection by its id.
     *
     * @param id - The id of the item to be removed.
     * @throws If the item with the given id is not found in the collection.
     */
    removeById: (id: IEntity["id"]) => void;
    /**
     * Removes all items from the collection and performs necessary cleanup.
     *
     * @function
     * @memberof Collection
     * @name removeAll
     * @return
     */
    removeAll: () => void;
    /**
     * Finds an entity by its ID.
     *
     * @param id - The ID of the entity to find.
     * @returns - The found entity.
     * @throws - If the entity with the given ID does not exist.
     */
    findById: (id: IEntity["id"]) => Entity<T>;
    /**
     * Attaches a change handler to the given collection.
     *
     * @param change - The function to be called when a change occurs in the collection.
     *                           It should accept two parameters:
     *                             - collection: The collection that has changed.
     *                             - target: The entity that has been modified, or null if the entire collection has changed.
     * @returns - A function that can be called to detach the change handler from the collection.
     */
    handleChange: (
      change: (collection: Collection<T>, target: Entity<T> | null) => void,
    ) => () => void;
    /**
     * Handles drop changes for all entities in the collection.
     * Triggers the drop changes event after processing.
     *
     * @memberof ClassName
     * @function handleDropChanges
     * @returns
     */
    handleDropChanges: () => void;
    /**
     * Executes a refresh action triggering an event.
     *
     * @function refresh
     * @instance
     *
     * @emits REFRESH_SYMBOL
     */
    refresh: () => Promise<void>;
    /**
     * Converts an array of objects to an array of plain objects using the "toObject" method of each object.
     *
     * @returns The new array with each object converted to a plain object.
     */
    toArray: () => T[];
  }
  export default Collection;
}

declare module "react-declarative/utils/mvvm/Model" {
  import EventEmitter from "react-declarative/utils/rx/EventEmitter";
  import Subject from "react-declarative/utils/rx/Subject";
  export const CHANGE_SYMBOL: unique symbol;
  export const REFRESH_SYMBOL: unique symbol;
  export const CHANGE_DEBOUNCE = 1000;
  /**
   * Represents an interface for a model adapter.
   * @template T The type of data that the adapter handles.
   */
  export interface IModelAdapter<T extends {} = any> {
    /**
     * Represents a variable of unknown type T.
     *
     * @template T
     */
    data: T;
    /**
     * Sets the data for the object.
     *
     * @param data - The data to set. It can be a partial object of type T or a function that takes the previous data of type T and returns a
     * partial object of type T.
     * @return {void}
     */
    setData(data: Partial<T> | ((prevData: T) => Partial<T>)): void;
    /**
     * Refreshes the page.
     *
     * @returns
     */
    refresh(): void;
    /**
     * Returns an object representation of the instance.
     *
     * @template T
     * @returns The object representation of the instance.
     */
    toObject(): T;
  }
  /**
   * Class representing a model.
   * @extends EventEmitter
   * @implements IModelAdapter
   */
  export class Model<T extends {} = any>
    extends EventEmitter
    implements IModelAdapter<T>
  {
    protected _debounce: number;
    protected _prevData: () => T;
    protected _dropChanges: Subject<void>;
    protected _data: T;
    /**
     * Retrieves the value of the data property.
     *
     * @return The frozen data.
     */
    get data(): T;
    constructor(
      _data: T | Model<T> | (() => T),
      _debounce?: number,
      _prevData?: () => T,
    );
    /**
     * Sets the data for the object.
     *
     * @param data - The data to be set. It can be a partial object or a function that takes the previous data and returns a partial object.
     *
     * @return
     */
    setData(data: Partial<T> | ((prevData: T) => Partial<T>)): void;
    /**
     * Handles changes made to the Model.
     *
     * @param change - The callback function to be executed when a change occurs in the Model.
     *                           It accepts a single parameter representing the changed item of type Model<T>.
     *
     * @return - A cleanup function that unsubscribes the callback from the CHANGE_SYMBOL event,
     *                      unsubscribes the callback from the REFRESH_SYMBOL event, clears the debounce function,
     *                      and unsubscribes the drop function.
     */
    handleChange(change: (item: Model<T>) => void): () => void;
    /**
     * Handles the changes when an item is dropped.
     *
     * @function handleDropChanges
     * @memberof ClassName
     * @returns
     */
    handleDropChanges: () => void;
    /**
     * A function that triggers a refresh event.
     *
     * @function
     * @memberOf global
     * @returns
     */
    refresh: () => Promise<void>;
    /**
     * Converts the object into a plain JavaScript object.
     *
     * @function
     * @returns - The plain JavaScript object representation.
     */
    toObject: () => T;
  }
  export default Model;
}

declare module "react-declarative/utils/formatAmount" {
  /**
   * Formats the given value to a specific scale and separates the thousands with a separator.
   *
   * @param value - The value to be formatted.
   * @param [scale=2] - The number of decimal places to round to.
   * @param [separator=','] - The separator for thousands.
   * @returns The formatted value.
   */
  export const formatAmount: (
    value: number | string,
    scale?: number,
    separator?: string,
  ) => string;
  export default formatAmount;
}

declare module "react-declarative/utils/templateStr" {
  /**
   * Replaces placeholder strings in a given template string with corresponding values from a context object.
   * @param str - The template string with placeholders to be replaced.
   * @param contexts - The objects containing values to replace the placeholders.
   * @returns - The modified string with replaced placeholders.
   */
  export const templateStr: (
    str: string,
    ...contexts: Record<string, unknown>[]
  ) => string;
  export default templateStr;
}

declare module "react-declarative/utils/formatStr" {
  /**
   * Replaces placeholders in a string with corresponding values.
   *
   * @param str - The string containing placeholders.
   * @param args - The values to replace the placeholders with.
   * @example `formatStr("hello {1} world {0} foo {}", 1,2,3) // hello 2 world 1 foo 3`
   * @returns - The string with replaced placeholders.
   */
  export const formatStr: (
    str: string,
    ...args: (string | number | boolean)[]
  ) => string;
  export default formatStr;
}

declare module "react-declarative/utils/createWindowHistory" {
  import { BrowserHistory, MemoryHistory } from "history";
  /**
   * Determines whether the application should use a memory history or a browser history based on the current environment.
   * @returns - The appropriate history object based on the current environment.
   */
  export const createWindowHistory: () => MemoryHistory | BrowserHistory;
  export default createWindowHistory;
}

declare module "react-declarative/utils/createManagedHistory" {
  interface IParams {
    allowed: (pathname: string) => boolean;
    map: (pathname: string) => string;
  }
  export const createManagedHistory: (
    storageKey: string,
    { allowed, map }?: Partial<IParams>,
  ) => import("history").MemoryHistory;
  export default createManagedHistory;
}

declare module "react-declarative/utils/createLsManager" {
  /**
   * A utility class for managing local storage values.
   * @template T - The type of the value to be stored in local storage.
   * @param STORAGE_KEY - The key to use when storing the value in local storage.
   * @returns - An instance of the createLsManager class.
   */
  export const createLsManager: <T = Record<string, any>>(
    STORAGE_KEY: string,
  ) => {
    /**
     * Returns the value stored in localStorage using the specified key.
     *
     * @template T - The type of the value to be returned.
     * @returns - The value stored in localStorage or null if an error occurs during parsing.
     */
    getValue: () => T | null;
    /**
     * Sets a value in the local storage.
     *
     * @param value - The value to be stored in the local storage.
     * @throws - If the local storage exceeds the quota.
     */
    setValue: (value: T) => void;
    clear: () => void;
  };
  export default createLsManager;
}

declare module "react-declarative/utils/createSsManager" {
  /**
   * A utility class for managing session storage values.
   *
   * @param STORAGE_KEY - The key used to store the value in session storage.
   * @returns - An instance of the class with methods for getting, setting, and clearing the value.
   *
   * @template T - The type of the value stored in session storage.
   */
  export const createSsManager: <T = Record<string, any>>(
    STORAGE_KEY: string,
  ) => {
    /**
     * Retrieves the value from the sessionStorage.
     *
     * @returns The value retrieved from sessionStorage, or null if an error occurred while parsing or the value is not found.
     */
    getValue: () => T | null;
    /**
     * Sets the value in the session storage.
     *
     * @param value - The value to be set.
     * @returns
     */
    setValue: (value: T) => void;
    clear: () => void;
  };
  export default createSsManager;
}

declare module "react-declarative/utils/createSsSet" {
  export const createSsSet: <T = string>(
    STORAGE_KEY: string,
  ) => {
    has: (value: T) => boolean;
    add: (value: T) => void;
    delete: (value: T) => void;
    toSet: () => Set<T>;
    clear: () => void;
  };
  export default createSsSet;
}

declare module "react-declarative/utils/createLsSet" {
  export const createLsSet: <T = string>(
    STORAGE_KEY: string,
  ) => {
    has: (value: T) => boolean;
    add: (value: T) => void;
    delete: (value: T) => void;
    toSet: () => Set<T>;
    clear: () => void;
  };
  export default createLsSet;
}

declare module "react-declarative/utils/createCustomTag" {
  type Destructor = () => void;
  /**
   * Interface representing a configuration object.
   *
   * @typedef IConfig
   * @property onClick - The event handler for the click event.
   * @param onClick.e - The MouseEvent object representing the click event.
   * @property onInit - The event handler for the initialization event.
   * @param onInit.element - The HTMLDivElement object representing the element that was initialized.
   */
  interface IConfig {
    onClick: (e: MouseEvent) => void;
    onInit: (element: HTMLDivElement) => void | Destructor;
  }
  /**
   * Creates a custom HTML tag element with the given name, style, and optional event handlers.
   *
   * @param [name="bgcolor-red"] - The name of the custom HTML tag element.
   * @param [style=""] - The inline style to apply to the custom HTML tag element.
   * @param [{ onClick, onInit }={}] - Optional event handlers for the custom HTML tag element.
   */
  export const createCustomTag: (
    name?: string,
    style?: string,
    { onClick, onInit }?: Partial<IConfig>,
  ) => void;
  export default createCustomTag;
}

declare module "react-declarative/utils/mainColor" {
  /**
   * Sets the main color theme of the application.
   * @param color - The color to set as the main theme color.
   */
  export const mainColor: (color: string) => void;
  export default mainColor;
}

declare module "react-declarative/utils/cacheSrc" {
  /**
   * Sets the image source of a given HTMLImageElement by caching the image.
   * @param url - The URL of the image to cache.
   * @returns - A function that takes an HTMLImageElement as input and sets its source with the cached image.
   */
  export const cacheSrc: (url: string) => {
    ref: (element: HTMLImageElement | null) => void;
  };
  export default cacheSrc;
}

declare module "react-declarative/utils/base64Json" {
  /**
   * Parses a Base64-encoded JSON string to a JavaScript object.
   *
   * @param state - The Base64-encoded JSON string to parse.
   * @returns - The parsed JavaScript object, or null if parsing fails.
   * @template T - The type of the parsed JavaScript object. Defaults to Record<string, any>.
   */
  export const parseBase64Json: <T = Record<string, any>>(
    state: string,
  ) => T | null;
  /**
   * Converts a JavaScript object to a base64 encoded JSON string.
   *
   * @template T - The type of the state object being serialized.
   * @param state - The state object to be serialized.
   * @returns - The base64 encoded JSON string representation of the state object.
   */
  export const stringifyBase64Json: <T = Record<string, any>>(
    state: T,
  ) => string;
}

declare module "react-declarative/utils/asciiParams" {
  /**
   * Parses an array of ASCII codes representing key-value pairs and converts them into an object.
   *
   * @param state - An array of ASCII codes representing key-value pairs.
   * @returns - The parsed object if successful, or null if an error occurred.
   * @template T - The object type of the parsed result. Defaults to `Record<string, any>`.
   */
  export const parseAsciiParams: <T extends {} = Record<string, any>>(
    state: number[],
  ) => T | null;
  export const serializeAsciiParams: <T extends {} = Record<string, any>>(
    state: T,
  ) => number[];
  export const toBytes32: (str: string) => string;
  export const fromBytes32: (hex: string) => string;
}

declare module "react-declarative/utils/datetime" {
  export const DATE_PLACEHOLDER = "DD/MM/YYYY";
  export const TIME_PLACEHOLDER = "HH:MM";
  export const DATE_EXPR: RegExp;
  export const TIME_EXPR: RegExp;
  /**
   * Represents a specific point in time.
   */
  export class Time {
    readonly hour: number;
    readonly minute: number;
    /**
     * Check if time is valid
     */
    get isValid(): boolean;
    constructor(hour: number, minute: number);
    /**
     * Converts the object to a string representation.
     *
     * @returns The string representation of the object.
     */
    toString: () => string | null;
    /**
     * Calculates the total minutes represented by the hour and minute properties of an object.
     *
     * @returns The total minutes represented by the hour and minute properties.
     */
    toStamp: () => number;
    /**
     * Takes a stamp value and converts it into a Time object.
     *
     * @param stamp - The stamp value representing minutes since 1970-01-01 00:00.
     * @returns - The Time object representing the hour and minute derived from the stamp value.
     */
    static fromStamp: (stamp: number | null) => Time | null;
  }
  /**
   * Represents a date.
   */
  export class Date {
    readonly day: number;
    readonly month: number;
    readonly year: number;
    /**
     * Check if date is valid
     */
    get isValid(): boolean;
    constructor(day: number, month: number, year: number);
    /**
     * Returns a string representation of the current object.
     *
     * @return The serialized string representation of the object.
     */
    toString: () => string | null;
    /**
     * Calculates the number of days from 1970-01-01 to a specified date.
     *
     * @returns The number of days from 1970-01-01 to the specified date.
     */
    toStamp: () => number;
    /**
     * Converts a stamp value to a date object.
     *
     * @param stamp - The number of days since '1970-01-01' to convert.
     * @returns - The converted date object.
     */
    static fromStamp: (stamp: number | null) => Date | null;
  }
  /**
   * Parses a string representation of a date in "dd/mm/yyyy" format and returns a Date object.
   * If the input is not in the correct format or is null, returns null.
   *
   * @param date - The string representation of the date to parse.
   * @returns - The parsed Date object or null if the input is not valid.
   */
  export const parseDate: (date: string | null) => Date | null;
  /**
   * Serialize a given date to a string representation in the format "dd/MM/yyyy".
   *
   * @param date - The date to serialize.
   * @returns The serialized date or null if the input is not a valid Date object.
   */
  export const serializeDate: (date: Date | null) => string | null;
  /**
   * Parses a string representation of time into a Time object.
   *
   * @param time - The string representation of time to parse.
   * @returns - The parsed Time object or null if input is null or invalid.
   */
  export const parseTime: (time: string | null) => Time | null;
  /**
   * Serializes the given time object into a string representation.
   *
   * @param time - The time object to be serialized.
   * @returns - The serialized time string, or null if the input is invalid.
   */
  export const serializeTime: (time: Time | null) => string | null;
  /**
   * Retrieves the current date.
   *
   * @returns The current date in serialized format.
   */
  export const currentDate: () => string;
  /**
   * Generates the current time.
   *
   * @returns The current time as a serialized string.
   */
  export const currentTime: () => string;
  /**
   * Converts a string representation of a time to a timestamp.
   *
   * @param [str] - The time string to convert. Defaults to the current time.
   * @returns - The timestamp representation of the given time or -1 if conversion fails.
   */
  export const timeStamp: (str?: string) => number;
  /**
   * Converts a date string to a timestamp.
   *
   * @param [str=currentDate()] - The date string to convert.
   * @returns - The timestamp if the conversion is successful, -1 otherwise.
   */
  export const dateStamp: (str?: string) => number;
}

declare module "react-declarative/utils/waitForMove" {
  /**
   * Waits for a move to occur and executes the provided function.
   *
   * @param fn - The function to be executed when a move occurs.
   * @returns
   */
  export const waitForMove: (fn: () => void) => () => void;
  export default waitForMove;
}

declare module "react-declarative/utils/compose" {
  export type Function = (...args: any[]) => any;
  /**
   * Compose multiple functions together to create a new function that applies the given functions from right to left.
   * If no functions are given, the composed function will simply return the input argument.
   * If only one function is given, the composed function will simply return the output of that function.
   *
   * @param funcs - The functions to be composed.
   * @returns - The composed function.
   */
  export const compose: (...funcs: Function[]) => Function;
  export default compose;
}

declare module "react-declarative/utils/getMomentStamp" {
  import dayjs from "dayjs";
  export type stamp = number;
  /**
   * Calculates the moment stamp based on the given end date and dimension.
   * The moment stamp represents the difference between the end date and the start date in the specified dimension.
   *
   * @param [end=dayjs()] - The end date. Defaults to the current date and time.
   * @param [dimension=DIMENSION] - The dimension to calculate the difference in. Defaults to DIMENSION.
   * @returns - The moment stamp representing the difference between the end date and the start date.
   */
  export const getMomentStamp: (
    end?: dayjs.Dayjs,
    dimension?: dayjs.ManipulateType,
  ) => stamp;
  /**
   * Converts a timestamp to a moment in time.
   *
   * @param stamp - The timestamp to convert.
   * @param dimension - The dimension to add to the timestamp. Defaults to `DIMENSION`.
   * @returns - The moment in time corresponding to the timestamp.
   */
  export const fromMomentStamp: (
    stamp: number,
    dimension?: dayjs.ManipulateType,
  ) => dayjs.Dayjs;
  export default getMomentStamp;
}

declare module "react-declarative/utils/getTimeStamp" {
  import dayjs from "dayjs";
  /**
   * Calculates the timestamp in minutes based on the given source.
   *
   * @param [source] - The source date and time. Defaults to the current date and time.
   * @returns - The timestamp in minutes.
   */
  export const getTimeStamp: (source?: dayjs.Dayjs) => number;
  /**
   * Converts a timestamp to a date and time using dayjs library.
   * @param stamp - The timestamp to convert.
   * @returns The date and time corresponding to the given timestamp.
   */
  export const fromTimeStamp: (stamp: number) => dayjs.Dayjs;
  export default getTimeStamp;
}

declare module "react-declarative/utils/getGenesisStamp" {
  import dayjs from "dayjs";
  /**
   * Gets the initial moment stamp for London (UTC).
   * @param [stamp=dayjs(0)] - Optional. The timestamp to start from. Default is the Unix epoch.
   * @returns The dayjs moment stamp for London (UTC).
   */
  export const getGenesisStamp: (stamp?: dayjs.Dayjs) => dayjs.Dayjs;
  export default getGenesisStamp;
}

declare module "react-declarative/utils/toUtcDate" {
  export const toUtcDate: (date: Date) => Date;
  export default toUtcDate;
}

declare module "react-declarative/utils/addUtcOffset" {
  import dayjs from "dayjs";
  export const addUtcOffset: (date: dayjs.Dayjs) => dayjs.Dayjs;
  export const removeUtcOffset: (date: dayjs.Dayjs) => dayjs.Dayjs;
}

declare module "react-declarative/api/paginateDocuments" {
  /**
   * Resolves the documents from an async generator and paginates them.
   *
   * @param iterator - The async generator to resolve documents from.
   * @returns - A promise that resolves to the flattened array of documents.
   */
  export const paginateDocuments: <T extends unknown>(
    iterator: AsyncGenerator<T | T[], void, unknown>,
    limit: number,
    offset: number,
  ) => Promise<T[]>;
  export default paginateDocuments;
}

declare module "react-declarative/api/distinctDocuments" {
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Resolves the documents from an async generator and distincts them.
   *
   * @param iterator - The async generator to resolve documents from.
   * @returns - A promise that resolves to the flattened array of documents.
   */
  export function distinctDocuments<T extends IRowData>(
    iterator: AsyncGenerator<T | T[], void, unknown>,
  ): AsyncGenerator<T, void, unknown>;
  export default distinctDocuments;
}

declare module "react-declarative/api/resolveDocuments" {
  /**
   * Resolves the documents from an async generator and returns them as a flattened array.
   *
   * @param iterator - The async generator to resolve documents from.
   * @returns - A promise that resolves to the flattened array of documents.
   */
  export const resolveDocuments: <T extends unknown>(
    iterator: AsyncGenerator<T | T[], void, unknown>,
  ) => Promise<T[]>;
  export default resolveDocuments;
}

declare module "react-declarative/api/filterDocuments" {
  /**
   * Filters the documents from an async generator and yield them by the condition
   *
   * @param iterator - The async generator to resolve documents from.
   * @returns - A promise that resolves to the flattened array of documents.
   */
  export function filterDocuments<T extends unknown>(
    iterator: AsyncGenerator<T | T[], void, unknown>,
    predicate: (value: T) => boolean | Promise<boolean>,
  ): AsyncGenerator<Awaited<T>, void, unknown>;
  export default filterDocuments;
}

declare module "react-declarative/api/pickDocuments" {
  /**
   * A function that picks a subset of documents from an array of documents, given a limit and offset.
   *
   * @template T - The type of the documents in the array.
   * @param limit - The maximum number of documents to pick.
   * @param offset - The number of documents to skip before picking.
   * @returns - A function that takes an array of documents and returns an object with `rows` and `done` properties.
   *                       The `rows` property contains the picked documents, and `done` property indicates if the picking is finished.
   */
  export const pickDocuments: <T extends unknown>(
    limit: number,
    offset: number,
  ) => (rows?: T[]) => {
    rows: T[];
    done: boolean;
  };
  export default pickDocuments;
}

declare module "react-declarative/api/mapDocuments" {
  /**
   * Maps the documents from an async generator and yield them
   *
   * @param iterator - The async generator to resolve documents from.
   * @returns - A promise that resolves to the flattened array of documents.
   */
  export function mapDocuments<T extends unknown, U = T>(
    iterator: AsyncGenerator<T | T[], void, unknown>,
    callbackfn: (value: T) => U | Promise<U>,
  ): AsyncGenerator<Awaited<U>, void, unknown>;
  export default mapDocuments;
}

declare module "react-declarative/api/iterateDocuments" {
  import IRowData, { RowId } from "react-declarative/model/IRowData";
  /**
   * Represents a configuration interface for data retrieval.
   * @template Data - The type of row data.
   */
  interface IConfig<Data extends IRowData = IRowData> {
    totalDocuments?: number;
    limit?: number;
    delay?: number;
    createRequest: (
      data: {
        limit: number;
        offset: number;
        page: number;
        lastId: RowId | null;
      } & Omit<IConfig<Data>, "createRequest">,
    ) => Data[] | Promise<Data[]>;
  }
  /**
   * Asynchronous generator function that iterates over documents.
   *
   * @template Data - The type of the row data in the documents.
   *
   * @param config - The configuration object.
   * @param [config.totalDocuments=TOTAL_DOCUMENTS] - The total number of documents to iterate over.
   * @param [config.limit=REQUEST_LIMIT] - The number of documents to fetch in each request.
   * @param [config.delay=REQUEST_DELAY] - The delay between each request.
   * @param [config.createRequest=() => []] - The function used to create the request.
   *
   * @returns An asynchronous generator that yields an array of documents.
   *
   * @throws If the response length is greater than the specified limit.
   */
  export const iterateDocuments: <Data extends IRowData = IRowData>({
    totalDocuments,
    limit,
    delay,
    createRequest,
  }: IConfig<Data>) => AsyncGenerator<Data[], void, unknown>;
  export default iterateDocuments;
}

declare module "react-declarative/api/iteratePromise" {
  import IRowData from "react-declarative/model/IRowData";
  export function iteratePromise<T extends IRowData = IRowData>(
    fn: () => Promise<T[]>,
  ): AsyncGenerator<T, void, unknown>;
  export default iteratePromise;
}

declare module "react-declarative/api/iterateUnion" {
  import IRowData from "react-declarative/model/IRowData";
  export const iterateUnion: <T extends IRowData = IRowData>(
    iterators: AsyncGenerator<T | T[], void, unknown>[],
  ) => (limit: number, offset: number) => AsyncGenerator<T, void, unknown>;
  export default iterateUnion;
}

declare module "react-declarative/api/iterateList" {
  import IRowData from "react-declarative/model/IRowData";
  export function iterateList<T extends IRowData = IRowData>(
    rows: T[],
    map?: (row: T) => Promise<T>,
  ): AsyncGenerator<T, void, unknown>;
  export default iterateList;
}

declare module "react-declarative/view/useOpenDocument" {
  export * from "react-declarative/view/useOpenDocument/useOpenDocument";
  export { default } from "react-declarative/view/useOpenDocument/useOpenDocument";
}

declare module "react-declarative/utils/heavy" {
  import * as React from "react";
  /**
   * An interface representing the parameters for a loader.
   *
   * @interface
   */
  interface IParams {
    loaderSize: number;
  }
  /**
   * Wraps a React component with lazy loading and suspense, displaying a loader while the component is being loaded.
   *
   * @template T - The type of the wrapped React component.
   * @template P - The props type of the wrapped React component.
   *
   * @param factory - A function that returns a promise that resolves to the component.
   * @param [options={}] - Optional parameters for customizing the loader.
   *
   * @returns A function that returns the wrapped component with suspense and loader.
   */
  export const heavy: <
    T extends React.ComponentType<P>,
    P extends object = any,
  >(
    factory: () => Promise<{
      default: T;
    }>,
    { loaderSize }?: Partial<IParams>,
  ) => (props: P) => JSX.Element;
  export default heavy;
}

declare module "react-declarative/components/One/hooks/useDebounce" {
  import { DebouncedControlFunctions } from "react-declarative/components/One/hooks/useDebouncedCallback";
  import { Value } from "react-declarative/model/IField";
  /**
   * Debounces the given value with the specified delay.
   *
   * @param value - The value to be debounced.
   * @param delay - The delay in milliseconds before invoking the debounced value.
   * @param options - The optional configuration options for debounce behavior.
   * @param options.maxWait - The maximum wait time in milliseconds before invoking the debounced value.
   * @param options.leading - Determines if the debounced value should be invoked on the leading edge.
   * @param options.trailing - Determines if the debounced value should be invoked on the trailing edge.
   * @param options.equalityFn - The custom equality function to compare previous and current values.
   * @returns An array containing the debounced value and control functions for the debounced callback.
   */
  export function useDebounce<T extends any = Value>(
    value: T,
    delay: number,
    options?: {
      maxWait?: number;
      leading?: boolean;
      trailing?: boolean;
      equalityFn?: (left: T, right: T) => boolean;
    },
  ): [T, DebouncedControlFunctions];
  export default useDebounce;
}

declare module "react-declarative/components/One/hooks/useDebouncedCallback" {
  /**
   * Represents the options for a class.
   */
  export interface Options {
    maxWait?: number;
    leading?: boolean;
    trailing?: boolean;
  }
  /**
   * Interface for DebouncedControlFunctions.
   *
   * @interface
   */
  export interface DebouncedControlFunctions {
    cancel: () => void;
    flush: () => void;
    pending: () => boolean;
  }
  type value = object | string | number | boolean;
  /**
   * Subsequent calls to the debounced function `debounced.callback` return the result of the last func invocation.
   * Note, that if there are no previous invocations it's mean you will get undefined. You should check it in your
   * code properly.
   */
  export interface DebouncedState<T extends (...args: value[]) => ReturnType<T>>
    extends DebouncedControlFunctions {
    callback: (...args: Parameters<T>) => ReturnType<T>;
  }
  /**
   * Returns a debounced version of the provided callback function.
   *
   * @template T - The type of the original callback function.
   * @param func - The original callback function.
   * @param [wait] - The debounce wait time in milliseconds (default: 0).
   * @param [options] - Additional options for debouncing (default: {}).
   * @returns - An object containing the debounced callback and utility functions.
   */
  export function useDebouncedCallback<
    T extends (...args: value[]) => ReturnType<T>,
  >(func: T, wait?: number, options?: Options): DebouncedState<T>;
  export default useDebouncedCallback;
}

declare module "react-declarative/components/common/DatePicker/DatePicker" {
  import dayjs from "dayjs";
  /**
   * A customizable date picker component.
   *
   * @param props - The component props.
   * @param props.date - The initial date to display in the date picker.
   * @param props.minDate - The minimum selectable date in the date picker. Defaults to '1900-01-01'.
   * @param props.maxDate - The maximum selectable date in the date picker. Defaults to '2100-01-01'.
   * @param props.onChange - The callback function triggered when the selected date is changed.
   * @param props.disableFuture - Boolean indicating whether future dates should be disabled. Defaults to false.
   * @param props.animateYearScrolling - Boolean indicating whether to animate the year scrolling. Defaults to true.
   * @param props.openToYearSelection - Boolean indicating whether to open the date picker in year selection mode. Defaults to false.
   *
   * @returns The date picker component.
   */
  export const DatePicker: ({
    date: upperDate,
    minDate,
    maxDate,
    onChange,
    disableFuture,
    animateYearScrolling,
    openToYearSelection,
  }: {
    date?: dayjs.Dayjs | undefined;
    minDate?: string | undefined;
    maxDate?: string | undefined;
    onChange?: ((change: any) => void) | undefined;
    disableFuture?: boolean | undefined;
    animateYearScrolling?: boolean | undefined;
    openToYearSelection?: boolean | undefined;
  }) => JSX.Element;
  export default DatePicker;
}

declare module "react-declarative/components/common/TimePicker/TimePicker" {
  import dayjs from "dayjs";
  /**
   * A TimePicker component that allows users to select a time.
   *
   * @param [options] - The options for the TimePicker.
   * @param [options.onChange] - The callback function triggered when the selected time changes.
   * @param [options.date] - The initial date and time to display in the TimePicker.
   *
   * @returns The TimePicker component.
   */
  export const TimePicker: ({
    onChange,
    date: upperDate,
  }: {
    onChange?: ((change: any) => void) | undefined;
    date?: dayjs.Dayjs | undefined;
  }) => JSX.Element;
  export default TimePicker;
}

declare module "react-declarative/components/One/components/common/VirtualListBox" {
  import * as React from "react";
  /**
   * Interface for the props of the VirtualListBox component.
   */
  interface IVirtualListBoxProps extends React.HTMLAttributes<HTMLElement> {
    children?: React.ReactNode;
  }
  /**
   * A virtual list box component that renders a list of items in a virtualized manner.
   *
   * @component
   *
   * @param props - The props object.
   * @param props.className - The class name to apply to the list box container.
   * @param props.children - The children to render within the list box.
   * @param props.role - The role attribute value for the list box container.
   * @param ref - The ref object for accessing the underlying HTMLDivElement.
   *
   * @returns The rendered list box component.
   */
  export const VirtualListBox: React.ForwardRefExoticComponent<
    IVirtualListBoxProps & React.RefAttributes<HTMLDivElement>
  >;
  export default VirtualListBox;
}

declare module "react-declarative/components/One" {
  export * from "react-declarative/components/One/One";
  export * from "react-declarative/components/One/slots";
  export { OneConfig } from "react-declarative/components/One/components/OneConfig";
  export { createField } from "react-declarative/components/One/config/createField";
  export { makeField } from "react-declarative/components/One/components/makeField";
  export { createLayout } from "react-declarative/components/One/config/createLayout";
  export { makeLayout } from "react-declarative/components/One/components/makeLayout";
  export { useOneMenu } from "react-declarative/components/One/context/MenuProvider";
  export { useOneProps } from "react-declarative/components/One/context/PropsProvider";
  export { useOneState } from "react-declarative/components/One/context/StateProvider";
  export { useOnePayload } from "react-declarative/components/One/context/PayloadProvider";
  export { useOneFeatures } from "react-declarative/components/One/context/FeatureProvider";
  export { useOneRadio } from "react-declarative/components/One/context/RadioProvider";
  export { useOneContext } from "react-declarative/components/One/context/OneContextProvider";
  export { OtherComboSlot } from "react-declarative/components/One/other/OtherComboSlot";
  export { OtherItemsSlot } from "react-declarative/components/One/other/OtherItemsSlot";
  export { useApiHandler } from "react-declarative/components/One/api/useApiHandler";
  export { useLocalHandler } from "react-declarative/components/One/api/useLocalHandler";
  export { useStaticHandler } from "react-declarative/components/One/api/useStaticHandler";
  export { usePreventLeave } from "react-declarative/components/One/api/usePreventLeave";
  export { default as OneSlotFactory } from "react-declarative/components/One/components/SlotFactory";
  export { defaultSlots as OneDefaultSlots } from "react-declarative/components/One/components/SlotFactory";
  export { isBaseline } from "react-declarative/components/One/config/isBaseline";
  export { isBaselineSimple } from "react-declarative/components/One/config/isBaselineSimple";
  export { isBaselineForField as isBaselineForRoot } from "react-declarative/components/One/config/isBaseline";
  export { default } from "react-declarative/components/One/One";
}

declare module "react-declarative/components/OneIcon" {
  export * from "react-declarative/components/OneIcon/OneIcon";
  export { default } from "react-declarative/components/OneIcon/OneIcon";
}

declare module "react-declarative/components/OneButton" {
  export * from "react-declarative/components/OneButton/OneButton";
  export { default } from "react-declarative/components/OneButton/OneButton";
}

declare module "react-declarative/components/Sheet" {
  export * from "react-declarative/components/Sheet/Sheet";
  export { default } from "react-declarative/components/Sheet/Sheet";
}

declare module "react-declarative/components/Dot" {
  export * from "react-declarative/components/Dot/Dot";
  export { default } from "react-declarative/components/Dot/Dot";
}

declare module "react-declarative/components/NoSsr" {
  export * from "react-declarative/components/NoSsr/NoSsr";
  export { default } from "react-declarative/components/NoSsr/NoSsr";
}

declare module "react-declarative/components/Switch" {
  export * from "react-declarative/components/Switch/Switch";
  export { default } from "react-declarative/components/Switch/Switch";
}

declare module "react-declarative/components/Center" {
  export * from "react-declarative/components/Center/Center";
  export { default } from "react-declarative/components/Center/Center";
}

declare module "react-declarative/components/Square" {
  export * from "react-declarative/components/Square/Square";
  export { default } from "react-declarative/components/Square/Square";
}

declare module "react-declarative/components/Scaffold" {
  export * from "react-declarative/components/Scaffold/Scaffold";
  export * from "react-declarative/components/Scaffold/model/IScaffoldProps";
  export * from "react-declarative/components/Scaffold/model/IScaffoldOption";
  export { default } from "react-declarative/components/Scaffold/Scaffold";
}

declare module "react-declarative/components/Translate" {
  export * from "react-declarative/components/Translate/Translate";
  export { default } from "react-declarative/components/Translate/Translate";
}

declare module "react-declarative/components/Breadcrumbs" {
  export * from "react-declarative/components/Breadcrumbs/Breadcrumbs";
  export { default } from "react-declarative/components/Breadcrumbs/Breadcrumbs";
}

declare module "react-declarative/components/ErrorBoundary" {
  export * from "react-declarative/components/ErrorBoundary/ErrorBoundary";
  export { default } from "react-declarative/components/ErrorBoundary/ErrorBoundary";
}

declare module "react-declarative/components/ColorButton" {
  export * from "react-declarative/components/ColorButton/ColorButton";
  export { default } from "react-declarative/components/ColorButton/ColorButton";
}

declare module "react-declarative/components/ActionChip" {
  export * from "react-declarative/components/ActionChip/ActionChip";
  export { ActionChip } from "react-declarative/components/ActionChip/ActionChip";
}

declare module "react-declarative/components/ActionMenu" {
  export * from "react-declarative/components/ActionMenu/ActionMenu";
  export { default } from "react-declarative/components/ActionMenu/ActionMenu";
}

declare module "react-declarative/components/ActionGroup" {
  export * from "react-declarative/components/ActionGroup/ActionGroup";
  export { default } from "react-declarative/components/ActionGroup/ActionGroup";
}

declare module "react-declarative/components/ActionButton" {
  export * from "react-declarative/components/ActionButton/ActionButton";
  export * from "react-declarative/components/ActionButton/api/usePreventAction";
  export { default } from "react-declarative/components/ActionButton/ActionButton";
}

declare module "react-declarative/components/ActionBounce" {
  export * from "react-declarative/components/ActionBounce/ActionBounce";
  export * from "react-declarative/components/ActionBounce/model/ActionState";
  export { default } from "react-declarative/components/ActionBounce/ActionBounce";
}

declare module "react-declarative/components/ActionStopIcon" {
  export * from "react-declarative/components/ActionStopIcon/ActionStopIcon";
  export { default } from "react-declarative/components/ActionStopIcon/ActionStopIcon";
}

declare module "react-declarative/components/ActionFab" {
  export * from "react-declarative/components/ActionFab/ActionFab";
  export { default } from "react-declarative/components/ActionFab/ActionFab";
}

declare module "react-declarative/components/ActionFilter" {
  export * from "react-declarative/components/ActionFilter/ActionFilter";
  export * from "react-declarative/components/ActionFilter/model/IActionFilter";
  export { default } from "react-declarative/components/ActionFilter/ActionFilter";
}

declare module "react-declarative/components/ActionTrigger" {
  export * from "react-declarative/components/ActionTrigger/ActionTrigger";
  export * from "react-declarative/components/ActionTrigger/model/IActionTrigger";
  export { default } from "react-declarative/components/ActionTrigger/ActionTrigger";
}

declare module "react-declarative/components/ActionIcon" {
  export * from "react-declarative/components/ActionIcon/ActionIcon";
  export { default } from "react-declarative/components/ActionIcon/ActionIcon";
}

declare module "react-declarative/components/ActionToggle" {
  export * from "react-declarative/components/ActionToggle/ActionToggle";
  export { default } from "react-declarative/components/ActionToggle/ActionToggle";
}

declare module "react-declarative/components/ActionModal" {
  export * from "react-declarative/components/ActionModal/ActionModal";
  export * from "react-declarative/components/ActionModal/useActionModal";
  export { default } from "react-declarative/components/ActionModal/useActionModal";
}

declare module "react-declarative/components/SearchModal" {
  export * from "react-declarative/components/SearchModal/SearchModal";
  export * from "react-declarative/components/SearchModal/useSearchModal";
  export { default } from "react-declarative/components/SearchModal/useSearchModal";
}

declare module "react-declarative/components/SearchView" {
  export * from "react-declarative/components/SearchView/SearchView";
  export * from "react-declarative/components/SearchView/model/ISearchItem";
  export { default } from "react-declarative/components/SearchView/SearchView";
}

declare module "react-declarative/components/ConstraintView" {
  export * from "react-declarative/components/ConstraintView/ConstraintView";
  export * from "react-declarative/components/ConstraintView/useConstraint";
  export { default } from "react-declarative/components/ConstraintView/ConstraintView";
}

declare module "react-declarative/components/ScrollTopView" {
  export * from "react-declarative/components/ScrollTopView/ScrollTopView";
  export { default } from "react-declarative/components/ScrollTopView/ScrollTopView";
}

declare module "react-declarative/components/OutletView" {
  export * from "react-declarative/components/OutletView/OutletView";
  export * from "react-declarative/components/OutletView/model/IOutlet";
  export * from "react-declarative/components/OutletView/model/IOutletModal";
  export * from "react-declarative/components/OutletView/model/IOutletProps";
  export * from "react-declarative/components/OutletView/model/IOutletModalProps";
  export * from "react-declarative/components/OutletView/hooks/useOutletModal";
  export { default } from "react-declarative/components/OutletView/OutletView";
}

declare module "react-declarative/components/AlertView" {
  export * from "react-declarative/components/AlertView/AlertView";
  export { default } from "react-declarative/components/AlertView/AlertView";
}

declare module "react-declarative/components/PaperView" {
  export * from "react-declarative/components/PaperView/PaperView";
  export { default } from "react-declarative/components/PaperView/PaperView";
}

declare module "react-declarative/components/DragDropView" {
  export * from "react-declarative/components/DragDropView/DragDropView";
  export { default } from "react-declarative/components/DragDropView/DragDropView";
}

declare module "react-declarative/components/DropAreaView" {
  export * from "react-declarative/components/DropAreaView/DropAreaView";
  export { default } from "react-declarative/components/DropAreaView/DropAreaView";
}

declare module "react-declarative/components/FilesView" {
  export * from "react-declarative/components/FilesView/FilesView";
  export * from "react-declarative/components/FilesView/api/usePreventNavigate";
  export * from "react-declarative/components/FilesView/useFilesView";
  export { default } from "react-declarative/components/FilesView/FilesView";
}

declare module "react-declarative/components/ScrollView" {
  export * from "react-declarative/components/ScrollView/ScrollView";
  export { default } from "react-declarative/components/ScrollView/ScrollView";
}

declare module "react-declarative/components/ScaleView" {
  export * from "react-declarative/components/ScaleView/ScaleView";
  export { default } from "react-declarative/components/ScaleView/ScaleView";
}

declare module "react-declarative/components/AutoSizer" {
  export * from "react-declarative/components/AutoSizer/AutoSizer";
  export { default } from "react-declarative/components/AutoSizer/AutoSizer";
}

declare module "react-declarative/components/FadeView" {
  export * from "react-declarative/components/FadeView/FadeView";
  export { default } from "react-declarative/components/FadeView/FadeView";
}

declare module "react-declarative/components/TabsView" {
  export * from "react-declarative/components/TabsView/TabsView";
  export { ITabsOutlet } from "react-declarative/components/TabsView/model/ITabsOutlet";
  export { ITabsOutletProps } from "react-declarative/components/TabsView/model/ITabsOutletProps";
  export { ITabsStep } from "react-declarative/components/TabsView/model/ITabsStep";
  export { ITabsModal } from "react-declarative/components/TabsView/model/ITabsModal";
  export { ITabsModalProps } from "react-declarative/components/TabsView/model/ITabsModalProps";
  export { default } from "react-declarative/components/TabsView/TabsView";
}

declare module "react-declarative/components/FetchView" {
  export * from "react-declarative/components/FetchView/FetchView";
  export {
    Reveal,
    IRevealProps,
  } from "react-declarative/components/FetchView/components/Reveal";
  export { default } from "react-declarative/components/FetchView/FetchView";
}

declare module "react-declarative/components/WaitView" {
  export * from "react-declarative/components/WaitView/WaitView";
  export { default } from "react-declarative/components/WaitView/WaitView";
}

declare module "react-declarative/components/PingView" {
  export * from "react-declarative/components/PingView/PingView";
  export { default } from "react-declarative/components/PingView/PingView";
}

declare module "react-declarative/components/HtmlView" {
  export * from "react-declarative/components/HtmlView/HtmlView";
  export { default } from "react-declarative/components/HtmlView/HtmlView";
}

declare module "react-declarative/components/OfflineView" {
  export * from "react-declarative/components/OfflineView/OfflineView";
  export { default } from "react-declarative/components/OfflineView/OfflineView";
}

declare module "react-declarative/components/MetroView" {
  export * from "react-declarative/components/MetroView/MetroView";
  export * from "react-declarative/components/MetroView/model/IMetroGroup";
  export * from "react-declarative/components/MetroView/model/IMetroRoute";
  export { default } from "react-declarative/components/MetroView/MetroView";
}

declare module "react-declarative/components/RevealView" {
  export * from "react-declarative/components/RevealView/RevealView";
  export { default } from "react-declarative/components/RevealView/RevealView";
}

declare module "react-declarative/components/SecretView" {
  export * from "react-declarative/components/SecretView/SecretView";
  export { default } from "react-declarative/components/SecretView/SecretView";
}

declare module "react-declarative/components/WizardView" {
  export * from "react-declarative/components/WizardView/WizardView";
  export * from "react-declarative/components/WizardView/components/WizardNavigation";
  export * from "react-declarative/components/WizardView/components/WizardContainer";
  export { IWizardOutlet } from "react-declarative/components/WizardView/model/IWizardOutlet";
  export { IWizardOutletProps } from "react-declarative/components/WizardView/model/IWizardOutletProps";
  export { IWizardStep } from "react-declarative/components/WizardView/model/IWizardStep";
  export { IWizardModal } from "react-declarative/components/WizardView/model/IWizardModal";
  export { IWizardModalProps } from "react-declarative/components/WizardView/model/IWizardModalProps";
  export { useWizardModal } from "react-declarative/components/WizardView/hooks/useWizardModal";
  export { default } from "react-declarative/components/WizardView/WizardView";
}

declare module "react-declarative/components/PortalView" {
  export * from "react-declarative/components/PortalView/PortalView";
  export { default } from "react-declarative/components/PortalView/PortalView";
}

declare module "react-declarative/components/ErrorView" {
  export * from "react-declarative/components/ErrorView/ErrorView";
  export { default } from "react-declarative/components/ErrorView/ErrorView";
}

declare module "react-declarative/components/AuthView" {
  export * from "react-declarative/components/AuthView/AuthView";
  export { default } from "react-declarative/components/AuthView/AuthView";
}

declare module "react-declarative/components/KanbanView" {
  export * from "react-declarative/components/KanbanView/KanbanView";
  export * from "react-declarative/components/KanbanView/model/IBoard";
  export * from "react-declarative/components/KanbanView/model/IBoardDivider";
  export * from "react-declarative/components/KanbanView/model/IBoardColumn";
  export * from "react-declarative/components/KanbanView/model/IBoardItem";
  export * from "react-declarative/components/KanbanView/model/IBoardRow";
  export { default } from "react-declarative/components/KanbanView/KanbanView";
}

declare module "react-declarative/components/ReloadView" {
  export * from "react-declarative/components/ReloadView/ReloadView";
  export { default } from "react-declarative/components/ReloadView/ReloadView";
}

declare module "react-declarative/components/InfiniteView" {
  export * from "react-declarative/components/InfiniteView/InfiniteView";
  export { default } from "react-declarative/components/InfiniteView/InfiniteView";
}

declare module "react-declarative/components/VirtualView" {
  export * from "react-declarative/components/VirtualView/VirtualView";
  export { CHILD_ELEMENT as VIRTUAL_VIEW_CHILD } from "react-declarative/components/VirtualView/VirtualView";
  export { ROOT_ELEMENT as VIRTUAL_VIEW_ROOT } from "react-declarative/components/VirtualView/VirtualView";
  export { default } from "react-declarative/components/VirtualView/VirtualView";
}

declare module "react-declarative/components/LoaderView" {
  export * from "react-declarative/components/LoaderView/LoaderView";
  export { default } from "react-declarative/components/LoaderView/LoaderView";
}

declare module "react-declarative/components/DocumentView" {
  export * from "react-declarative/components/DocumentView/DocumentView";
  export { default } from "react-declarative/components/DocumentView/DocumentView";
}

declare module "react-declarative/components/ImageView" {
  export * from "react-declarative/components/ImageView/ImageView";
  export { default } from "react-declarative/components/ImageView/ImageView";
}

declare module "react-declarative/components/TreeView" {
  export * from "react-declarative/components/TreeView/TreeView";
  export { INode as ITreeViewNode } from "react-declarative/components/TreeView/model/INode";
  export { default } from "react-declarative/components/TreeView/TreeView";
}

declare module "react-declarative/components/GridView" {
  export * from "react-declarative/components/GridView/GridView";
  export { default } from "react-declarative/components/GridView/GridView";
}

declare module "react-declarative/components/ChatView" {
  export { ChatController } from "react-declarative/components/ChatView/helpers/ChatController";
  export { AudioMediaRecorder } from "react-declarative/components/ChatView/helpers/AudioMediaRecorder";
  export { ActionRequest } from "react-declarative/components/ChatView/model/ActionRequest";
  export { AudioActionRequest } from "react-declarative/components/ChatView/model/AudioActionRequest";
  export { CustomActionRequest } from "react-declarative/components/ChatView/model/CustomActionRequest";
  export { FileActionRequest } from "react-declarative/components/ChatView/model/FileActionRequest";
  export { MultiSelectActionRequest } from "react-declarative/components/ChatView/model/MultiSelectActionRequest";
  export { SelectActionRequest } from "react-declarative/components/ChatView/model/SelectActionRequest";
  export { TextActionRequest } from "react-declarative/components/ChatView/model/TextActionRequest";
  export * from "react-declarative/components/ChatView/ChatView";
  export { default } from "react-declarative/components/ChatView/ChatView";
}

declare module "react-declarative/components/RoiView" {
  export * from "react-declarative/components/RoiView/RoiView";
  export type { ICord } from "react-declarative/components/RoiView/model/ICord";
  export { default } from "react-declarative/components/RoiView/RoiView";
}

declare module "react-declarative/components/Grid" {
  export * from "react-declarative/components/Grid/Grid";
  export * from "react-declarative/components/Grid/api/useOffsetPaginator";
  export * from "react-declarative/components/Grid/api/useCursorPaginator";
  export * from "react-declarative/components/Grid/api/useGridAction";
  export * from "react-declarative/components/Grid/api/useGridSelection";
  export { IGridProps } from "react-declarative/components/Grid/model/IGridProps";
  export { RowData } from "react-declarative/components/Grid/model/RowData";
  export { IColumn as IGridColumn } from "react-declarative/components/Grid/model/IColumn";
  export { IGridAction } from "react-declarative/components/Grid/model/IGridAction";
  export { TSort as TGridSort } from "react-declarative/components/Grid/model/TSort";
  export { useGridProps } from "react-declarative/components/Grid/hooks/useGridProps";
  export { default } from "react-declarative/components/Grid/Grid";
}

declare module "react-declarative/components/Tile" {
  export * from "react-declarative/components/Tile/Tile";
  export * from "react-declarative/components/Tile/components/TileCheckbox";
  export * from "react-declarative/components/Tile/model/TileMode";
  export * from "react-declarative/components/Tile/model/ITile";
  export * from "react-declarative/components/Tile/model/ITileProps";
  export { default } from "react-declarative/components/Tile/Tile";
}

declare module "react-declarative/components/Spinner" {
  export * from "react-declarative/components/Spinner/Spinner";
  export { default } from "react-declarative/components/Spinner/Spinner";
}

declare module "react-declarative/components/Async" {
  export * from "react-declarative/components/Async/Async";
  export { default } from "react-declarative/components/Async/Async";
}

declare module "react-declarative/components/Copy" {
  export * from "react-declarative/components/Copy/Copy";
  export { default } from "react-declarative/components/Copy/Copy";
}

declare module "react-declarative/components/If" {
  export * from "react-declarative/components/If/If";
  export { default } from "react-declarative/components/If/If";
}

declare module "react-declarative/components/Map" {
  export * from "react-declarative/components/Map/Map";
  export { default } from "react-declarative/components/Map/Map";
}

declare module "react-declarative/components/CopyButton" {
  export * from "react-declarative/components/CopyButton/CopyButton";
  export { default } from "react-declarative/components/CopyButton/CopyButton";
}

declare module "react-declarative/components/SubjectBinding" {
  export * from "react-declarative/components/SubjectBinding/SubjectBinding";
  export { default } from "react-declarative/components/SubjectBinding/SubjectBinding";
}

declare module "react-declarative/components/Countdown" {
  export * from "react-declarative/components/Countdown/Countdown";
  export { default } from "react-declarative/components/Countdown/Countdown";
}

declare module "react-declarative/components/Chip" {
  export * from "react-declarative/components/Chip/Chip";
  export { default } from "react-declarative/components/Chip/Chip";
}

declare module "react-declarative/components/ScrollAdjust" {
  export * from "react-declarative/components/ScrollAdjust/ScrollAdjust";
  export { default } from "react-declarative/components/ScrollAdjust/ScrollAdjust";
}

declare module "react-declarative/components/MasterDetail" {
  export * from "react-declarative/components/MasterDetail/MasterDetail";
  export * from "react-declarative/components/MasterDetail/config";
  export { IMasterDetailOption } from "react-declarative/components/MasterDetail/model/IMasterDetailOption";
  export { MasterDetailMode } from "react-declarative/components/MasterDetail/model/MasterDetailMode";
  export { default } from "react-declarative/components/MasterDetail/MasterDetail";
}

declare module "react-declarative/components/One/layouts/FragmentLayout" {
  import * as React from "react";
  import IField from "react-declarative/model/IField";
  import IEntity from "react-declarative/model/IEntity";
  import IAnything from "react-declarative/model/IAnything";
  import { PickProp } from "react-declarative/model/IManaged";
  /**
   * Represents the props for the IFragmentLayout component.
   *
   * @template Data - The type of data for the fragment layout.
   * @template Payload - The type of payload for the fragment layout.
   */
  export interface IFragmentLayoutProps<Data = IAnything, Payload = IAnything> {
    isVisible?: PickProp<IField<Data, Payload>, "isVisible">;
    features?: PickProp<IField<Data, Payload>, "features">;
    hidden?: PickProp<IField<Data, Payload>, "hidden">;
  }
  /**
   * Represents a private layout interface for a fragment.
   * @interface
   * @template Data - The type of data the fragment holds.
   */
  interface IFragmentLayoutPrivate<Data = IAnything> extends IEntity<Data> {
    children?: React.ReactNode;
    ready: PickProp<IEntity<Data>, "ready">;
  }
  /**
   * Component that conditionally renders its children based on the visibility criteria.
   *
   * @param props - The component props.
   * @param props.children - The children to be rendered.
   * @param props.isVisible - The function used to determine if the component should be visible.
   * @param props.ready - The function to be called when the component is ready.
   * @param props.object - The object used by the `isVisible` function.
   *
   * @returns - The rendered React node.
   */
  export const FragmentLayout: {
    <Data extends unknown = any>({
      children,
      isVisible,
      ready,
    }: IFragmentLayoutProps<Data, any> &
      IFragmentLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      children,
      isVisible,
      ready,
    }: IFragmentLayoutProps<Data, any> &
      IFragmentLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/layouts/DivLayout" {
  import * as React from "react";
  import IField from "react-declarative/model/IField";
  import IEntity from "react-declarative/model/IEntity";
  import IAnything from "react-declarative/model/IAnything";
  import { IWrappedLayout, PickProp } from "react-declarative/model/IManaged";
  /**
   * Interface for specifying the props of a DivLayout component.
   * @template Data - The type of data that the DivLayout component uses.
   * @template Payload - The type of payload that the DivLayout component uses.
   * @extends IWrappedLayout<Data>
   */
  export interface IDivLayoutProps<Data = IAnything, Payload = IAnything>
    extends IWrappedLayout<Data> {
    className?: PickProp<IField<Data, Payload>, "className">;
    style?: PickProp<IField<Data, Payload>, "style">;
    hidden?: PickProp<IField<Data, Payload>, "hidden">;
  }
  /**
   * Represents a private interface for the DivLayout class.
   *
   * @template Data - The data type for the entity.
   * @extends IEntity<Data>
   *
   * @property children - The child components to be rendered within the DivLayout.
   */
  interface IDivLayoutPrivate<Data = IAnything> extends IEntity<Data> {
    children?: React.ReactNode;
  }
  /**
   * A layout component that renders a container <div> element with optional child elements.
   *
   * @template Data - A generic type that specifies additional data passed to the component.
   *
   * @param props - The properties of the DivLayout component.
   * @param props.children - The child elements to render inside the div container.
   * @param props.className - The CSS class name to apply to the div container.
   * @param props.style - The inline styles to apply to the div container.
   *
   * @returns The rendered DivLayout component.
   */
  export const DivLayout: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      testId,
    }: IDivLayoutProps<Data, any> & IDivLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      testId,
    }: IDivLayoutProps<Data, any> & IDivLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/layouts/BoxLayout" {
  import * as React from "react";
  import IField from "react-declarative/model/IField";
  import IEntity from "react-declarative/model/IEntity";
  import IAnything from "react-declarative/model/IAnything";
  import { IWrappedLayout, PickProp } from "react-declarative/model/IManaged";
  /**
   * Interface for specifying props for the IBoxLayout class.
   *
   * @template Data - The type of data for the layout.
   * @template Payload - The type of payload for the layout.
   */
  export interface IBoxLayoutProps<Data = IAnything, Payload = IAnything>
    extends IWrappedLayout<Data, Payload> {
    className?: PickProp<IField<Data, Payload>, "className">;
    style?: PickProp<IField<Data, Payload>, "style">;
    sx?: PickProp<IField<Data, Payload>, "sx">;
  }
  /**
   * Represents a private interface for a BoxLayout component.
   *
   * @interface IBoxLayoutPrivate
   * @extends {IEntity<Data>}
   * @template Data - The type of data associated with the BoxLayout.
   */
  interface IBoxLayoutPrivate<Data = IAnything> extends IEntity<Data> {
    children?: React.ReactNode;
  }
  /**
   * A custom component for layouting its children in a box.
   *
   * @param props - The properties for the BoxLayout component.
   * @param props.children - The children elements to be rendered within the box layout.
   * @param props.className - The optional CSS class for styling the box layout.
   * @param props.style - The optional inline style object for further customization.
   * @param props.sx - The optional theme-ui style object for additional theming.
   * @typeparam {Data} - The type of the data object that can be passed to the layout.
   * @extends {IBoxLayoutProps<Data>} - The properties specific to the BoxLayout component.
   * @extends {IBoxLayoutPrivate<Data>} - The private properties specific to the BoxLayout component.
   * @returns - A JSX element representing the box layout component.
   */
  export const BoxLayout: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      sx,
      testId,
    }: IBoxLayoutProps<Data, any> & IBoxLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      sx,
      testId,
    }: IBoxLayoutProps<Data, any> & IBoxLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/layouts/TabsLayout" {
  import * as React from "react";
  import { IGroupProps } from "react-declarative/components/common/Group";
  import IField from "react-declarative/model/IField";
  import IEntity from "react-declarative/model/IEntity";
  import IAnything from "react-declarative/model/IAnything";
  import { PickProp } from "react-declarative/model/IManaged";
  /**
   * Interface representing the props for the ITabsLayout component.
   */
  export interface ITabsLayoutProps<Data = IAnything, Payload = IAnything>
    extends IGroupProps<Data, Payload> {
    className?: PickProp<IField<Data, Payload>, "className">;
    style?: PickProp<IField<Data, Payload>, "style">;
    tabLine?: PickProp<IField<Data, Payload>, "tabLine">;
    tabList?: PickProp<IField<Data, Payload>, "tabList">;
    tabIndex?: PickProp<IField<Data, Payload>, "tabIndex">;
    tabColor?: PickProp<IField<Data, Payload>, "tabColor">;
    tabChange?: PickProp<IField<Data, Payload>, "tabChange">;
    tabVariant?: PickProp<IField<Data, Payload>, "tabVariant">;
    tabKeepFlow?: PickProp<IField<Data, Payload>, "tabKeepFlow">;
    tabBackground?: PickProp<IField<Data, Payload>, "tabBackground">;
  }
  /**
   * Represents a private interface for `ITabsLayout`.
   *
   * @template Data - The type of data associated with the entity.
   */
  interface ITabsLayoutPrivate<Data = IAnything> extends IEntity<Data> {
    isBaselineAlign: boolean;
    children?: React.ReactNode;
  }
  /**
   * Represents a layout component for tabs.
   *
   * @template Data - The type of data to be used in the tabs.
   *
   * @param props - The props for the TabsLayout component.
   * @param props.children - The content of the TabsLayout component.
   * @param props.className - The CSS class name for the TabsLayout component.
   * @param props.style - The inline style for the TabsLayout component.
   * @param props.tabChange - The callback function for tab change event.
   * @param [props.tabVariant="fullWidth"] - The variant of the tabs (default: "fullWidth").
   * @param [props.tabLine=false] - Whether to show a line beneath the tabs (default: false).
   * @param [props.tabColor="primary"] - The color of the tabs (default: "primary").
   * @param [props.tabList=["Empty"]] - The list of tab labels (default: ["Empty"]).
   * @param [props.tabKeepFlow=false] - Whether to keep the flow of content when tabs are switched (default: false).
   * @param [props.tabBackground=false] - Whether to show a background color behind the content (default: false).
   * @param [props.tabIndex=0] - The default index of the active tab (default: 0).
   * @param props.columns - The number of columns for the Group container.
   * @param props.columnsOverride - The configuration object to override the number of columns for specific breakpoints.
   * @param props.isBaselineAlign - Whether to align the items based on the baseline.
   * @param props.sx - The custom CSS properties for the Group container.
   * @param props.phoneColumns - The number of columns for mobile devices.
   * @param props.tabletColumns - The number of columns for tablet devices.
   * @param props.desktopColumns - The number of columns for desktop devices.
   * @param [props.fieldRightMargin="0"] - The right margin for form fields (default: "0").
   * @param [props.fieldBottomMargin="0"] - The bottom margin for form fields (default: "0").
   *
   * @returns - The rendered TabsLayout component.
   */
  export const TabsLayout: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      tabChange,
      tabVariant,
      tabLine,
      tabColor,
      tabList,
      tabKeepFlow,
      tabBackground,
      tabIndex: tabIndexDefault,
      columns,
      columnsOverride,
      isBaselineAlign,
      sx,
      testId,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      fieldRightMargin,
      fieldBottomMargin,
    }: ITabsLayoutProps<Data, any> & ITabsLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      tabChange,
      tabVariant,
      tabLine,
      tabColor,
      tabList,
      tabKeepFlow,
      tabBackground,
      tabIndex: tabIndexDefault,
      columns,
      columnsOverride,
      isBaselineAlign,
      sx,
      testId,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      fieldRightMargin,
      fieldBottomMargin,
    }: ITabsLayoutProps<Data, any> & ITabsLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/layouts/CenterLayout" {
  import * as React from "react";
  import IField from "react-declarative/model/IField";
  import IEntity from "react-declarative/model/IEntity";
  import IAnything from "react-declarative/model/IAnything";
  import { PickProp } from "react-declarative/model/IManaged";
  import { IGroupProps } from "react-declarative/components/common/Group";
  /**
   * Interface for defining props for the CenterLayout component.
   *
   * @template Data - The data type.
   * @template Payload - The payload type.
   * @extends IGroupProps<Data> - The props interface that the CenterLayoutProps extends.
   */
  export interface ICenterLayoutProps<Data = IAnything, Payload = IAnything>
    extends IGroupProps<Data> {
    innerPadding?: PickProp<IField<Data, Payload>, "innerPadding">;
    className?: PickProp<IField<Data, Payload>, "className">;
    style?: PickProp<IField<Data, Payload>, "style">;
  }
  /**
   * Interface representing a private center layout entity.
   * @template Data - The type of data associated with the entity.
   */
  interface ICenterLayoutPrivate<Data = IAnything> extends IEntity<Data> {
    isBaselineAlign: boolean;
    children?: React.ReactNode;
  }
  /**
   * Component for centering its children with specified layout and alignment.
   *
   * @template Data - The data type for any additional props.
   *
   * @param props - The component props.
   * @param props.children - The children to be centered.
   * @param props.className - The class name for the component.
   * @param props.style - The inline styles for the component.
   * @param [props.innerPadding='0px'] - The padding applied to the inner content of the component.
   * @param [props.columns] - The number of columns for the layout.
   * @param [props.phoneColumns] - The number of columns for phone layout.
   * @param [props.tabletColumns] - The number of columns for tablet layout.
   * @param [props.desktopColumns] - The number of columns for desktop layout.
   * @param [props.columnsOverride] - Overrides the default number of columns.
   * @param [props.isBaselineAlign] - Specifies whether the children should be aligned based on the baseline.
   * @param [props.sx] - Additional styles for the component using sx prop from @mui/system.
   * @param [props.fieldRightMargin='0'] - The margin applied to the right of each field within the component.
   * @param [props.fieldBottomMargin='0'] - The margin applied to the bottom of each field within the component.
   *
   * @returns - The centered content.
   */
  export const CenterLayout: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      innerPadding: padding,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      columnsOverride,
      isBaselineAlign,
      testId,
      sx,
      fieldRightMargin,
      fieldBottomMargin,
    }: ICenterLayoutProps<Data, any> & ICenterLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      innerPadding: padding,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      columnsOverride,
      isBaselineAlign,
      testId,
      sx,
      fieldRightMargin,
      fieldBottomMargin,
    }: ICenterLayoutProps<Data, any> & ICenterLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/layouts/StretchLayout" {
  import * as React from "react";
  import IField from "react-declarative/model/IField";
  import IEntity from "react-declarative/model/IEntity";
  import IAnything from "react-declarative/model/IAnything";
  import { IWrappedLayout, PickProp } from "react-declarative/model/IManaged";
  /**
   * Represents the props for a stretch layout component.
   *
   * @template Data - The type of data being passed to the layout.
   * @template Payload - The type of payload being passed to the layout.
   */
  export interface IStretchLayoutProps<Data = IAnything, Payload = IAnything>
    extends IWrappedLayout<Data> {
    innerPadding?: PickProp<IField<Data, Payload>, "innerPadding">;
    className?: PickProp<IField<Data, Payload>, "className">;
    style?: PickProp<IField<Data, Payload>, "style">;
  }
  /**
   * Represents a private interface for the StretchLayout component.
   *
   * @interface IStretchLayoutPrivate
   * @template Data - the type of the data.
   * @extends IEntity<Data>
   */
  interface IStretchLayoutPrivate<Data = IAnything> extends IEntity<Data> {
    children?: React.ReactNode;
  }
  /**
   * A layout wrapper component that stretches its children horizontally and vertically.
   *
   * @template Data - The type of the data passed to the layout.
   *
   * @param props - The properties passed to the component.
   * @param props.children - The children components to be rendered inside the layout.
   * @param [props.className] - The additional CSS class name(s) to apply to the root element.
   * @param [props.style] - The inline styles to apply to the root element.
   * @param [props.innerPadding='0px'] - The padding to apply to the container element.
   *
   * @returns - The rendered StretchLayout component.
   */
  export const StretchLayout: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      testId,
      innerPadding: padding,
    }: IStretchLayoutProps<Data, any> &
      IStretchLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      testId,
      innerPadding: padding,
    }: IStretchLayoutProps<Data, any> &
      IStretchLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/layouts/GroupLayout" {
  import * as React from "react";
  import { IGroupProps } from "react-declarative/components/common/Group";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Interface for defining the props of GroupLayout component.
   *
   * @template Data - The type of data associated with the group.
   * @template Payload - The type of payload associated with the group.
   */
  export interface IGroupLayoutProps<Data = IAnything, Payload = IAnything>
    extends IGroupProps<Data, Payload> {}
  /**
   * Represents the private interface for the GroupLayout class.
   *
   * @interface
   */
  interface IGroupLayoutPrivate {
    isBaselineAlign: boolean;
    children?: React.ReactNode;
  }
  /**
   * Represents a layout component used for grouping and organizing child components.
   *
   * @template Data - The type of data passed to the component.
   * @param props - The props to configure the GroupLayout component.
   * @param props.columns - The number of columns for the component.
   * @param props.columnsOverride - The number of columns to override for specific items.
   * @param props.sx - The sx value to pass to the component.
   * @param props.phoneColumns - The number of phone columns for the component.
   * @param props.tabletColumns - The number of tablet columns for the component.
   * @param props.desktopColumns - The number of desktop columns for the component.
   * @param props.isBaselineAlign - Indicates whether the items should be baseline aligned.
   * @param [props.fieldRightMargin='0'] - The right margin value for fields.
   * @param [props.fieldBottomMargin='0'] - The bottom margin value for fields.
   * @param [props.style] - The inline style object for the component.
   * @param [props.className] - The CSS class for the component.
   * @param props.children - The child components to be rendered.
   * @returns The rendered GroupLayout component.
   */
  export const GroupLayout: {
    <Data extends unknown = any>({
      columns,
      columnsOverride,
      sx,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      isBaselineAlign,
      fieldRightMargin,
      fieldBottomMargin,
      style,
      testId,
      className,
      children,
    }: IGroupLayoutProps<Data, any> & IGroupLayoutPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      columns,
      columnsOverride,
      sx,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      isBaselineAlign,
      fieldRightMargin,
      fieldBottomMargin,
      style,
      testId,
      className,
      children,
    }: IGroupLayoutProps<Data, any> & IGroupLayoutPrivate): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/layouts/OutlineLayout" {
  import * as React from "react";
  import { IGroupProps } from "react-declarative/components/common/Group";
  import { IOutlineProps } from "react-declarative/components/common/Outline";
  import { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Represents the props for the OutlineLayout component.
   *
   * @template Data - The type of data for the outline.
   * @template Payload - The type of payload for the outline.
   *
   * @extends {IOutlineProps<Data, Payload>} - The props required for the Outline component.
   * @extends {IGroupProps<Data, Payload>} - The props required for the Group component.
   */
  export interface IOutlineLayoutProps<Data = IAnything, Payload = IAnything>
    extends IOutlineProps<Data, Payload>,
      IGroupProps<Data, Payload> {
    innerPadding?: PickProp<IField<Data, Payload>, "innerPadding">;
  }
  /**
   * Represents the private interface for the OutlineLayout class.
   * @interface IOutlineLayoutPrivate
   */
  interface IOutlineLayoutPrivate {
    isBaselineAlign: boolean;
    children?: React.ReactNode;
  }
  /**
   * Represents the OutlineLayout component.
   *
   * @param props - The props for the OutlineLayout component.
   * @param props.columns - The number of columns.
   * @param props.columnsOverride - The number of columns to override.
   * @param props.sx - The custom inline styles.
   * @param props.phoneColumns - The number of columns for phone devices.
   * @param props.tabletColumns - The number of columns for tablet devices.
   * @param props.desktopColumns - The number of columns for desktop devices.
   * @param props.style - The custom styles.
   * @param props.className - The class name.
   * @param props.children - The child components.
   * @param props.isBaselineAlign - Indicates whether the items should be baseline aligned.
   * @param props.fieldRightMargin - The right margin for fields.
   * @param props.fieldBottomMargin - The bottom margin for fields.
   * @param props.innerPadding - The inner padding.
   * @returns The OutlineLayout component.
   */
  export const OutlineLayout: {
    <Data extends unknown = any>({
      columns,
      columnsOverride,
      sx,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      style,
      className,
      children,
      testId,
      isBaselineAlign,
      fieldRightMargin,
      fieldBottomMargin,
      innerPadding: padding,
    }: IOutlineLayoutProps<Data, any> & IOutlineLayoutPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      columns,
      columnsOverride,
      sx,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      style,
      className,
      children,
      testId,
      isBaselineAlign,
      fieldRightMargin,
      fieldBottomMargin,
      innerPadding: padding,
    }: IOutlineLayoutProps<Data, any> & IOutlineLayoutPrivate): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/layouts/PaperLayout" {
  import * as React from "react";
  import { IGroupProps } from "react-declarative/components/common/Group";
  import { IPaperProps } from "react-declarative/components/common/Paper";
  import { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Interface representing the props for the IPaperLayout component.
   *
   * @template Data - The type of data to be used in the component.
   * @template Payload - The type of payload to be used in the component.
   *
   * @extends {IPaperProps<Data, Payload>}
   * @extends {IGroupProps<Data, Payload>}
   */
  export interface IPaperLayoutProps<Data = IAnything, Payload = IAnything>
    extends IPaperProps<Data, Payload>,
      IGroupProps<Data, Payload> {
    innerPadding?: PickProp<IField<Data, Payload>, "innerPadding">;
    outlinePaper?: PickProp<IField<Data, Payload>, "outlinePaper">;
    transparentPaper?: PickProp<IField<Data, Payload>, "transparentPaper">;
  }
  /**
   * Represents the private interface for the PaperLayout component.
   */
  interface IPaperLayoutPrivate {
    isBaselineAlign: boolean;
    children?: React.ReactNode;
  }
  /**
   * Renders a paper layout component.
   *
   * @template Data - The type of data to be used.
   * @param props - The props object.
   * @param [props.columns] - The number of columns to display.
   * @param [props.columnsOverride] - The number of columns to override the default value.
   * @param [props.phoneColumns] - The number of columns to display on phones.
   * @param [props.tabletColumns] - The number of columns to display on tablets.
   * @param [props.desktopColumns] - The number of columns to display on desktops.
   * @param [props.style] - The CSS styles to be applied.
   * @param [props.className] - The class name to be applied.
   * @param [props.children] - The children components to be rendered.
   * @param [props.isBaselineAlign] - Determines if items should be aligned to the baseline.
   * @param [props.fieldRightMargin="0"] - The right margin of each field.
   * @param [props.fieldBottomMargin="0"] - The bottom margin of each field.
   * @param [props.innerPadding="18px"] - The inner padding of the paper layout.
   * @param [props.outlinePaper=false] - Determines if the paper should have an outline.
   * @param [props.transparentPaper=false] - Determines if the paper should be transparent.
   * @returns - The rendered paper layout component.
   */
  export const PaperLayout: {
    <Data extends unknown = any>({
      columns,
      columnsOverride,
      sx,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      style,
      className,
      children,
      testId,
      isBaselineAlign,
      fieldRightMargin,
      fieldBottomMargin,
      innerPadding: padding,
      outlinePaper,
      transparentPaper,
    }: IPaperLayoutProps<Data, any> & IPaperLayoutPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      columns,
      columnsOverride,
      sx,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      style,
      className,
      children,
      testId,
      isBaselineAlign,
      fieldRightMargin,
      fieldBottomMargin,
      innerPadding: padding,
      outlinePaper,
      transparentPaper,
    }: IPaperLayoutProps<Data, any> & IPaperLayoutPrivate): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/layouts/ExpansionLayout" {
  import * as React from "react";
  import { IExpansionProps } from "react-declarative/components/common/Expansion";
  import { IGroupProps } from "react-declarative/components/common/Group";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents the properties for an Expansion Layout component.
   * @template Data - The data type for the expansion layout.
   * @template Payload - The payload type for the expansion layout.
   */
  export interface IExpansionLayoutProps<Data = IAnything, Payload = IAnything>
    extends IExpansionProps<Data, Payload>,
      IGroupProps<Data, Payload> {}
  /**
   * Represents the private configuration options for an Expansion Layout.
   *
   * @interface IExpansionLayoutPrivate
   */
  interface IExpansionLayoutPrivate {
    isBaselineAlign: boolean;
    outlinePaper: boolean;
    transparentPaper: boolean;
    children?: React.ReactNode;
  }
  /**
   * Renders an ExpansionLayout component.
   *
   * @template Data - The type of data to be used.
   *
   * @param props - The props for the ExpansionLayout component.
   * @param props.columns - The number of columns for the Group component.
   * @param props.columnsOverride - The number of columns to override the Group's columns prop.
   * @param props.sx - The style for the ExpansionLayout component.
   * @param props.phoneColumns - The number of columns to use on phone devices.
   * @param props.tabletColumns - The number of columns to use on tablet devices.
   * @param props.desktopColumns - The number of columns to use on desktop devices.
   * @param props.isBaselineAlign - A boolean value indicating whether to align items to the baseline.
   * @param [props.fieldRightMargin='0'] - The right margin for the fields within the Group component.
   * @param [props.fieldBottomMargin='0'] - The bottom margin for the fields within the Group component.
   * @param props.style - The style object for the ExpansionLayout component.
   * @param props.className - The class name for the ExpansionLayout component.
   * @param props.children - The children for the ExpansionLayout component.
   * @param props.title - The title for the Expansion component.
   * @param props.description - The description for the Expansion component.
   * @param props.expansionOpened - A boolean value indicating whether the Expansion should be opened.
   * @param props.outlinePaper - A boolean value indicating whether to show an outline paper style for the Expansion.
   * @param props.transparentPaper - A boolean value indicating whether to show a transparent paper style for the Expansion.
   *
   * @returns - The rendered ExpansionLayout component.
   */
  export const ExpansionLayout: {
    <Data extends unknown = any>({
      columns,
      columnsOverride,
      sx,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      isBaselineAlign,
      fieldRightMargin,
      fieldBottomMargin,
      style,
      className,
      children,
      title,
      testId,
      description,
      expansionOpened,
      outlinePaper,
      transparentPaper,
    }: IExpansionLayoutProps<Data, any> & IExpansionLayoutPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      columns,
      columnsOverride,
      sx,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      isBaselineAlign,
      fieldRightMargin,
      fieldBottomMargin,
      style,
      className,
      children,
      title,
      testId,
      description,
      expansionOpened,
      outlinePaper,
      transparentPaper,
    }: IExpansionLayoutProps<Data, any> & IExpansionLayoutPrivate): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/layouts/HeroLayout" {
  import * as React from "react";
  import IField from "react-declarative/model/IField";
  import IAnything from "react-declarative/model/IAnything";
  import { IWrappedLayout, PickProp } from "react-declarative/model/IManaged";
  import Group, {
    IGroupProps,
  } from "react-declarative/components/common/Group";
  import IEntity from "react-declarative/model/IEntity";
  /**
   * Represents an interface for a hero top section.
   * @template Data - The data type for the hero top section.
   * @template Payload - The payload type for the hero top section.
   */
  interface IHeroTop<Data = IAnything, Payload = IAnything> {
    top?: PickProp<IField<Data, Payload>, "top">;
    phoneTop?: PickProp<IField<Data, Payload>, "phoneTop">;
    tabletTop?: PickProp<IField<Data, Payload>, "tabletTop">;
    desktopTop?: PickProp<IField<Data, Payload>, "desktopTop">;
  }
  /**
   * Interface representing the left positioning properties for a hero element.
   *
   * @template Data - The data type of the hero element.
   * @template Payload - The payload type of the hero element.
   */
  interface IHeroLeft<Data = IAnything, Payload = IAnything> {
    left?: PickProp<IField<Data, Payload>, "left">;
    phoneLeft?: PickProp<IField<Data, Payload>, "phoneLeft">;
    tabletLeft?: PickProp<IField<Data, Payload>, "tabletLeft">;
    desktopLeft?: PickProp<IField<Data, Payload>, "desktopLeft">;
  }
  /**
   * Represents the interface for defining the right properties of a hero.
   * @template Data - The type of the data being used.
   * @template Payload - The type of the payload being used.
   */
  interface IHeroRight<Data = IAnything, Payload = IAnything> {
    right?: PickProp<IField<Data, Payload>, "right">;
    phoneRight?: PickProp<IField<Data, Payload>, "phoneRight">;
    tabletRight?: PickProp<IField<Data, Payload>, "tabletRight">;
    desktopRight?: PickProp<IField<Data, Payload>, "desktopRight">;
  }
  /**
   * Represents the interface for the bottom section of a hero component.
   *
   * @template Data - The type of data for the hero component.
   * @template Payload - The type of payload for the hero component.
   */
  interface IHeroBottom<Data = IAnything, Payload = IAnything> {
    bottom?: PickProp<IField<Data, Payload>, "bottom">;
    phoneBottom?: PickProp<IField<Data, Payload>, "phoneBottom">;
    tabletBottom?: PickProp<IField<Data, Payload>, "tabletBottom">;
    desktopBottom?: PickProp<IField<Data, Payload>, "desktopBottom">;
  }
  /**
   * An interface representing the height properties of a hero.
   *
   * @template Data - The type of data used by the height properties.
   * @template Payload - The type of payload used by the height properties.
   */
  interface IHeroHeight<Data = IAnything, Payload = IAnything> {
    height?: PickProp<IField<Data, Payload>, "height">;
    phoneHeight?: PickProp<IField<Data, Payload>, "phoneHeight">;
    tabletHeight?: PickProp<IField<Data, Payload>, "tabletHeight">;
    desktopHeight?: PickProp<IField<Data, Payload>, "desktopHeight">;
  }
  /**
   * Represents an interface for setting minimum heights for different devices.
   * @template Data - The type of data used in the interface.
   * @template Payload - The type of payload used in the interface.
   */
  interface IHeroMinHeight<Data = IAnything, Payload = IAnything> {
    minHeight?: PickProp<IField<Data, Payload>, "minHeight">;
    phoneMinHeight?: PickProp<IField<Data, Payload>, "phoneMinHeight">;
    tabletMinHeight?: PickProp<IField<Data, Payload>, "tabletMinHeight">;
    desktopMinHeight?: PickProp<IField<Data, Payload>, "desktopMinHeight">;
  }
  /**
   * Interface defining the maximum height properties for a hero element.
   *
   * @template Data - The type of data associated with the hero element.
   * @template Payload - The type of payload associated with the hero element.
   */
  interface IHeroMaxHeight<Data = IAnything, Payload = IAnything> {
    maxHeight?: PickProp<IField<Data, Payload>, "maxHeight">;
    phoneMaxHeight?: PickProp<IField<Data, Payload>, "phoneMaxHeight">;
    tabletMaxHeight?: PickProp<IField<Data, Payload>, "tabletMaxHeight">;
    desktopMaxHeight?: PickProp<IField<Data, Payload>, "desktopMaxHeight">;
  }
  /**
   * Represents the interface for calculating hero widths.
   *
   * @template Data - The type of data manipulated by the hero.
   * @template Payload - The type of payload used for the hero.
   */
  interface IHeroWidth<Data = IAnything, Payload = IAnything> {
    width?: PickProp<IField<Data, Payload>, "width">;
    phoneWidth?: PickProp<IField<Data, Payload>, "phoneWidth">;
    tabletWidth?: PickProp<IField<Data, Payload>, "tabletWidth">;
    desktopWidth?: PickProp<IField<Data, Payload>, "desktopWidth">;
  }
  /**
   * Represents the minimum width constraints for a hero component.
   *
   * @template Data - The data type for the component.
   * @template Payload - The payload type for the component.
   */
  interface IHeroMinWidth<Data = IAnything, Payload = IAnything> {
    minWidth?: PickProp<IField<Data, Payload>, "minWidth">;
    phoneMinWidth?: PickProp<IField<Data, Payload>, "phoneMinWidth">;
    tabletMinWidth?: PickProp<IField<Data, Payload>, "tabletMinWidth">;
    desktopMinWidth?: PickProp<IField<Data, Payload>, "desktopMinWidth">;
  }
  /**
   * Represents the interface for maximum widths of a hero component.
   * @template Data - The type of data for the hero component.
   * @template Payload - The type of payload for the hero component.
   */
  interface IHeroMaxWidth<Data = IAnything, Payload = IAnything> {
    maxWidth?: PickProp<IField<Data, Payload>, "maxWidth">;
    phoneMaxWidth?: PickProp<IField<Data, Payload>, "phoneMaxWidth">;
    tabletMaxWidth?: PickProp<IField<Data, Payload>, "tabletMaxWidth">;
    desktopMaxWidth?: PickProp<IField<Data, Payload>, "desktopMaxWidth">;
  }
  /**
   * Interface representing the style configuration for a hero component.
   *
   * @template Data - The type of the data passed to the hero component.
   * @template Payload - The type of the payload passed to the hero component.
   */
  interface IHeroStyle<Data = IAnything, Payload = IAnything> {
    heroOuterStyle?: PickProp<IField<Data, Payload>, "heroOuterStyle">;
    heroOuterPhoneStyle?: PickProp<
      IField<Data, Payload>,
      "heroOuterPhoneStyle"
    >;
    heroOuterTabletStyle?: PickProp<
      IField<Data, Payload>,
      "heroOuterTabletStyle"
    >;
    heroOuterDesktopStyle?: PickProp<
      IField<Data, Payload>,
      "heroOuterDesktopStyle"
    >;
    heroInnerStyle?: PickProp<IField<Data, Payload>, "heroInnerStyle">;
    heroInnerPhoneStyle?: PickProp<
      IField<Data, Payload>,
      "heroInnerPhoneStyle"
    >;
    heroInnerTabletStyle?: PickProp<
      IField<Data, Payload>,
      "heroInnerTabletStyle"
    >;
    heroInnerDesktopStyle?: PickProp<
      IField<Data, Payload>,
      "heroInnerDesktopStyle"
    >;
  }
  /**
   * Interface representing a Hero registry.
   *
   * @template D - The data type for the hero registry.
   */
  type IHeroRegistry<D = IAnything> = IHeroTop<D> &
    IHeroLeft<D> &
    IHeroRight<D> &
    IHeroBottom<D> &
    IHeroWidth<D> &
    IHeroMinWidth<D> &
    IHeroMaxWidth<D> &
    IHeroHeight<D> &
    IHeroMinHeight<D> &
    IHeroMaxHeight<D> &
    IHeroStyle<D>;
  /**
   * Represents a group of data.
   *
   * @template Data - The type of data in the group.
   */
  type Group<Data = IAnything> = Omit<
    IGroupProps<Data>,
    keyof {
      fieldRightMargin: never;
      fieldBottomMargin: never;
    }
  >;
  /**
   * Interface representing the properties for the HeroLayout component.
   *
   * @template Data - The type of data associated with the component.
   * @template Payload - The type of payload associated with the component.
   */
  export interface IHeroLayoutProps<Data = IAnything, Payload = IAnything>
    extends IHeroRegistry<Data>,
      Group<Data>,
      IWrappedLayout<Data> {
    className?: PickProp<IField<Data, Payload>, "className">;
    style?: PickProp<IField<Data, Payload>, "style">;
    object: PickProp<IEntity<Data>, "object">;
  }
  /**
   * Represents the private interface for the HeroLayout component.
   *
   * @interface IHeroLayoutPrivate
   */
  interface IHeroLayoutPrivate {
    isBaselineAlign: boolean;
    children?: React.ReactNode;
  }
  /**
   * HeroLayout is a component that renders a hero section with flexible layout options.
   *
   * @template Data - The type of data for the hero layout.
   *
   * @param props - The props for the HeroLayout component.
   * @param props.children - The children of the hero layout.
   * @param props.className - The custom CSS class name for the hero layout.
   * @param props.style - The custom inline style for the hero layout.
   * @param props.object - The data object for the hero layout.
   * @param props.columns - The number of columns to display in the hero layout.
   * @param props.columnsOverride - An array of numbers to override the number of columns at different breakpoints.
   * @param props.isBaselineAlign - Determines whether the items in the hero layout should be baseline aligned.
   * @param props.sx - The custom style object for the hero layout.
   * @param props.phoneColumns - The number of columns to display on phones.
   * @param props.tabletColumns - The number of columns to display on tablets.
   * @param props.desktopColumns - The number of columns to display on desktops.
   * @param props.otherProps - Other props to pass to the hero layout component.
   *
   * @returns - The rendered hero layout component.
   */
  export const HeroLayout: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      object,
      columns,
      columnsOverride,
      isBaselineAlign,
      testId,
      sx,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      ...otherProps
    }: IHeroLayoutProps<Data, any> & IHeroLayoutPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      object,
      columns,
      columnsOverride,
      isBaselineAlign,
      testId,
      sx,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      ...otherProps
    }: IHeroLayoutProps<Data, any> & IHeroLayoutPrivate): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/layouts/ConditionLayout" {
  import * as React from "react";
  import IField from "react-declarative/model/IField";
  import IEntity from "react-declarative/model/IEntity";
  import IAnything from "react-declarative/model/IAnything";
  import { IWrappedLayout, PickProp } from "react-declarative/model/IManaged";
  /**
   * Represents the props for a conditional layout component.
   *
   * @template Data - The data type associated with the layout component.
   * @template Payload - The payload type associated with the layout component.
   */
  export interface IConditionLayoutProps<Data = IAnything, Payload = IAnything>
    extends IWrappedLayout<Data, Payload> {
    condition?: PickProp<IField<Data, Payload>, "condition">;
    shouldCondition?: PickProp<IField<Data, Payload>, "shouldCondition">;
    conditionLoading?: PickProp<IField<Data, Payload>, "conditionLoading">;
    conditionElse?: PickProp<IField<Data, Payload>, "conditionElse">;
  }
  /**
   * The `IConditionLayoutPrivate` interface defines the structure for a class that represents a private condition layout.
   *
   * @template Data The type of data for the entity.
   * @interface
   * @extends {IEntity<Data>}
   */
  interface IConditionLayoutPrivate<Data = IAnything> extends IEntity<Data> {
    children?: React.ReactNode;
    fallback: PickProp<IEntity<Data>, "fallback">;
    ready: PickProp<IEntity<Data>, "ready">;
    object: PickProp<IEntity<Data>, "object">;
  }
  /**
   * Represents a layout component that conditionally renders its children based on given conditions.
   *
   * @template Data The type of data passed to the layout.
   * @param props - The props object containing the following properties:
   * @param props.children - The children elements to be rendered inside the layout.
   * @param [props.condition=() => true] - The condition function that determines when the children should be rendered.
   * @param [props.shouldCondition=() => false] - The function to determine if the condition should be re-evaluated.
   * @param [props.conditionLoading] - The component to be rendered while condition is evaluating/loading.
   * @param [props.conditionElse] - The component to be rendered if condition evaluates to false.
   * @param [props.fallback=(e: Error) => { throw e; }] - The function to handle errors during condition evaluation.
   * @param [props.object] - The data object to be passed to the condition and children components.
   * @returns The rendered layout component.
   */
  export const ConditionLayout: {
    <Data extends unknown = any>({
      children,
      condition,
      shouldCondition,
      conditionLoading: ConditionLoading,
      conditionElse: ConditionElse,
      fallback,
      object,
    }: IConditionLayoutProps<Data, any> &
      IConditionLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      children,
      condition,
      shouldCondition,
      conditionLoading: ConditionLoading,
      conditionElse: ConditionElse,
      fallback,
      object,
    }: IConditionLayoutProps<Data, any> &
      IConditionLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/layouts/CustomLayout" {
  import * as React from "react";
  import IField from "react-declarative/model/IField";
  import IEntity from "react-declarative/model/IEntity";
  import IAnything from "react-declarative/model/IAnything";
  import { IWrappedLayout, PickProp } from "react-declarative/model/IManaged";
  export interface ICustomLayoutProps<Data = IAnything, Payload = IAnything>
    extends IWrappedLayout<Data, Payload> {
    className?: PickProp<IField<Data, Payload>, "className">;
    style?: PickProp<IField<Data, Payload>, "style">;
    sx?: PickProp<IField<Data, Payload>, "sx">;
    customLayout?: PickProp<IField<Data, Payload>, "customLayout">;
    hidden?: PickProp<IField<Data, Payload>, "hidden">;
  }
  /**
   * An interface representing a custom layout private.
   *
   * @template Data - Type for the data of the entity.
   * @extends {IEntity<Data>}
   */
  interface ICustomLayoutPrivate<Data = IAnything> extends IEntity<Data> {
    children?: React.ReactNode;
  }
  /**
   * Represents a custom layout component.
   *
   * @template Data - The type of data to be rendered in the layout.
   *
   * @param props - The component props.
   * @param props.children - The children to be rendered inside the layout.
   * @param props.className - The CSS class name for the layout.
   * @param props.style - The inline styles for the layout.
   * @param props.sx - The theme styling object for the layout (sx prop from Theme-UI).
   * @param props.customLayout - The custom layout component to be used (defaults to Fragment).
   * @param props.otherProps - Other props specific to the custom layout.
   *
   * @returns The rendered custom layout component.
   */
  export const CustomLayout: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      sx,
      testId,
      customLayout: CustomLayout,
      ...otherProps
    }: ICustomLayoutProps<Data, any> & ICustomLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      children,
      className,
      style,
      sx,
      testId,
      customLayout: CustomLayout,
      ...otherProps
    }: ICustomLayoutProps<Data, any> & ICustomLayoutPrivate<Data>): JSX.Element;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/CheckboxField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Interface representing props for the CheckboxField component.
   *
   * @template Data - The type of data for the field.
   * @template Payload - The type of payload for the field.
   */
  export interface ICheckboxFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Retrieves the 'title' property from the given variable.
     *
     * @template T - The type of the variable.
     * @template K - The key to pick from the variable.
     *
     * @param variable - The variable to pick the property from.
     *
     * @returns - The picked property.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Retrieves the value of the 'readonly' property from the given object.
     *
     * @template Data - The type of data stored in the field.
     * @template Payload - The type of payload used in the field.
     * @template T - The type of the field object.
     *
     * @param field - The field object.
     *
     * @returns
     * The value of the 'readonly' property from the field object.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Represents the "disabled" property of a field in the given data payload.
     *
     * @template Data - The type of the data payload.
     * @template Payload - The type of the payload object.
     *
     * @param disabled - The value of the "disabled" property.
     *
     * @returns
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents the optional property `groupRef` from the `IField` interface.
     * The `groupRef` property is a subset of the `PickProp` type with the 'groupRef' key.
     *
     * @typedef groupRef
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
  }
  /**
   * Represents a private interface for a Checkbox field.
   * @interface
   * @template Data - The type of data associated with the Checkbox field.
   */
  export interface ICheckboxFieldPrivate<Data = IAnything> {
    value: PickProp<IManaged<Data>, "value">;
    onChange: PickProp<IManaged<Data>, "onChange">;
  }
  /**
   * Represents a checkbox field component.
   *
   * @param param - The properties for the checkbox field.
   * @returns - The checkbox field component.
   */
  export const CheckboxField: {
    ({
      disabled,
      value,
      readonly,
      onChange,
      title,
    }: ICheckboxFieldProps & ICheckboxFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/IconField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Interface representing props for the IconField component.
   *
   * @template Data - The type of data for the field.
   * @template Payload - The type of payload for the field.
   */
  export interface IIconFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Retrieves the 'iconSize' property from the given variable.
     *
     * @template T - The type of the variable.
     * @template K - The key to pick from the variable.
     *
     * @param variable - The variable to pick the property from.
     *
     * @returns - The picked property.
     */
    iconSize?: PickProp<IField<Data, Payload>, "iconSize">;
    /**
     * Retrieves the 'iconColor' property from the given variable.
     *
     * @template T - The type of the variable.
     * @template K - The key to pick from the variable.
     *
     * @param variable - The variable to pick the property from.
     *
     * @returns - The picked property.
     */
    iconColor?: PickProp<IField<Data, Payload>, "iconColor">;
    /**
     * Retrieves the 'iconBackground' property from the given variable.
     *
     * @template T - The type of the variable.
     * @template K - The key to pick from the variable.
     *
     * @param variable - The variable to pick the property from.
     *
     * @returns - The picked property.
     */
    iconBackground?: PickProp<IField<Data, Payload>, "iconBackground">;
    /**
     * Retrieves the 'icon' property from the given variable.
     *
     * @template T - The type of the variable.
     * @template K - The key to pick from the variable.
     *
     * @param variable - The variable to pick the property from.
     *
     * @returns - The picked property.
     */
    icon?: PickProp<IField<Data, Payload>, "icon">;
    /**
     * Represents the "disabled" property of a field in the given data payload.
     *
     * @template Data - The type of the data payload.
     * @template Payload - The type of the payload object.
     *
     * @param disabled - The value of the "disabled" property.
     *
     * @returns
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents the optional property `groupRef` from the `IField` interface.
     * The `groupRef` property is a subset of the `PickProp` type with the 'groupRef' key.
     *
     * @typedef groupRef
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
  }
  /**
   * Represents a private interface for a Icon field.
   * @interface
   * @template Data - The type of data associated with the Icon field.
   */
  export interface IIconFieldPrivate<Data = IAnything> {
    click: PickProp<IManaged<Data>, "click">;
  }
  /**
   * Represents a icon field component.
   *
   * @param param - The properties for the icon field.
   * @returns - The icon field component.
   */
  export const IconField: {
    ({
      disabled,
      click,
      icon,
      iconSize,
      iconColor,
      iconBackground,
    }: IIconFieldProps & IIconFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/ButtonField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Interface representing props for the ButtonField component.
   *
   * @template Data - The type of data for the field.
   * @template Payload - The type of payload for the field.
   */
  export interface IButtonFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Retrieves the 'buttonVariant' property from the given variable.
     *
     * @template T - The type of the variable.
     * @template K - The key to pick from the variable.
     *
     * @param variable - The variable to pick the property from.
     *
     * @returns - The picked property.
     */
    buttonVariant?: PickProp<IField<Data, Payload>, "buttonVariant">;
    /**
     * Retrieves the 'buttonSize' property from the given variable.
     *
     * @template T - The type of the variable.
     * @template K - The key to pick from the variable.
     *
     * @param variable - The variable to pick the property from.
     *
     * @returns - The picked property.
     */
    buttonSize?: PickProp<IField<Data, Payload>, "buttonSize">;
    /**
     * Retrieves the 'buttonSize' property from the given variable.
     *
     * @template T - The type of the variable.
     * @template K - The key to pick from the variable.
     *
     * @param variable - The variable to pick the property from.
     *
     * @returns - The picked property.
     */
    buttonColor?: PickProp<IField<Data, Payload>, "buttonColor">;
    /**
     * Retrieves the 'icon' property from the given variable.
     *
     * @template T - The type of the variable.
     * @template K - The key to pick from the variable.
     *
     * @param variable - The variable to pick the property from.
     *
     * @returns - The picked property.
     */
    icon?: PickProp<IField<Data, Payload>, "icon">;
    /**
     * Retrieves the 'title' property from the given variable.
     *
     * @template T - The type of the variable.
     * @template K - The key to pick from the variable.
     *
     * @param variable - The variable to pick the property from.
     *
     * @returns - The picked property.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Retrieves the 'placeholder' property from the given variable.
     *
     * @template T - The type of the variable.
     * @template K - The key to pick from the variable.
     *
     * @param variable - The variable to pick the property from.
     *
     * @returns - The picked property.
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Represents the "disabled" property of a field in the given data payload.
     *
     * @template Data - The type of the data payload.
     * @template Payload - The type of the payload object.
     *
     * @param disabled - The value of the "disabled" property.
     *
     * @returns
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents the optional property `groupRef` from the `IField` interface.
     * The `groupRef` property is a subset of the `PickProp` type with the 'groupRef' key.
     *
     * @typedef groupRef
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
  }
  /**
   * Represents a private interface for a Button field.
   * @interface
   * @template Data - The type of data associated with the Button field.
   */
  export interface IButtonFieldPrivate<Data = IAnything> {
    value: PickProp<IManaged<Data>, "value">;
    click: PickProp<IManaged<Data>, "click">;
  }
  /**
   * Represents a button field component.
   *
   * @param param - The properties for the button field.
   * @returns - The button field component.
   */
  export const ButtonField: {
    ({
      disabled,
      click,
      icon,
      title,
      value,
      buttonSize,
      buttonVariant,
      buttonColor,
      placeholder,
    }: IButtonFieldProps & IButtonFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/FileField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Interface representing props for the IFileField component.
   * @template Data - The data type for the field.
   * @template Payload - The payload type for the field.
   */
  export interface IFileFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Validation factory config
     *
     * @template IField - Type representing the field object.
     * @template Data - Type representing the data object.
     * @template Payload - Type representing the payload object.
     *
     * @returns The value of the "validation" property.
     */
    validation?: PickProp<IField<Data, Payload>, "validation">;
    /**
     * Type definition for the `PickProp` function.
     * Extracts a specific property `description` from a given object type `IField<Data, Payload>`.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     * @template T - The type of the object from which to pick the `description` property.
     *
     * @param object - The object from which to pick the `description` property.
     * @return - The value of the `description` property if found, otherwise `undefined`.
     */
    description?: PickProp<IField<Data, Payload>, "description">;
    /**
     * Picks the "outlined" property from a given object type.
     */
    outlined?: PickProp<IField<Data, Payload>, "outlined">;
    /**
     * Type definition for the 'title' property of the PickProp utility.
     *
     * @template T - The type of object from which to pick the property.
     * @template K - The key of the property to be picked.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Type definition for the placeholder property of a field.
     *
     * @template T - The type of the field.
     * @template K - The key of the property to pick.
     * @template Data - The data object containing the field.
     * @template Payload - The payload type for the field.
     *
     * @typedef PickProp
     *
     * @param field - The field object.
     *
     * @returns - The value of the field's placeholder property.
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Represents the `fileAccept` property of a field.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     *
     * @typedef fileAccept
     *
     * @property fileAccept - The accepted file types for the field.
     */
    fileAccept?: PickProp<IField<Data, Payload>, "fileAccept">;
    /**
     * Retrieves the value of the "readonly" property from the provided object.
     *
     * @template IField - The type of the object containing the "readonly" property.
     * @template Data - The type of the data stored in the "IField" object.
     * @template Payload - The type of the payload stored in the "IField" object.
     *
     * @param obj - The object from which to retrieve the "readonly" property.
     *
     * @returns - The value of the "readonly" property, or undefined if it is not present.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Represents the "disabled" property of a field.
     *
     * @typedef DisabledField
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents a reference to a group within a field.
     *
     * @typedef groupRef
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
    /**
     * Represents the input reference associated with a field in a specific data payload.
     *
     * @typedef IInputRef
     * @property inputRef - The input reference value.
     */
    inputRef?: PickProp<IField<Data, Payload>, "inputRef">;
    /**
     * Label shrink value from the field data.
     *
     * @typedef labelShrink
     * @property [labelShrink] - The label shrink value from the field data.
     * @private
     */
    labelShrink?: PickProp<IField<Data>, "labelShrink">;
    /**
     * Represents the 'upload' property of a given object.
     *
     * @template Data - The type of data for the object containing the 'upload' property.
     * @template Payload - The type of payload for the 'upload' property.
     * @template IField - The type of field for the object containing the 'upload' property.
     * @typedef upload
     */
    upload?: PickProp<IField<Data, Payload>, "upload">;
    /**
     * This variable represents a property 'view' extracted from an object of type PickProp<IField<Data, Payload>, 'view'>.
     * The 'view' property is used to specify a specific view for processing fields.
     *
     * @remarks
     * The 'IField' type is a generic type that takes two type parameters: 'Data' and 'Payload'. It represents a field in a form, with 'Data' representing the data type of the field value
     *, and 'Payload' representing additional payload data associated with the field.
     *
     * The 'PickProp' utility type is used to extract the 'view' property from the 'IField' type.
     *
     */
    view?: PickProp<IField<Data, Payload>, "view">;
  }
  /**
   * Interface representing a private file field.
   *
   * @template Data - The type of data associated with the file field.
   */
  export interface IFileFieldPrivate<Data = IAnything> {
    onChange: PickProp<IManaged<Data>, "onChange">;
    invalid: PickProp<IManaged<Data>, "invalid">;
    incorrect: PickProp<IManaged<Data>, "incorrect">;
    value: PickProp<IManaged<Data>, "value">;
    loading: PickProp<IManaged<Data>, "loading">;
    disabled: PickProp<IManaged<Data>, "disabled">;
    dirty: PickProp<IManaged<Data>, "dirty">;
    name: PickProp<IManaged<Data>, "name">;
  }
  /**
   * FileField component.
   * @param props - The props object.
   * @param props.invalid - Specifies if the field is invalid.
   * @param props.value - The value of the field.
   * @param props.disabled - Specifies if the field is disabled.
   * @param props.readonly - Specifies if the field is read-only.
   * @param props.description - The description of the field.
   * @param props.outlined - Specifies if the field is outlined.
   * @param props.title - The title of the field.
   * @param props.placeholder - The placeholder text of the field.
   * @param props.incorrect - Specifies if the field has an incorrect value.
   * @param props.upload - Specifies if the field is for uploading files.
   * @param props.view - Specifies if the field is for viewing files.
   * @param props.dirty - Specifies if the field has been changed.
   * @param props.labelShrink - Specifies if the field's label should shrink.
   * @param props.loading - Specifies if the field is in a loading state.
   * @param props.onChange - The change event handler function.
   * @param props.inputRef - The ref object for the input element.
   * @param props.name - The name of the field.
   * @return - The rendered File component with the given props.
   */
  export const FileField: {
    ({
      invalid,
      value,
      disabled,
      readonly,
      description,
      outlined,
      title,
      placeholder,
      incorrect,
      upload,
      view,
      dirty,
      labelShrink,
      loading,
      onChange,
      inputRef,
      name,
    }: IFileFieldProps & IFileFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/ComboField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Represents the properties for the ComboField component.
   *
   * @template Data - The type of data associated with the field.
   * @template Payload - The type of payload associated with the field.
   */
  export interface IComboFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Validation factory config
     *
     * @template IField - Type representing the field object.
     * @template Data - Type representing the data object.
     * @template Payload - Type representing the payload object.
     *
     * @returns The value of the "validation" property.
     */
    validation?: PickProp<IField<Data, Payload>, "validation">;
    /**
     * Retrieves the "description" property
     */
    description?: PickProp<IField<Data, Payload>, "description">;
    /**
     * Represents the `placeholder` property of a field.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     * @typedef FieldPlaceholder
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Type outlined defenition
     *
     * @template T - The type of the input object.
     * @template K - The name of the property to pick from the input object.
     *
     * @typedef PickProp
     */
    outlined?: PickProp<IField<Data, Payload>, "outlined">;
    /**
     * Represents a list of items from a specific field's data payload.
     *
     * @typedef itemList
     */
    itemList?: PickProp<IField<Data, Payload>, "itemList">;
    /**
     * Represents the `freeSolo` property of an object.
     *
     * @typedef freeSolo
     * @property [freeSolo] - Indicates whether or not the field allows free-form input.
     * @property field - The parent field object.
     * @property - The type of data associated with the field.
     * @property - The type of payload associated with the field.
     */
    freeSolo?: PickProp<IField<Data, Payload>, "freeSolo">;
    /**
     * Specifies whether the field should allow deselection.
     *
     * @template Data - The data type of the field.
     * @template Payload - The payload type of the field.
     * @typedef noDeselect
     *
     * @param noDeselect - The value of the noDeselect property.
     *
     * @returns - This function does not return any value.
     */
    noDeselect?: PickProp<IField<Data, Payload>, "noDeselect">;
    /**
     * Represents a virtual list box configuration.
     *
     * @typedef virtualListBox
     *
     * @property enabled - Indicates whether the virtual list box is enabled or not.
     * @property size - The number of items to render per batch in the virtual list box.
     * @property infiniteScroll - Indicates whether the virtual list box should support infinite scrolling or not.
     * @property useWindowScroll - Indicates whether the virtual list box should use window scroll or not.
     */
    virtualListBox?: PickProp<IField<Data, Payload>, "virtualListBox">;
    /**
     * Represents the watch item list for a specific field.
     *
     * @typedef watchItemList
     * @property - An array of watch items.
     */
    watchItemList?: PickProp<IField<Data, Payload>, "watchItemList">;
    /**
     * Retrieves the "readonly" property from a given object of type IField<Data, Payload>.
     *
     * @param field - The object from which to retrieve the "readonly" property.
     * @returns The value of the "readonly" property.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Represents the "disabled" property of a field.
     *
     * @typedef Disabled
     * @property disabled - Indicates if the field is disabled or not.
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents the property `labelShrink` which is an optional pick property of type `PickProp<IField<Data>, "labelShrink">`.
     *
     * @typedef labelShrink
     */
    labelShrink?: PickProp<IField<Data>, "labelShrink">;
    /**
     * Retrieves the "title" property for a field
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Represents an optional property "tr" of type PickProp<IField<Data, Payload>, "tr">.
     *
     * @typedef tr
     */
    tr?: PickProp<IField<Data, Payload>, "tr">;
    /**
     * This variable represents a reference to a group within a field's data payload.
     * It is an optional property and is of type `PickProp<IField<Data, Payload>, 'groupRef'>`.
     *
     * @typedef groupRef
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
  }
  /**
   * Represents the private interface for the ComboField class.
   * @template Data - The type of data managed by the ComboField.
   */
  export interface IComboFieldPrivate<Data = IAnything> {
    value: PickProp<IManaged<Data>, "value">;
    readonly: PickProp<IManaged<Data>, "readonly">;
    fieldReadonly: PickProp<IManaged<Data>, "fieldReadonly">;
    onChange: PickProp<IManaged<Data>, "onChange">;
    dirty: PickProp<IManaged<Data>, "dirty">;
    loading: PickProp<IManaged<Data>, "loading">;
    invalid: PickProp<IManaged<Data>, "invalid">;
    incorrect: PickProp<IManaged<Data>, "incorrect">;
    withContextMenu: PickProp<IManaged<Data>, "withContextMenu">;
  }
  /**
   * ComboField component.
   *
   * @param props - The props object.
   * @param props.value - The value of the ComboField.
   * @param [props.disabled=false] - Specifies whether the ComboField is disabled.
   * @param [props.readonly=false] - Specifies whether the ComboField is readonly.
   * @param [props.description=""] - The description of the ComboField.
   * @param [props.placeholder=""] - The placeholder text of the ComboField.
   * @param [props.outlined=false] - Specifies whether the ComboField should be outlined.
   * @param [props.itemList=[]] - The list of items for the ComboField.
   * @param [props.freeSolo=false] - Specifies whether the ComboField allows free text input.
   * @param [props.virtualListBox=true] - Specifies whether the ComboField should use a virtual list box for rendering.
   * @param [props.watchItemList] - Specifies whether to watch changes in the itemList prop.
   * @param [props.noDeselect] - Specifies whether the ComboField should prevent deselecting options.
   * @param [props.labelShrink] - Specifies whether the label of the ComboField should shrink when there is a value.
   * @param [props.title=""] - The title of the ComboField.
   * @param [props.dirty] - Specifies whether the ComboField has been modified.
   * @param [props.invalid] - Specifies whether the ComboField is invalid.
   * @param [props.incorrect] - Specifies whether the ComboField has incorrect data.
   * @param [props.withContextMenu] - Specifies whether the ComboField should display a context menu.
   * @param [props.tr=(s) => s.toString()] - The translation function for the ComboField.
   * @param [props.onChange] - The event handler function for onChange event.
   *
   * @returns The ComboField component.
   */
  export const ComboField: {
    ({
      value,
      disabled,
      readonly,
      description,
      placeholder,
      outlined,
      itemList,
      freeSolo,
      virtualListBox,
      watchItemList,
      noDeselect,
      labelShrink,
      title,
      dirty,
      loading,
      invalid,
      incorrect,
      fieldReadonly,
      withContextMenu,
      tr,
      onChange,
    }: IComboFieldProps & IComboFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/ComponentField" {
  import IField from "react-declarative/model/IField";
  import IAnything from "react-declarative/model/IAnything";
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  /**
   * Props interface for the IComponentField component.
   *
   * @template Data - The type of data for the field.
   * @template Payload - The type of payload for the field.
   */
  export interface IComponentFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Type definition for the 'name' property of an object.
     * The 'name' property is extracted from a specific type and is used to pick a specific property from that type.
     *
     * @template Data The data type to extract the property from.
     * @template Payload The type of the property to pick.
     *
     * @typedef name
     */
    name?: PickProp<IField<Data, Payload>, "name">;
    /**
     * Type definition for the `placeholder` property of a field.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload used for updating the field.
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Retrieves the "element" property from the given object
     *
     * @param element - The object to extract the "element" property from
     * @returns - The value of the "element" property
     */
    element?: PickProp<IField<Data, Payload>, "element">;
    /**
     * Represents a property of an object, where the key is "groupRef" and the value is of type PickProp<IField<Data, Payload>, "groupRef">.
     *
     * @property groupRef - The 'groupRef' property of the object.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
    /**
     * Retrieves the "className" property from an object of type PickProp<IField<Data, Payload>, "className">.
     *
     * @param obj - The input object containing the "className" property.
     * @returns - The value of the "className" property if present, otherwise undefined.
     * @throws If the input object is not of the expected type.
     */
    className?: PickProp<IField<Data, Payload>, "className">;
    /**
     * Represents the contextual information for watching a single field in a data structure.
     * @typedef watchOneContext?
     */
    watchOneContext?: PickProp<IField<Data, Payload>, "watchOneContext">;
    /**
     * Returns the style property of the given variable.
     *
     * @template T - The type of the variable.
     * @template K - The type of the property to be picked.
     * @param obj - The variable from which to pick the property.
     * @param prop - The property to pick from the variable.
     * @returns - The picked property value.
     */
    style?: PickProp<IField<Data, Payload>, "style">;
    /**
     * Represents the 'sx' property of a PickProp.
     *
     * @template IField - The input field type.
     * @template Data - The data type.
     * @template Payload - The payload type.
     *
     * @param - The input field.
     *
     * @returns - The value of the 'sx' property.
     */
    sx?: PickProp<IField<Data, Payload>, "sx">;
  }
  /**
   * @interface
   * @template Data - The type of data for the component field
   * @description Represents the private interface for a component field
   */
  interface IComponentFieldPrivate<Data = IAnything> {
    object: PickProp<IManaged<Data>, "object">;
    disabled: PickProp<IManaged<Data>, "disabled">;
    value: PickProp<IManaged<Data>, "value">;
    invalid: PickProp<IManaged<Data>, "invalid">;
    incorrect: PickProp<IManaged<Data>, "incorrect">;
    readonly: PickProp<IManaged<Data>, "readonly">;
    onChange: PickProp<IManaged<Data>, "onChange">;
    click: PickProp<IManaged<Data>, "click">;
    outlinePaper?: PickProp<IField<Data>, "outlinePaper">;
    transparentPaper?: PickProp<IField<Data>, "transparentPaper">;
  }
  /**
   * Represents a component field.
   * @param props - The component props.
   * @param props.disabled - Indicates if the field is disabled.
   * @param props.readonly - Indicates if the field is readonly.
   * @param props.watchOneContext - Indicates if the field should watch the One context.
   * @param props.element - The element to render, default is Fragment.
   * @param props.outlinePaper - Indicates if the field should have an outline paper.
   * @param props.transparentPaper - Indicates if the field should have a transparent paper.
   * @param props.object - A generic object to pass to the field.
   * @param props.otherProps - Other props to pass to the field.
   * @param - The rendered field component.
   */
  export const ComponentField: {
    ({
      disabled,
      invalid,
      incorrect,
      readonly,
      value,
      watchOneContext,
      element: Element,
      outlinePaper,
      transparentPaper,
      object,
      onChange: onValueChange,
      click: onClick,
      ...otherProps
    }: IComponentFieldProps & IComponentFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/ItemsField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Props for the IItemsField component.
   *
   * @template Data - The type of data for the field.
   * @template Payload - The type of payload for the field.
   */
  export interface IItemsFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Validation factory config
     *
     * @template IField - Type representing the field object.
     * @template Data - Type representing the data object.
     * @template Payload - Type representing the payload object.
     *
     * @returns The value of the "validation" property.
     */
    validation?: PickProp<IField<Data, Payload>, "validation">;
    /**
     * Returns the "description" property of the given object if it exists, otherwise returns undefined.
     *
     * @template T - The type of the object to pick the property from.
     * @template K - The key of the property to pick.
     * @param obj - The object to pick the property from.
     * @param key - The key of the property to pick.
     * @returns - The value of the "description" property if it exists, otherwise undefined.
     */
    description?: PickProp<IField<Data, Payload>, "description">;
    /**
     * Type definition for the `placeholder` property.
     *
     * @template T - The type of the field.
     * @template K - The type of the key to pick from the field.
     * @param field - The field object.
     * @param key - The key representing the property to pick from the field.
     * @returns The picked `placeholder` property from the field.
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Picks the specified property "outlined" from the given object type "IField<Data, Payload>".
     *
     * @template Data - The type of data for the field.
     * @template Payload - The type of payload for the field.
     * @template T - The resulting type after picking the property.
     *
     * @param field - The object from which to pick the property.
     *
     * @returns - The value of the "outlined" property.
     */
    outlined?: PickProp<IField<Data, Payload>, "outlined">;
    /**
     * Represents the itemList property of a field in the Data object.
     * @typedef itemList
     * @property [itemList] - The value of the itemList property.
     */
    itemList?: PickProp<IField<Data, Payload>, "itemList">;
    /**
     * Represents the `freeSolo` property of a field object.
     *
     * @typedef freeSolo
     * @description This property determines if the field supports selecting values that are not contained in the predefined options list.
     * @property [freeSolo] - A boolean value representing if the field allows free text input.
     */
    freeSolo?: PickProp<IField<Data, Payload>, "freeSolo">;
    /**
     * Represents the configuration for a virtual list box field in a form.
     *
     * @typedef VirtualListBoxConfig
     * @property virtualListBox - The value of the virtualListBox property.
     */
    virtualListBox?: PickProp<IField<Data, Payload>, "virtualListBox">;
    /**
     * Represents an optional readonly flag of a field.
     *
     * @typedef readonly
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Represents the "disabled" property of a field.
     *
     * @typedef disabled
     * @property value - Indicates whether the field is disabled or not.
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents a configuration option for disabling deselect functionality.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     * @typedef noDeselect
     */
    noDeselect?: PickProp<IField<Data, Payload>, "noDeselect">;
    /**
     * Type definition for the "title" property of an object.
     *
     * Suppose we have an object of type "IField<Data, Payload>". This type represents a field
     * in a form, where "Data" is the type of the form data and "Payload" is the type of data that
     * should be submitted when the form is submitted.
     *
     * The "PickProp" utility type is used to extract the "title" property from the "IField<Data, Payload>"
     * type. This variable represents the extracted type.
     *
     * @template Data - The type of the form data.
     * @template Payload - The type of the data to be submitted.
     *
     * @typedef PickProp<IField<Data, Payload>, "title">
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Represents the "tr" property of a field in the given data and payload.
     *
     * @template Data - The type of data.
     * @template Payload - The type of payload.
     * @typeParam IField - The type of field.
     * @typeParam PickProp - The type for picking properties.
     *
     * @property tr - The "tr" property of the field.
     */
    tr?: PickProp<IField<Data, Payload>, "tr">;
    /**
     * Retrieves the value of the 'groupRef' property from the given object 'fieldData'.
     *
     * @param fieldData - The object containing the 'groupRef' property.
     *
     * @returns - The value of the 'groupRef' property from 'fieldData', or undefined if it doesn't exist.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
    /**
     * Represents the optional "labelShrink" property of an object that implements the `IField<Data>` interface.
     * The "labelShrink" property is of type `PickProp<IField<Data>, "labelShrink">`, which picks the "labelShrink" property
     * from the `IField<Data>` interface.
     *
     * @typedef labelShrink
     */
    labelShrink?: PickProp<IField<Data>, "labelShrink">;
    /**
     * Represents a variable watchItemList.
     * @typedef watchItemList
     * @property watchItemList - The watchItemList property of type PickProp<IField<Data>, "watchItemList">
     */
    watchItemList?: PickProp<IField<Data>, "watchItemList">;
  }
  /**
   * Represents a private interface for an items field.
   *
   * @interface IItemsFieldPrivate
   * @template Data The type of data managed by the items field.
   */
  export interface IItemsFieldPrivate<Data = IAnything> {
    onChange: PickProp<IManaged<Data>, "onChange">;
    value: PickProp<IManaged<Data>, "value">;
    dirty: PickProp<IManaged<Data>, "dirty">;
    invalid: PickProp<IManaged<Data>, "invalid">;
    loading: PickProp<IManaged<Data>, "loading">;
    incorrect: PickProp<IManaged<Data>, "incorrect">;
    fieldReadonly: PickProp<IManaged<Data>, "fieldReadonly">;
    withContextMenu: PickProp<IManaged<Data>, "withContextMenu">;
  }
  /**
   * Renders a component for displaying a list of items.
   *
   * @param props - The properties for the ItemsField component.
   * @param props.value - The current value of the component.
   * @param [props.disabled=false] - Whether the component is disabled or not.
   * @param [props.readonly=false] - Whether the component is readonly or not.
   * @param [props.description] - The description for the component.
   * @param [props.placeholder] - The placeholder text for the component.
   * @param [props.outlined=false] - Whether the component is outlined or not.
   * @param [props.itemList=[]] - The list of items to display.
   * @param [props.freeSolo=false] - Whether the component allows free text input or not.
   * @param [props.virtualListBox=true] - Whether to use a virtual list box for efficiency or not.
   * @param [props.labelShrink] - Whether the label should shrink when there is a value or not.
   * @param [props.watchItemList] - A function to watch the itemList property for changes.
   * @param [props.noDeselect] - Whether to prevent deselecting an item or not.
   * @param [props.dirty] - Whether the component's value is dirty or not.
   * @param [props.invalid] - Whether the component's value is invalid or not.
   * @param [props.incorrect] - Whether the component's value is incorrect or not.
   * @param [props.title] - The title for the component.
   * @param [props.withContextMenu] - Whether to show a context menu for the component or not.
   * @param [props.tr=(s) => s.toString()] - A translation function for translating strings.
   * @param [props.onChange] - A callback function called when the component's value changes.
   *
   * @returns - The rendered Items component.
   */
  export const ItemsField: {
    ({
      value,
      disabled,
      readonly,
      description,
      placeholder,
      loading,
      outlined,
      itemList,
      freeSolo,
      virtualListBox,
      labelShrink,
      watchItemList,
      noDeselect,
      dirty,
      invalid,
      incorrect,
      title,
      fieldReadonly,
      withContextMenu,
      tr,
      onChange,
    }: IItemsFieldProps & IItemsFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/LineField" {
  import { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Represents the properties of a line field.
   * @template Data - The type of data for the field.
   * @template Payload - The type of payload for the field.
   */
  export interface ILineFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Retrieves the 'title' property from the provided object type with the specified properties.
     *
     * @template T - The object type from which to retrieve the property.
     * @template Key - The property key to pick from the object type.
     * @param obj - The object from which to pick the property.
     * @param key - The key of the property to be picked.
     * @returns The value of the specified property from the object type.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Retrieves the value of the 'lineTransparent' property from the provided object.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     * @typedef lineTransparent
     * @property lineTransparent - The value of the 'lineTransparent' property.
     */
    lineTransparent?: PickProp<IField<Data, Payload>, "lineTransparent">;
    /**
     * Represents a reference to a group of fields.
     *
     * @typedef groupRef
     *
     * @property fieldPath - The path to the group field within the form data structure.
     * @property [isRequired] - Indicates if the group field is required or optional.
     * @property [errorMessage] - The error message displayed when the group field is invalid.
     * @property [label] - The label displayed for the group field.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
  }
  /**
   * Renders a Line component with optional transparency and a title.
   *
   * @param props - The props for the LineField component.
   * @param props.title - The title for the Line component.
   * @param props.lineTransparent - Whether the Line component should be transparent.
   * @returns The rendered Line component.
   */
  export const LineField: {
    ({ title, lineTransparent }: ILineFieldProps): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/ProgressField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IField from "react-declarative/model/IField";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents the props for the ProgressField component.
   * @template Data - The type of data associated with the field.
   * @template Payload - The type of payload associated with the field.
   */
  export interface IProgressFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Maximum percentage value for a field.
     *
     * @typedef maxPercent
     */
    maxPercent?: PickProp<IField<Data, Payload>, "maxPercent">;
    /**
     * Determines whether to show the percent label.
     *
     * @typedef IField
     * @typedef Payload
     * @typedef PickProp
     *
     * @param showPercentLabel - The field containing the showPercentLabel property.
     * @returns - Whether to show the percent label.
     */
    showPercentLabel?: PickProp<IField<Data, Payload>, "showPercentLabel">;
    /**
     * Represents a reference to a group in a field.
     *
     * @typedef groupRef
     * @property [groupRef] - The group reference.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
  }
  /**
   * Represents a private progress field.
   * @template Data - The type of data associated with the field.
   */
  export interface IProgressFieldPrivate<Data = IAnything> {
    value: PickProp<IManaged<Data>, "value">;
  }
  /**
   * Represents a progress field component.
   *
   * @typedef ProgressField
   * @property maxPercent - The maximum percentage value for the progress field.
   * @property showPercentLabel - Determines if the percentage label should be displayed.
   * @property value - The current value of the progress field.
   *
   * @param props - The props object containing the properties required for the progress field.
   * @param props.maxPercent - The maximum percentage value for the progress field.
   * @param props.showPercentLabel - Determines if the percentage label should be displayed.
   * @param props.value - The current value of the progress field.
   *
   * @returns The rendered progress field component.
   */
  export const ProgressField: {
    ({
      maxPercent,
      showPercentLabel,
      value,
    }: IProgressFieldProps & IProgressFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/RadioField" {
  import IField from "react-declarative/model/IField";
  import IAnything from "react-declarative/model/IAnything";
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  /**
   * Interface for defining props of a radio field component.
   * @template Data - The data type.
   * @template Payload - The payload type.
   */
  export interface IRadioFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Type definition for the "title" property of an object.
     * It is a generic type that picks the "title" property from a given object type.
     *
     * @template IField - The object type from which to pick the "title" property.
     * @template Data - The data type of the object.
     * @template Payload - The payload type of the object.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Represents the radio value of a field.
     *
     * @typedef RadioValue
     */
    radioValue?: PickProp<IField<Data, Payload>, "radioValue">;
    /**
     * Represents a reference to a group in a field object.
     *
     * @typedef groupRef
     * @property groupRef - The reference to the group.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
    /**
     * Type definition for the "readonly" property of a field.
     *
     * @typedef ReadonlyProp
     *
     * @description
     * This property represents the "readonly" attribute of a field.
     * It is used to indicate whether a field is read-only or not.
     *
     * The value of this property is derived from the "IField" interface
     * in the "Data" module and the "Payload" type.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Represents the 'disabled' property of a field.
     *
     * The 'disabled' property determines whether a field is disabled or not. If set to true, the field will be disabled
     * and the user will not be able to interact with it.
     *
     * @template Data The type of data passed to the field.
     * @template Payload The type of payload received by the field.
     * @typedef PickProp
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
  }
  /**
   * Represents a private interface for a radio field.
   *
   * @template Data - the type of data the radio field manages
   */
  export interface IRadioFieldPrivate<Data = IAnything> {
    value: PickProp<IManaged<Data>, "value">;
    onChange: PickProp<IManaged<Data>, "onChange">;
    name?: PickProp<IManaged<Data>, "name">;
  }
  /**
   * RadioField component renders a radio input field with a label.
   *
   * @param props - The props object containing the following properties:
   * @param props.disabled - Determines whether the radio input field is disabled or not.
   * @param props.value - The value for the radio input field.
   * @param props.onChange - The callback function to be called when the value of the radio input field changes.
   * @param props.title - The title/label for the radio input field.
   * @param props.radioValue - The value associated with the radio input field.
   * @param [props.name=''] - The name attribute for the radio input field.
   *
   * @returns - The rendered RadioField component.
   */
  export const RadioField: {
    ({
      disabled,
      value,
      onChange,
      title,
      radioValue,
      readonly,
      name,
    }: IRadioFieldProps & IRadioFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/RatingField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Represents the properties for a rating field component.
   *
   * @template Data - The type of data for the field.
   * @template Payload - The type of payload for the field.
   */
  export interface IRatingFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Retrieves the 'readonly' property value of a given field.
     *
     * @param field - The field object to retrieve the property from.
     *
     * @return {PickProp<IField<Data, Payload>, "readonly">} - The value of the 'readonly' property.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Represents the groupRef property of the IField object.
     *
     * @typedef groupRef
     * @property [groupRef] - The reference to the group.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
    /**
     * Represents the disabled property of an input field.
     *
     * @typedef disabled
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
  }
  /**
   * Interface representing a private rating field.
   *
   * @template Data - The type of data associated with the field.
   */
  export interface IRatingFieldPrivate<Data = IAnything> {
    name?: string;
    value: PickProp<IManaged<Data>, "value">;
    readonly: PickProp<IManaged<Data>, "readonly">;
    onChange: PickProp<IManaged<Data>, "onChange">;
  }
  /**
   * Renders a Rating field component.
   *
   * @param props - The properties for the Rating field.
   * @param props.value - The current value of the Rating field.
   * @param props.disabled - Indicates if the Rating field is disabled.
   * @param props.readonly - Indicates if the Rating field is read-only.
   * @param props.name - The name of the Rating field.
   * @param props.onChange - The function to be called when the value of the Rating field changes.
   *
   * @returns The rendered Rating field component.
   */
  export const RatingField: {
    ({
      value,
      disabled,
      readonly,
      name,
      onChange,
    }: IRatingFieldProps & IRatingFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/SliderField" {
  import IField from "react-declarative/model/IField";
  import IAnything from "react-declarative/model/IAnything";
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  /**
   * Interface representing the properties of a Slider Field component.
   * @template Data - The data type used in the Field component.
   * @template Payload - The payload type used in the Field component.
   */
  export interface ISliderFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Represents the configuration for a step slider field.
     *
     * @typedef stepSlider
     * @property [propertyName] - The name of the property for this step slider field.
     * @property [label] - The label to display for this step slider field.
     * @property [minValue] - The minimum value for the step slider.
     * @property [maxValue] - The maximum value for the step slider.
     * @property [step] - The step interval for the step slider.
     * @property [unit] - The unit of measurement for the step slider.
     */
    stepSlider?: PickProp<IField<Data, Payload>, "stepSlider">;
    /**
     * The maximum value for a slider in a field of a data object payload.
     *
     * @typedef maxSlider
     * @property [maxSlider] - The maximum value for the slider. If not provided, there is no maximum limit.
     */
    maxSlider?: PickProp<IField<Data, Payload>, "maxSlider">;
    /**
     * The minimum value for a slider in a field.
     *
     * @property [minSlider] - The minimum value for a slider. If undefined, there is no minimum value.
     */
    minSlider?: PickProp<IField<Data, Payload>, "minSlider">;
    /**
     * Specifies the format for the labels of a slider component.
     *
     * @typedef labelFormatSlider
     * @property [labelFormatSlider.format] - The format string for the labels.
     */
    labelFormatSlider?: PickProp<IField<Data, Payload>, "labelFormatSlider">;
    /**
     * Retrieve the value of the 'leadingIconRipple' property from a given object.
     *
     * @param obj - The object which contains the 'leadingIconRipple' property.
     *
     * @returns The value of the 'leadingIconRipple' property.
     */
    leadingIconRipple?: PickProp<IField<Data, Payload>, "leadingIconRipple">;
    /**
     * The `trailingIconRipple` variable is an optional property that represents the ripple effect
     * configuration for the trailing icon in a field component. It is a pick property that is extracted
     * from the `trailingIconRipple` property of the `IField` interface.
     *
     * The `trailingIconRipple` property defines the behavior and appearance of the ripple effect when
     * interacting with the trailing icon.
     *
     * @typedef trailingIconRipple
     */
    trailingIconRipple?: PickProp<IField<Data, Payload>, "trailingIconRipple">;
    /**
     * Represents the leading icon of a field.
     *
     * @typedef leadingIcon
     */
    leadingIcon?: PickProp<IField<Data, Payload>, "leadingIcon">;
    /**
     * Sets the trailing icon of the field.
     *
     * @param trailingIcon - The trailing icon to be set for the field.
     */
    trailingIcon?: PickProp<IField<Data, Payload>, "trailingIcon">;
    /**
     * This variable represents an optional function called leadingIconClick, which is a property of the IField interface. It is picked from the PickProp type, using the 'leadingIconClick
     *' key.
     *
     * @typedef leadingIconClick
     */
    leadingIconClick?: PickProp<IField<Data, Payload>, "leadingIconClick">;
    /**
     * Represents the event handler for when the trailing icon of a field is clicked.
     * @typedef trailingIconClick
     */
    trailingIconClick?: PickProp<IField<Data, Payload>, "trailingIconClick">;
    /**
     * The color of the slider thumb.
     *
     * @typedef SliderThumbColor
     */
    sliderThumbColor?: PickProp<IField<Data, Payload>, "sliderThumbColor">;
    /**
     * The color of the slider track.
     *
     * @property [sliderTrackColor] - The color of the slider track. If not provided, a default color will be used.
     */
    sliderTrackColor?: PickProp<IField<Data, Payload>, "sliderTrackColor">;
    /**
     * Retrieves the value of the `sliderRailColor` property from the given object.
     *
     * @param input - The input object.
     * @returns - The value of the `sliderRailColor` property.
     */
    sliderRailColor?: PickProp<IField<Data, Payload>, "sliderRailColor">;
    /**
     * Represents the optional property 'groupRef' of an object of type `IField<Data, Payload>`.
     *
     * @typedef groupRef
     * @property [groupRef] - The group reference associated with the field.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
    /**
     * Retrieves the `readonly` property value from the provided object.
     *
     * @param obj - The object from which to retrieve the `readonly` property.
     * @returns - The value of the `readonly` property.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Represents the `disabled` property extracted from a field.
     *
     * @typedef DisabledValue
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    leadingIconTabIndex?: PickProp<
      IField<Data, Payload>,
      "leadingIconTabIndex"
    >;
    trailingIconTabIndex?: PickProp<
      IField<Data, Payload>,
      "trailingIconTabIndex"
    >;
  }
  /**
   * Represents a private interface for a slider field component.
   *
   * @template Data - The type of data associated with the slider field.
   * @interface ISliderFieldPrivate
   */
  export interface ISliderFieldPrivate<Data = IAnything> {
    value: PickProp<IManaged<Data>, "value">;
    onChange: PickProp<IManaged<Data>, "onChange">;
  }
  /**
   * Represents a slider field component.
   * @typedef SliderField
   * @param value - The current value of the slider.
   * @param onChange - A callback function to handle slider value changes.
   * @param leadingIconRipple - Determines if the leading icon should have a ripple effect when clicked.
   * @param trailingIconRipple - Determines if the trailing icon should have a ripple effect when clicked.
   * @param leadingIcon - The icon component to be displayed at the start of the slider.
   * @param trailingIcon - The icon component to be displayed at the end of the slider.
   * @param leadingIconClick - A callback function to handle click events on the leading icon.
   * @param trailingIconClick - A callback function to handle click events on the trailing icon.
   * @param stepSlider - The step value for the slider.
   * @param maxSlider - The maximum value for the slider.
   * @param minSlider - The minimum value for the slider.
   * @param labelFormatSlider - The format string for the label text of the slider.
   * @returns A Slider component with the specified properties.
   */
  export const SliderField: {
    ({
      value,
      onChange,
      leadingIconRipple,
      trailingIconRipple,
      leadingIcon,
      trailingIcon,
      leadingIconClick,
      trailingIconClick,
      stepSlider,
      maxSlider,
      minSlider,
      labelFormatSlider,
      leadingIconTabIndex,
      trailingIconTabIndex,
    }: ISliderFieldProps & ISliderFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/SwitchField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Represents the properties for a switch field component.
   *
   * @template Data - The type of data for the field.
   * @template Payload - The type of payload for the field.
   */
  export interface ISwitchFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Retrieves the value of the 'title' property from an object of type IField<Data, Payload>.
     *
     * @template Data - The type of the data contained in the field.
     * @template Payload - The type of the payload associated with the field.
     *
     * @param field - An object of type IField<Data, Payload>.
     *
     * @returns - The value of the 'title' property from the given field.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Retrieves the 'groupRef' property from an object based on the given type.
     *
     * @template Data - The type of data in the object containing the 'groupRef' property.
     * @template Payload - The type representing the payload of the 'groupRef' property.
     * @template IField - The interface describing the object structure.
     *
     * @param groupRef - The object containing the 'groupRef' property to retrieve.
     *
     * @returns - The 'groupRef' property from the given object.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
    /**
     * Represents the readonly property of an IField object.
     *
     * @typedef readonly?
     * @property [readonly] - Specifies whether the field is readonly or not.
     * @public
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Represents the 'disabled' property of a field in a form.
     *
     * @template Data The data type associated with the form.
     * @template Payload The payload type associated with the form.
     * @typedef disabled
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * The switchNoColor property of the Field interface.
     *
     * @typedef switchNoColor
     */
    switchNoColor?: PickProp<IField<Data, Payload>, "switchNoColor">;
    /**
     * Gets the value of the switchActiveLabel property from the given field.
     *
     * @param field - The field object from which to get the switchActiveLabel property.
     * @returns - The value of the switchActiveLabel property.
     */
    switchActiveLabel?: PickProp<IField<Data, Payload>, "switchActiveLabel">;
  }
  /**
   * Represents a private interface for a switch field.
   *
   * @template Data - The type of data associated with the switch field.
   */
  export interface ISwitchFieldPrivate<Data = IAnything> {
    onChange: PickProp<IManaged<Data>, "onChange">;
    value: PickProp<IManaged<Data>, "value">;
  }
  /**
   * Renders a Switch field component.
   *
   * @param props - The properties for the Switch field.
   * @param props.disabled - Indicates whether the Switch field is disabled.
   * @param props.value - The current value of the Switch field.
   * @param props.readonly - Indicates whether the Switch field is read-only.
   * @param props.onChange - The event handler for when the Switch field is changed.
   * @param props.switchNoColor - Indicates whether the Switch field has no color.
   * @param props.switchActiveLabel - The label for the active state of the Switch field.
   * @param props.title - The title of the Switch field.
   *
   * @returns A Switch component wrapped in a SwitchField component.
   */
  export const SwitchField: {
    ({
      disabled,
      value,
      readonly,
      onChange,
      switchNoColor,
      switchActiveLabel,
      title,
    }: ISwitchFieldProps & ISwitchFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/TextField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Represents the properties for a text field component.
   *
   * @template Data - The type of data associated with the field.
   * @template Payload - The type of payload associated with the field.
   */
  export interface ITextFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Validation factory config
     *
     * @template IField - Type representing the field object.
     * @template Data - Type representing the data object.
     * @template Payload - Type representing the payload object.
     *
     * @returns The value of the "validation" property.
     */
    validation?: PickProp<IField<Data, Payload>, "validation">;
    /**
     * Represents the input type of a field.
     *
     * @template Data - The type of data being handled by the field.
     * @template Payload - The type of payload associated with the field.
     *
     * @typedef inputType
     *
     * @property name - The name of the input type.
     * @property options - Additional options for the input type.
     */
    inputType?: PickProp<IField<Data, Payload>, "inputType">;
    /**
     * The inputMode variable is an optional property that represents the input mode of a field in a form.
     *
     * @typedef inputMode
     *
     * @property [inputMode] - The input mode of the field.
     */
    inputMode?: PickProp<IField<Data, Payload>, "inputMode">;
    /**
     * Represents the input pattern for a field in a data payload.
     *
     * @typedef inputPattern
     * @property [inputPattern.pattern] - The regular expression pattern that the input value of the field should match.
     */
    inputPattern?: PickProp<IField<Data, Payload>, "inputPattern">;
    /**
     * Represents an optional input autocomplete feature for a field.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     * @typedef InputAutocomplete
     * @property inputAutocomplete - Specifies whether the input should have autocomplete feature.
     */
    inputAutocomplete?: PickProp<IField<Data, Payload>, "inputAutocomplete">;
    /**
     * Represents the input formatter function for a specific field in the Data object.
     *
     * @template Data - The type of the data object.
     * @template Payload - The type of the payload object.
     * @param inputFormatter - The input formatter function for the field.
     */
    inputFormatter?: PickProp<IField<Data, Payload>, "inputFormatter">;
    /**
     * Specifies the input formatter symbol for a given field.
     *
     * @typedef inputFormatterSymbol
     */
    inputFormatterSymbol?: PickProp<
      IField<Data, Payload>,
      "inputFormatterSymbol"
    >;
    /**
     * Represents the allowed input formatters for a field.
     *
     * @typedef inputFormatterAllowed
     * @property allowedFormatters - An array of strings representing the allowed formatter names.
     */
    inputFormatterAllowed?: PickProp<
      IField<Data, Payload>,
      "inputFormatterAllowed"
    >;
    /**
     * Represents an input formatter template used in a field.
     *
     * @typedef InputFormatterTemplate
     */
    inputFormatterTemplate?: PickProp<
      IField<Data, Payload>,
      "inputFormatterTemplate"
    >;
    /**
     * Defines the input formatter replace configuration for a field.
     *
     * @typedef inputFormatterReplace
     * @property inputFormatterReplace.dataTransform - The function used to transform the input data before formatting.
     * @property inputFormatterReplace.payloadTransform - The function used to transform the payload before formatting.
     */
    inputFormatterReplace?: PickProp<
      IField<Data, Payload>,
      "inputFormatterReplace"
    >;
    /**
     * Returns the "description" property value of the given field object.
     *
     * @template IField - The type of the field object.
     * @template Data - The type of the data associated with the field.
     * @template Payload - The type of the payload object associated with the field.
     *
     * @param field - The field object from which to retrieve the "description" property.
     *
     * @returns The value of the "description" property.
     */
    description?: PickProp<IField<Data, Payload>, "description">;
    /**
     * Type definition to pick the `outlined` property from a given `IField` type.
     *
     * @template T - The type of the `IField` object.
     * @template K - The property to be picked from `IField`.
     */
    outlined?: PickProp<IField<Data, Payload>, "outlined">;
    /**
     * Type definition for the `title` property of an object.
     *
     * @template T - The type of the object from which to pick the property.
     * @template K - The literal type of the property name to pick.
     *
     * @typeparam T - The type of the object from which to pick the property.
     * @typeparam K - The literal type of the property name to pick.
     *
     * @param obj - The object from which to pick the property.
     *
     * @returns the value of the picked property.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Represents the configuration for the leading icon ripple effect.
     *
     * @typedef LeadingIconRipple
     * @property leadingIconRipple.enable - Indicates whether the leading icon ripple effect is enabled.
     * @property leadingIconRipple.duration - The duration of the leading icon ripple effect in milliseconds.
     */
    leadingIconRipple?: PickProp<IField<Data, Payload>, "leadingIconRipple">;
    /**
     * Represents the option to enable or disable the trailing icon ripple effect.
     * @property trailingIconRipple - Set to true to enable the trailing icon ripple effect,
     *     or false to disable it
     */
    trailingIconRipple?: PickProp<IField<Data, Payload>, "trailingIconRipple">;
    /**
     * The leadingIcon property represents the leading icon of a field.
     *
     * @typedef leadingIcon
     * @property [icon] - The icon to be displayed as the leading icon.
     * @property [isVisible] - Indicates if the leading icon is visible.
     */
    leadingIcon?: PickProp<IField<Data, Payload>, "leadingIcon">;
    /**
     * Represents the trailing icon configuration for a field.
     *
     * @typedef trailingIcon
     * @property icon - The path or class name of the trailing icon.
     * @property isVisible - Indicates whether the trailing icon is visible or hidden.
     * @property onClick - The event handler function to be executed when the trailing icon is clicked.
     */
    trailingIcon?: PickProp<IField<Data, Payload>, "trailingIcon">;
    /**
     * Represents the leading icon click event handler for a field in a form.
     *
     * @typedef leadingIconClick
     * @param leadingIconClick - The leadingIconClick prop of the field.
     * @returns - Nothing is returned from this function.
     */
    leadingIconClick?: PickProp<IField<Data, Payload>, "leadingIconClick">;
    /**
     * The `trailingIconClick` property is an optional property
     * that represents a callback function to be executed when
     * the trailing icon of a field is clicked.
     *
     * This property is of type `PickProp<IField<Data, Payload>, "trailingIconClick">`,
     * where `IField<Data, Payload>` is a generic type representing a field with
     * `Data` and `Payload` types.
     *
     * @typedef trailingIconClick
     *
     * @param args - The arguments passed to the callback function.
     * @returns
     */
    trailingIconClick?: PickProp<IField<Data, Payload>, "trailingIconClick">;
    /**
     * Represents the number of input rows required for a field.
     *
     * @typedef InputRows
     */
    inputRows?: PickProp<IField<Data, Payload>, "inputRows">;
    /**
     * A type definition representing the `placeholder` property of a given field.
     *
     * @template Data - The type of the field data.
     * @template Payload - The type of the payload for the field.
     * @template T - The type of the field.
     *
     * @typedef T
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Gets the value of the "readonly" property from the provided object.
     *
     * @template T - The type of the object that contains the "readonly" property.
     * @template Prop - The type of the "readonly" property.
     * @param object - The object to get the "readonly" property from.
     * @returns - The value of the "readonly" property.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Specifies if the field should be automatically focused.
     *
     * @typedef autoFocus
     * @property [autoFocus] - Indicates if the field should receive focus automatically.
     * @property - The interface that describes the field containing the autoFocus property.
     *
     */
    autoFocus?: PickProp<IField<Data, Payload>, "autoFocus">;
    /**
     * Represents the `disabled` property of a field in a form.
     *
     * @typedef Disabled
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents the reference to a group in a field.
     *
     * @typedef GroupRef
     * @property groupRef - The reference to the group.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
    /**
     * Represents the input reference property of a field.
     *
     * @typedef InputRef
     * @property current - A reference to the input element.
     */
    inputRef?: PickProp<IField<Data, Payload>, "inputRef">;
    /**
     * Shrink option for labels.
     *
     * @typedef labelShrink
     * @property labelShrink - Whether to apply shrink option to labels.
     */
    labelShrink?: PickProp<IField<Data, Payload>, "labelShrink">;
    leadingIconTabIndex?: PickProp<
      IField<Data, Payload>,
      "leadingIconTabIndex"
    >;
    trailingIconTabIndex?: PickProp<
      IField<Data, Payload>,
      "trailingIconTabIndex"
    >;
  }
  /**
   * Represents a private interface for an input field.
   *
   * @template Data - The type of data managed by the input field.
   */
  export interface ITextFieldPrivate<Data = IAnything> {
    onChange: PickProp<IManaged<Data>, "onChange">;
    invalid: PickProp<IManaged<Data>, "invalid">;
    incorrect: PickProp<IManaged<Data>, "incorrect">;
    value: PickProp<IManaged<Data>, "value">;
    loading: PickProp<IManaged<Data>, "loading">;
    disabled: PickProp<IManaged<Data>, "disabled">;
    dirty: PickProp<IManaged<Data>, "dirty">;
    name: PickProp<IManaged<Data>, "name">;
  }
  /**
   * TextField component
   *
   * @typedef TextField
   * @param invalid - Indicates if the input value is invalid
   * @param incorrect - Indicates if the input value is incorrect
   * @param value - The current value of the input field
   * @param disabled - Indicates if the input field is disabled
   * @param readonly - Indicates if the input field is read-only
   * @param inputType - The type of input field (default: "text")
   * @param description - The description or helper text for the input field
   * @param outlined - Indicates if the input field is outlined
   * @param labelShrink - Indicates if the label should shrink when focused
   * @param title - The title or tooltip for the input field
   * @param leadingIconRipple - Indicates if clicking the leading icon should trigger a ripple effect
   * @param trailingIconRipple - Indicates if clicking the trailing icon should trigger a ripple effect
   * @param leadingIcon - The icon component to display at the start of the input field
   * @param trailingIcon - The icon component to display at the end of the input field
   * @param leadingIconClick - The function to call when the leading icon is clicked
   * @param trailingIconClick - The function to call when the trailing icon is clicked
   * @param inputRows - The number of rows for a textarea input field (default: 1)
   * @param placeholder - The placeholder text for the input field
   * @param inputAutocomplete - The autocomplete behavior for the input field (default: "off")
   * @param inputFormatter - A function used to format the input value
   * @param inputFormatterSymbol - The symbol or character used in the input formatter
   * @param inputFormatterAllowed - The list of allowed characters in the input formatter
   * @param inputFormatterTemplate - A template string used in the input formatter
   * @param dirty - Indicates if the input value has been modified
   * @param loading - Indicates if the input field is in a loading state
   * @param onChange - The function to call when the input value changes
   * @param autoFocus - Indicates if the input field should be automatically focused
   * @param inputRef - The reference to the input element
   * @param name - The name of the input field
   * @returns - The TextField component
   */
  export const TextField: {
    ({
      invalid,
      incorrect,
      value,
      disabled,
      readonly,
      inputType,
      description,
      outlined,
      labelShrink,
      title,
      leadingIconRipple,
      trailingIconRipple,
      leadingIcon,
      trailingIcon,
      leadingIconClick,
      trailingIconClick,
      inputRows,
      placeholder,
      inputAutocomplete,
      inputFormatter,
      inputFormatterSymbol,
      inputFormatterAllowed,
      inputFormatterTemplate,
      dirty,
      loading,
      onChange,
      autoFocus,
      inputRef,
      name,
      leadingIconTabIndex,
      trailingIconTabIndex,
    }: ITextFieldProps & ITextFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/DateField" {
  import IField from "react-declarative/model/IField";
  import IAnything from "react-declarative/model/IAnything";
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  /**
   * Represents the properties of a date field component.
   *
   * @template Data - The type of data associated with the field.
   * @template Payload - The type of payload associated with the field.
   */
  export interface IDateFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Validation factory config
     *
     * @template IField - Type representing the field object.
     * @template Data - Type representing the data object.
     * @template Payload - Type representing the payload object.
     *
     * @returns The value of the "validation" property.
     */
    validation?: PickProp<IField<Data, Payload>, "validation">;
    /**
     * Retrieves the value of the "title" property from the given object.
     *
     * @template T - The type of the object.
     * @template K - The keys of the object.
     * @param obj - The object from which to retrieve the property value.
     * @param key - The key of the property to retrieve.
     * @returns - The value of the "title" property.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Retrieves the "description" property from a given object of type IField<Data, Payload>.
     * @param field - The input field object.
     * @returns - The value of the "description" property.
     */
    description?: PickProp<IField<Data, Payload>, "description">;
    /**
     * Picks the 'outlined' property from the IField<Data, Payload> object.
     *
     * @template Data - The type of data in the IField object.
     * @template Payload - The type of payload in the IField object.
     * @param field - The IField object to pick the 'outlined' property from.
     * @returns - The 'outlined' property value.
     */
    outlined?: PickProp<IField<Data, Payload>, "outlined">;
    /**
     * Represents the `placeholder` property of a field.
     *
     * @template Data - The type of the field's data.
     * @template Payload - The type of the field's payload.
     * @template Prop - The specific property of the field.
     *
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Retrieves the value of the readonly property from a given field object.
     *
     * @template Data - The data type of the field.
     * @template Payload - The payload that may be associated with the field.
     * @param field - The field object from which to retrieve the readonly property.
     * @returns - The value of the readonly property, or undefined if the property is not present.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Shrink the label of a field.
     *
     * @typedef labelShrink
     * @property [labelShrink] - Specifies whether to shrink the label of the field.
     */
    labelShrink?: PickProp<IField<Data>, "labelShrink">;
    /**
     * Represents the autoFocus property of a field.
     *
     * @typedef autoFocus
     * @property [autoFocus] - If set to true, the field will automatically receive focus when rendered.
     */
    autoFocus?: PickProp<IField<Data, Payload>, "autoFocus">;
    /**
     * Represents the `disabled` property of a field.
     *
     * @typedef DisabledField
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents an optional reference to the input element within a field.
     *
     * @typedef Data - The data type of the field.
     * @typedef Payload - The payload type of the field.
     * @typedef PickPropResult - The result type of the PickProp function.
     *
     * @property [inputRef] - The reference to the input element within a field.
     */
    inputRef?: PickProp<IField<Data, Payload>, "inputRef">;
  }
  /**
   * Represents a private interface for a date field.
   * @template Data - The type of data managed by the field.
   */
  export interface IDateFieldPrivate<Data = IAnything> {
    onChange: PickProp<IManaged<Data>, "onChange">;
    invalid: PickProp<IManaged<Data>, "invalid">;
    incorrect: PickProp<IManaged<Data>, "incorrect">;
    value: PickProp<IManaged<Data>, "value">;
    disabled: PickProp<IManaged<Data>, "disabled">;
    dirty: PickProp<IManaged<Data>, "dirty">;
    name: PickProp<IManaged<Data>, "name">;
    withContextMenu: PickProp<IManaged<Data>, "withContextMenu">;
  }
  /**
   * Represents a DateField component.
   *
   * @typedef DateField
   * @param invalid - Specifies whether the date field is invalid.
   * @param incorrect - Specifies whether the date field has an incorrect value.
   * @param value - The value of the date field.
   * @param disabled - Specifies whether the date field is disabled.
   * @param readonly - Specifies whether the date field is readonly.
   * @param description - The description of the date field.
   * @param outlined - Specifies whether the date field is outlined.
   * @param title - The title of the date field.
   * @param placeholder - The placeholder of the date field.
   * @param labelShrink - Specifies whether the label should shrink when the date field value is not empty.
   * @param dirty - Specifies whether the date field has been modified.
   * @param autoFocus - Specifies whether the date field should automatically receive focus.
   * @param inputRef - A ref for the date field input element.
   * @param onChange - The event handler for when the value of the date field changes.
   * @param withContextMenu - Specifies whether the date field should have a context menu.
   * @param name - The name of the date field.
   * @return - The Date component with the specified props.
   */
  export const DateField: {
    ({
      invalid,
      incorrect,
      value,
      disabled,
      readonly,
      description,
      outlined,
      title,
      placeholder,
      labelShrink,
      dirty,
      autoFocus,
      inputRef,
      onChange,
      withContextMenu,
      name,
    }: IDateFieldPrivate & IDateFieldProps): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/TimeField" {
  import IField from "react-declarative/model/IField";
  import IAnything from "react-declarative/model/IAnything";
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  /**
   * A set of properties for the `TimeField` component.
   *
   * @template Data - The type of data expected to be stored in the field.
   * @template Payload - The type of payload expected to be returned on field change.
   */
  export interface ITimeFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Validation factory config
     *
     * @template IField - Type representing the field object.
     * @template Data - Type representing the data object.
     * @template Payload - Type representing the payload object.
     *
     * @returns The value of the "validation" property.
     */
    validation?: PickProp<IField<Data, Payload>, "validation">;
    /**
     * Retrieves the value of the "title" property from the given object.
     *
     * @template T - The type of the object.
     * @template K - The key of the property to be picked.
     * @param obj - The object from which to pick the property.
     * @param key - The key of the property to pick.
     * @returns - The value of the picked property.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Returns the "description" property value of the given object.
     * The object must be of type IField<Data, Payload>.
     *
     * @param object - The object to pick the "description" property from.
     * @returns - The value of the "description" property.
     */
    description?: PickProp<IField<Data, Payload>, "description">;
    /**
     * Returns the value of the "outlined" property for the given field.
     *
     * @template Data - The type of data consumed by the field.
     * @template Payload - The type of payload.
     * @param field - The field to pick the "outlined" property from.
     * @returns The value of the "outlined" property.
     */
    outlined?: PickProp<IField<Data, Payload>, "outlined">;
    /**
     * Retrieves the `placeholder` property from an object `IField<Data, Payload>`.
     *
     * @template Data - The type of data for the field.
     * @template Payload - The type of payload.
     *
     * @param field - The field object from which to retrieve the `placeholder` property.
     *
     * @returns - The `placeholder` property of the field object.
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Retrieves the value of the "readonly" property from a given object that has a specific structure.
     *
     * @param field - The input object with a specific structure.
     * @returns The value of the "readonly" property from the input object.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Represents the "autoFocus" property of a field.
     *
     * @typedef autoFocus
     * @property [autoFocus] - Whether the field should receive focus automatically.
     */
    autoFocus?: PickProp<IField<Data, Payload>, "autoFocus">;
    /**
     * Retrieves the "disabled" property from an object of type `IField<Data, Payload>`.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     * @param disabled - The object from which to retrieve the "disabled" property.
     * @returns - The value of the "disabled" property.
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents a reference to an input element.
     *
     * @typedef InputRef
     * @property [inputRef] - The inputRef property of an IField object.
     */
    inputRef?: PickProp<IField<Data, Payload>, "inputRef">;
    /**
     * Represents the shrink property of the label in a field.
     * @typedef labelShrink
     */
    labelShrink?: PickProp<IField<Data>, "labelShrink">;
  }
  /**
   * Represents a private interface for the TimeField component.
   *
   * @template Data The type of data associated with the TimeField component.
   */
  export interface ITimeFieldPrivate<Data = IAnything> {
    onChange: PickProp<IManaged<Data>, "onChange">;
    invalid: PickProp<IManaged<Data>, "invalid">;
    incorrect: PickProp<IManaged<Data>, "incorrect">;
    value: PickProp<IManaged<Data>, "value">;
    disabled: PickProp<IManaged<Data>, "disabled">;
    dirty: PickProp<IManaged<Data>, "dirty">;
    name: PickProp<IManaged<Data>, "name">;
    withContextMenu: PickProp<IManaged<Data>, "withContextMenu">;
  }
  /**
   * Represents a TimeField component.
   * @param TimeField - The TimeField component.
   * @param invalid - Determines if the field is invalid.
   * @param incorrect - Determines if the field has an incorrect value.
   * @param value - The current value of the field.
   * @param disabled - Determines if the field is disabled.
   * @param readonly - Determines if the field is readonly.
   * @param labelShrink - Determines if the label should shrink when the field has a value.
   * @param description - The description of the field.
   * @param outlined - Determines if the field should be outlined.
   * @param title - The title attribute of the field.
   * @param placeholder - The placeholder attribute of the field.
   * @param dirty - Determines if the field's value has changed.
   * @param autoFocus - Determines if the field should be focused automatically.
   * @param inputRef - The ref of the input element.
   * @param onChange - The event handler for the change event.
   * @param name - The name attribute of the field.
   * @param withContextMenu - Determines if the field should have a context menu.
   * @returns - The rendered TimeField component.
   */
  export const TimeField: {
    ({
      invalid,
      incorrect,
      value,
      disabled,
      readonly,
      labelShrink,
      description,
      outlined,
      title,
      placeholder,
      dirty,
      autoFocus,
      inputRef,
      onChange,
      name,
      withContextMenu,
    }: ITimeFieldPrivate & ITimeFieldProps): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/CompleteField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Interface for specifying the props of a complete field.
   * @template Data, Payload - The types of data and payload.
   */
  export interface ICompleteFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Validation factory config
     *
     * @template IField - Type representing the field object.
     * @template Data - Type representing the data object.
     * @template Payload - Type representing the payload object.
     *
     * @returns The value of the "validation" property.
     */
    validation?: PickProp<IField<Data, Payload>, "validation">;
    /**
     * Represents the input type of a field.
     *
     * @template Data The type of data associated with the field.
     * @template Payload The type of payload associated with the field.
     * @typedef inputType
     *
     * @property inputType - The type of input for the field.
     */
    inputType?: PickProp<IField<Data, Payload>, "inputType">;
    /**
     * Represents the input mode of a field in the data object payload.
     *
     * @typedef inputMode
     * @property inputMode - The input mode of the field.
     */
    inputMode?: PickProp<IField<Data, Payload>, "inputMode">;
    /**
     * Represents the input pattern of a field.
     *
     * @typedef inputPattern
     * @property [inputPattern.prop1] - The first property of the input pattern.
     * @property [inputPattern.prop2] - The second property of the input pattern.
     *
     * @typedef IField
     * @typedef Data
     * @typedef Payload
     * @typedef PickProp
     */
    inputPattern?: PickProp<IField<Data, Payload>, "inputPattern">;
    /**
     * Represents the optional prop "inputAutocomplete" for a field.
     *
     * @typedef PickProp
     * @property _field - The field to pick the prop from.
     * @property _prop - The name of the prop to pick.
     *
     * @param inputAutocomplete - The value of the "inputAutocomplete" prop.
     *
     * @returns
     */
    inputAutocomplete?: PickProp<IField<Data, Payload>, "inputAutocomplete">;
    /**
     * Retrieves the "description" property from a given object and its nested properties if available.
     *
     * @template T - The type of the object to pick the "description" property from.
     * @template K - The keys of the properties in T.
     * @param obj - The object to pick the "description" property from.
     * @returns - The picked object with "description" property.
     */
    description?: PickProp<IField<Data, Payload>, "description">;
    /**
     * Reduces the size of the label for a given field.
     *
     * @param labelShrink - The label shrink configuration for a field.
     * @returns
     */
    labelShrink?: PickProp<IField<Data>, "labelShrink">;
    /**
     * Represents the value of the `keepRaw` property, which indicates whether to keep the raw data in a field.
     *
     * @template Data - The data type of the field.
     * @template Payload - The payload type of the field.
     *
     * @typedef KeepRaw
     * @property keepRaw - Indicates whether to keep the raw data.
     */
    keepRaw?: PickProp<IField<Data, Payload>, "keepRaw">;
    /**
     * Returns the value of the `outlined` property from the provided object.
     *
     * @template T - The type of the object.
     * @template K - The keyof `T` representing the property to pick.
     *
     * @param obj - The object from which to pick the property.
     * @param field - The key representing the property to pick.
     *
     * @returns - The value of the picked property.
     */
    outlined?: PickProp<IField<Data, Payload>, "outlined">;
    /**
     * Type definition for the "title" property picked from the "IField" object type,
     * where "IField" is a generic object with properties "Data" and "Payload".
     * The resulting type is determined by the "PickProp" utility, which selects the specific property
     * from the provided object type.
     *
     * @template IField - The generic object type with properties "Data" and "Payload".
     * @template Data - The data type of the "IField" object.
     * @template Payload - The payload type of the "IField" object.
     * @template Key - The specific property key to pick from the "IField" object.
     * @typedef PickProp
     * @property object - The object from which the property is picked.
     * @property prop - The specific property key to pick.
     * @returns The type of the picked property.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Represents the "tip" property of an object.
     *
     * @template T - The type of the object.
     * @template K - The key of the property to pick.
     * @typedef PickProp
     */
    tip?: PickProp<IField<Data, Payload>, "tip">;
    /**
     * Represents a variable that holds the value of the "tipSelect" property.
     *
     * @typedef TipSelect
     * @property IField - Represents a generic field object.
     * @property Data - Represents the generic data type.
     * @property Payload - Represents the generic payload type.
     * @property tipSelect - The value of the "tipSelect" property.
     */
    tipSelect?: PickProp<IField<Data, Payload>, "tipSelect">;
    /**
     * Retrieves the `placeholder` property of a given field.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     * @template Field - The type of field.
     *
     * @typedef PickProp - A utility type for picking properties from a type.
     * @param field - The field to pick the `placeholder` property from.
     *
     * @returns - The `placeholder` property of the given field, if present. Otherwise, `undefined`.
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Retrieves the "readonly" property from the provided field object.
     *
     * @param field - The field object.
     * @returns - The value of the "readonly" property.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Specifies whether the field should be automatically focused.
     *
     * @typedef autoFocus
     */
    autoFocus?: PickProp<IField<Data, Payload>, "autoFocus">;
    /**
     * Represents the "disabled" property of a field.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload for the field's actions.
     *
     * @typedef DisabledProp
     *
     * @property disabled - Specifies whether the field is disabled.
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents a reference to a group within a field.
     *
     * @typedef GroupRef
     * @property groupRef - The identifier of the group.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
    /**
     * Represents the input reference of a field.
     *
     * @typedef InputRef
     * @property inputRef - The reference to the input element.
     *
     */
    inputRef?: PickProp<IField<Data, Payload>, "inputRef">;
    /**
     * Represents the input formatter property of a field within a specific data type.
     *
     * @template Data - The data type containing the field.
     * @template Payload - The payload type containing the data.
     */
    inputFormatter?: PickProp<IField<Data, Payload>, "inputFormatter">;
    /**
     * Represents the input formatter symbol for a specific field.
     */
    inputFormatterSymbol?: PickProp<
      IField<Data, Payload>,
      "inputFormatterSymbol"
    >;
    /**
     * Determines whether input formatting is allowed for a given field.
     *
     * @typedef inputFormatterAllowed
     * @property inputFormatterAllowed - Specifies if input formatting is allowed.
     */
    inputFormatterAllowed?: PickProp<
      IField<Data, Payload>,
      "inputFormatterAllowed"
    >;
    /**
     * Represents a template for formatting input data.
     *
     */
    inputFormatterTemplate?: PickProp<
      IField<Data, Payload>,
      "inputFormatterTemplate"
    >;
    /**
     * Replaces the input formatter of a field with a new one.
     *
     * @template Data The data type of the field.
     * @template Payload The payload type of the field.
     *
     * @param inputFormatterReplace The object containing the "inputFormatterReplace" property.
     *
     */
    inputFormatterReplace?: PickProp<
      IField<Data, Payload>,
      "inputFormatterReplace"
    >;
  }
  /**
   * Represents a private interface for a complete field.
   *
   * @template Data - The type of the field's data.
   */
  export interface ICompleteFieldPrivate<Data = IAnything> {
    onChange: PickProp<IManaged<Data>, "onChange">;
    invalid: PickProp<IManaged<Data>, "invalid">;
    incorrect: PickProp<IManaged<Data>, "incorrect">;
    value: PickProp<IManaged<Data>, "value">;
    loading: PickProp<IManaged<Data>, "loading">;
    disabled: PickProp<IManaged<Data>, "disabled">;
    readonly: PickProp<IManaged<Data>, "readonly">;
    fieldReadonly: PickProp<IManaged<Data>, "fieldReadonly">;
    dirty: PickProp<IManaged<Data>, "dirty">;
    name: PickProp<IManaged<Data>, "name">;
    withContextMenu: PickProp<IManaged<Data>, "withContextMenu">;
  }
  /**
   * A wrapper component for the Complete component.
   *
   * @param props - The props for the CompleteField component.
   * @param props.invalid - Determines whether the field is in an invalid state.
   * @param props.incorrect - Determines whether the field has incorrect data.
   * @param props.value - The current value of the field.
   * @param props.disabled - Determines whether the field is disabled.
   * @param props.readonly - Determines whether the field is read-only.
   * @param props.inputType - The type of the input field.
   * @param props.description - The description of the field.
   * @param props.outlined - Determines whether the field is outlined.
   * @param props.keepRaw - Determines whether the raw value should be kept.
   * @param props.title - The title of the field.
   * @param props.labelShrink - The label shrink value.
   * @param props.tip - The tip for the field.
   * @param props.tipSelect - The tip for the select field.
   * @param props.placeholder - The placeholder text for the input field.
   * @param props.inputAutocomplete - The autocomplete attribute for the input field.
   * @param props.dirty - The dirty value of the field.
   * @param props.loading - Determines whether the field is in a loading state.
   * @param props.onChange - The callback function for the field value change event.
   * @param props.autoFocus - Determines whether the field should be auto-focused.
   * @param props.inputRef - The reference to the input field.
   * @param props.name - The name of the field.
   * @param props.inputFormatter - The input formatter for the field.
   * @param props.inputFormatterAllowed - The allowed values for the input formatter.
   * @param props.inputFormatterReplace - The values to replace in the input formatter.
   * @param props.inputFormatterSymbol - The symbol for the input formatter.
   * @param props.inputFormatterTemplate - The template for the input formatter.
   * @param props.withContextMenu - Determines whether the field should have a context menu.
   * @returns The rendered CompleteField component.
   */
  export const CompleteField: {
    ({
      invalid,
      incorrect,
      value,
      disabled,
      readonly,
      inputType,
      description,
      outlined,
      keepRaw,
      title,
      labelShrink,
      tip,
      tipSelect,
      placeholder,
      inputAutocomplete,
      dirty,
      loading,
      onChange,
      autoFocus,
      inputRef,
      name,
      inputFormatter,
      inputFormatterAllowed,
      inputFormatterReplace,
      inputFormatterSymbol,
      inputFormatterTemplate,
      fieldReadonly,
      withContextMenu,
    }: ICompleteFieldProps & ICompleteFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/TypographyField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Interface for props of the TypographyField component.
   *
   * @template Data - The data type of the field.
   * @template Payload - The payload type of the field.
   */
  export interface ITypographyFieldProps<
    Data = IAnything,
    Payload = IAnything,
  > {
    /**
     * Retrieves the `placeholder` property from the given `IField` object.
     * The `placeholder` property is a key of type `PickProp`.
     *
     * @param field - The input field object.
     * @returns - The `placeholder` property of the field object.
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Represents the `typoVariant` property of an object.
     * @typedef TypoVariant
     * @property - The object from which the `typoVariant` property is picked.
     * @property - The name of the property being picked.
     * @property - The value of the `typoVariant` property.
     */
    typoVariant?: PickProp<IField<Data, Payload>, "typoVariant">;
    /**
     * Gets the value of the className property from the provided object.
     *
     * This function uses the PickProp type from the IField interface to pick the 'className' property
     * from the provided object based on the Data and Payload generic types.
     *
     * @template Data - The type of the data in the IField interface.
     * @template Payload - The type of the payload in the IField interface.
     * @param obj - The object from which to get the className property.
     * @returns The value of the className property, or undefined if it doesn't exist.
     */
    className?: PickProp<IField<Data, Payload>, "className">;
    /**
     * Retrieves the 'style' property of the given variable, using the 'PickProp' utility type.
     *
     * @template Data - The type of the field's data.
     * @template Payload - The type of the field's payload.
     * @template T - The type of the variable to pick property from.
     */
    style?: PickProp<IField<Data, Payload>, "style">;
    /**
     * Represents a reference to a group in a field.
     * This reference is optional.
     *
     * @typedef groupRef
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
  }
  /**
   * Represents a private interface for a typography field.
   *
   * @template Data - The type of data the field holds.
   */
  export interface ITypographyFieldPrivate<Data = IAnything> {
    value: PickProp<IManaged<Data>, "value">;
  }
  /**
   * Renders a typography field component.
   *
   * @param props - The props for the typography field.
   * @param [props.value=''] - The value of the typography field.
   * @param [props.placeholder=''] - The placeholder text for the typography field.
   * @param [props.typoVariant='body1'] - The typography variant for the field.
   * @param [props.style] - Additional styles to be applied to the field.
   * @returns - The rendered typography field component.
   */
  export const TypographyField: {
    ({
      value,
      placeholder,
      typoVariant,
      style,
    }: ITypographyFieldProps & ITypographyFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/ChooseField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Props for the IChooseField component.
   *
   * @template Data - The data type of the field.
   * @template Payload - The payload type of the field.
   */
  export interface IChooseFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Validation factory config
     *
     * @template IField - Type representing the field object.
     * @template Data - Type representing the data object.
     * @template Payload - Type representing the payload object.
     *
     * @returns The value of the "validation" property.
     */
    validation?: PickProp<IField<Data, Payload>, "validation">;
    /**
     * Retrieves the "description" property from the given object.
     *
     * @template IField - Type representing the field object.
     * @template Data - Type representing the data object.
     * @template Payload - Type representing the payload object.
     *
     * @param obj - The object from which to pick the "description" property.
     *
     * @returns The value of the "description" property.
     */
    description?: PickProp<IField<Data, Payload>, "description">;
    /**
     * Type definition for the `PickProp` function.
     *
     * @template T - The type of the object to pick properties from.
     * @template K - The keys to pick from the object.
     */
    outlined?: PickProp<IField<Data, Payload>, "outlined">;
    /**
     * Type definition for the `title` property when using `PickProp` utility.
     * @template T - The type of the object from which to pick the property.
     * @template Prop - The name of the property to pick.
     * @param obj - The object from which to pick the property.
     * @param prop - The name of the property to pick.
     * @returns - The picked property value.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Type definition for a generic placeholder value.
     * @typedef Placeholder
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Represents the configuration for label shrinking in a field.
     *
     * @typedef LabelShrink
     */
    labelShrink?: PickProp<IField<Data>, "labelShrink">;
    /**
     * A variable that represents the `readonly` property of a field.
     *
     * @typedef readonly? - The `readonly` property of a field.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Type definition for the "disabled" property of a field.
     *
     * This type is used to define the "disabled" property of a field from an object type "Data"
     * and a type "Payload" using the PickProp utility type.
     *
     * @template Data - The type representing the object structure.
     * @template Payload - The type representing the additional properties of the field.
     * @typedef disabled
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * A reference to the group that the field belongs to.
     *
     * @typedef groupRef
     *
     * @property id - The unique identifier of the group.
     * @property name - The name of the group.
     * @property description - The description of the group.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
    /**
     * This variable represents the `inputRef` property of type `PickProp<IField<Data, Payload>, 'inputRef'>`.
     * It is an optional property, which means it may be undefined.
     *
     * @typedef InputRef
     */
    inputRef?: PickProp<IField<Data, Payload>, "inputRef">;
    /**
     * Type definition for the 'choose' property of IField.
     *
     * @template Data - The data type of the field.
     * @template Payload - The data payload for the field.
     */
    choose?: PickProp<IField<Data, Payload>, "choose">;
    /**
     * Represents a possible translation for a field in a form.
     *
     * @typedef tr
     * @property type - The type of translation.
     * @property required - Indicates if the translation is required.
     * @property options - The list of available translation options.
     * @property defaultValue - The default translation value.
     */
    tr?: PickProp<IField<Data, Payload>, "tr">;
  }
  /**
   * Represents an interface for choosing private fields.
   *
   * @template Data - The type of data for the private fields.
   */
  export interface IChooseFieldPrivate<Data = IAnything> {
    onChange: PickProp<IManaged<Data>, "onChange">;
    invalid: PickProp<IManaged<Data>, "invalid">;
    incorrect: PickProp<IManaged<Data>, "incorrect">;
    value: PickProp<IManaged<Data>, "value">;
    loading: PickProp<IManaged<Data>, "loading">;
    disabled: PickProp<IManaged<Data>, "disabled">;
    dirty: PickProp<IManaged<Data>, "dirty">;
    name: PickProp<IManaged<Data>, "name">;
    withContextMenu: PickProp<IManaged<Data>, "withContextMenu">;
  }
  /**
   * Represents the ChooseField component.
   * @param options - The options for the ChooseField component.
   * @returns The rendered ChooseField component.
   */
  export const ChooseField: {
    ({
      invalid,
      value,
      disabled,
      readonly,
      incorrect,
      description,
      outlined,
      title,
      placeholder,
      labelShrink,
      choose,
      tr,
      dirty,
      loading,
      onChange,
      inputRef,
      name,
      withContextMenu,
    }: IChooseFieldProps & IChooseFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/YesNoField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Interface representing the props for the YesNoField component.
   *
   * @template Data - The type of the data.
   * @template Payload - The type of the payload.
   */
  export interface IYesNoFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Validation factory config
     *
     * @template IField - Type representing the field object.
     * @template Data - Type representing the data object.
     * @template Payload - Type representing the payload object.
     *
     * @returns The value of the "validation" property.
     */
    validation?: PickProp<IField<Data, Payload>, "validation">;
    /**
     * Picks the "description" property from a given object of type IField<Data, Payload>.
     *
     * @template Data - The type of the data associated with the field.
     * @template Payload - The type of the payload associated with the field.
     * @param field - The field object from which to pick the "description" property.
     * @returns - The picked "description" property.
     */
    description?: PickProp<IField<Data, Payload>, "description">;
    /**
     * Retrieves the "placeholder" property of the provided PickProp type, which is a property value of type string.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     * @template T - The type of the input object from which to pick the property.
     * @template K - The type of the property to be picked.
     * @param obj - The input object from which to pick the property.
     * @param prop - The property to be picked from the input object.
     * @returns The value of the "placeholder" property of the provided PickProp type.
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Type declaration for the `outlined` property of the `PickProp` utility.
     * This utility allows you to pick a specific property from a given type and create a new type with only that property.
     *
     * @template T - The original type from which we want to pick a property.
     * @template K - A string literal representing the property we want to pick from the original type.
     *
     */
    outlined?: PickProp<IField<Data, Payload>, "outlined">;
    /**
     * Represents an optional property "noDeselect" of a PickProp object.
     *
     * @template T - The type of the field.
     * @template K - The key of the property to be picked.
     * @template P - The type of the value of the picked property.
     *
     * @typedef PickPropWithType
     * @prop {P} noDeselect - The value of the "noDeselect" property.
     *
     * @typedef IField
     * @typedef Payload
     *
     * @typedef PickProp
     *
     * @typedef noDeselect
     */
    noDeselect?: PickProp<IField<Data, Payload>, "noDeselect">;
    /**
     * Represents the configuration options for a virtual list box component.
     *
     * @typedef virtualListBox
     * @property fieldName - The name of the field associated with the virtual list box.
     * @property pageSize - The number of items to display per page in the virtual list box.
     * @property showSearch - Determines whether to display a search input in the virtual list box.
     * @property multiSelect - Determines whether the virtual list box allows multiple selection.
     * @property selectedItems - The array of selected item values in the virtual list box.
     */
    virtualListBox?: PickProp<IField<Data, Payload>, "virtualListBox">;
    /**
     * Represents the "tr" property of an object.
     *
     * @typeparam IField - Represents the object type containing the "tr" property.
     * @typedef tr
     */
    tr?: PickProp<IField<Data, Payload>, "tr">;
    /**
     * Represents the 'readonly' property of an object, extracted using the 'PickProp' utility type.
     *
     * @template Data - The type of data contained in the 'IField' object.
     * @template Payload - The type of payload contained in the 'IField' object.
     *
     * @param readonly - The value of the 'readonly' property.
     *
     * @returns - This function does not return a value.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Represents the `disabled` property of a field object.
     *
     * @typedef disabled
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload associated with the field.
     *
     * @property disabled - A boolean value indicating whether the field is disabled or not.
     *                                `true` represents that the field is disabled, while `false` indicates it is enabled.
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents the optional property to shrink the label of a field.
     *
     * @typedef LabelShrink
     */
    labelShrink?: PickProp<IField<Data>, "labelShrink">;
    /**
     * Returns the value of the "title" property from an object of type IField<Data, Payload>.
     *
     * @template Data - The type of the data object.
     * @template Payload - The type of the payload object.
     * @template T - The type of the object containing the "title" property.
     *
     * @param object - The object from which to pick the "title" property.
     *
     * @returns - The value of the "title" property.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Represents the `groupRef` property of an object.
     *
     * @typedef GroupRef
     * @property groupRef - The reference to a group of fields.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
  }
  /**
   * Represents a private interface for a Yes/No field
   * @template Data - The data type associated with the field
   */
  export interface IYesNoFieldPrivate<Data = IAnything> {
    value: PickProp<IManaged<Data>, "value">;
    readonly: PickProp<IManaged<Data>, "readonly">;
    onChange: PickProp<IManaged<Data>, "onChange">;
    dirty: PickProp<IManaged<Data>, "dirty">;
    invalid: PickProp<IManaged<Data>, "invalid">;
    incorrect: PickProp<IManaged<Data>, "incorrect">;
  }
  /**
   * Represents a Yes/No field component.
   *
   * @param props - The properties of the Yes/No field component.
   * @param props.value - The current value of the field.
   * @param props.disabled - Determines if the field is disabled.
   * @param props.readonly - Determines if the field is read-only.
   * @param props.description - The description or tooltip text for the field.
   * @param props.placeholder - The text to display when the field is empty.
   * @param props.outlined - Determines if the field is outlined.
   * @param props.virtualListBox - Determines if the field uses a virtual list box.
   * @param props.noDeselect - Determines if the field allows deselecting the value.
   * @param props.labelShrink - Determines if the label should shrink when the field has a value.
   * @param props.title - The title attribute of the field.
   * @param props.tr - The translate map function
   * @param props.dirty - Determines if the field has been modified.
   * @param props.invalid - Determines if the field is in an invalid state.
   * @param props.incorrect - Determines if the field has an incorrect value.
   * @param props.onChange - The function to call when the field's value changes.
   *
   * @returns - The Yes/No field component.
   */
  export const YesNoField: {
    ({
      value,
      disabled,
      readonly,
      description,
      placeholder,
      outlined,
      virtualListBox,
      noDeselect,
      labelShrink,
      title,
      tr,
      dirty,
      invalid,
      incorrect,
      onChange,
    }: IYesNoFieldProps & IYesNoFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/InitField" {
  import * as React from "react";
  /**
   * Interface representing the initialization properties for a Field component.
   *
   * @interface IInitFieldProps
   */
  export interface IInitFieldProps {}
  /**
   * Represents a React functional component which initializes a property on a target object.
   * Does not render itself in real
   * @component
   */
  export const InitField: React.FC<IInitFieldProps>;
  export default InitField;
}

declare module "react-declarative/components/One/fields/DictField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Props for the IDictField component.
   *
   * @template Data - The data type of the field.
   * @template Payload - The payload type of the field.
   *
   * @property [dictLimit] - The limit of items shown in the dictionary.
   * @property [dictDelay] - The delay between input and dictionary search.
   * @property [dictSearch] - The search function for the dictionary.
   * @property [dictOnAppend] - The function called when an item is appended to the dictionary.
   * @property [dictOnText] - The function called when the text of a dictionary item is updated.
   * @property [dictOnItem] - The function called when a dictionary item is selected.
   * @property [dictValue] - The selected value from the dictionary.
   * @property [dictSearchText] - The text being searched in the dictionary.
   * @property [dictSearchItem] - The item being searched in the dictionary.
   * @property [dictCreateButton] - The button to create a new item in the dictionary.
   * @property [inputType] - The type of input element.
   * @property [inputMode] - The input mode.
   * @property [inputPattern] - The regex pattern for input validation.
   * @property [inputAutocomplete] - The autocomplete option for the input.
   * @property [inputFormatter] - The function to format the input value.
   * @property [inputFormatterSymbol] - The symbol used for formatting.
   * @property [inputFormatterAllowed] - The allowed characters for formatting.
   * @property [inputFormatterTemplate] - The template for formatting.
   * @property [inputFormatterReplace] - The replace option for formatting.
   * @property [description] - The description of the field.
   * @property [outlined] - Whether the field should be outlined.
   * @property [title] - The title of the field.
   * @property [placeholder] - The placeholder text for the input.
   * @property [readonly] - Whether the field should be read-only.
   * @property [disabled] - Whether the field should be disabled.
   * @property [groupRef] - The ref for the group element.
   * @property [inputRef] - The ref for the input element.
   * @property [leadingIconRipple] - Whether the leading icon should have ripple effect.
   * @property [trailingIconRipple] - Whether the trailing icon should have ripple effect.
   * @property [leadingIcon] - The icon element for the leading icon.
   * @property [trailingIcon] - The icon element for the trailing icon.
   * @property [leadingIconClick] - The function to call when the leading icon is clicked.
   * @property [trailingIconClick] - The function to call when the trailing icon is clicked.
   */
  export interface IDictFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Validation factory config
     *
     * @template IField - Type representing the field object.
     * @template Data - Type representing the data object.
     * @template Payload - Type representing the payload object.
     *
     * @returns The value of the "validation" property.
     */
    validation?: PickProp<IField<Data, Payload>, "validation">;
    /**
     * Represents the 'dictLimit' property of an object.
     *
     * @typedef dictLimit
     * @property [dictLimit] - The limit for the dictionary.
     * @returns - The limit for the dictionary.
     */
    dictLimit?: PickProp<IField<Data, Payload>, "dictLimit">;
    /**
     * Retrieves the optional "dictDelay" property from the provided object.
     *
     * @template Data - The data type of the object.
     * @template Payload - The payload type of the object.
     *
     * @param object - The object containing the "dictDelay" property.
     *
     * @returns The value of the "dictDelay" property, if it exists, or undefined if it does not.
     */
    dictDelay?: PickProp<IField<Data, Payload>, "dictDelay">;
    /**
     * @typedef IField
     * @typedef Payload
     * @typedef Data
     * @typedef PickProp
     *
     * @typedef dictSearch
     */
    dictSearch?: PickProp<IField<Data, Payload>, "dictSearch">;
    /**
     * Represents an optional configuration property for a dictionary append operation.
     */
    dictOnAppend?: PickProp<IField<Data, Payload>, "dictOnAppend">;
    /**
     * Represents a variable `dictOnText` which is optional and can be of type `PickProp<IField<Data, Payload>, "dictOnText">`.
     *
     * @typedef dictOnText
     */
    dictOnText?: PickProp<IField<Data, Payload>, "dictOnText">;
    /**
     * Represents the field configuration for `dictOnItem` property.
     *
     * @template Data - The type of data object for the field.
     * @template Payload - The type of payload for the field.
     * @typedef dictOnItem?
     * @property dictOnItem - Indicates whether the field uses dictionary on item.
     */
    dictOnItem?: PickProp<IField<Data, Payload>, "dictOnItem">;
    /**
     * Retrieves the "dictValue" property from the given object.
     *
     * @param obj - The object from which to retrieve the "dictValue" property.
     *
     * @returns - The value of the "dictValue" property, or undefined if it does not exist.
     */
    dictValue?: PickProp<IField<Data, Payload>, "dictValue">;
    /**
     * @typedef IField
     * @property data - The data object
     * @property payload - The payload object
     */
    dictSearchText?: PickProp<IField<Data, Payload>, "dictSearchText">;
    /**
     * Represents the 'dictSearchItem' property of an object.
     *
     * @typedef dictSearchItem
     *
     * @description
     * This property is an optional field that is used to store information related to dictionary search item.
     * It is extracted from the 'IField' interface using the 'PickProp' utility type.
     *
     * @see {@link IField}
     * @see {@link PickProp}
     */
    dictSearchItem?: PickProp<IField<Data, Payload>, "dictSearchItem">;
    /**
     * Retrieves the value of the "dictCreateButton" property from the provided object,
     * which is of type PickProp<IField<Data, Payload>, "dictCreateButton">.
     *
     * @param input - The input object.
     * @returns - Returns the value of the "dictCreateButton" property,
     *                                       which can be of type "undefined" or "someDataType".
     */
    dictCreateButton?: PickProp<IField<Data, Payload>, "dictCreateButton">;
    /**
     * Represents the input type of a field.
     *
     * @typedef InputType
     *
     * @property inputType - The type of input for the field.
     */
    inputType?: PickProp<IField<Data, Payload>, "inputType">;
    /**
     * Represents the input mode configuration for a field.
     *
     * @typedef inputMode
     * @property inputMode - The input mode for the field.
     */
    inputMode?: PickProp<IField<Data, Payload>, "inputMode">;
    /**
     * Represents the input pattern of a field in the form.
     *
     * @typedef PickProp<IField<Data, Payload>, "inputPattern">
     * @property [inputPattern] - The regular expression pattern that the input value of the field must match.
     */
    inputPattern?: PickProp<IField<Data, Payload>, "inputPattern">;
    /**
     * Retrieves the value of the "inputAutocomplete" property from the specified object.
     *
     * @template Data The type of the data object.
     * @template Payload The type of the payload object.
     * @template T The type of the object.
     * @param obj The object from which to retrieve the "inputAutocomplete" property.
     * @returns The value of the "inputAutocomplete" property,
     * or undefined if the property doesn't exist.
     */
    inputAutocomplete?: PickProp<IField<Data, Payload>, "inputAutocomplete">;
    /**
     * Represents an input formatter for a specific type of field in a form.
     *
     * @template Data - The type of data object associated with the form.
     * @template Payload - The type of payload for the field.
     */
    inputFormatter?: PickProp<IField<Data, Payload>, "inputFormatter">;
    /**
     * Represents a symbol used by the input formatter for a given field.
     *
     * @typedef inputFormatterSymbol
     *
     * @property inputFormatterSymbol - The symbol used by the input formatter.
     */
    inputFormatterSymbol?: PickProp<
      IField<Data, Payload>,
      "inputFormatterSymbol"
    >;
    /**
     * Represents the allowed input formatters for a field.
     *
     * @typedef inputFormatterAllowed
     * @property inputFormatterAllowed - An array of allowed input formatter names.
     */
    inputFormatterAllowed?: PickProp<
      IField<Data, Payload>,
      "inputFormatterAllowed"
    >;
    /**
     * Represents a template for input formatter.
     *
     * @typedef InputFormatterTemplate
     */
    inputFormatterTemplate?: PickProp<
      IField<Data, Payload>,
      "inputFormatterTemplate"
    >;
    /**
     * Represents an object property `inputFormatterReplace` of the interface `IField<Data, Payload>`.
     *
     * @typedef inputFormatterReplace
     * @property inputFormatterReplace - The value of the `inputFormatterReplace` property.
     * @see {@link IField}
     * @see {@link PickProp}
     */
    inputFormatterReplace?: PickProp<
      IField<Data, Payload>,
      "inputFormatterReplace"
    >;
    /**
     * Type definition for the PickProp function.
     *
     * @template T - The type of the object to pick from.
     * @template K - The type of the property to pick.
     * @param object - The object to pick from.
     * @param prop - The property to pick from the object.
     * @returns The value of the picked property.
     */
    description?: PickProp<IField<Data, Payload>, "description">;
    /**
     * A type representing the picked property "outlined" from the given object type.
     *
     * @template T - The object type to pick the property from.
     * @template K - The name of the property to pick.
     */
    outlined?: PickProp<IField<Data, Payload>, "outlined">;
    /**
     * Type declaration for the utility function `PickProp`.
     *
     * @template T - The type of the input object.
     * @template K - The type of the property to pick.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Type definition for the `placeholder` property of `PickProp` type.
     *
     * The `placeholder` property represents a subset of the `IField<Data, Payload>` type,
     * where it specifically picks the `placeholder` property.
     *
     * @template Data - The type of the `Data` object in `IField`.
     * @template Payload - The type of the `Payload` object in `IField`.
     *
     * @typedef PlaceholderType
     *
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * The `readonly` property of the `IField` object.
     *
     * @typedef readonly
     * @property value - A boolean value indicating if the field is read-only or not.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Represents the `disabled` property of a given field in a form.
     *
     * @template Data - The data type of the field.
     * @template Payload - The payload type of the field.
     * @template IField - The interface of the field.
     * @template PickProp - Utility to pick a property from an interface.
     *
     * @param field - The given field in a form.
     *
     * @returns - The value of the `disabled` property.
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents the group reference property of a field in a data payload.
     * @typedef groupRef
     * @property groupRef - The group reference value.
     */
    groupRef?: PickProp<IField<Data, Payload>, "groupRef">;
    /**
     * Represents a reference to the input element within a field.
     *
     * @typedef InputRef
     * @property name - The name of the input element.
     * @property id - The unique ID of the input element.
     * @property element - The actual input element.
     */
    inputRef?: PickProp<IField<Data, Payload>, "inputRef">;
    /**
     * Represents the configuration for the leading icon ripple effect.
     *
     * @typedef leadingIconRipple
     * @memberof PickProp<IField<Data, Payload>, 'leadingIconRipple'>
     */
    leadingIconRipple?: PickProp<IField<Data, Payload>, "leadingIconRipple">;
    /**
     * Represents the trailing icon ripple configuration for a field.
     *
     * @typedef trailingIconRipple
     */
    trailingIconRipple?: PickProp<IField<Data, Payload>, "trailingIconRipple">;
    /**
     * Represents the leading icon for a field.
     *
     * @typedef leadingIcon
     *
     * @property [name] - The name of the leading icon.
     * @property [url] - The URL of the leading icon.
     * @property [color] - The color of the leading icon.
     */
    leadingIcon?: PickProp<IField<Data, Payload>, "leadingIcon">;
    /**
     * This is a variable named trailingIcon.
     * The variable is an optional property of type 'PickProp<IField<Data, Payload>, 'trailingIcon'>'.
     *
     * @typedef Data - The data type used by IField.
     * @typedef Payload - The payload type used by IField.
     * @typedef PickProp - The type used to pick properties from IField.
     * @property [trailingIcon] - Optional trailing icon property.
     */
    trailingIcon?: PickProp<IField<Data, Payload>, "trailingIcon">;
    /**
     * Represents the optional property 'leadingIconClick' from the 'IField' interface.
     *
     * @template Data - The type of data associated with the field.
     * @template Payload - The type of payload expected when the leading icon is clicked.
     *
     * @param leadingIconClick - The value of the 'leadingIconClick' property.
     *
     * @returns
     */
    leadingIconClick?: PickProp<IField<Data, Payload>, "leadingIconClick">;
    /**
     * The `trailingIconClick` property defines the action to be performed when the trailing icon of a field is clicked.
     *
     * @typedef IField
     * @template Data, Payload
     *
     * @param trailingIconClick - The value of the `trailingIconClick` property which defines the action to be performed when the trailing
     * icon is clicked.
     *
     * @description
     * The `trailingIconClick` property accepts a function that will be executed when the trailing icon of a field is clicked.
     */
    trailingIconClick?: PickProp<IField<Data, Payload>, "trailingIconClick">;
    leadingIconTabIndex?: PickProp<
      IField<Data, Payload>,
      "leadingIconTabIndex"
    >;
    trailingIconTabIndex?: PickProp<
      IField<Data, Payload>,
      "trailingIconTabIndex"
    >;
  }
  export interface IDictFieldPrivate<Data = IAnything> {
    onChange: PickProp<IManaged<Data>, "onChange">;
    invalid: PickProp<IManaged<Data>, "invalid">;
    incorrect: PickProp<IManaged<Data>, "incorrect">;
    value: PickProp<IManaged<Data>, "value">;
    loading: PickProp<IManaged<Data>, "loading">;
    disabled: PickProp<IManaged<Data>, "disabled">;
    dirty: PickProp<IManaged<Data>, "dirty">;
    name: PickProp<IManaged<Data>, "name">;
  }
  /**
   * A component for rendering a DictField.
   *
   * @param DictFieldProps - The props for the DictField component.
   * @param DictFieldProps.invalid - Indicates whether the field is invalid.
   * @param DictFieldProps.incorrect - Indicates whether the field is incorrect.
   * @param DictFieldProps.value - The value of the field.
   * @param DictFieldProps.disabled - Indicates whether the field is disabled.
   * @param DictFieldProps.readonly - Indicates whether the field is readonly.
   * @param DictFieldProps.inputType - The type of the input.
   * @param DictFieldProps.inputAutocomplete - The autocomplete mode for the input.
   * @param DictFieldProps.description - The description for the field.
   * @param DictFieldProps.outlined - Indicates whether the field is outlined.
   * @param DictFieldProps.title - The title for the field.
   * @param DictFieldProps.placeholder - The placeholder text for the field.
   * @param DictFieldProps.dirty - Indicates whether the field has been modified.
   * @param DictFieldProps.loading - Indicates whether the field is loading.
   * @param DictFieldProps.onChange - The event handler for field value change.
   * @param DictFieldProps.dictLimit - The limit of the dictionary items.
   * @param DictFieldProps.dictDelay - The delay for dictionary search.
   * @param DictFieldProps.dictSearch - The search query for the dictionary.
   * @param DictFieldProps.dictOnAppend - The event handler for dictionary item append.
   * @param DictFieldProps.dictOnText - The event handler for dictionary text change.
   * @param DictFieldProps.dictOnItem - The event handler for dictionary item selection.
   * @param DictFieldProps.dictValue - The dictionary item value.
   * @param DictFieldProps.dictSearchText - The search query for dictionary text.
   * @param DictFieldProps.dictSearchItem - The dictionary item for search.
   * @param DictFieldProps.dictCreateButton - Indicates whether to provide a create button for dictionary items.
   * @param DictFieldProps.inputMode - The input mode for the field.
   * @param DictFieldProps.inputPattern - The input pattern for the field.
   * @param DictFieldProps.groupRef - The reference to the group containing the field.
   * @param DictFieldProps.inputRef - The reference to the input field.
   * @param DictFieldProps.inputFormatter - The input formatter function.
   * @param DictFieldProps.inputFormatterAllowed - The allowed characters for input formatting.
   * @param DictFieldProps.inputFormatterReplace - The replacement text for input formatting.
   * @param DictFieldProps.inputFormatterSymbol - The symbol used for input formatting.
   * @param DictFieldProps.inputFormatterTemplate - The template for input formatting.
   * @param DictFieldProps.name - The name of the field.
   * @param DictFieldProps.leadingIcon - The leading icon for the field.
   * @param DictFieldProps.trailingIcon - The trailing icon for the field.
   * @param DictFieldProps.leadingIconClick - The event handler for click on the leading icon.
   * @param DictFieldProps.trailingIconClick - The event handler for click on the trailing icon.
   * @param DictFieldProps.leadingIconRipple - Indicates whether the leading icon should have ripple effect.
   * @param DictFieldProps.trailingIconRipple - Indicates whether the trailing icon should have ripple effect.
   *
   * @return - The rendered DictField component.
   */
  export const DictField: {
    ({
      invalid,
      incorrect,
      value,
      disabled,
      readonly,
      inputType,
      inputAutocomplete,
      description,
      outlined,
      title,
      placeholder,
      dirty,
      loading,
      onChange,
      dictLimit,
      dictDelay,
      dictSearch,
      dictOnAppend,
      dictOnText,
      dictOnItem,
      dictValue,
      dictSearchText,
      dictSearchItem,
      dictCreateButton,
      inputMode,
      inputPattern,
      groupRef,
      inputRef,
      inputFormatter,
      inputFormatterAllowed,
      inputFormatterReplace,
      inputFormatterSymbol,
      inputFormatterTemplate,
      name,
      leadingIcon,
      trailingIcon,
      leadingIconClick,
      trailingIconClick,
      leadingIconRipple,
      trailingIconRipple,
      leadingIconTabIndex,
      trailingIconTabIndex,
    }: IDictFieldProps & IDictFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/components/One/fields/TreeField" {
  import IManaged, { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Interface for the props of the ITreeField component.
   *
   * @template Data The type of data in the field.
   * @template Payload The type of payload in the field.
   */
  export interface ITreeFieldProps<Data = IAnything, Payload = IAnything> {
    /**
     * Validation factory config
     *
     * @template IField - Type representing the field object.
     * @template Data - Type representing the data object.
     * @template Payload - Type representing the payload object.
     *
     * @returns The value of the "validation" property.
     */
    validation?: PickProp<IField<Data, Payload>, "validation">;
    /**
     * Returns the "description" property of a given object.
     *
     * @template T - The type of the object.
     * @template K - The literal key type.
     *
     * @param obj - The object from which to extract the property.
     * @param key - The literal key representing the property to extract.
     *
     * @returns - The value of the specified property.
     */
    description?: PickProp<IField<Data, Payload>, "description">;
    /**
     * Type declaration for the PickProp utility function.
     */
    outlined?: PickProp<IField<Data, Payload>, "outlined">;
    /**
     * Type definition for the "title" property picked from the given object type.
     *
     * @template IField - The object type that contains the "title" property.
     * @template Data - The data type of the "title" property.
     * @template Payload - The payload type of the "title" property.
     *
     * @param - The object from which the "title" property will be picked.
     *
     * @returns - The resulting object that only contains the "title" property.
     */
    title?: PickProp<IField<Data, Payload>, "title">;
    /**
     * Type definition for the variable placeholder.
     *
     * @template Data - The type of data for the field.
     * @template Payload - The type of payload for the field.
     * @typedef placeholder
     */
    placeholder?: PickProp<IField<Data, Payload>, "placeholder">;
    /**
     * Specifies if a field is readOnly.
     *
     * @typedef Readonly
     *
     * @typedef IField
     * @typedef Payload
     * @typedef PickProp
     * @typedef Data
     *
     * @param readonly - The field being checked for readOnly status.
     *
     * @returns - A boolean value indicating if the field is readOnly.
     */
    readonly?: PickProp<IField<Data, Payload>, "readonly">;
    /**
     * Represents the `disabled` property of a field in a form.
     *
     * @typedef Disabled
     *
     * @property disabled - Indicates whether the field is disabled or not.
     * @template Data - The type of data stored in the form.
     * @template Payload - The type of payload used for form submission.
     */
    disabled?: PickProp<IField<Data, Payload>, "disabled">;
    /**
     * Represents the item tree of a specific field in the data payload.
     *
     * @typedef ItemTree
     */
    itemTree?: PickProp<IField<Data, Payload>, "itemTree">;
    /**
     * Represents the change detection flag for item tree
     *
     * @typedef boolean
     */
    watchItemTree?: PickProp<IField<Data, Payload>, "watchItemTree">;
  }
  /**
   * Represents the private interface for the TreeField component.
   *
   * @template Data The type of data for the TreeField component.
   */
  export interface ITreeFieldPrivate<Data = IAnything> {
    onChange: PickProp<IManaged<Data>, "onChange">;
    invalid: PickProp<IManaged<Data>, "invalid">;
    incorrect: PickProp<IManaged<Data>, "incorrect">;
    value: PickProp<IManaged<Data>, "value">;
    loading: PickProp<IManaged<Data>, "loading">;
    disabled: PickProp<IManaged<Data>, "disabled">;
    dirty: PickProp<IManaged<Data>, "dirty">;
    name: PickProp<IManaged<Data>, "name">;
    withContextMenu: PickProp<IManaged<Data>, "withContextMenu">;
  }
  /**
   * Renders a TreeField component.
   *
   * @param props - The props object containing the necessary data for rendering the TreeField.
   * @param props.invalid - Determines if the TreeField is invalid.
   * @param props.value - The value of the TreeField.
   * @param props.disabled - Determines if the TreeField is disabled.
   * @param props.readonly - Determines if the TreeField is readonly.
   * @param props.incorrect - Determines if the TreeField is incorrect.
   * @param props.description - The description text for the TreeField.
   * @param props.outlined - Determines if the TreeField should have an outlined style.
   * @param props.title - The title text for the TreeField.
   * @param props.placeholder - The placeholder text for the TreeField.
   * @param props.itemTree - The itemTree object for rendering the Tree.
   * @param props.dirty - Determines if the TreeField has been modified.
   * @param props.loading - Determines if the TreeField is currently loading.
   * @param props.onChange - The callback function to be called when the value of the TreeField changes.
   * @param props.name - The name attribute of the TreeField.
   * @param props.withContextMenu - Determines if the TreeField should have a context menu.
   *
   * @returns The rendered TreeField component.
   */
  export const TreeField: {
    ({
      invalid,
      value,
      disabled,
      readonly,
      incorrect,
      description,
      outlined,
      title,
      placeholder,
      itemTree,
      dirty,
      loading,
      onChange,
      name,
      withContextMenu,
      watchItemTree,
    }: ITreeFieldProps & ITreeFieldPrivate): JSX.Element;
    displayName: string;
  };
  const _default: {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: import("../../../model/IEntity").IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default _default;
}

declare module "react-declarative/model/IPhonyField" {
  import IField from "react-declarative/model/IField";
  /**
   * Represents a phony field interface with additional properties.
   *  - Phony fields are not serializable, so they will not affect form data
   *  - Phony fields are reflectable, `getAvailableFields()` and `<VisibilityView />` will detect them.
   * @interface
   */
  export interface IPhonyField {
    title?: IField["title"];
    description?: IField["description"];
    placeholder?: IField["placeholder"];
  }
  export default IPhonyField;
}

declare module "react-declarative/model/ComponentFieldInstance" {
  import type IField from "react-declarative/model/IField";
  import type IManaged from "react-declarative/model/IManaged";
  /**
   * Represents parameters for a component field element callback.
   * @template Data - The data type of the field.
   * @template Payload - The payload type of the field.
   */
  export type ComponentFieldInstance<Data = any, Payload = any> = Data & {
    /**
     * A callback function type that is called when a change event occurs.
     *
     * @callback onChange
     * @param data - The partial data that has changed.
     * @returns
     */
    onChange: (data: Partial<Data>) => void;
    /**
     * Callback function to handle the change event of a managed data object.
     *
     * @callback onValueChange
     * @memberof IManaged
     * @template Data - The type of data managed by the object.
     * @template Payload - The type of payload passed to the change event handler.
     * @param data - The updated data after the change.
     * @param payload - The payload passed to the change event handler.
     * @returns
     */
    onValueChange: IManaged<Data, Payload>["onChange"];
    /**
     * Represents the field data.
     *
     * @typedef FieldData
     * @property data - The data object.
     */
    _fieldData: Data;
    /**
     * Represents a field parameter for a particular field.
     *
     * @typedef IField
     * @property name - The name of the field.
     * @property type - The data type of the field.
     * @property required - Indicates if the field is required.
     * @property length - The maximum length of the field value.
     */
    _fieldParams: IField;
    /**
     * Represents the context variable.
     *
     * @typedef Context
     */
    context: Record<string, any>;
    /**
     * Represents whether an outline paper is present.
     *
     * @type {boolean}
     */
    outlinePaper: boolean;
    /**
     * Represents whether the paper is transparent.
     *
     * @type {boolean}
     */
    transparentPaper: boolean;
    /**
     * Represents a payload object.
     *
     * @class
     * @classdesc This class represents a payload object that can be used to send data between systems.
     */
    payload: Payload;
    /**
     * Represents the state of disablement.
     *
     * @typedef Disabled
     */
    disabled: boolean;
    /**
     * Indicates whether a variable is read-only or not.
     *
     * @type {boolean}
     */
    readonly: boolean;
    /**
     * The 'incorrect' property of IManaged<Data, Payload> interface represents the incorrect value of a managed data object.
     *
     * @template Data - The type of the managed data object.
     * @template Payload - The type of data payload that represents the incorrect value.
     *
     * @type {Payload}
     */
    incorrect: IManaged<Data, Payload>["incorrect"];
    /**
     * Represents the `invalid` property of the `IManaged` interface.
     *
     * This property stores the invalid state of a managed object in relation to
     * its data and payload types.
     *
     * @template Data - The data type of the managed object.
     * @template Payload - The payload type of the managed object.
     *
     * @type {boolean}
     */
    invalid: IManaged<Data, Payload>["invalid"];
    value: IManaged<Data, Payload>["value"];
    features: string[];
    onClick: (e: React.MouseEvent<any>) => void | Promise<void>;
  };
  /**
   * Interface representing a debug object.
   */
  export interface IDebug<Data = any, Payload = any> {
    originalComponent: React.ComponentType<IManaged<Data>>;
    managedProps: IManaged<Data>;
    payload: Payload;
  }
  /**
   * Represents the props for a specific instance of a component field.
   */
  export type ComponentFieldInstanceProps = Omit<
    ComponentFieldInstance,
    keyof {
      context: never;
    }
  > & {
    Element: React.ComponentType<ComponentFieldInstance>;
  };
  export default ComponentFieldInstance;
}

declare module "react-declarative/components/SearchView/model/ISearchItem" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents a search item.
   * @interface
   * @template T - The type of additional data associated with the search item.
   */
  export interface ISearchItem<T extends IAnything = IAnything> {
    label: string;
    value: string;
    data?: T;
  }
  export default ISearchItem;
}

declare module "react-declarative/components/SearchView/model/ISearchViewProps" {
  import { SxProps } from "@mui/material";
  import { TextFieldProps } from "@mui/material/TextField";
  import ISearchItem from "react-declarative/components/SearchView/model/ISearchItem";
  import IAnything from "react-declarative/model/IAnything";
  import ISearchItemProps from "react-declarative/components/SearchView/model/ISearchItemProps";
  import ISearchInputProps from "react-declarative/components/SearchView/model/ISearchInputProps";
  import ICreateButtonProps from "react-declarative/components/SearchView/model/ICreateButtonProps";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Interface for the props of the SearchView component.
   * @template Data - Type parameter representing the data type of search items.
   * @template Payload - Type parameter representing the payload type for async operations.
   */
  export type ISearchViewProps<
    Data extends IAnything = IAnything,
    Payload = IAnything,
  > = Omit<
    TextFieldProps,
    keyof {
      value: never;
      onChange: never;
      className: never;
      style: never;
      sx: never;
      ref: never;
      onClick: never;
      disabled: never;
      InputProps: never;
      inputProps: never;
      fullWidth: never;
    }
  > & {
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    changeSubject?: TSubject<void>;
    fullWidth?: boolean;
    SearchItem?: React.ComponentType<ISearchItemProps<Data>>;
    SearchInput?: React.ComponentType<ISearchInputProps>;
    CreateButton?: React.ComponentType<ICreateButtonProps>;
    payload?: Payload | (() => Payload);
    value?:
      | ISearchItem<Data>
      | null
      | (() => null | ISearchItem<Data> | Promise<null | ISearchItem<Data>>);
    searchText?: string | null | (() => null | string | Promise<null | string>);
    startAdornment?: React.ReactNode;
    endAdornment?: React.ReactNode;
    type?: keyof {
      date: string;
      email: string;
      number: string;
      search: never;
      tel: never;
      text: never;
      time: never;
      url: never;
      week: never;
    };
    mode?: keyof {
      none: never;
      text: never;
      tel: never;
      url: never;
      email: never;
      numeric: never;
      decimal: never;
      search: never;
    };
    pattern?: string;
    handler: (
      search: string,
      limit: number,
      offset: number,
      initial: boolean,
      currentRows: ISearchItem<Data>[],
    ) => ISearchItem<Data>[] | Promise<ISearchItem<Data>[]>;
    onChange?: (value: ISearchItem<Data> | null) => void;
    onCreate?: (value: string) => void;
    onTextChange?: (value: string) => void;
    disabled?: boolean;
    label?: string;
    placeholder?: string;
    delay?: number;
    limit?: number;
    variant?: "standard" | "outlined" | "filled";
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (error: Error) => void;
    throwError?: boolean;
  };
  export default ISearchViewProps;
}

declare module "react-declarative/model/IFieldMenu" {
  import IAnything from "react-declarative/model/IAnything";
  import { Value } from "react-declarative/model/IField";
  import IOption from "react-declarative/model/IOption";
  /**
   * Represents a field menu.
   * @template Data - The type of data for the menu.
   * @template Payload - The type of payload for the menu.
   */
  export interface IFieldMenu<Data = IAnything, Payload = IAnything>
    extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
      }
    > {
    /**
     * Determines the visibility of an element based on the given data and payload.
     *
     * @param data - The data used for determining visibility.
     * @param payload - Additional payload used for determining visibility.
     * @returns - A Promise resolving to a boolean value or a boolean value indicating the visibility of the element.
     */
    isVisible?: (data: Data, payload: Payload) => Promise<boolean> | boolean;
    /**
     * Checks whether the given data and payload indicate that the feature is disabled.
     *
     * @param data - The data used to determine if the feature is disabled.
     * @param payload - The payload used to determine if the feature is disabled.
     * @returns - Returns a Promise resolving to a boolean indicating whether the feature is disabled. If a Promise is returned, it resolves to `true` if the
     * feature is disabled, otherwise it resolves to `false`. If a boolean is returned directly, it indicates whether the feature is disabled.
     */
    isDisabled?: (data: Data, payload: Payload) => Promise<boolean> | boolean;
    /**
     * Represents a callback function that is triggered on click event.
     * @callback onClick
     * @param data - The data object associated with the click event.
     * @param payload - The payload object associated with the click event.
     * @param onValueChange - A callback function that is called when the value of `data` is changed.
     *                                  It is passed the new value as a parameter.
     * @param onChange - A callback function that is called when any change occurs in `data`.
     *                             It is passed the updated `data` object as a parameter.
     * @returns
     */
    onClick?: (
      data: Data,
      payload: Payload,
      onValueChange: (value: Value) => void,
      onChange: (data: Data) => void,
    ) => void;
  }
  export default IFieldMenu;
}

declare module "react-declarative/model/ITreeNode" {
  import INode from "react-declarative/components/TreeView/model/INode";
  /**
   * Represents a Node in a tree structure.
   */
  export interface ITreeNode extends INode {}
  export default ITreeNode;
}

declare module "react-declarative/components/List/api/useLastPagination" {
  import {
    ListHandler,
    ListHandlerChips,
    ListHandlerSortModel,
    ListHandlerPagination,
  } from "react-declarative/model/IListProps";
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Represents the interface for a result.
   *
   * @template FilterData The type for the filter data.
   * @template RowData The type for the row data.
   */
  interface IResult<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > {
    data: IState<FilterData, RowData>;
    handler: ListHandler<FilterData, RowData>;
  }
  /**
   * Represents the state of a component.
   * @template FilterData - The type of the filter data.
   * @template RowData - The type of the row data.
   */
  export interface IState<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > {
    filterData: FilterData;
    pagination: ListHandlerPagination;
    sort: ListHandlerSortModel<RowData>;
    chipData: ListHandlerChips<RowData>;
    search: string;
  }
  /**
   * Custom hook for managing pagination state and handling pagination logic.
   *
   * @template FilterData - The type of filter data.
   * @template RowData - The type of row data.
   *
   * @param upperHandler - The handler function responsible for fetching data.
   *
   * @returns - An object containing the handler function and the state data.
   */
  export const useLastPagination: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
  >(
    upperHandler: ListHandler<FilterData, RowData, any>,
  ) => IResult;
  export default useLastPagination;
}

declare module "react-declarative/components/List/List" {
  import IRowData from "react-declarative/model/IRowData";
  import IField from "react-declarative/model/IField";
  import IListProps from "react-declarative/model/IListProps";
  import TypedField from "react-declarative/model/TypedField";
  /**
        * Represents a List component which renders a collection of entries.
        *
        * @template FilterData - The type of the filter data.
        * @template RowData - The type of the row data.
        * @template Payload - The type of the payload.
        * @template Field - The type of the field.
        *
        * @param handler - Function to handle the list data. Default value is an empty array.
        * @param payload - The payload for the list data. Default value is an empty object.
        * @param fallback - Function to handle errors. Default value is a console.error call.
        * @param limit - The limit of items per page. Default value is DEFAULT_LIMIT.
        * @param page - The current page number. Default value is DEFAULT_PAGE.
        * @param isChooser - Flag to indicate if the list is for choosing items. Default value is false.
        * @param filters - The array of filters for the list. Default value is an empty array.
        * @param columns - The array of columns for the list. Default value is an empty array.
        * @param actions - The array of actions for the list. Default value is an empty array.
        * @param onRows - Callback function for when list rows change. Default value is a null function.
        * @param onSortModelChange - Callback function for when sort model changes. Default value is a null function.
        * @param onFilterChange - Callback function for when filter changes. Default value is a null function.
        * @param onChipsChange - Callback function for when chip changes. Default value is a null function.
        * @param onSearchChange - Callback function for when search query changes. Default value is a null function.
        * @param onPageChange - Callback function for when page changes. Default value is a null function.
        * @param onLimitChange - Callback function for when limit changes. Default value is a null function.
        * @param labelDisplayedRows - Function to display the label for displayed rows.
        * @param selectionLabel - Function to display the label for selected items.
        * @param filterData - The additional data for filters. Default value is an empty object.
        * @param withToggledFilters - Flag to indicate if filters are toggled. Default value is false.
        * @param fetchDebounce - The debounce time for fetching the list data. Default value is LIST_FETCH_DEBOUNCE.
        * @param sortModel - The array of sort model for the list. Default value is an empty array.
        * @param chips - The array of chips for the list. Default value is an empty array.
        * @param chipData - The additional data for chips. Default value is an empty object.
        * @param search - The search query for the list. Default value is an empty string.
        * @param slots - The slots for the list. Default value is an empty object.
    
        * @returns - The List component.
        */
  export const List: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload extends unknown = any,
    Field extends IField<any, any> = IField<FilterData, Payload>,
  >(
    props: IListProps<FilterData, RowData, Payload, Field>,
  ) => JSX.Element;
  /**
   * Represents a typed list component.
   *
   * @template FilterData - The type of filter data.
   * @template RowData - The type of row data.
   *
   * @param props - The list component props.
   *
   * @return - The rendered list component.
   */
  export const ListTyped: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
  >(
    props: IListProps<
      FilterData,
      RowData,
      TypedField<FilterData, any>,
      IField<FilterData, TypedField<FilterData, any>>
    >,
  ) => JSX.Element;
  export default List;
}

declare module "react-declarative/components/List/slots" {
  export * from "react-declarative/components/List/slots/ActionAddSlot";
  export * from "react-declarative/components/List/slots/ActionFabSlot";
  export * from "react-declarative/components/List/slots/ActionMenuSlot";
  export * from "react-declarative/components/List/slots/BodyRowSlot";
  export * from "react-declarative/components/List/slots/CheckboxCellSlot";
  export * from "react-declarative/components/List/slots/CommonCellSlot";
  export * from "react-declarative/components/List/slots/HeadRowSlot";
  export * from "react-declarative/components/List/slots/ActionListSlot";
  export * from "react-declarative/components/List/slots/ChipListSlot";
  export * from "react-declarative/components/List/slots/FilterListSlot";
  export * from "react-declarative/components/List/slots/OperationListSlot";
  export * from "react-declarative/components/List/slots/SearchSlot";
}

declare module "react-declarative/components/List/hooks/useProps" {
  import * as React from "react";
  import IListProps, {
    IListCallbacks,
    IListState,
  } from "react-declarative/model/IListProps";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Represents a context object for providing properties to a component.
   * @template FilterData - The type of filter data.
   * @template RowData - The type of row data.
   * @template Payload - The type of payload data.
   * @template Field - The type of field data.
   */
  interface IPropContext<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
    Field extends IField = IField<FilterData, Payload>,
  > extends Omit<
        IListProps<FilterData, RowData, Payload, Field>,
        keyof {
          limit: never;
          chips: never;
          search: never;
          filterData: never;
          isChooser: never;
          isPageItem: never;
          isInfinite: never;
          isCustom: never;
          payload: never;
        }
      >,
      IListState<FilterData, RowData>,
      IListCallbacks<FilterData, RowData> {
    children: React.ReactNode;
  }
  /**
   * PropProvider is a higher-order component that provides a PropContext context to its children.
   *
   * @template FilterData - The data type for the filter data.
   * @template RowData - The data type for the row data.
   * @template Payload - The data type for the payload.
   * @template Field - The data type for the field.
   *
   * @param props - The props for the PropProvider component.
   *
   * @returns - The JSX element wrapped with PropContext.Provider.
   */
  export const PropProvider: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload extends unknown = any,
    Field extends IField<any, any> = IField<FilterData, Payload>,
  >(
    props: IPropContext<FilterData, RowData, Payload, Field>,
  ) => JSX.Element;
  /**
   * Retrieves the current props from the PropContext.
   *
   * @returns The props from the PropContext.
   *
   * @template FilterData The filter data type.
   * @template RowData The row data type.
   * @template Payload The payload type.
   * @template Field The field type.
   */
  export const useProps: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload extends unknown = any,
    Field extends IField<any, any> = IField<FilterData, Payload>,
  >() => IPropContext<FilterData, RowData, Payload, Field>;
  export default useProps;
}

declare module "react-declarative/components/List/hooks/useCachedRows" {
  import React from "react";
  import IAnything from "react-declarative/model/IAnything";
  import IRowData, { RowId } from "react-declarative/model/IRowData";
  /**
   * Represents the usage of cached rows.
   *
   * @returns The context containing the cached rows.
   *
   * @template RowData The type of the row data. Extends IRowData, defaults to IAnything.
   */
  export const useCachedRows: <
    RowData extends IRowData = any,
  >() => IState<RowData>;
  /**
   * Represents the props for the `ICachedRowsProvider` component.
   *
   * @interface ICachedRowsProviderProps
   */
  interface ICachedRowsProviderProps {
    children: React.ReactNode;
  }
  /**
   * Represents the state of a particular entity.
   * @interface
   * @template RowData - The type of RowData.
   */
  interface IState<RowData extends IRowData = IAnything> {
    cachedRows: Map<RowId, RowData>;
    selectedRows: RowData[];
  }
  /**
   * A component for caching and providing rows and selected rows.
   *
   * @template RowData - Type parameter for the row data.
   * @param props - The component props.
   * @return - The rendered component.
   */
  export const CachedRowsProvider: <RowData extends IRowData = any>({
    children,
  }: ICachedRowsProviderProps) => JSX.Element;
  export default useCachedRows;
}

declare module "react-declarative/components/List/api/useQueryPagination" {
  import IAnything from "react-declarative/model/IAnything";
  import IListProps from "react-declarative/model/IListProps";
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Represents a query object that contains various parameters for filtering, sorting, and pagination.
   *
   * @template FilterData - The type of the filter data.
   * @template RowData - The type of the row data.
   */
  interface IQuery<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > {
    filterData: IListProps<FilterData, RowData>["filterData"];
    sortModel: IListProps<FilterData, RowData>["sortModel"];
    chipData: IListProps<FilterData, RowData>["chipData"];
    limit: IListProps<FilterData, RowData>["limit"];
    page: IListProps<FilterData, RowData>["page"];
    search: IListProps<FilterData, RowData>["search"];
  }
  /**
   * Interface for specifying parameters.
   * @template FilterData - Type for filter data
   * @template RowData - Type for row data
   */
  interface IParams<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > {
    removeEmptyFilters: (data: FilterData) => Partial<FilterData>;
    onFilterChange: IListProps<FilterData, RowData>["onFilterChange"];
    onLimitChange: IListProps<FilterData, RowData>["onLimitChange"];
    onPageChange: IListProps<FilterData, RowData>["onPageChange"];
    onSortModelChange: IListProps<FilterData, RowData>["onSortModelChange"];
    onChipsChange: IListProps<FilterData, RowData>["onChipsChange"];
    onSearchChange: IListProps<FilterData, RowData>["onSearchChange"];
    onChange?: (pagination: string) => void;
    fallback?: (e: Error) => void;
    prefix?: string;
    noCleanupOnLeave?: boolean;
    noCleanupExtra?: boolean;
  }
  /**
   * A generic class representing filtered data based on a given filter and row data.
   *
   * @template FilterData The type of filter data.
   * @template RowData The type of row data.
   */
  type FilterDataT<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > = Exclude<IQuery<FilterData, RowData>["filterData"], undefined>;
  /**
   * Represents the sort model for sorting the rows in a data grid.
   *
   * @typeparam {FilterData} FilterData - The type of filter data used in the query.
   * @typeparam {RowData} RowData - The type of row data used in the query.
   */
  type SortModelT<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > = Exclude<IQuery<FilterData, RowData>["sortModel"], undefined>;
  /**
   * Represents a class that handles chip data for a given query.
   *
   * @template FilterData - The type of the filter data.
   * @template RowData - The type of the row data.
   */
  type ChipDataT<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > = Exclude<IQuery<FilterData, RowData>["chipData"], undefined>;
  export const DEFAULT_QUERY: IQuery;
  /**
   * A hook that provides pagination functionality for querying data.
   * @template FilterData The type of filter data.
   * @template RowData The type of row data.
   * @param [initialValue=DEFAULT_QUERY] - The initial value for the query.
   * @param [options={}] - The options for the hook.
   * @param [options.onFilterChange=() => null] - The callback function to handle filter data changes.
   * @param [options.onLimitChange=() => null] - The callback function to handle limit changes.
   * @param [options.onPageChange=() => null] - The callback function to handle page changes.
   * @param [options.onSortModelChange=() => null] - The callback function to handle sort model changes.
   * @param [options.onChipsChange=() => null] - The callback function to handle chip data changes.
   * @param [options.onSearchChange=() => null] - The callback function to handle search changes.
   * @param [options.onChange=() => null] - The callback function to handle state changes.
   * @param [options.removeEmptyFilters=removeEmptyFiltersDefault] - The function to remove empty filters.
   * @param [options.fallback] - The fallback options.
   * @param [options.prefix] - The prefix for searchstate
   * @param [options.noCleanupOnLeave] - The cleanup flag if changing location
   * @param [options.noCleanupExtra] - The cleanup flag if remove extra query params
   * @returns An object containing the pagination props and methods.
   */
  export const useQueryPagination: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
  >(
    initialValue?: Partial<IQuery<FilterData, RowData>>,
    {
      onFilterChange: handleFilterChange,
      onLimitChange: handleLimitChange,
      onPageChange: handlePageChange,
      onSortModelChange: handleSortModelChange,
      onChipsChange: handleChipsChange,
      onSearchChange: handleSeachChange,
      onChange: handleChange,
      removeEmptyFilters,
      prefix,
      noCleanupExtra,
      noCleanupOnLeave,
      fallback,
    }?: Partial<IParams<FilterData, RowData>>,
  ) => {
    setFilterData: (data: FilterData) => void;
    setSortModel: (
      sort: import("../../../model/IListProps").ListHandlerSortModel<RowData>,
    ) => void;
    setChipData: (data: Partial<Record<keyof RowData, boolean>>) => void;
    setLimit: (limit: number) => void;
    setPage: (page: number) => void;
    setSearch: (search: string) => void;
    getFilterData: () => Exclude<Partial<FilterData>, undefined>;
    getSortModel: () => import("../../../model/IListProps").ListHandlerSortModel<RowData>;
    getChipData: () => Exclude<
      Partial<Record<keyof RowData, boolean>>,
      undefined
    >;
    getLimit: () => number;
    getPage: () => number;
    getSearch: () => string;
    listProps: {
      filterData: Partial<FilterData> | undefined;
      sortModel:
        | import("../../../model/IListProps").ListHandlerSortModel<RowData>
        | undefined;
      chipData: Partial<Record<keyof RowData, boolean>> | undefined;
      limit: number | undefined;
      page: number | undefined;
      search: string | undefined;
      fallback?: ((e: Error) => void) | undefined;
      onFilterChange: (data: FilterData) => void;
      onLimitChange: (limit: number) => void;
      onPageChange: (page: number) => void;
      onSortModelChange: (
        sort: import("../../../model/IListProps").ListHandlerSortModel<RowData>,
      ) => void;
      onChipsChange: (data: Partial<Record<keyof RowData, boolean>>) => void;
      onSearchChange: (search: string) => void;
    };
  };
  export default useQueryPagination;
}

declare module "react-declarative/components/List/api/useCachedPaginator" {
  import { ListHandler } from "react-declarative/model/IListProps";
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  import { IArrayPaginatorParams } from "react-declarative/components/List/api/useArrayPaginator";
  /**
   * The `IResult` interface represents the result of a query or operation.
   * It provides methods for handling the result and clearing it.
   *
   * @template FilterData - The type for the filter data used in the result.
   * @template RowData - The type for the row data stored in the result.
   */
  interface IResult<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > {
    handler: ListHandler<FilterData, RowData>;
    clear: () => void;
  }
  /**
   * Creates a cached paginator for list data.
   *
   * @template FilterData - The type of the filter data.
   * @template RowData - The type of the row data.
   *
   * @param handler - The list handler function or object.
   * @param params - The parameters for the paginator.
   *
   * @returns - The result containing the paginator handler and clear function.
   */
  export const useCachedPaginator: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
  >(
    handler: ListHandler<FilterData, RowData, any>,
    params: IArrayPaginatorParams<FilterData, RowData>,
  ) => IResult<FilterData, RowData>;
  export default useCachedPaginator;
}

declare module "react-declarative/components/List/api/useHistoryStatePagination" {
  import IAnything from "react-declarative/model/IAnything";
  import IListProps from "react-declarative/model/IListProps";
  import IRowData from "react-declarative/model/IRowData";
  import History from "react-declarative/model/History";
  /**
   * Represents a query object used for filtering, sorting, and pagination.
   * @template FilterData - The type of filter data.
   * @template RowData - The type of row data.
   */
  interface IQuery<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > {
    filterData: IListProps<FilterData, RowData>["filterData"];
    sortModel: IListProps<FilterData, RowData>["sortModel"];
    chipData: IListProps<FilterData, RowData>["chipData"];
    limit: IListProps<FilterData, RowData>["limit"];
    page: IListProps<FilterData, RowData>["page"];
    search: IListProps<FilterData, RowData>["search"];
  }
  /**
   * Represents the parameters for a list component.
   * @template FilterData - The type of data used for filtering.
   * @template RowData - The type of data representing a row.
   */
  interface IParams<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > {
    initialValue: Partial<IQuery<FilterData, RowData>>;
    removeEmptyFilters: (data: FilterData) => Partial<FilterData>;
    onFilterChange: IListProps<FilterData, RowData>["onFilterChange"];
    onLimitChange: IListProps<FilterData, RowData>["onLimitChange"];
    onPageChange: IListProps<FilterData, RowData>["onPageChange"];
    onSortModelChange: IListProps<FilterData, RowData>["onSortModelChange"];
    onChipsChange: IListProps<FilterData, RowData>["onChipsChange"];
    onSearchChange: IListProps<FilterData, RowData>["onSearchChange"];
    onChange?: (pagination: IQuery) => void;
    fallback?: (e: Error) => void;
  }
  /**
   * Represents a type that filters data for a query result.
   * @template FilterData - The type of data used for filtering.
   * @template RowData - The type of row data in the query result.
   * @typedef FilterDataT
   */
  type FilterDataT<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > = Exclude<IQuery<FilterData, RowData>["filterData"], undefined>;
  /**
   * Represents the sort model of a query.
   *
   * @template FilterData - The type of filter data. Defaults to `IAnything`.
   * @template RowData - The type of row data. Defaults to `IAnything`.
   *
   * @typedef SortModelT
   */
  type SortModelT<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > = Exclude<IQuery<FilterData, RowData>["sortModel"], undefined>;
  /**
   * Represents a type for chip data in a query result.
   *
   * @template FilterData - The type of filter data used in the query.
   * @template RowData - The type of row data returned by the query.
   */
  type ChipDataT<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
  > = Exclude<IQuery<FilterData, RowData>["chipData"], undefined>;
  export const DEFAULT_QUERY: IQuery;
  /**
   * Handles pagination state using browser history state.
   * @template FilterData - The type of filter data for the query.
   * @template RowData - The type of row data for the query.
   * @param history - The history object from react-router.
   * @param options - Optional parameters for configuring the pagination.
   * @param options.initialValue - The initial query value.
   * @param options.onFilterChange - The callback function when filter data changes.
   * @param options.onLimitChange - The callback function when limit changes.
   * @param options.onPageChange - The callback function when page changes.
   * @param options.onSortModelChange - The callback function when sort model changes.
   * @param options.onChipsChange - The callback function when chip data changes.
   * @param options.onSearchChange - The callback function when search changes.
   * @param options.onChange - The callback function when the state changes.
   * @param options.removeEmptyFilters - Indicates whether to remove empty filters from the query.
   * @param options.fallback - The fallback component to render when the query is not available.
   * @returns - An object containing the pagination state and methods.
   * @property listProps - The props to be passed to a list component.
   * @property listProps.onFilterChange - The callback function to handle filter change.
   * @property listProps.onLimitChange - The callback function to handle limit change.
   * @property listProps.onPageChange - The callback function to handle page change.
   * @property listProps.onSortModelChange - The callback function to handle sort model change.
   * @property listProps.onChipsChange - The callback function to handle chip data change.
   * @property listProps.onSearchChange - The callback function to handle search change.
   * @property listProps.fallback - The fallback component to render when the query is not available.
   * @property listProps.filterData - The filter data in the query.
   * @property listProps.sortModel - The sort model in the query.
   * @property listProps.chipData - The chip data in the query.
   * @property listProps.limit - The limit in the query.
   * @property listProps.page - The page in the query.
   * @property listProps.search - The search value in the query.
   * @property getFilterData - Returns the filter data in the query.
   * @property getSortModel - Returns the sort model in the query.
   * @property getChipData - Returns the chip data in the query.
   * @property getLimit - Returns the limit in the query.
   * @property getPage - Returns the page in the query.
   * @property getSearch - Returns the search value in the query.
   * @property setFilterData - Sets the filter data in the query.
   * @property setSortModel - Sets the sort model in the query.
   * @property setChipData - Sets the chip data in the query.
   * @property setLimit - Sets the limit in the query.
   * @property setPage - Sets the page in the query.
   * @property setSearch - Sets the search value in the query.
   */
  export const useHistoryStatePagination: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
  >(
    history: History,
    {
      initialValue,
      onFilterChange: handleFilterChange,
      onLimitChange: handleLimitChange,
      onPageChange: handlePageChange,
      onSortModelChange: handleSortModelChange,
      onChipsChange: handleChipsChange,
      onSearchChange: handleSeachChange,
      onChange: handleChange,
      removeEmptyFilters,
      fallback,
    }?: Partial<IParams<FilterData, RowData>>,
  ) => {
    setFilterData: (data: FilterData) => void;
    setSortModel: (
      sort: import("../../../model/IListProps").ListHandlerSortModel<RowData>,
    ) => void;
    setChipData: (data: Partial<Record<keyof RowData, boolean>>) => void;
    setLimit: (limit: number) => void;
    setPage: (page: number) => void;
    setSearch: (search: string) => void;
    getFilterData: () => Exclude<Partial<FilterData>, undefined>;
    getSortModel: () => import("../../../model/IListProps").ListHandlerSortModel<RowData>;
    getChipData: () => Exclude<
      Partial<Record<keyof RowData, boolean>>,
      undefined
    >;
    getLimit: () => number;
    getPage: () => number;
    getSearch: () => string;
    listProps: {
      filterData: Partial<FilterData> | undefined;
      sortModel:
        | import("../../../model/IListProps").ListHandlerSortModel<RowData>
        | undefined;
      chipData: Partial<Record<keyof RowData, boolean>> | undefined;
      limit: number | undefined;
      page: number | undefined;
      search: string | undefined;
      fallback?: ((e: Error) => void) | undefined;
      onFilterChange: (data: FilterData) => void;
      onLimitChange: (limit: number) => void;
      onPageChange: (page: number) => void;
      onSortModelChange: (
        sort: import("../../../model/IListProps").ListHandlerSortModel<RowData>,
      ) => void;
      onChipsChange: (data: Partial<Record<keyof RowData, boolean>>) => void;
      onSearchChange: (search: string) => void;
    };
  };
  export default useHistoryStatePagination;
}

declare module "react-declarative/components/List/api/useListSelection" {
  import { RowId } from "react-declarative/model/IRowData";
  /**
   * Represents the interface for the params.
   * @interface
   */
  interface IParams {
    selectedRows?: RowId[];
    onChange: (selectedRows: RowId[]) => void;
  }
  /**
   * A custom hook that manages the selection of rows in a list.
   *
   * @returns - An object containing the selected rows, list props, and a function to deselect all rows.
   */
  export const useListSelection: ({
    selectedRows: defaultSelectedRows,
    onChange,
  }?: Partial<IParams>) => {
    readonly selectedRows: RowId[];
    readonly listProps: {
      readonly selectedRows: RowId[];
      readonly onSelectedRows: (rowIds: RowId[]) => void;
    };
    readonly deselectAll: () => void;
    readonly setSelectedRows: import("react").Dispatch<
      import("react").SetStateAction<RowId[]>
    >;
  };
  export default useListSelection;
}

declare module "react-declarative/components/List/api/useListAction" {
  import IRowData, { RowId } from "react-declarative/model/IRowData";
  /**
   * Interface for defining parameters for a specific operation.
   *
   * @template Data - The type of row data used in the operation.
   */
  interface IParams<Data extends IRowData = IRowData> {
    fetchRow: (id: RowId) => Data | Promise<Data>;
    onAction?: (
      action: string,
      rows: Data[],
      deselectAll: () => void,
    ) => Promise<void> | void;
    onRowAction?: (
      action: string,
      row: Data,
      deselectAll: () => void,
    ) => Promise<void> | void;
    onSelectionChange?: (selectedRows: RowId[]) => void;
    selectedRows?: RowId[];
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    throwError?: boolean;
    fallback?: (e: Error) => void;
  }
  /**
   * Provides a set of actions and hooks for managing a list of data.
   *
   * @template Data - The type of the data in the list.
   *
   * @param params - The parameters for configuring the list actions.
   * @param params.onLoadStart - The function to be called when data loading starts.
   * @param params.onLoadEnd - The function to be called when data loading ends.
   * @param params.throwError - The function to be called when an error occurs.
   * @param params.fallback - The function to be called when data loading fails.
   * @param params.fetchRow - The function to fetch a single row of data.
   * @param params.onAction - The function to be called when a bulk action is performed.
   * @param params.onRowAction - The function to be called when a row action is performed.
   *
   * @returns - The list actions and necessary data.
   */
  export const useListAction: <Data extends IRowData = IRowData>({
    onLoadStart,
    onLoadEnd,
    throwError,
    fallback,
    fetchRow,
    onAction,
    onRowAction,
    onSelectionChange,
    selectedRows: upperSelectedRows,
  }: IParams<Data>) => {
    readonly deselectAll: () => void;
    readonly selectedRows: RowId[];
    readonly listProps: {
      readonly selectedRows: RowId[];
      readonly onSelectedRows: (rowIds: RowId[]) => void;
    };
    readonly commitAction: (p?: string | undefined) => Promise<void | null>;
    readonly commitRowAction: (
      action: string,
      row: Data,
    ) => Promise<void | null>;
  };
  export default useListAction;
}

declare module "react-declarative/components/List/components/SlotFactory" {
  export * from "react-declarative/components/List/components/SlotFactory/SlotFactory";
  export * from "react-declarative/components/List/components/SlotFactory/SlotContext";
  export * from "react-declarative/components/List/components/SlotFactory/ISlotFactoryContext";
  export { default } from "react-declarative/components/List/components/SlotFactory/SlotFactory";
}

declare module "react-declarative/components/List/hooks/useFilterData" {
  import * as React from "react";
  import IListProps from "react-declarative/model/IListProps";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Represents the context for a specific instance of a list component.
   *
   * @template FilterData - The type of the filter data object.
   * @template RowData - The type of the row data object.
   * @template Payload - The type of the payload object.
   * @template Field - The type of the field object.
   */
  type IContext<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
    Field extends IField = IField<FilterData, Payload>,
  > = Exclude<
    IListProps<FilterData, RowData, Payload, Field>["filterData"],
    undefined
  >;
  /**
   * Represents the interface for the props of a React component.
   *
   * @template FilterData - The type of the filter data.
   * @template RowData - The type of the row data.
   * @template Payload - The type of the payload.
   * @template Field - The type of the field.
   */
  interface IProps<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
    Field extends IField = IField<FilterData, Payload>,
  > {
    value: IContext<FilterData, RowData, Payload, Field>;
    children: React.ReactNode;
  }
  /**
   * Provides filtered data to its children components.
   * @template FilterData - The type of the data used for filtering.
   * @template RowData - The type of the row data.
   * @template Payload - The type of the payload.
   * @template Field - The type of the field.
   *
   * @param props - The props for the FilterDataProvider.
   * @param props.children - The children components.
   * @param props.value - The value used for filtering.
   *
   * @returns The FilterDataProvider component.
   */
  export const FilterDataProvider: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload extends unknown = any,
    Field extends IField<any, any> = IField<FilterData, Payload>,
  >({
    children,
    value,
  }: IProps<FilterData, RowData, Payload, Field>) => JSX.Element;
  /**
   * Retrieves the filter data from the FilterDataContext.
   *
   * @template FilterData - The type of the filter data.
   * @template RowData - The type of the row data.
   * @template Payload - The type of the payload.
   * @template Field - The type of the field.
   *
   * @returns The filter context as IContext<FilterData, RowData, Payload, Field>.
   */
  export const useFilterData: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload extends unknown = any,
    Field extends IField<any, any> = IField<FilterData, Payload>,
  >() => Exclude<Partial<FilterData>, undefined>;
  export default useFilterData;
}

declare module "react-declarative/components/List/hooks/usePagination" {
  import * as React from "react";
  import { ListHandlerPagination } from "react-declarative/model/IListProps";
  type IContext = ListHandlerPagination;
  /**
   * @interface IProps
   * @extends IContext
   * @description Represents the properties of a React component.
   */
  interface IProps extends IContext {
    children: React.ReactNode;
  }
  /**
   * PaginationProvider component serves as a provider for limiting and offsetting pagination data.
   *
   * @param children - The child component(s) that will be rendered within the provider.
   * @param limit - The maximum number of items to be displayed per page.
   * @param offset - The starting index of the items to be displayed.
   *
   * @returns - The PaginationProvider component.
   */
  export const PaginationProvider: ({
    children,
    limit,
    offset,
  }: IProps) => JSX.Element;
  export const usePagination: () => ListHandlerPagination;
  export default usePagination;
}

declare module "react-declarative/components/List/hooks/useSortModel" {
  import React from "react";
  import {
    IListSortItem,
    ListHandlerSortModel,
  } from "react-declarative/model/IListProps";
  export const useSortModel: () => IState;
  /**
   * Interface for the props of the `ISortModelProvider` component.
   */
  interface ISortModelProviderProps {
    children: React.ReactNode;
    sortModel: ListHandlerSortModel;
  }
  /**
   * Represents the interface for managing the state of a list sorting model.
   */
  interface IState {
    sortModel: Map<IListSortItem["field"], IListSortItem>;
    setSortModel: (s: Map<IListSortItem["field"], IListSortItem>) => void;
  }
  /**
   * Provides sorting functionality for a list component.
   *
   * @typedef SortModelProvider
   * @property children - The child components.
   * @property sortModel - The initial sort model.
   */
  export const SortModelProvider: ({
    children,
    sortModel: upperSortModel,
  }: ISortModelProviderProps) => JSX.Element;
  export default useSortModel;
}

declare module "react-declarative/components/List/hooks/useChips" {
  import React from "react";
  import {
    IListChip,
    ListHandlerChips,
  } from "react-declarative/model/IListProps";
  /**
   * Retrieves the context value from the 'ChipsContext' using the useContext hook.
   *
   * @returns The context value obtained from the 'ChipsContext'.
   */
  export const useChips: () => IState;
  /**
   * Interface representing the props for the ChipsProvider component.
   */
  interface IChipsProviderProps {
    children: React.ReactNode;
    chips: IListChip[];
    chipData: ListHandlerChips;
  }
  /**
   * Represents the state of a system.
   * @interface IState
   */
  interface IState {
    chips: Map<string, boolean>;
    setChips: (s: Map<string, boolean>) => void;
  }
  /**
   * Provides chips functionality to its children components.
   *
   * @typedef IChipsProviderProps
   * @property children - The children components of the ChipsProvider.
   * @property chips - The array of chips with their initial enabled state.
   * @property chipData - The object containing chip data where the key is the chip name and the value is the chip data.
   */
  export const ChipsProvider: ({
    children,
    chips: upperChips,
    chipData,
  }: IChipsProviderProps) => JSX.Element;
  export default useChips;
}

declare module "react-declarative/components/List/hooks/useSearch" {
  import * as React from "react";
  type IContext = string;
  /**
   * @typedef IProps
   * @property value - The context value to be passed to the children.
   * @property children - The React node to be rendered as children.
   */
  interface IProps {
    value: IContext;
    children: React.ReactNode;
  }
  /**
   * Represents a component that provides search functionality.
   * @param props - The props object containing the component's properties.
   * @param props.value - The search value to be provided to child components.
   */
  export const SearchProvider: (props: IProps) => JSX.Element;
  export const useSearch: () => string;
  export default useSearch;
}

declare module "react-declarative/components/List/hooks/usePayload" {
  import * as React from "react";
  import IListProps from "react-declarative/model/IListProps";
  /**
   * Interface representing the props for the IPayloadProvider component.
   */
  interface IPayloadProviderProps {
    children: React.ReactNode;
    value: Exclude<IListProps["payload"], undefined>;
  }
  /**
   * PayloadProvider component.
   *
   * @param props - The component props.
   * @param props.children - The child components.
   * @param [props.value={}] - The initial value of the payload.
   *
   * @returns - The component's rendered output.
   */
  export const PayloadProvider: ({
    children,
    value,
  }: IPayloadProviderProps) => JSX.Element;
  /**
   * Retrieves the payload from the `PayloadContext` using the `useContext` hook.
   *
   * @returns The payload from the `PayloadContext`.
   */
  export const usePayload: () => any;
  export default usePayload;
}

declare module "react-declarative/components/List/hooks/useReload" {
  /**
   * A function that returns a callback function for reloading data.
   *
   * @function
   * @returns A callback function for reloading data.
   *
   */
  export const useReload: () => (
    keepPagination?: boolean | undefined,
  ) => Promise<void>;
  export default useReload;
}

declare module "react-declarative/components/List/hooks/useSelection" {
  import React from "react";
  import { RowId } from "react-declarative/model/IRowData";
  /**
   * Returns the current selection from the SelectionContext.
   *
   * @function useSelection
   * @returns The current selection value from the SelectionContext.
   */
  export const useSelection: () => IState;
  /**
   * Represents the properties for the ISelectionProvider component.
   */
  interface ISelectionProviderProps {
    children: React.ReactNode;
    selectedRows?: RowId[];
  }
  /**
   * Represents the state of a selection.
   * @interface
   */
  interface IState {
    selection: Set<RowId>;
    setSelection: (s: Set<RowId>) => void;
  }
  /**
   * Represents a selection reload reference.
   * @interface
   */
  export interface ISelectionReloadRef {
    reload: (initialChange?: boolean) => void;
  }
  /**
   * SelectionProvider component
   *
   * @param props - The properties of the component.
   * @param props.children - The children to be rendered.
   * @param props.selectedRows - The initial selected rows.
   *
   * @returns - The rendered component.
   */
  export const SelectionProvider: ({
    children,
    selectedRows,
  }: ISelectionProviderProps) => JSX.Element;
  export default useSelection;
}

declare module "react-declarative/components/List/hooks/useModalSort" {
  import * as React from "react";
  export const useModalSort: () => () => void;
  /**
   * Represents the properties for the ModalSortProvider component.
   */
  interface IModalSortProviderProps {
    children: React.ReactNode;
  }
  /**
   * ModalSortProvider is a component that acts as a provider for sorting modal functionality.
   * It wraps the children components with the necessary providers to enable modal sorting.
   *
   * @param props - The component props.
   * @param props.children - The child components to be wrapped by the modal sorting providers.
   * @returns - The wrapped child components with modal sorting providers.
   */
  export const ModalSortProvider: ({
    children,
  }: IModalSortProviderProps) => JSX.Element;
  export default useModalSort;
}

declare module "react-declarative/components/List/hooks/useDropFilters" {
  /**
   * A function that returns a callback function to handle drop filters.
   *
   * @returns - The callback function to handle drop filters.
   */
  export const useDropFilters: () => () => void;
  export default useDropFilters;
}

declare module "react-declarative/components/List/hooks/useStateAction" {
  import { IRowData } from "react-declarative/model/IRowData";
  import {
    ListHandlerChips,
    ListHandlerSortModel,
  } from "react-declarative/model/IListProps";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents an action indicating that filter data has changed.
   * @interface
   */
  interface IFilterDataChangedStateAction {
    /** The type of the action. */
    type: "filterdata-changed";
    /** The updated filter data. */
    filterData: Record<string, unknown>;
    /** A flag indicating whether pagination should be kept. */
    keepPagination: boolean;
  }
  /**
   * Represents an action indicating that rows have changed.
   * @interface
   */
  interface IRowsChangedStateAction {
    /** The type of the action. */
    type: "rows-changed";
    /** The updated rows data. */
    rows: IRowData[];
    /** The total number of rows, or null if unknown. */
    total: number | null;
  }
  /**
   * Represents an action indicating that chips have changed.
   * @interface
   */
  interface IChipsChangedStateAction {
    /** The type of the action. */
    type: "chips-changed";
    /** The updated chips data. */
    chips: ListHandlerChips;
  }
  /**
   * Represents an action indicating that search criteria have changed.
   * @interface
   */
  interface ISearchChangedStateAction {
    /** The type of the action. */
    type: "search-changed";
    /** The updated search string. */
    search: string;
  }
  /**
   * Represents an action indicating that sorting criteria have changed.
   * @interface
   */
  interface ISortChangedStateAction {
    /** The type of the action. */
    type: "sort-changed";
    /** The updated sort model. */
    sort: ListHandlerSortModel;
  }
  /**
   * Represents an action for submitting new list of rows to data grid.
   * @interface
   */
  interface IRowsReloadStateAction {
    /** The type of action, indicating that rows have been changed. */
    type: "rows-reload";
    /** An array of row data representing the changes made to the rows. */
    rows: IRowData[];
  }
  /**
   * Represents a state action that can be dispatched to update the application state.
   */
  export type IStateAction =
    | IFilterDataChangedStateAction
    | IRowsChangedStateAction
    | IChipsChangedStateAction
    | ISearchChangedStateAction
    | ISortChangedStateAction
    | IRowsReloadStateAction;
  export const StateActionProvider: ({
      children,
      payload,
    }: {
      children: import("react").ReactNode /** The total number of rows, or null if unknown. */;
      payload: TSubject<IStateAction>;
    }) => JSX.Element,
    useStateAction: () => TSubject<IStateAction>;
  export default useStateAction;
}

declare module "react-declarative/components/List/hooks/useUpsertManager" {
  import { IListState } from "react-declarative/model/IListProps";
  import TSubject from "react-declarative/model/TSubject";
  interface IParams {
    scrollYSubject?: TSubject<number>;
    rows: IListState["rows"];
  }
  export const useUpsertManager: ({
    scrollYSubject,
    rows: upperRows,
  }: IParams) => {
    rows: any[];
    recomputeSubject: import("../../..").Subject<void>;
  };
  export default useUpsertManager;
}

declare module "react-declarative/components/List/hooks/useToggleHandler" {
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Toggles the selection of a given row and updates the selection state.
   *
   * @template RowData The type of data in the row.
   * @param row The row data to toggle the selection for.
   * @returns A function that takes an event and toggles the selection for the row.
   */
  export const useToggleHandler: <RowData extends IRowData = any>(
    row: RowData,
  ) => (radio?: boolean) => (e: any) => void;
  export default useToggleHandler;
}

declare module "react-declarative/components/List/hooks/useIntersection" {
  import * as React from "react";
  import { RowId } from "react-declarative/model/IRowData";
  interface IIntersectionProviderProps {
    children: React.ReactNode;
  }
  export const IntersectionProvider: ({
    children,
  }: IIntersectionProviderProps) => JSX.Element;
  export const useIntersectionConnect: <T extends HTMLElement = HTMLElement>(
    id: RowId,
  ) => (ref: T | null) => void;
  export const useIntersectionListen: (id: RowId) => boolean;
  export const useIntersectionStorage: () => {
    getValue(): RowId | null;
    setValue(value: RowId | null): void;
  };
  export {};
}

declare module "react-declarative/components/List/common/ClassicChipListSlot" {
  import { IChipListSlot } from "react-declarative/components/List/slots/ChipListSlot";
  /**
   * Renders a chip list in a slot layout.
   *
   * @param listChips - The array of chip objects to be rendered.
   * @param loading - Indicates whether the chip list is currently loading.
   * @returns - The rendered chip list slot component.
   */
  export const ClassicChipListSlot: (props: IChipListSlot) => JSX.Element;
  export default ClassicChipListSlot;
}

declare module "react-declarative/components/List/common/ClassicFilterListSlot" {
  import { IFilterListSlot } from "react-declarative/components/List/slots/FilterListSlot";
  /**
   * Represents a classic filter list slot component.
   *
   * @template FilterData - The data type of the filter.
   *
   * @param props - The props for the component.
   * @param props.className - The class name for the component.
   * @param props.style - The inline style for the component.
   * @param props.height - The height of the component.
   * @param props.filterData - The filter data for the component.
   * @param props.filters - The filters for the component.
   * @param props.change - The function to call when the filter changes.
   * @param props.label - The label for the component.
   * @param props.loading - Indicates if the component is loading.
   * @param props.withSearch - Indicates if the component has search functionality.
   * @param props.withToggledFilters - Indicates if the component has toggled filters.
   * @param props.search - The search query for the component.
   * @param props.onSearchChange - The function to call when the search query changes.
   * @param props.onFilterChange - The function to call when the filter changes.
   * @param props.onCollapsedChange - The function to call when the component's collapsed state changes.
   *
   * @returns The classic filter list slot component.
   */
  export const ClassicFilterListSlot: <FilterData extends {}>({
    className,
    style,
    height,
    filterData,
    filters,
    change,
    label,
    loading,
    withSearch,
    withToggledFilters,
    search,
    onSearchChange,
    onFilterChange,
    onCollapsedChange,
  }: IFilterListSlot<FilterData>) => JSX.Element;
  export default ClassicFilterListSlot;
}

declare module "react-declarative/components/List/common/DialogFilterListSlot" {
  import { IFilterListSlot } from "react-declarative/components/List/slots/FilterListSlot";
  /**
   * DialogFilterListSlot represents a reusable component for displaying and managing a list of filters in a dialog.
   *
   * @template FilterData - The type of the filter data.
   *
   * @param props - The props for the component.
   * @param props.className - The class name for the component.
   * @param props.style - The inline style for the component.
   * @param props.filterData - The filter data.
   * @param props.filters - The list of filters.
   * @param props.change - The function to call when the filters are changed.
   * @param props.label - The label for the filter list.
   * @param props.loading - Indicates if the filter list is currently loading.
   * @param props.withSearch - Indicates if a search input should be displayed.
   * @param props.withToggledFilters - Indicates if the filters should be toggled.
   * @param props.search - The search value.
   * @param props.onSearchChange - The function to call when the search value is changed.
   * @param props.onFilterChange - The function to call when a filter is changed.
   *
   * @returns - The rendered component.
   */
  export const DialogFilterListSlot: <FilterData extends {}>({
    className,
    style,
    filterData,
    filters,
    change,
    label,
    loading,
    withSearch,
    withToggledFilters,
    search,
    onSearchChange,
    onFilterChange,
  }: IFilterListSlot) => JSX.Element;
  export default DialogFilterListSlot;
}

declare module "react-declarative/components/List/common/ModalFilterListSlot" {
  import { IFilterListSlot } from "react-declarative/components/List/slots/FilterListSlot";
  /**
   * ModalFilterListSlot is a component that displays a filter list with a modal.
   *
   * @typedef FilterData - The type of filter data.
   * @property className - The class name for the component.
   * @property style - The inline style for the component.
   * @property filterData - The filter data object.
   * @property filters - The array of filters for the modal.
   * @property change - The function to handle filter change event.
   * @property label - The label for the filter list.
   * @property loading - The loading state of the component.
   * @property withSearch - Whether to show the search input or not.
   * @property withToggledFilters - Whether to show the filter button or not.
   * @property search - The search query for the search input.
   * @property onSearchChange - The function to handle search change event.
   * @property onFilterChange - The function to handle filter change event.
   */
  export const ModalFilterListSlot: <FilterData extends {}>({
    className,
    style,
    filterData,
    filters,
    change,
    label,
    loading,
    withSearch,
    withToggledFilters,
    search,
    onSearchChange,
    onFilterChange,
  }: IFilterListSlot) => JSX.Element;
  export default ModalFilterListSlot;
}

declare module "react-declarative/components/List/common/ModernChipListSlot" {
  import { IChipListSlot } from "react-declarative/components/List/slots/ChipListSlot";
  /**
   * Renders a chip list slot component.
   *
   * @param listChips - The list of chips to render.
   * @param loading - Indicates whether the component is in a loading state.
   * @returns - The chip list slot component.
   */
  export const ModernChipListSlot: (props: IChipListSlot) => JSX.Element;
  export default ModernChipListSlot;
}

declare module "react-declarative/components/List/common/DenseFilterListSlot" {
  export * from "react-declarative/components/List/common/DenseFilterListSlot/DenseFilterListSlot";
  export { default } from "react-declarative/components/List/common/DenseFilterListSlot/DenseFilterListSlot";
}

declare module "react-declarative/components/List/common/DenseSearchSlot" {
  export * from "react-declarative/components/List/common/DenseSearchSlot/DenseSearchSlot";
  export { default } from "react-declarative/components/List/common/DenseSearchSlot/DenseSearchSlot";
}

declare module "react-declarative/components/List/components/common/ListActionAdd" {
  import { IActionAddSlot } from "react-declarative/components/List/slots/ActionAddSlot";
  export const ListActionAdd: ({
    action,
    width,
    label,
    isVisible,
    isDisabled,
  }: IActionAddSlot) => JSX.Element;
  export default ListActionAdd;
}

declare module "react-declarative/components/List/components/common/ListActionFab" {
  import { IActionFabSlot } from "react-declarative/components/List/slots/ActionFabSlot";
  export const ListActionFab: ({
    action,
    label,
    width,
    icon: Icon,
    isVisible,
    isDisabled,
  }: IActionFabSlot) => JSX.Element;
  export default ListActionFab;
}

declare module "react-declarative/components/List/components/common/ListActionMenu" {
  import { IActionMenuSlot } from "react-declarative/components/List/slots/ActionMenuSlot";
  export const ListActionMenu: ({
    options,
    deps,
  }: IActionMenuSlot) => JSX.Element | null;
  export default ListActionMenu;
}

declare module "react-declarative/components/List/hooks/useColumnConfig" {
  import IColumn from "react-declarative/model/IColumn";
  /**
   * Represents the properties for the SortModal component.
   */
  interface ISortModalProps {
    columns: IColumn[];
    storageKey: string;
  }
  /**
   * Manages column configuration for sorting modal.
   *
   * @param params - The parameters for the sorting modal.
   * @returns - An object containing the open state, render function, sorted columns, and pick
   *Columns function.
   */
  export const useColumnConfig: ({ columns, storageKey }: ISortModalProps) => {
    open: boolean;
    render: () => JSX.Element;
    columns: IColumn<any, any, any>[];
    pickColumns: () => void;
  };
  export default useColumnConfig;
}

declare module "react-declarative/components/List/rules" {
  export * from "react-declarative/components/List/rules/denceFilterRule";
}

declare module "react-declarative/components/Tile/model/ITile" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents a tile.
   * @template Data - The type of the data stored in the tile.
   * @template Payload - The type of the payload stored in the tile.
   */
  export interface ITile<Data = IAnything, Payload = IAnything> {
    data: Data;
    index: number;
    payload: Payload;
    isSelected: boolean;
    rowMark: string;
    toggleSelection: () => void;
  }
  export default ITile;
}

declare module "react-declarative/components/common/ItemModal" {
  export * from "react-declarative/components/common/ItemModal/ItemModal";
  export { default } from "react-declarative/components/common/ItemModal/ItemModal";
}

declare module "react-declarative/components/One/components/SlotFactory" {
  export * from "react-declarative/components/One/components/SlotFactory/SlotFactory";
  export * from "react-declarative/components/One/components/SlotFactory/SlotContext";
  export * from "react-declarative/components/One/components/SlotFactory/ISlotFactoryContext";
  export { default } from "react-declarative/components/One/components/SlotFactory/SlotFactory";
}

declare module "react-declarative/components/ModalProvider/ModalProvider" {
  import * as React from "react";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Interface for the properties of the ModalProvider component.
   */
  interface IModalProviderProps {
    children: React.ReactNode;
  }
  /**
   * Represents an interface for a renderer component.
   *
   * @typedef IRenderer
   *
   * @interface
   */
  type IRenderer = React.ComponentType<IAnything>;
  /**
   * Represents a hook that provides methods for rendering and manipulating modals.
   *
   * @typedef IHook
   * @param render - The renderer to use for rendering the modals.
   * @param [deps] - Optional dependencies required for the hook.
   * @returns An object containing the methods for showing and hiding modals.
   *
   * @method showModal - Show a modal.
   * @method hideModal - Hide a modal.
   */
  interface IHook {
    (
      render: IRenderer,
      deps?: any[],
    ): {
      showModal: Function;
      hideModal: Function;
    };
  }
  /**
   * ModalProvider
   *
   * The ModalProvider component provides a context for managing modals and rendering elements.
   *
   * @param props - The props for the ModalProvider component.
   * @param props.children - The child nodes to be rendered within the ModalProvider.
   *
   * @returns - The ModalProvider component.
   */
  export const ModalProvider: ({
    children,
  }: IModalProviderProps) => JSX.Element;
  /**
   * useModal is a custom hook that provides functionality to show and hide a modal.
   *
   * @typedef IHook
   * @property showModal - A function that shows the modal.
   * @property hideModal - A function that hides the modal.
   *
   * @param renderer - The renderer function to be executed when the modal is shown.
   * @param deps - The dependencies array to trigger updates when the modal is shown.
   * @returns The object containing the showModal and hideModal functions.
   */
  export const useModal: IHook;
  export default ModalProvider;
}

declare module "react-declarative/components/SnackProvider/SnackProvider" {
  import * as React from "react";
  /**
   * Interface representing props for SnackProvider component.
   */
  interface ISnackProviderProps {
    children: React.ReactNode;
    delay?: number;
  }
  const useSnack: () => (msg: string) => void;
  /**
   * SnackProvider is a component that provides snack notifications to its children.
   *
   * @param props - The props for SnackProvider component.
   * @param props.children - The children components that will have access to snack notifications.
   * @param [props.delay] - The delay for auto hiding the snack notifications.
   *
   * @returns - The SnackProvider component.
   */
  export const SnackProvider: ({
    children,
    delay,
  }: ISnackProviderProps) => JSX.Element;
  export { useSnack };
  export default SnackProvider;
}

declare module "react-declarative/components/SizeProvider/SizeProvider" {
  import { BoxProps } from "@mui/material/Box";
  import ISize from "react-declarative/model/ISize";
  /**
   * Represents a size provider that provides size information for rendering components.
   * This interface extends the `BoxProps` interface from the `@material-ui/core` library, and allows
   * customization of the target element for size measurement.
   */
  interface ISizeProvider
    extends Omit<
      BoxProps,
      keyof {
        ref: never;
      }
    > {
    target?: HTMLElement;
  }
  const useSize: () => ISize;
  /**
   * Provides the size of a target element.
   *
   * @param props - The properties used by the SizeProvider component.
   * @param props.children - The child elements.
   * @param props.className - The class name to be added to the root element.
   * @param props.target - The target element to observe for size changes.
   * @returns The SizeProvider component.
   */
  export const SizeProvider: ({
    children,
    className,
    target,
    ...props
  }: ISizeProvider) => JSX.Element;
  export { useSize };
  export default SizeProvider;
}

declare module "react-declarative/components/ModalManager/ModalManagerProvider" {
  import * as React from "react";
  /**
   * Represents the properties for the `ModalManagerProvider` component.
   */
  interface IModalManagerProviderProps {
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    throwError?: boolean;
    fallback?: (error: Error) => void;
    children: React.ReactNode;
  }
  /**
   * ModalManagerProvider component provides a context for managing modals in an application.
   *
   * @param props - The props object containing the following properties:
   *   - children: ReactNode - The child components to be rendered inside the provider.
   *   - fallback: ReactNode - The fallback component to be rendered when there are no modals.
   *   - throwError: boolean - Whether to throw an error when an unexpected state occurs.
   *   - onLoadEnd: function - Callback function to be executed after loading ends.
   *   - onLoadStart: function - Callback function to be executed before loading starts.
   *
   * @returns The rendered ModalManagerProvider component.
   */
  export const ModalManagerProvider: ({
    children,
    fallback,
    throwError,
    onLoadEnd,
    onLoadStart,
  }: IModalManagerProviderProps) => JSX.Element;
  export default ModalManagerProvider;
}

declare module "react-declarative/components/ModalManager/model/IModal" {
  import ModalRender from "react-declarative/components/ModalManager/model/ModalRender";
  /**
   * Represents a modal component.
   *
   * @interface IModal
   */
  export interface IModal {
    id: string;
    render: ModalRender;
    /**
     * Function called when the component initializes.
     *
     * @typedef onInit
     * @return {Promise<void> | void} Returns a Promise that resolves when the initialization is complete, or undefined if there is no need for an asynchronous operation.
     */
    onInit?: () => Promise<void> | void;
    /**
     * Function called when the component mounts.
     *
     * @param count - The count parameter for the onMount function.
     * @param stack - The stack parameter for the onMount function.
     * @returns - A Promise that resolves to void or a void value.
     */
    onMount?: (count: number, stack: IModal[]) => Promise<void> | void;
    /**
     * Callback function called when unmounting occurs.
     *
     * @param count - The count value.
     * @param stack - The stack of modals.
     * @returns - A Promise that resolves when the function completes or void if no Promise is returned.
     */
    onUnmount?: (count: number, stack: IModal[]) => Promise<void> | void;
  }
  export default IModal;
}

declare module "react-declarative/components/ModalManager/model/ModalRender" {
  /**
   * Represents a function that renders a modal and returns React node.
   * @typedef ModalRender
   */
  export type ModalRender = () => React.ReactNode;
  export default ModalRender;
}

declare module "react-declarative/components/ModalManager/hooks/useModalManager" {
  import IModal from "react-declarative/components/ModalManager/model/IModal";
  /**
   * Represents a result object with a total property and push, pop, and clear methods.
   *
   * @interface
   */
  interface IResult {
    total: number;
    /**
     * Pushes a modal onto the stack.
     *
     * @param modal - The modal object to be pushed.
     * @returns
     */
    push: (modal: IModal) => void;
    /**
     * Removes the last element from an array and returns undefined.
     */
    pop: () => void;
    /**
     * Clears the modal stack.
     */
    clear: () => void;
  }
  /**
   * Returns a result object for managing modals using the ModalManagerContext.
   *
   * @return The result object for managing modals.
   */
  export const useModalManager: () => IResult;
  export default useModalManager;
}

declare module "react-declarative/components/common/ListPicker" {
  export * from "react-declarative/components/common/ListPicker/ListPicker";
  export { default } from "react-declarative/components/common/ListPicker/ListPicker";
}

declare module "react-declarative/components/CardView/CardView" {
  import ICardViewProps from "react-declarative/components/CardView/model/ICardViewProps";
  import IItemData from "react-declarative/components/CardView/model/IItemData";
  /**
   * Render a CardView component.
   *
   * @template ItemData - The type of data for card items.
   *
   * @param props - The props for CardView component.
   * @returns - The CardView component.
   */
  export const CardView: <ItemData extends IItemData = any>(
    props: ICardViewProps<ItemData, any>,
  ) => JSX.Element;
  export default CardView;
}

declare module "react-declarative/components/CardView/model/ICardViewAction" {
  import IOption from "react-declarative/model/IOption";
  import IItemData from "react-declarative/components/CardView/model/IItemData";
  /**
   * Represents an interface for an action in a card view.
   * This interface extends the Omit<IOption, keyof { isVisible: never; isDisabled: never; }> interface.
   *
   * @template ItemData - The type of data associated with the item.
   * @template Payload - The type of payload.
   */
  export interface ICardViewAction<
    ItemData extends IItemData = any,
    Payload extends any = any,
  > extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
      }
    > {
    isVisible?: (row: ItemData, payload: Payload) => Promise<boolean> | boolean;
    isDisabled?: (
      row: ItemData,
      payload: Payload,
    ) => Promise<boolean> | boolean;
  }
  export default ICardViewAction;
}

declare module "react-declarative/components/CardView/model/ICardViewOperation" {
  import { IActionTrigger } from "react-declarative/components/ActionTrigger";
  import IItemData from "react-declarative/components/CardView/model/IItemData";
  /**
   * Interface representing an operation for a card view.
   *
   * @template ItemData - The type of the item data.
   * @template Payload - The type of the payload.
   */
  export interface ICardViewOperation<
    ItemData extends IItemData = any,
    Payload extends any = any,
  > extends Omit<
      IActionTrigger,
      keyof {
        isAvailable: never;
      }
    > {
    isAvailable?: (
      selectedItems: ItemData[],
      isAllSelected: boolean,
      payload: Payload,
    ) => boolean | Promise<boolean>;
  }
  export default ICardViewOperation;
}

declare module "react-declarative/components/CardView/model/IItemData" {
  /**
   * Represents the data of an item.
   * @interface
   */
  export interface IItemData {
    id: string | number;
  }
  export default IItemData;
}

declare module "react-declarative/components/CalendarView/CalendarView" {
  import ICalendarViewProps from "react-declarative/components/CalendarView/model/ICalendarViewProps";
  /**
   * CalendarView component displays a calendar with various functionalities such as selecting dates, changing months, and changing years.
   *
   * @template Data - The type of data to be passed to the component
   * @template Payload - The type of payload to be used in the component
   *
   * @param props - The props object containing the necessary parameters for the CalendarView component
   *
   * @returns - The rendered CalendarView component
   */
  export const CalendarView: {
    <Data extends unknown = any, Payload extends unknown = any>(
      props: ICalendarViewProps<Data, Payload>,
    ): JSX.Element;
    /**
     * Initializes the dayjs for CalendarView component.
     *
     * @memberof CalendarView
     */
    init(): void;
  };
  export default CalendarView;
}

declare module "react-declarative/components/CalendarView/model/ICalendarItem" {
  import IAnything from "react-declarative/model/IAnything";
  import { stamp } from "react-declarative/utils/getMomentStamp";
  /**
   * Represents a calendar item.
   *
   * @export
   * @interface ICalendarItem
   * @template Data The type of data associated with the calendar item.
   * @template Payload The type of payload associated with the calendar item.
   */
  export interface ICalendarItem<Data = IAnything, Payload = IAnything> {
    data: Data;
    payload: Payload;
    stamp: stamp;
  }
  export default ICalendarItem;
}

declare module "react-declarative/components/CalendarView/model/ICalendarRequest" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents a calendar request.
   * @template Payload - The type of payload for the calendar request.
   */
  export interface ICalendarRequest<Payload extends IAnything = IAnything> {
    payload: Payload;
    fromStamp: number;
    toStamp: number;
  }
  export default ICalendarRequest;
}

declare module "react-declarative/components/CalendarView/model/ICalendarTile" {
  import IAnything from "react-declarative/model/IAnything";
  import { ITile } from "react-declarative/components/Tile";
  /**
   * Represents a calendar tile.
   *
   * @template Data - The type of data associated with the tile.
   * @template Payload - The type of additional payload associated with the tile.
   */
  export interface ICalendarTile<Data = IAnything, Payload = IAnything>
    extends Omit<
      ITile<Data, Payload>,
      keyof {
        toggleSelection: never;
        isSelected: never;
      }
    > {
    onDaySelect: () => void;
  }
  export default ICalendarTile;
}

declare module "react-declarative/components/FeatureView/FeatureView" {
  import IFeatureViewProps from "react-declarative/components/FeatureView/model/IFeatureViewProps";
  /**
   * Represents a feature view component.
   *
   * @typedef FeatureView
   * @property changeSubject - The subject of the change.
   * @property outlinePaper - Whether to outline the paper.
   * @property transparentPaper - Whether the paper is transparent.
   * @property className - The CSS class name for the component.
   * @property style - The CSS styles for the component.
   * @property sx - The theme styles for the component.
   * @property data - The data for the features.
   * @property readonly - Whether the component is read-only.
   * @property features - The list of available features.
   * @property expandAll - Whether to expand all features.
   * @property onChange - The function to call when a feature is changed.
   *
   * @returns The rendered component.
   */
  export const FeatureView: ({
    changeSubject,
    outlinePaper,
    transparentPaper,
    className,
    style,
    sx,
    data,
    readonly,
    features,
    expandAll,
    onChange,
  }: IFeatureViewProps) => JSX.Element;
  export default FeatureView;
}

declare module "react-declarative/components/FeatureView/hooks/useFeatureView" {
  import { IParams as IActionModalParams } from "react-declarative/components/ActionModal";
  import IFeatureViewProps from "react-declarative/components/FeatureView/model/IFeatureViewProps";
  /**
   * Represents the parameters for a feature view.
   * @interface IParams
   */
  interface IParams
    extends Omit<
      IFeatureViewProps,
      keyof {
        changeSubject: never;
      }
    > {
    title: IActionModalParams["title"];
    fullScreen: IActionModalParams["fullScreen"];
    fallback: IActionModalParams["fallback"];
    onLoadStart: IActionModalParams["onLoadStart"];
    onLoadEnd: IActionModalParams["onLoadEnd"];
    onSubmit?: (data: string[] | null) => boolean | Promise<boolean>;
    submitLabel: IActionModalParams["submitLabel"];
    withStaticAction?: IActionModalParams["withStaticAction"];
    withActionButton?: IActionModalParams["withActionButton"];
  }
  /**
   * Custom hook for displaying a feature view modal.
   *
   * @param params - The parameters for the feature view modal.
   * @param params.data - The feature data.
   * @param params.title - The title of the modal.
   * @param params.features - The features to display.
   * @param params.expandAll - Whether to expand all feature sections.
   * @param params.readonly - Whether the modal is readonly.
   * @param params.fullScreen - Whether the modal should be displayed in full screen.
   * @param params.fallback - The fallback react element to display if modal content is unavailable.
   * @param params.onLoadStart - Callback function to be called when modal starts to load.
   * @param params.onLoadEnd - Callback function to be called when modal finishes loading.
   * @param params.onSubmit - Callback function to be called when modal is submitted.
   * @param params.onChange - Callback function to be called when modal value changes.
   * @param params.submitLabel - The label for the submit button.
   * @param params.withActionButton - Whether to include an action button in the modal.
   * @param params.withStaticAction - Whether to include a static action in the modal.
   * @return - The modal hook object.
   */
  export const useFeatureView: ({
    data,
    title,
    features,
    expandAll,
    readonly,
    fullScreen,
    fallback,
    onLoadStart,
    onLoadEnd,
    onSubmit,
    onChange,
    submitLabel,
    withActionButton,
    withStaticAction,
  }: IParams) => {
    open: boolean;
    render: () => JSX.Element;
    pickData: (param?: any) => void;
  };
  export default useFeatureView;
}

declare module "react-declarative/components/FeatureView/model/IFeature" {
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  import FeatureType from "react-declarative/components/FeatureView/model/FeatureType";
  /**
   * Represents a feature.
   * @template Data - The data type of the feature.
   * @template Payload - The payload type of the feature.
   */
  export interface IFeature<
    Data extends IAnything = IAnything,
    Payload = IAnything,
  > {
    type?: FeatureType;
    name: string;
    label?: string;
    description?: string;
    defaultValue?: string | boolean;
    isDisabled?: IField<Data, Payload>["isDisabled"];
    isVisible?: IField<Data, Payload>["isVisible"];
    map?: IField<Data, Payload>["map"];
  }
  export default IFeature;
}

declare module "react-declarative/components/FeatureView/model/IFeatureGroup" {
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  import IFeature from "react-declarative/components/FeatureView/model/IFeature";
  /**
   * Represents a feature group that can contain multiple features.
   * @template Data - The type of data associated with the feature group.
   * @template Payload - The type of payload associated with the feature group.
   */
  export interface IFeatureGroup<
    Data extends IAnything = IAnything,
    Payload = IAnything,
  > {
    title: string;
    expanded?: boolean;
    children: IFeature<Data, Payload>[];
    isVisible?: IField<Data, Payload>["isVisible"];
    isDisabled?: IField<Data, Payload>["isDisabled"];
  }
  export default IFeatureGroup;
}

declare module "react-declarative/components/FeatureView/model/FeatureType" {
  /**
   * Represents a variant of the feature type.
   * @enum {string}
   */
  export enum FeatureType {
    Boolean = "boolean-feature",
    Number = "number-feature",
  }
  export default FeatureType;
}

declare module "react-declarative/components/VisibilityView/VisibilityView" {
  import IVisibilityViewProps from "react-declarative/components/VisibilityView/model/IVisibilityViewProps";
  /**
   * Represents the visibility view component.
   *
   * @param VisibilityView - The props for the visibility view component.
   * @param changeSubject - The function to change the subject.
   * @param outlinePaper - Whether to outline the paper.
   * @param transparentPaper - Whether the paper is transparent.
   * @param className - The CSS class name.
   * @param style - The style object.
   * @param sx - The sx prop for emotion/styled.
   * @param expandAll - Whether to expand all fields.
   * @param readonly - Whether the fields are readonly.
   * @param onChange - The function to handle changes.
   * @param groups - The array of field groups.
   * @param data - The data object.
   * @param keyToTitle - The function to convert a key to a title.
   * @returns The visibility view component.
   */
  export const VisibilityView: ({
    changeSubject,
    outlinePaper,
    transparentPaper,
    className,
    style,
    sx,
    expandAll,
    readonly,
    onChange,
    groups,
    data,
    ignore,
    keyToTitle,
  }: IVisibilityViewProps) => JSX.Element;
  export default VisibilityView;
}

declare module "react-declarative/components/VisibilityView/model/IVisibilityGroup" {
  import IField from "react-declarative/model/IField";
  /**
   * Represents a visibility group.
   *
   * @interface
   */
  export interface IVisibilityGroup {
    name: string;
    title?: string;
    description?: string;
    fields: IField[];
  }
  export default IVisibilityGroup;
}

declare module "react-declarative/components/VisibilityView/hooks/useVisibilityView" {
  import { IParams as IActionModalParams } from "react-declarative/components/ActionModal";
  import IVisibilityViewProps from "react-declarative/components/VisibilityView/model/IVisibilityViewProps";
  type Data = Record<string, string[]>;
  /**
   * Interface for defining parameters for a class.
   * @interface
   * @extends IVisibilityViewProps
   * @extends Omit<IActionModalParams, 'changeSubject'>
   */
  interface IParams
    extends Omit<
      IVisibilityViewProps,
      keyof {
        changeSubject: never;
      }
    > {
    fullScreen: IActionModalParams["fullScreen"];
    fallback: IActionModalParams["fallback"];
    onLoadStart: IActionModalParams["onLoadStart"];
    onLoadEnd: IActionModalParams["onLoadEnd"];
    onSubmit?: (data: Data | null) => boolean | Promise<boolean>;
    submitLabel: IActionModalParams["submitLabel"];
  }
  /**
   * Initializes and returns a visibility view component.
   *
   * @param params - The configuration parameters.
   * @param params.groups - The groups of fields to display.
   * @param params.data - The initial data values.
   * @param params.keyToTitle - The function to generate a title from a key.
   * @param params.expandAll - Flag indicating if all fields should be expanded by default.
   * @param params.readonly - Flag indicating if the view should be readonly.
   * @param params.fullScreen - Flag indicating if the view should be displayed in full screen.
   * @param params.fallback - The component to display if the main component fails to load.
   * @param params.onLoadStart - The function to call when the view starts loading.
   * @param params.onLoadEnd - The function to call when the view finishes loading.
   * @param params.onSubmit - The function to call when the form is submitted.
   * @param params.onChange - The function to call when the form's data changes.
   * @param params.submitLabel - The label for the submit button.
   * @returns - The visibility view component.
   */
  export const useVisibilityView: ({
    groups,
    data,
    keyToTitle,
    ignore,
    expandAll,
    readonly,
    fullScreen,
    fallback,
    onLoadStart,
    onLoadEnd,
    onSubmit,
    onChange,
    submitLabel,
  }: IParams) => {
    open: boolean;
    render: () => JSX.Element;
    pickData: (param?: any) => void;
  };
  export default useVisibilityView;
}

declare module "react-declarative/components/RecordView/RecordView" {
  import IData from "react-declarative/components/RecordView/model/IData";
  import IRecordViewProps from "react-declarative/components/RecordView/model/IRecordViewProps";
  /**
   * Renders a view to display record data with search capabilities.
   *
   * @template Data - The type of the data object.
   * @template Payload - The type of the payload object.
   *
   * @param props - The component props.
   * @param props.data - The data object to be displayed.
   * @param [props.search=''] - The search string.
   * @param [props.onSearchChanged] - The callback function triggered when the search string changes.
   * @param [props.formatValue] - The function used to format the value of a data key.
   * @param [props.formatKey] - The function used to format the key of a data entry.
   * @param [props.withExpandAll=false] - Specifies whether to display an option to expand all entries.
   * @param [props.withExpandRoot=false] - Specifies whether to display an option to expand the root entry.
   * @param [props.withExpandLevel=0] - The maximum level of entries to be expanded by default.
   * @param [props.expandList] - The list of data keys to be expanded by default.
   * @param [props.keyWidth=2] - The width of the key column.
   * @param [props.valueWidth=10] - The width of the value column.
   * @param [props.totalWidth] - The total width of the container.
   * @param [props.background] - The background color of the container.
   * @param [props.BeforeSearch] - The component to render before the search field.
   * @param [props.AfterSearch] - The component to render after the search field.
   * @param [props.payload] - The payload object to be passed as a prop to the container component.
   * @param [props.otherProps] - Any other additional props to be passed to the container component.
   *
   * @returns The rendered component.
   */
  export const RecordView: {
    <Data extends unknown = IData, Payload = any>({
      data: upperData,
      search,
      onSearchChanged,
      formatValue,
      formatKey,
      formatSearch,
      withExpandAll,
      withExpandRoot,
      withExpandLevel,
      expandList,
      keyWidth,
      valueWidth,
      totalWidth,
      background,
      BeforeSearch,
      AfterSearch,
      BeforeCollapseLabel,
      AfterCollapseLabel,
      payload,
      className,
      style,
      sx,
      EmptyItem,
      CustomItem,
      ...otherProps
    }: IRecordViewProps<Data, Payload>): JSX.Element;
    excelExport: (data: IData, sheetName?: string) => void;
  };
  export default RecordView;
}

declare module "react-declarative/components/RecordView/constant/RECORD_NEVER_VALUE" {
  export const RECORD_NEVER_VALUE = "react-declarative__recordView_never_value";
}

declare module "react-declarative/components/RecordView/helpers/excelExport" {
  import IData from "react-declarative/components/RecordView/model/IData";
  /**
   * Export data to Excel.
   *
   * @param data - The data to export to Excel.
   * @param [sheetName="Records"] - The name of the sheet in the Excel file. Default is "Records".
   */
  export const excelExport: (data: IData, sheetName?: string) => void;
  export default excelExport;
}

declare module "react-declarative/components/Scaffold2/Scaffold2" {
  import IScaffold2Props from "react-declarative/components/Scaffold2/model/IScaffold2Props";
  /**
   * Represents a scaffold component that provides state management and context providers.
   * @function Scaffold2
   * @param props - The props object containing the component's properties.
   * @param [props.appName="Scaffold2"] - The name of the app.
   * @param [props.noSearch=false] - Specifies if the search feature is disabled.
   * @param [props.noAppName=false] - Specifies if the app name should be hidden.
   * @param props.onInit - The callback function invoked during initialization.
   * @param props.onLoadStart - The callback function invoked before loading data.
   * @param props.onLoadEnd - The callback function invoked after loading data.
   * @param props.fallback - The fallback component to render in case of an error.
   * @param props.options - The options object.
   * @param props.payload - The payload object.
   * @param [props.deps=[]] - The array of dependencies.
   * @param props.throwError - Specifies if an error should be thrown.
   * @returns - The rendered component.
   */
  export const Scaffold2: <T extends unknown = any>(
    props: IScaffold2Props<T>,
  ) => JSX.Element;
  export default Scaffold2;
}

declare module "react-declarative/components/Scaffold2/model/IScaffold2Action" {
  import IOption from "react-declarative/model/IOption";
  import Payload from "react-declarative/components/Scaffold2/model/Payload";
  /**
   * Represents an action for a scaffold.
   *
   * @template T - The type of payload.
   */
  export interface IScaffold2Action<T = Payload>
    extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
      }
    > {
    /**
     * Determines the visibility of an element based on a provided payload.
     *
     * @param payload - The payload used to determine the visibility.
     * @returns - A promise or a boolean value indicating the visibility of the element.
     */
    isVisible?: (payload: T) => Promise<boolean> | boolean;
    /**
     * Indicates whether a certain payload is disabled.
     *
     * @param payload - The payload to check for disabled status.
     * @returns - A Promise or boolean value representing the disabled status.
     */
    isDisabled?: (payload: T) => Promise<boolean> | boolean;
  }
  export default IScaffold2Action;
}

declare module "react-declarative/components/Scaffold2/model/IScaffold2Group" {
  import React from "react";
  import IScaffold2Option, {
    IScaffold2OptionInternal,
  } from "react-declarative/components/Scaffold2/model/IScaffold2Option";
  import Payload from "react-declarative/components/Scaffold2/model/Payload";
  /**
   * Interface representing a group in IScaffold2.
   *
   * @template T - The type of payload for the options in the group.
   *
   * @property id - The unique identifier of the group.
   * @property [label] - The label to be displayed for the group.
   * @property [icon] - The icon to be displayed for the group.
   * @property [noHeader] - Flag indicating whether to display the header for the group.
   * @property [isVisible] - Function or Promise that returns a boolean indicating whether the group is visible.
   * @property [isDisabled] - Function or Promise that returns a boolean indicating whether the group is disabled.
   * @property children - The options belonging to the group.
   */
  export interface IScaffold2Group<T = Payload> {
    id: string;
    label?: string;
    icon?: React.ComponentType;
    iconColor?: string;
    noHeader?: boolean;
    /**
     * Checks if the element is visible.
     *
     * @returns - True if the element is visible.
     */
    isVisible?: () => boolean | Promise<boolean>;
    /**
     * Checks if the element is disabled.
     *
     * @returns - Returns a boolean value or a promise that resolves to a boolean value.
     */
    isDisabled?: () => boolean | Promise<boolean>;
    children: IScaffold2Option<T>[];
  }
  /**
   * Represents an internal group in the IScaffold2 component.
   *
   * @template T - The type of payload data.
   * @interface IScaffold2GroupInternal
   */
  export interface IScaffold2GroupInternal<T = Payload>
    extends Omit<
      IScaffold2Group<T>,
      keyof {
        isVisible: never;
        isDisabled: never;
        children: never;
      }
    > {
    path: string;
    visible: boolean;
    disabled: boolean;
    /**
     * Represents a collection of internal options for a Scaffold2 component.
     *
     * @template T - The type of the options.
     */
    children: IScaffold2OptionInternal<T>[];
  }
  export default IScaffold2Group;
}

declare module "react-declarative/components/Scaffold2/model/IScaffold2Option" {
  import { SxProps } from "@mui/material";
  import IScaffold2Tab, {
    IScaffold2TabInternal,
  } from "react-declarative/components/Scaffold2/model/IScaffold2Tab";
  import Payload from "react-declarative/components/Scaffold2/model/Payload";
  /**
   * Interface representing an option for an IScaffold2 component.
   * @template T - The type of the payload used by the option.
   */
  export interface IScaffold2Option<T = Payload> {
    id: string;
    label?: React.ReactNode;
    lifted?: boolean;
    pin?: boolean;
    sx?: SxProps<any>;
    icon?: React.ComponentType<any>;
    iconColor?: string;
    /**
     * Represents an array of `IScaffold2Tab` objects.
     * @template T - The type of the `IScaffold2Tab` object.
     */
    tabs?: IScaffold2Tab<T>[];
    /**
     * Represents an array of options for a variable.
     * @template T The type of the options.
     */
    options?: IScaffold2Option<T>[];
    /**
     * Determines the visibility of a given payload.
     *
     * @param payload - The payload to check visibility for.
     * @returns - The visibility status. Returns a boolean if synchronous, otherwise returns a Promise<boolean>.
     */
    isVisible?: (payload: T) => boolean | Promise<boolean>;
    /**
     * Checks if a payload is disabled.
     *
     * @param payload - The payload to check.
     * @returns - True if the payload is disabled, false otherwise.
     */
    isDisabled?: (payload: T) => boolean | Promise<boolean>;
  }
  /**
   * Represents an internal option for IScaffold2.
   *
   * @template T - The type of the payload.
   */
  export interface IScaffold2OptionInternal<T = Payload>
    extends Omit<
      IScaffold2Option<T>,
      keyof {
        isVisible: never;
        isDisabled: never;
        options: never;
        tabs: never;
      }
    > {
    path: string;
    visible: boolean;
    disabled: boolean;
    /**
     * Options for the given variable.
     *
     * @template T - The type of the options.
     */
    options?: IScaffold2OptionInternal<T>[];
    /**
     * Represents an array of internal scaffold tabs.
     * @template T - The type of data associated with the tabs.
     * @typedef Tabs
     */
    tabs?: IScaffold2TabInternal<T>[];
  }
  export default IScaffold2Option;
}

declare module "react-declarative/components/Scaffold2/model/IScaffold2Tab" {
  import React from "react";
  import Payload from "react-declarative/components/Scaffold2/model/Payload";
  /**
   * Represents a tab in the Scaffold2 component.
   * @template T - The payload type.
   */
  export interface IScaffold2Tab<T = Payload> {
    id: string;
    label?: string;
    icon?: React.ComponentType<any>;
    isVisible?: (payload: T) => Promise<boolean> | boolean;
    isDisabled?: (payload: T) => Promise<boolean> | boolean;
    isActive?: (payload: T) => Promise<boolean> | boolean;
  }
  /**
   * Represents an internal interface for a scaffold tab.
   * @template T - The payload type of the tab.
   */
  export interface IScaffold2TabInternal<T = Payload>
    extends Omit<
      IScaffold2Tab<T>,
      keyof {
        isVisible: never;
        isDisabled: never;
        isActive: never;
      }
    > {
    id: string;
    path: string;
    label?: string;
    icon?: React.ComponentType<any>;
    visible: boolean;
    disabled: boolean;
    active: boolean;
  }
  export default IScaffold2Tab;
}

declare module "react-declarative/components/Scaffold3/Scaffold3" {
  import IScaffold3Props from "react-declarative/components/Scaffold3/model/IScaffold3Props";
  /**
   * Represents a scaffold component that provides state management and context providers.
   * @function Scaffold3
   * @param props - The props object containing the component's properties.
   * @param [props.appName="Scaffold3"] - The name of the app.
   * @param [props.noSearch=false] - Specifies if the search feature is disabled.
   * @param [props.noAppName=false] - Specifies if the app name should be hidden.
   * @param props.onInit - The callback function invoked during initialization.
   * @param props.onLoadStart - The callback function invoked before loading data.
   * @param props.onLoadEnd - The callback function invoked after loading data.
   * @param props.fallback - The fallback component to render in case of an error.
   * @param props.options - The options object.
   * @param props.payload - The payload object.
   * @param [props.deps=[]] - The array of dependencies.
   * @param props.throwError - Specifies if an error should be thrown.
   * @returns - The rendered component.
   */
  export const Scaffold3: <T extends unknown = any>(
    props: IScaffold3Props<T>,
  ) => JSX.Element;
  export default Scaffold3;
}

declare module "react-declarative/components/Scaffold3/model/IScaffold3Action" {
  import IOption from "react-declarative/model/IOption";
  import Payload from "react-declarative/components/Scaffold3/model/Payload";
  /**
   * Represents an action for a scaffold.
   *
   * @template T - The type of payload.
   */
  export interface IScaffold3Action<T = Payload>
    extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
      }
    > {
    /**
     * Determines the visibility of an element based on a provided payload.
     *
     * @param payload - The payload used to determine the visibility.
     * @returns - A promise or a boolean value indicating the visibility of the element.
     */
    isVisible?: (payload: T) => Promise<boolean> | boolean;
    /**
     * Indicates whether a certain payload is disabled.
     *
     * @param payload - The payload to check for disabled status.
     * @returns - A Promise or boolean value representing the disabled status.
     */
    isDisabled?: (payload: T) => Promise<boolean> | boolean;
  }
  export default IScaffold3Action;
}

declare module "react-declarative/components/Scaffold3/model/IScaffold3Group" {
  import React from "react";
  import IScaffold3Option, {
    IScaffold3OptionInternal,
  } from "react-declarative/components/Scaffold3/model/IScaffold3Option";
  import Payload from "react-declarative/components/Scaffold3/model/Payload";
  /**
   * Interface representing a group in IScaffold3.
   *
   * @template T - The type of payload for the options in the group.
   *
   * @property id - The unique identifier of the group.
   * @property [label] - The label to be displayed for the group.
   * @property [icon] - The icon to be displayed for the group.
   * @property [noHeader] - Flag indicating whether to display the header for the group.
   * @property [isVisible] - Function or Promise that returns a boolean indicating whether the group is visible.
   * @property [isDisabled] - Function or Promise that returns a boolean indicating whether the group is disabled.
   * @property children - The options belonging to the group.
   */
  export interface IScaffold3Group<T = Payload> {
    id: string;
    label?: string;
    icon?: React.ComponentType;
    iconColor?: string;
    noHeader?: boolean;
    /**
     * Checks if the element is visible.
     *
     * @returns - True if the element is visible.
     */
    isVisible?: () => boolean | Promise<boolean>;
    /**
     * Checks if the element is disabled.
     *
     * @returns - Returns a boolean value or a promise that resolves to a boolean value.
     */
    isDisabled?: () => boolean | Promise<boolean>;
    children: IScaffold3Option<T>[];
  }
  /**
   * Represents an internal group in the IScaffold3 component.
   *
   * @template T - The type of payload data.
   * @interface IScaffold3GroupInternal
   */
  export interface IScaffold3GroupInternal<T = Payload>
    extends Omit<
      IScaffold3Group<T>,
      keyof {
        isVisible: never;
        isDisabled: never;
        children: never;
      }
    > {
    path: string;
    visible: boolean;
    disabled: boolean;
    /**
     * Represents a collection of internal options for a Scaffold3 component.
     *
     * @template T - The type of the options.
     */
    children: IScaffold3OptionInternal<T>[];
  }
  export default IScaffold3Group;
}

declare module "react-declarative/components/Scaffold3/model/IScaffold3Option" {
  import { SxProps } from "@mui/material";
  import IScaffold3Tab, {
    IScaffold3TabInternal,
  } from "react-declarative/components/Scaffold3/model/IScaffold3Tab";
  import Payload from "react-declarative/components/Scaffold3/model/Payload";
  /**
   * Interface representing an option for an IScaffold3 component.
   * @template T - The type of the payload used by the option.
   */
  export interface IScaffold3Option<T = Payload> {
    id: string;
    label?: string;
    lifted?: boolean;
    pin?: boolean;
    sx?: SxProps<any>;
    icon?: React.ComponentType<any>;
    iconColor?: string;
    /**
     * Represents an array of `IScaffold3Tab` objects.
     * @template T - The type of the `IScaffold3Tab` object.
     */
    tabs?: IScaffold3Tab<T>[];
    /**
     * Represents an array of options for a variable.
     * @template T The type of the options.
     */
    options?: IScaffold3Option<T>[];
    /**
     * Determines the visibility of a given payload.
     *
     * @param payload - The payload to check visibility for.
     * @returns - The visibility status. Returns a boolean if synchronous, otherwise returns a Promise<boolean>.
     */
    isVisible?: (payload: T) => boolean | Promise<boolean>;
    /**
     * Checks if a payload is disabled.
     *
     * @param payload - The payload to check.
     * @returns - True if the payload is disabled, false otherwise.
     */
    isDisabled?: (payload: T) => boolean | Promise<boolean>;
  }
  /**
   * Represents an internal option for IScaffold3.
   *
   * @template T - The type of the payload.
   */
  export interface IScaffold3OptionInternal<T = Payload>
    extends Omit<
      IScaffold3Option<T>,
      keyof {
        isVisible: never;
        isDisabled: never;
        options: never;
        tabs: never;
      }
    > {
    path: string;
    visible: boolean;
    disabled: boolean;
    /**
     * Options for the given variable.
     *
     * @template T - The type of the options.
     */
    options?: IScaffold3OptionInternal<T>[];
    /**
     * Represents an array of internal scaffold tabs.
     * @template T - The type of data associated with the tabs.
     * @typedef Tabs
     */
    tabs?: IScaffold3TabInternal<T>[];
  }
  export default IScaffold3Option;
}

declare module "react-declarative/components/Scaffold3/model/IScaffold3Tab" {
  import React from "react";
  import Payload from "react-declarative/components/Scaffold3/model/Payload";
  /**
   * Represents a tab in the Scaffold3 component.
   * @template T - The payload type.
   */
  export interface IScaffold3Tab<T = Payload> {
    id: string;
    label?: string;
    icon?: React.ComponentType<any>;
    isVisible?: (payload: T) => Promise<boolean> | boolean;
    isDisabled?: (payload: T) => Promise<boolean> | boolean;
    isActive?: (payload: T) => Promise<boolean> | boolean;
  }
  /**
   * Represents an internal interface for a scaffold tab.
   * @template T - The payload type of the tab.
   */
  export interface IScaffold3TabInternal<T = Payload>
    extends Omit<
      IScaffold3Tab<T>,
      keyof {
        isVisible: never;
        isDisabled: never;
        isActive: never;
      }
    > {
    id: string;
    path: string;
    label?: string;
    icon?: React.ComponentType<any>;
    visible: boolean;
    disabled: boolean;
    active: boolean;
  }
  export default IScaffold3Tab;
}

declare module "react-declarative/components/Breadcrumbs2/Breadcrumbs2" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import IBreadcrumbs2Action from "react-declarative/components/Breadcrumbs2/model/IBreadcrumbs2Action";
  import IBreadcrumbs2Option from "react-declarative/components/Breadcrumbs2/model/IBreadcrumbs2Option";
  /**
   * An interface representing the props for the IBreadcrumbs2 component.
   *
   * @template T - The type of payload.
   * @property [className] - The class name to be applied to the component.
   * @property [style] - The inline style to be applied to the component.
   * @property [sx] - The custom styling props for the component.
   * @property [onAction] - The callback function triggered when an action is performed.
   * @property actions - The list of actions for the breadcrumbs.
   * @property items - The list of options for the breadcrumbs.
   * @property [payload] - The payload for the breadcrumbs.
   * @property [BeforeMenuContent] - The component to be rendered before the menu content.
   * @property [AfterMenuContent] - The component to be rendered after the menu content.
   * @property [onLoadStart] - The callback function triggered when the component starts loading.
   * @property [onLoadEnd] - The callback function triggered when the component finishes loading.
   * @property [fallback] - The callback function triggered when an error occurs.
   * @property [throwError] - A flag indicating whether the component should throw an error.
   */
  interface IBreadcrumbs2Props<T extends any = any> {
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    onAction?: (action: string) => void | Promise<void>;
    actions?: IBreadcrumbs2Action<T>[];
    items: IBreadcrumbs2Option<T>[];
    payload?: T;
    BeforeMenuContent?: React.ComponentType<any>;
    AfterMenuContent?: React.ComponentType<any>;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
  }
  /**
   * Renders a breadcrumbs component with customizable items and actions.
   *
   * @template T - The type of payload data.
   * @param props - The props object.
   * @param [props.className] - The class name for the component container.
   * @param [props.style] - The inline styles for the component container.
   * @param [props.sx] - The sx prop for the component container.
   * @param [props.onAction=() => undefined] - The callback function to be called when an action is performed.
   * @param props.items - The array of breadcrumb items.
   * @param props.actions - The array of actions to be displayed in the action menu.
   * @param props.payload - The payload data.
   * @param [props.BeforeMenuContent] - The custom content to be displayed before the action menu.
   * @param [props.AfterMenuContent] - The custom content to be displayed after the action menu.
   * @param [props.onLoadStart] - The callback function to be called when the component is loading.
   * @param [props.onLoadEnd] - The callback function to be called when the component finishes loading.
   * @param [props.fallback] - The fallback component to be displayed while loading.
   * @param [props.throwError] - Whether to throw an error on loading failure.
   * @returns The breadcrumbs component.
   */
  export const Breadcrumbs2: <T extends unknown = any>({
    className,
    style,
    sx,
    onAction,
    items,
    actions,
    payload,
    BeforeMenuContent,
    AfterMenuContent,
    onLoadStart,
    onLoadEnd,
    fallback,
    throwError,
  }: IBreadcrumbs2Props<T>) => JSX.Element;
  export default Breadcrumbs2;
}

declare module "react-declarative/components/Breadcrumbs2/model/Breadcrumbs2Type" {
  /**
   * Represents the type of breadcrumbs in Breadcrumbs2.
   */
  export enum Breadcrumbs2Type {
    Link = "breadcrumbs2-link",
    Button = "breadcrumbs2-button",
    Fab = "breadcrumbs2-fab",
    ActionGroup = "breadcrumbs2-actiongroup",
    Component = "breadcrumbs2-component",
  }
  export default Breadcrumbs2Type;
}

declare module "react-declarative/components/Breadcrumbs2/model/IBreadcrumbs2Action" {
  import IAnything from "react-declarative/model/IAnything";
  import IOption from "react-declarative/model/IOption";
  /**
   * Interface for defining actions related to breadcrumbs with optional data payload.
   * @template Data - The type of the data payload.
   */
  export interface IBreadcrumbs2Action<Data = IAnything>
    extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
      }
    > {
    isVisible?: (payload: Data) => Promise<boolean> | boolean;
    isDisabled?: (payload: Data) => Promise<boolean> | boolean;
  }
  export default IBreadcrumbs2Action;
}

declare module "react-declarative/components/Breadcrumbs2/model/IBreadcrumbs2Option" {
  import { SxProps } from "@mui/material";
  import IAnything from "react-declarative/model/IAnything";
  import IOption from "react-declarative/model/IOption";
  import Breadcrumbs2Type from "react-declarative/components/Breadcrumbs2/model/Breadcrumbs2Type";
  import IBreadcrumbs2Action from "react-declarative/components/Breadcrumbs2/model/IBreadcrumbs2Action";
  /**
   * Represents an option configuration for IBreadcrumbs2 component.
   *
   * @template Data - The type of additional data associated with the option.
   */
  export interface IBreadcrumbs2Option<Data = IAnything>
    extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
        label: never;
      }
    > {
    type: Breadcrumbs2Type;
    label?: React.ReactNode;
    element?: React.ComponentType<{
      payload: Data;
      disabled: boolean;
    }>;
    sx?: SxProps<any>;
    outlined?: boolean;
    actions?: IBreadcrumbs2Action<Data>[];
    buttonVariant?: "text" | "outlined" | "contained";
    buttonColor?:
      | "inherit"
      | "primary"
      | "secondary"
      | "success"
      | "error"
      | "info"
      | "warning";
    fabColor?:
      | "inherit"
      | "primary"
      | "secondary"
      | "success"
      | "error"
      | "info"
      | "warning";
    compute?: (payload: Data) => Promise<string> | string;
    isVisible?: (payload: Data) => Promise<boolean> | boolean;
    isDisabled?: (payload: Data) => Promise<boolean> | boolean;
  }
  export default IBreadcrumbs2Option;
}

declare module "react-declarative/view/useOpenDocument/useOpenDocument" {
  import * as React from "react";
  /**
   * Represents the interface for the parameters of a useOpenDocument hook.
   *
   * @interface IParams
   */
  interface IParams {
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (error: Error) => void;
    onMount?: () => void;
    onUnmount?: () => void;
    onClose?: () => void;
    title?: string;
    submitLabel?: string;
    submitIcon?: React.ComponentType<any>;
    /**
     * Callback function triggered when a form is submitted.
     *
     * @param url - The URL where the form data will be submitted.
     * @param data - The data to be submitted. It should contain a "main" property with the following structure:
     *   - blob: The blob data to be submitted, if applicable. Can be null if no blob data is present.
     *   - mime: The MIME type of the blob data.
     *   - fileName: The name of the file associated with the blob data.
     *     Note: The "main" property can also be null if no data is to be submitted.
     * @returns - Returns a boolean value or a Promise resolving to a boolean value indicating the success of the submission.
     */
    onSubmit?: (
      url: string,
      data: {
        main: {
          blob: Blob | null;
          mime: string;
          fileName: string;
        };
      } | null,
    ) => boolean | Promise<boolean>;
  }
  /**
   * Represents a request object for fetching a file from a URL for useOpenDocument hook.
   * @interface
   */
  interface IRequest {
    url: string;
    fileName: string;
    sizeOriginal?: number;
    placeholder?: string;
  }
  /**
   * A hook which allows displaying and interacting with a document preview.
   *
   * @param options - An optional object containing the following parameters:
   *   @param [options.onLoadStart] - The callback function to be executed when the document starts loading.
   *   @param [options.onLoadEnd] - The callback function to be executed when the document finishes loading.
   *   @param [options.fallback] - The fallback content to be displayed while the document is loading.
   *   @param [options.onMount] - The callback function to be executed when the component is mounted.
   *   @param [options.onUnmount] - The callback function to be executed when the component is unmounted.
   *   @param [options.onSubmit] - The callback function to be executed when the submit button is clicked.
   *   @param [options.onClose] - The callback function to be executed when the component is closed.
   *   @param [options.title="Document preview"] - The title of the component.
   *   @param [options.submitLabel="Download"] - The label of the submit button.
   *
   * @returns - An object containing the following properties:
   *   @returns render - The render function for rendering the document preview component.
   *   @returns pickData - A function to pick the data for displaying the document preview.
   */
  export const useOpenDocument: ({
    onLoadStart,
    onLoadEnd,
    fallback,
    onMount,
    onUnmount,
    onSubmit,
    onClose,
    title,
    submitLabel,
    submitIcon,
  }?: IParams) => {
    render: () => JSX.Element;
    pickData: (request: IRequest) => void;
  };
  export default useOpenDocument;
}

declare module "react-declarative/components/One/One" {
  import IField from "react-declarative/model/IField";
  import TypedField from "react-declarative/model/TypedField";
  import IOnePublicProps from "react-declarative/model/IOnePublicProps";
  /**
   * Creates a json template engine called `One` with the given props.
   *
   * @param props - The props for the component.
   * @param props.createField - The function to create a field.
   * @param props.createLayout - The function to create a layout.
   * @param props.apiRef - The API reference object.
   * @param props.changeSubject - The subject for change events.
   * @param props.reloadSubject - The subject for reload events.
   * @param props.updateSubject - The subject for update events.
   * @param props.onFocus - The callback function for focus events.
   * @param props.onBlur - The callback function for blur events.
   * @param props.onMenu - The callback function for menu events.
   * @param props.onClick - The callback function for click events.
   * @param props.onReady - The callback function for ready events.
   * @param props.onChange - The callback function for change events.
   * @param props.onInvalid - The callback function for invalid events.
   * @param props.onLoadStart - The callback function for load start events.
   * @param props.onLoadEnd - The callback function for load end events.
   * @param props.features - Additional features for the component.
   * @param props.otherProps - Additional props for the component.
   * @returns - The rendered component.
   */
  export const One: {
    <Data extends unknown = any, Payload = any, Field = IField<Data, any>>(
      args: IOnePublicProps<Data, Payload, Field>,
    ): JSX.Element;
    displayName: string;
    /**
     * После написания формы можно включить строгую
     * проверку типов полей
     * <One.typed handler={...
     *     ^^^^^^
     */
    typed: {
      <
        Data_1 extends unknown = any,
        Payload_1 extends unknown = any,
        Field_1 = TypedField<Data_1, any>,
      >(
        props: IOnePublicProps<Data_1, Payload_1, Field_1>,
      ): JSX.Element;
      displayName: string;
    };
  };
  export const OneTyped: {
    <
      Data extends unknown = any,
      Payload extends unknown = any,
      Field = TypedField<Data, any>,
    >(
      props: IOnePublicProps<Data, Payload, Field>,
    ): JSX.Element;
    displayName: string;
  };
  export default One;
}

declare module "react-declarative/components/One/slots" {
  export * from "react-declarative/components/One/slots/CheckBoxSlot";
  export * from "react-declarative/components/One/slots/ComboSlot";
  export * from "react-declarative/components/One/slots/ItemsSlot";
  export * from "react-declarative/components/One/slots/LineSlot";
  export * from "react-declarative/components/One/slots/ProgressSlot";
  export * from "react-declarative/components/One/slots/RadioSlot";
  export * from "react-declarative/components/One/slots/RatingSlot";
  export * from "react-declarative/components/One/slots/SliderSlot";
  export * from "react-declarative/components/One/slots/SwitchSlot";
  export * from "react-declarative/components/One/slots/TextSlot";
  export * from "react-declarative/components/One/slots/TypographySlot";
  export * from "react-declarative/components/One/slots/DateSlot";
  export * from "react-declarative/components/One/slots/TimeSlot";
  export * from "react-declarative/components/One/slots/FileSlot";
  export * from "react-declarative/components/One/slots/ChooseSlot";
  export * from "react-declarative/components/One/slots/CompleteSlot";
  export * from "react-declarative/components/One/slots/YesNoSlot";
  export * from "react-declarative/components/One/slots/DictSlot";
  export * from "react-declarative/components/One/slots/TreeSlot";
  export * from "react-declarative/components/One/slots/ButtonSlot";
}

declare module "react-declarative/components/One/components/OneConfig" {
  export * from "react-declarative/components/One/components/OneConfig/OneConfig";
  export { default } from "react-declarative/components/One/components/OneConfig/OneConfig";
}

declare module "react-declarative/components/One/config/createField" {
  import IEntity from "react-declarative/model/IEntity";
  /**
   * Фабрика для создания полей
   */
  export const createField: <Data extends unknown = any>(
    entity: IEntity<Data, any>,
    currentPath?: string,
  ) => JSX.Element;
  export default createField;
}

declare module "react-declarative/components/One/components/makeField" {
  export * from "react-declarative/components/One/components/makeField/makeField";
  export { default } from "react-declarative/components/One/components/makeField/makeField";
}

declare module "react-declarative/components/One/config/createLayout" {
  import * as React from "react";
  import IEntity from "react-declarative/model/IEntity";
  /**
   * Фабрика для создания компоновок
   */
  export const createLayout: <Data extends unknown = any>(
    entity: IEntity<Data, any>,
    children: React.ReactNode,
    currentPath?: string,
  ) => JSX.Element;
  export default createLayout;
}

declare module "react-declarative/components/One/components/makeLayout" {
  export * from "react-declarative/components/One/components/makeLayout/makeLayout";
  export { default } from "react-declarative/components/One/components/makeLayout/makeLayout";
}

declare module "react-declarative/components/One/context/MenuProvider" {
  import * as React from "react";
  import { IParams } from "react-declarative/components/One/components/common/MenuItems";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents an interface for a context object.
   */
  interface IContext {
    createContextMenu: (
      params: IParams,
    ) => React.MouseEventHandler<HTMLDivElement>;
    requestSubject: TSubject<void>;
  }
  /**
   * Interface for the props of the MenuProvider component.
   */
  interface IMenuProviderProps {
    children: React.ReactNode;
  }
  /**
   * MenuProvider is a React component that provides menu related functionality to its children components.
   *
   * @param props - The props for the MenuProvider component.
   * @returns - The rendered JSX element.
   */
  export const MenuProvider: ({ children }: IMenuProviderProps) => JSX.Element;
  export const useOneMenu: () => IContext;
  export default MenuProvider;
}

declare module "react-declarative/components/One/context/PropsProvider" {
  import * as React from "react";
  import IField from "react-declarative/model/IField";
  import IAnything from "react-declarative/model/IAnything";
  import IOneProps from "react-declarative/model/IOneProps";
  /**
   * Represents the props for the `PropsProvider` component.
   */
  interface IPropsProviderProps<
    Data extends IAnything = IAnything,
    Field extends IField<Data> = IField<Data>,
  > extends IOneProps<Data, Field> {
    children: React.ReactNode;
  }
  /**
   * Provider component for providing props through context.
   *
   * @template Data - The data type for the props being provided.
   * @template Field - The field type for the props being provided.
   *
   * @param props - The props for the PropsProvider component.
   * @param props.children - The children to be rendered.
   *
   * @returns - The rendered PropsProvider component.
   */
  export const PropsProvider: <
    Data extends unknown = any,
    Field extends IField<Data, any> = IField<Data, any>,
  >({
    children,
    ...props
  }: IPropsProviderProps<Data, Field>) => JSX.Element;
  export const useOneProps: <Data extends unknown = any>() => IOneProps<
    Data,
    any,
    IField<Data, any>
  >;
  export default PropsProvider;
}

declare module "react-declarative/components/One/context/StateProvider" {
  import * as React from "react";
  import IField from "react-declarative/model/IField";
  import IAnything from "react-declarative/model/IAnything";
  import IOneProps from "react-declarative/model/IOneProps";
  /**
   * Interface representing the props for a StateProvider component.
   *
   * @template Data - The type of the data object.
   * @template Payload - The type of the payload object.
   * @template Field - The type of the field object.
   */
  interface IStateProviderProps<
    Data = IAnything,
    Payload = IAnything,
    Field extends IField<Data, Payload> = IField<Data, Payload>,
  > extends IOneProps<Data, Payload, Field> {
    payload: Payload;
    children: React.ReactElement;
  }
  /**
   * Represents the interface for a state object.
   *
   * @template Data The type of data held by the state object.
   */
  interface IState<Data = IAnything> {
    object: Data | null;
    setObject: (data: Data, invalidMap: Record<string, boolean>) => void;
    getObjectRef: () => Data;
    changeObject: (data: Data) => void;
  }
  /**
   * StateProvider is a component that manages the state of an object and provides it to its children components through a context.
   * It takes in various props to configure its behavior.
   *
   * @template Data - The type of the object being managed by the StateProvider.
   * @template Payload - The type of the payload used for fetching the object.
   * @template Field - The type of the field used for validating the object.
   *
   * @param props - The props used to configure the StateProvider.
   * @param props.children - The children components to be rendered within the StateProvider.
   * @param props.fields - The fields used for validating the object.
   * @param props.features - The features used for manipulating the object.
   * @param props.change - The function called when the object is changed.
   * @param props.fallback - The function called when the object cannot be resolved.
   * @param props.handler - The function used for fetching the object.
   * @param props.payload - The payload used for fetching the object.
   * @param props.loadStart - The function called when the object starts loading.
   * @param props.loadEnd - The function called when the object finishes loading.
   *
   */
  export const StateProvider: <
    Data extends unknown,
    Payload extends unknown,
    Field extends IField<Data, Payload> = IField<Data, Payload>,
  >({
    children,
    ...otherProps
  }: IStateProviderProps<Data, Payload, Field>) => JSX.Element;
  export const useOneState: <Data extends unknown>() => IState<Data>;
  export default StateProvider;
}

declare module "react-declarative/components/One/context/PayloadProvider" {
  import * as React from "react";
  import IOneProps from "react-declarative/model/IOneProps";
  /**
   * An interface representing the props for the PayloadProvider component.
   */
  interface IPayloadProviderProps {
    children: React.ReactNode;
    payload?: IOneProps["payload"];
  }
  /**
   * PayloadProvider component
   * @param children - The child components to render within the provider
   * @param payload - The payload value to be provided by the provider
   * @returns - The rendered component with payload context provider
   */
  export const PayloadProvider: ({
    children,
    payload,
  }: IPayloadProviderProps) => JSX.Element;
  export const useOnePayload: () => any;
  export default PayloadProvider;
}

declare module "react-declarative/components/One/context/FeatureProvider" {
  import * as React from "react";
  import IOneProps from "react-declarative/model/IOneProps";
  /**
   * Represents the properties of the FeatureProvider component.
   */
  interface IFeatureProviderProps {
    children: React.ReactNode;
    features?: IOneProps["features"];
  }
  /**
   * Represents a feature provider.
   * @param props - The feature provider props.
   * @param props.children - The child components.
   * @param [props.features=ARRAY_VALUE] - The array of features.
   * @returns - The feature provider component.
   */
  export const FeatureProvider: ({
    children,
    features,
  }: IFeatureProviderProps) => JSX.Element;
  export const useOneFeatures: () => string[];
  export default FeatureProvider;
}

declare module "react-declarative/components/One/context/RadioProvider" {
  export const RadioProvider: ({
      children,
      initialState,
      onChange,
    }: {
      onChange?: ((state: Record<string, string | null>) => void) | undefined;
      children: import("react").ReactNode;
      initialState:
        | Record<string, string | null>
        | (() => Record<string, string | null>);
    }) => JSX.Element,
    useOneRadio: () => readonly [
      Record<string, string | null>,
      (
        state:
          | Record<string, string | null>
          | ((
              prevState: Record<string, string | null>,
            ) => Record<string, string | null>),
      ) => void,
    ];
  export default RadioProvider;
}

declare module "react-declarative/components/One/context/OneContextProvider" {
  import * as React from "react";
  import IOneProps from "react-declarative/model/IOneProps";
  export const DEFAULT_VALUE: {};
  /**
   * Interface that represents the props for the `OneContextProvider` component.
   */
  interface IOneContextProviderProps {
    context: IOneProps["context"];
    children: React.ReactNode;
  }
  /**
   * OneContextProvider function provides a mutable context to its component fields with change detection.
   * @param props - The props object containing the following properties:
   * @param props.context - The context value to be provided to child components. Default value is set to DEFAULT_VALUE.
   * @param props.children - The child components to be wrapped by the context provider.
   * @returns - The wrapped child components with the provided context value.
   */
  export const OneContextProvider: ({
    context,
    children,
  }: IOneContextProviderProps) => JSX.Element;
  export const useOneContext: () => Record<string, any>;
  export default OneContextProvider;
}

declare module "react-declarative/components/One/other/OtherComboSlot" {
  import { IComboSlot } from "react-declarative/components/One/slots/ComboSlot";
  /**
   * OtherComboSlot is a component that renders a combo slot with autocomplete functionality.
   *
   * @param value - The value of the combo slot.
   * @param disabled - Indicates whether the combo slot is disabled.
   * @param readonly - Indicates whether the combo slot is readonly.
   * @param description - The description of the combo slot.
   * @param placeholder - The placeholder text for the combo slot.
   * @param outlined - Indicates whether the combo slot should be outlined.
   * @param itemList - The list of item objects for the combo slot.
   * @param title - The title of the combo slot.
   * @param dirty - Indicates whether the combo slot has been modified.
   * @param invalid - Indicates whether the combo slot is invalid.
   * @param tr - A translation function to translate strings.
   * @param onChange - The callback function when the combo slot value changes.
   * @returns - The rendered combo slot component.
   */
  export const OtherComboSlot: ({
    value,
    disabled,
    readonly,
    description,
    placeholder,
    outlined,
    itemList,
    title,
    dirty,
    invalid,
    tr,
    onChange,
  }: IComboSlot) => JSX.Element;
  export default OtherComboSlot;
}

declare module "react-declarative/components/One/other/OtherItemsSlot" {
  import { IItemsSlot } from "react-declarative/components/One/slots/ItemsSlot";
  /**
   * Represents an input field for selecting multiple items from a list.
   *
   * @param OtherItemsSlot - The configuration object for the OtherItemsSlot component.
   * @param OtherItemsSlot.value - The current selected value(s) for the input field.
   * @param OtherItemsSlot.disabled - Determines if the input field is disabled or not.
   * @param OtherItemsSlot.readonly - Determines if the input field is read-only or not.
   * @param OtherItemsSlot.description - The description text for the input field.
   * @param OtherItemsSlot.placeholder - The input field's placeholder text.
   * @param [OtherItemsSlot.outlined=false] - Determines if the input field is outlined or not.
   * @param [OtherItemsSlot.itemList=[]] - The list of items to be displayed in the autocomplete dropdown.
   * @param OtherItemsSlot.dirty - Indicates if the input field has been modified.
   * @param OtherItemsSlot.invalid - Indicates if the input field's value is not valid.
   * @param OtherItemsSlot.title - The title of the input field.
   * @param [OtherItemsSlot.tr=(s) => s.toString()] - The translation function for the labels in the dropdown.
   * @param OtherItemsSlot.onChange - The event handler function for when the selected value(s) change.
   *
   * @returns - The OtherItemsSlot component.
   */
  export const OtherItemsSlot: ({
    value,
    disabled,
    readonly,
    description,
    placeholder,
    outlined,
    itemList,
    dirty,
    invalid,
    title,
    tr,
    onChange,
  }: IItemsSlot) => JSX.Element;
  export default OtherItemsSlot;
}

declare module "react-declarative/components/One/api/useLocalHandler" {
  import IOneProps, { OneHandler } from "react-declarative/model/IOneProps";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents the parameters for a local handler
   *
   * @template Data - The type of data to be returned
   * @template Payload - The type of payload for the local handler
   */
  export interface ILocalHandlerParams<
    Data extends IAnything = IAnything,
    Payload extends IAnything = IAnything,
  > {
    payload?: Payload;
    resultMap?: (json: Record<string, any> | null) => Data | null;
    onLoadBegin?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
  }
  /**
   * Represents the result of handling a local operation.
   * @template Data - The type of data returned by the operation.
   */
  export interface ILocalHandlerResult<Data extends IAnything = IAnything> {
    data: Data | null;
    change: IOneProps<Data>["change"];
  }
  /**
   * Executes a local handler function and manages the state of the data.
   *
   * @template Data - The type of the data that will be stored in the state.
   * @template Payload - The type of the payload that will be passed to the handler function.
   *
   * @param handler - The handler function to be executed.
   * @param options - Additional options for the local handler.
   * @param options.resultMap - Optional. A function to transform the data before storing it in the state.
   * @param options.payload - Optional. The payload to be passed to the handler function.
   * @param options.onLoadBegin - Optional. A callback function to be executed before the handler function.
   * @param options.onLoadEnd - Optional. A callback function to be executed after the handler function.
   * @param options.fallback - Optional. A fallback function to handle errors.
   *
   * @returns - An object containing the data and a function to change the data.
   */
  export const useLocalHandler: <
    Data extends unknown = any,
    Payload extends unknown = any,
  >(
    handler: OneHandler<Data, Payload>,
    {
      resultMap,
      payload,
      onLoadBegin,
      onLoadEnd,
      fallback,
    }?: ILocalHandlerParams<Data, any>,
  ) => ILocalHandlerResult<Data>;
  export default useLocalHandler;
}

declare module "react-declarative/components/One/api/useStaticHandler" {
  import { OneHandler } from "react-declarative/model/IOneProps";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Interface defining the properties of the IStaticHandlerParams class.
   * @template Data - The type of data expected from the resultMap function.
   */
  export interface IStaticHandlerParams<Data extends IAnything = IAnything> {
    resultMap?: (json: Record<string, any> | null) => Data | null;
    onLoadBegin?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
  }
  /**
   * Creates a static handler that wraps around an existing handler function.
   *
   * @template Data - The data type expected to be returned by the handler.
   * @template Payload - The payload type expected to be passed to the handler.
   * @param handler - The existing handler function.
   * @param options - The options for the static handler.
   * @param options.resultMap - The function to modify the returned data from the handler.
   * @param options.onLoadBegin - The function to be called when the handler starts loading.
   * @param options.onLoadEnd - The function to be called when the handler finishes loading.
   * @param options.fallback - The fallback function to be executed if an error occurs in the handler.
   * @returns - The static handler function.
   */
  export const useStaticHandler: <Data extends unknown = any, Payload = any>(
    handler: OneHandler<Data, Payload>,
    {
      resultMap,
      onLoadBegin,
      onLoadEnd,
      fallback,
    }?: IStaticHandlerParams<Data>,
  ) => OneHandler<Data, Payload>;
  export default useStaticHandler;
}

declare module "react-declarative/components/One/api/usePreventLeave" {
  import { BrowserHistory, MemoryHistory, HashHistory } from "history";
  import IOneProps from "react-declarative/model/IOneProps";
  import IAnything from "react-declarative/model/IAnything";
  import TSubject from "react-declarative/model/TSubject";
  import IOneApi from "react-declarative/model/IOneApi";
  /**
   * Interface for the parameters of the IPreventLeaveParams class.
   * @template Data - The type of data.
   * @template ID - The type of ID.
   */
  export interface IPreventLeaveParams<Data = IAnything, ID = string> {
    history?: BrowserHistory | MemoryHistory | HashHistory;
    waitForChangesDelay?: number;
    readonly?: boolean;
    data?: Data | null;
    updateSubject?: TSubject<[ID, Data]>;
    changeSubject?: TSubject<Data>;
    shouldAutoSave?: () => boolean;
    checkUpdate?: (id: ID, data: Data) => boolean;
    checkDirty?: (prevData: Data, currentData: Data) => boolean;
    onChange?: IOneProps<Data>["change"];
    onBlock?: () => (() => void) | void;
    onUpdate?: (id: ID, data: Data) => void;
    onSave?: (data: Data) => boolean | Promise<boolean>;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
  }
  /**
   * Interface for a class that prevents leaving and returning to a page or component.
   *
   * @template Data - The type of the data.
   */
  export interface IPreventLeaveReturn<Data = IAnything> {
    oneProps: {
      apiRef: Exclude<IOneProps<Data>["apiRef"], undefined>;
      handler: () => Data | null;
      change: (data: Data, initial?: boolean) => void;
      invalidity: Exclude<IOneProps<Data>["invalidity"], undefined>;
      readonly: Exclude<IOneProps<Data>["readonly"], undefined>;
      changeSubject: Exclude<IOneProps<Data>["changeSubject"], undefined>;
      fallback?: (e: Error) => void;
    };
    apiRef: React.MutableRefObject<IOneApi<Data>>;
    invalid: boolean;
    data: Data | null;
    hasChanged: boolean;
    hasLoading: boolean;
    beginSave: () => Promise<boolean>;
    afterSave: () => void;
    dropChanges: () => void;
    waitForChanges: () => Promise<Data | null>;
  }
  /**
   * PreventLeave hook documentation
   *
   * @template Data - The data type
   * @template ID - The ID type
   *
   * @param [params] - The optional parameters
   * @param [params.history] - The history object to use for navigation
   * @param [params.waitForChangesDelay] - The delay in milliseconds to wait for changes
   * @param [params.readonly] - Whether the data is readonly
   * @param [params.onChange] - The callback function to execute when the data changes
   * @param [params.onLoadStart] - The callback function to execute when loading starts
   * @param [params.onLoadEnd] - The callback function to execute when loading ends
   * @param [params.onBlock] - The callback function to execute to block navigation
   * @param [params.onSave] - The callback function to execute when saving the data
   * @param [params.onUpdate] - The callback function to execute when updating the data
   * @param [params.checkUpdate] - The function to check if an update is allowed
   * @param [params.checkDirty] - The function to check if the data is dirty
   * @param [params.shouldAutoSave] - The function to determine if autosave should be enabled
   * @param [params.fallback] - The fallback object to handle errors
   * @param [params.updateSubject] - The subject to subscribe to for updates
   * @param [params.changeSubject] - The subject to subscribe to for changes
   *
   * @returns - The PreventLeave hook return object
   * @returns return.beginSave - The function to begin the save process
   * @returns return.afterSave - The function to execute after saving
   * @returns return.dropChanges - The function to drop changes and reset to initial data
   * @returns return.waitForChanges - The function to wait for changes to settle
   * @returns return.oneProps - The one props object for OneForm integration
   * @returns return.oneProps.change - The function to change the data
   * @returns return.oneProps.invalidity - The function to set the data as invalid
   * @returns return.oneProps.readonly - Whether the data is readonly
   * @returns return.data - The data object, null if invalid
   * @returns return.hasChanged - Whether the data has changed
   * @returns return.hasLoading - Whether the data is being loaded
   */
  export const usePreventLeave: <Data = any, ID = string>({
    history,
    waitForChangesDelay,
    readonly: upperReadonly,
    data: upperData,
    onChange,
    onLoadStart,
    onLoadEnd,
    onBlock,
    onSave,
    onUpdate,
    checkUpdate,
    checkDirty,
    shouldAutoSave,
    fallback,
    updateSubject: upperUpdateSubject,
    changeSubject: upperChangeSubject,
  }?: IPreventLeaveParams<Data, ID>) => IPreventLeaveReturn<Data>;
  export default usePreventLeave;
}

declare module "react-declarative/components/One/config/isBaseline" {
  import FieldType from "react-declarative/model/FieldType";
  import IField from "react-declarative/model/IField";
  /**
   * Set of FieldType values representing the baseline fields.
   */
  export const baselineFields: Set<FieldType>;
  /**
   * Для поля нужно проверить флаги и наличие в списке. Флаги baseline компоновок
   * действуют только на потомков и на родительский элемент не распространяются
   */
  export const isBaselineForField: (field: IField) => boolean;
  export const isBaseline: (field: IField) => boolean;
  export default isBaseline;
}

declare module "react-declarative/components/One/config/isBaselineSimple" {
  import IField from "react-declarative/model/IField";
  export const isBaselineSimple: ({ noBaseline }: IField) => boolean;
  export default isBaselineSimple;
}

declare module "react-declarative/components/OneIcon/OneIcon" {
  import IOneIconProps from "react-declarative/components/OneIcon/model/IOneIconProps";
  /** *
   * @template Data - generic type for data object
   * @template Payload - generic type for payload object
   * @typedef OneIcon
   * @property [waitForChangesDelay=WAIT_FOR_CHANGES_DELAY] - delay in milliseconds for waiting changes
   * @property [fieldDebounce] - debounce time in milliseconds for field changes
   * @property [noBadge=false] - flag to disable badge
   * @property fields - array of field objects
   * @property handler - function to handle data
   * @property [payload={}] - payload object
   * @property [badgeColor="info"] - color of the badge
   * @property [color="default"] - color of the icon button
   * @property badgeOverlap - overlap position for the badge
   * @property badgeSx - styles for the badge
   * @property oneSx - styles for the One component
   * @property onChange - function for handling the change event
   * @property onFocus - function for handling the focus event
   * @property onBlur - function for handling the blur event
   * @property buttonProps - additional props for the IconButton component
   */
  export const OneIcon: <Data extends {} = any, Payload extends unknown = any>({
    waitForChangesDelay,
    fieldDebounce,
    noBadge,
    fields,
    handler,
    payload: upperPayload,
    badgeColor,
    color,
    badgeOverlap,
    badgeSx,
    oneSx,
    isBaseline,
    isBaselineForRoot,
    onChange,
    onFocus,
    onBlur,
    onInvalid,
    ...buttonProps
  }: IOneIconProps<Data, Payload>) => JSX.Element | null;
  export default OneIcon;
}

declare module "react-declarative/components/OneButton/OneButton" {
  import IOneButtonProps from "react-declarative/components/OneButton/model/IOneButtonProps";
  /**
   * Represents a button component with a popover that displays a form.
   *
   * @template Data - The type of data for the form.
   * @template Payload - The type of payload for the button handler.
   *
   * @param props - The properties of the button component.
   * @param [props.waitForChangesDelay=WAIT_FOR_CHANGES_DELAY] - The delay in milliseconds to wait for changes before updating data.
   * @param [props.fieldDebounce] - The debounce time in milliseconds for input fields.
   * @param [props.noBadge=false] - Whether to display a badge on the button.
   * @param props.fields - The fields for the form.
   * @param props.handler - The handler function for the button.
   * @param [props.payload={}] - The payload for the button handler.
   * @param [props.badgeColor="info"] - The color of the badge.
   * @param [props.color="primary"] - The color of the button.
   * @param [props.badgeOverlap] - The overlap mode of the badge.
   * @param [props.badgeSx] - The styles for the badge.
   * @param [props.oneSx] - The styles for the form.
   * @param [props.onChange] - The callback function to be called when the data changes.
   * @param [props.onFocus] - The callback function to be called when a field is focused.
   * @param [props.onBlur] - The callback function to be called when a field is blurred.
   * @param [props.onInvalid] - The callback function to be called when a field is invalid.
   *
   * @returns - Returns null if loading or error, otherwise returns the button component with popover.
   */
  export const OneButton: <
    Data extends {} = any,
    Payload extends unknown = any,
  >({
    waitForChangesDelay,
    fieldDebounce,
    withCloseAfterChange,
    noBadge,
    fields,
    handler,
    payload: upperPayload,
    badgeColor,
    color,
    badgeOverlap,
    badgeSx,
    oneSx,
    onChange,
    onFocus,
    onBlur,
    isBaseline,
    isBaselineForRoot,
    onInvalid,
    readTransform,
    writeTransform,
    incomingTransform,
    outgoingTransform,
    ...buttonProps
  }: IOneButtonProps<Data, Payload>) => JSX.Element | null;
  export default OneButton;
}

declare module "react-declarative/components/Sheet/Sheet" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import { BoxProps } from "@mui/material/Box";
  interface ISheetProps extends BoxProps {
    withFullScreen?: boolean;
    withHeader?: boolean;
    maxCols?: number;
    maxRows?: number;
    data: string[][];
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    ref?: React.Ref<HTMLDivElement | undefined>;
  }
  export const Sheet: (
    {
      data: upperData,
      maxCols,
      maxRows,
      withHeader,
      withFullScreen,
      className,
      style,
      sx,
      ...otherProps
    }: ISheetProps,
    ref: React.Ref<HTMLDivElement>,
  ) => JSX.Element;
  export default Sheet;
}

declare module "react-declarative/components/Dot/Dot" {
  import { BoxProps } from "@mui/material/Box";
  /**
   * Interface for Dot props.
   * @interface
   * @extends BoxProps
   */
  interface IDotProps extends BoxProps {
    side: number;
    color: string;
  }
  /**
   * Represents a Dot component.
   * @param props - The props object.
   * @param props.className - The class name of the Dot component.
   * @param props.color - The background color of the Dot component.
   * @param props.side - The side length of the Dot component.
   * @param props.otherProps - Additional props to be spread onto the Dot component.
   * @returns - The rendered Dot component.
   */
  export const Dot: ({
    className,
    color: background,
    side,
    ...otherProps
  }: IDotProps) => JSX.Element;
  export default Dot;
}

declare module "react-declarative/components/NoSsr/NoSsr" {
  import * as React from "react";
  /**
   * Interface for props of a component that should not be rendered on the server side.
   * @interface INoSsrProps
   */
  interface INoSsrProps {
    ServerView?: React.ComponentType<any>;
    children?: React.ReactNode;
  }
  /**
   * Represents a state.
   * @interface State
   */
  interface State {
    canRender: boolean;
  }
  /**
   * Represents a component that handles server-side rendering (SSR) and client-side rendering (CSR) conditionally.
   */
  export class NoSsr extends React.Component<INoSsrProps, State> {
    constructor(props: INoSsrProps);
    componentDidMount: () => void;
    /**
     * Renders the content based on the current state.
     *
     * @returns The rendered content.
     */
    render: () => JSX.Element;
  }
  export default NoSsr;
}

declare module "react-declarative/components/Switch/Switch" {
  import * as React from "react";
  import { BrowserHistory, HashHistory, MemoryHistory } from "history";
  import { IFetchViewProps } from "react-declarative/components/FetchView";
  /**
   * Represents an item in a switch component.
   * @interface ISwitchItem
   */
  export interface ISwitchItem {
    path: string;
    element?: React.ComponentType<any>;
    guard?: () => boolean | Promise<boolean>;
    prefetch?: (
      params: Record<string, any>,
    ) => Record<string, any> | Promise<Record<string, any>>;
    unload?: (params: Record<string, any>) => Promise<void> | void;
    redirect?: string | ((params: Record<string, any>) => string | null);
  }
  /**
   * Represents the properties for the Switch component.
   */
  export interface ISwitchProps {
    className?: string;
    style?: React.CSSProperties;
    items: ISwitchItem[];
    fallback?: (e: Error) => void;
    history?: BrowserHistory | MemoryHistory | HashHistory;
    Forbidden?: React.ComponentType<any>;
    NotFound?: React.ComponentType<any>;
    Loader?: React.ComponentType<any>;
    Error?: React.ComponentType<any>;
    animation?: IFetchViewProps["animation"];
    onLoadStart?: () => void;
    onLoadEnd?: (isOk?: boolean) => void;
    onInit?: () => void;
    onDispose?: () => void;
    throwError?: boolean;
    children?: (result: ISwitchResult) => React.ReactNode;
  }
  /**
   * Represents the result of a switch operation in a routing system.
   *
   * @interface
   */
  interface ISwitchResult {
    element: React.ComponentType<any>;
    key: string;
    path: string;
    params?: Record<string, any>;
  }
  /**
   * Represents a switch component that renders different elements based on the current location.
   * @param SwitchProps - The props for the Switch component.
   * @param SwitchProps.className - The CSS class name for the component.
   * @param SwitchProps.style - The inline style object for the component.
   * @param SwitchProps.Loader - The loader component to render while initial loading.
   * @param SwitchProps.Forbidden - The component to render if access to a route is forbidden.
   * @param SwitchProps.NotFound - The component to render if the requested route is not found.
   * @param SwitchProps.Error - The component to render if an error occurs.
   * @param SwitchProps.animation - The animation type for transitioning between elements.
   * @param SwitchProps.history - The history object to use for routing. Defaults to DEFAULT_HISTORY if not provided.
   * @param SwitchProps.children - The function that returns the child elements to render based on the current location.
   * @param SwitchProps.fallback - The component to render if an error occurs and throwError is set to false.
   * @param SwitchProps.items - The array of route items to match and render components for.
   * @param SwitchProps.onLoadStart - The callback function to invoke when the component starts loading.
   * @param SwitchProps.onLoadEnd - The callback function to invoke when the component finishes loading.
   * @param SwitchProps.onInit - The callback function to invoke when the component initializes. Defaults to an empty function.
   * @param SwitchProps.onDispose - The callback function to invoke when the component is disposed. Defaults to an empty function.
   * @param SwitchProps.throwError - Indicates whether to throw an error if an exception occurs. Defaults to false.
   * @returns The Switch component.
   */
  export const Switch: {
    ({
      className,
      style,
      Loader,
      Forbidden,
      NotFound,
      Error,
      animation,
      history,
      children,
      fallback,
      items: upperItems,
      onLoadStart,
      onLoadEnd,
      onInit,
      onDispose,
      throwError,
    }: ISwitchProps): JSX.Element;
    listen(fn: (data: ISwitchResult) => void): () => void;
    waitForNavigate(): Promise<ISwitchResult>;
  };
  export default Switch;
}

declare module "react-declarative/components/Center/Center" {
  import { BoxProps } from "@mui/material/Box";
  /**
   * Represents the properties for the Center component.
   *
   * @interface ICenterProps
   */
  interface ICenterProps extends BoxProps {}
  /**
   * A functional component that renders a Box component with given className and otherProps.
   *
   * @param props - The properties to configure the Center component.
   * @param props.className - The className for the Box component.
   * @param props.otherProps - The other properties to be spread onto the Box component.
   *
   * @returns The rendered Center component.
   */
  export const Center: ({
    className,
    ...otherProps
  }: ICenterProps) => JSX.Element;
  export default Center;
}

declare module "react-declarative/components/Square/Square" {
  import * as React from "react";
  import { BoxProps } from "@mui/material/Box";
  /**
   * Represents the props for a Square component.
   */
  interface ISquareProps extends BoxProps {
    children: React.ReactNode;
  }
  export const Square: (
    { className, children, ...otherProps }: ISquareProps,
    ref: React.Ref<HTMLDivElement>,
  ) => JSX.Element;
  export default Square;
}

declare module "react-declarative/components/Scaffold/Scaffold" {
  import IScaffoldProps from "react-declarative/components/Scaffold/model/IScaffoldProps";
  /**
   * Function that generates a Scaffold component.
   *
   * @param props - The props for the Scaffold component.
   * @param props.roles - The roles to resolve for the component.
   * @param props.payload - The payload for the component.
   * @param [props.throwError] - Whether to throw an error or not.
   * @param [props.fallback] - The fallback component to render while loading.
   * @param [props.options] - The options to resolve for the component.
   * @param [props.loadingLine=false] - Whether to show a loading line or not.
   * @param [props.loading=-1] - The payload for the loading line.
   * @param [props.Loader=LoaderDefault] - The component to use as the loader.
   * @param [props.withPassthrough=false] - Whether to pass the payload to child components or not.
   * @param [props.onInit] - The function to execute on component initialization.
   * @returns - The rendered component tree.
   */
  export const Scaffold: <T extends unknown = any>({
    roles,
    payload,
    throwError,
    fallback,
    options,
    loadingLine,
    loading,
    Loader,
    withPassthrough,
    onInit,
    ...props
  }: IScaffoldProps<T>) => JSX.Element;
  export default Scaffold;
}

declare module "react-declarative/components/Scaffold/model/IScaffoldProps" {
  import IMenuGroup from "react-declarative/model/IMenuGroup";
  import IScaffoldOption from "react-declarative/components/Scaffold/model/IScaffoldOption";
  /**
   * The interface for the Scaffold component props.
   * @template T - The type of the payload data.
   */
  export interface IScaffoldProps<T extends any = any> {
    children: React.ReactNode;
    className?: string;
    dense?: boolean;
    withPassthrough?: boolean;
    style?: React.CSSProperties;
    title?: string;
    loadingLine?: boolean;
    loading?: number;
    colored?: boolean;
    selected?: string;
    options?: IMenuGroup[];
    actions?: IScaffoldOption<T>[];
    payload?: T;
    throwError?: boolean;
    fallback?: (e: Error) => void;
    BeforeSearch?: React.ComponentType<any>;
    AfterSearch?: React.ComponentType<any>;
    BeforeMenuContent?: React.ComponentType<any>;
    AfterMenuContent?: React.ComponentType<any>;
    Loader?: React.ComponentType<any>;
    roles?:
      | string[]
      | ((payload: T) => string[])
      | ((payload: T) => Promise<string[]>);
    onOptionClick?: (name: string) => void;
    onAction?: (name: string) => void;
    onInit?: () => void | Promise<void>;
  }
  export default IScaffoldProps;
}

declare module "react-declarative/components/Scaffold/model/IScaffoldOption" {
  import IOption from "react-declarative/model/IOption";
  /**
   * Interface representing the options for scaffolding.
   * @template T - The payload type.
   */
  export interface IScaffoldOption<T extends any = any>
    extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
      }
    > {
    isVisible?: (payload: T) => Promise<boolean> | boolean;
    isDisabled?: (payload: T) => Promise<boolean> | boolean;
  }
  export default IScaffoldOption;
}

declare module "react-declarative/components/Translate/Translate" {
  import React from "react";
  /**
   * Represents a collection of attributes.
   * @interface
   */
  interface IAttributeCollection {
    [name: string]: unknown;
  }
  /**
   * Represents the configuration options for translation.
   * @interface
   */
  export interface ITranslateConfig {
    useRawMark: boolean;
    rawSymbol: string;
    rawCondition: (text: string) => boolean;
  }
  type Locale = Record<string, string>;
  type Middleware = (str: string) => string | null;
  const createElementRef: typeof React.createElement;
  /**
   * Translate class for handling text translation and transformation.
   */
  export class Translate {
    readonly config: Partial<ITranslateConfig>;
    get skipList(): string[];
    /**
     * Translates the given text to another language.
     *
     * @param text - The text to be translated.
     * @returns The translated text.
     */
    translateText: (text: string) => string;
    /**
     * Constructs a new instance of the Translator class.
     *
     * @param [locale={}] - An object representing the initial locale configuration.
     * @param [transform] - A function for transforming strings.
     * @param [config={}] - An object representing additional configuration options.
     * @return
     */
    constructor(
      locale?: Locale,
      transform?: ((str: string) => string) | undefined,
      config?: Partial<ITranslateConfig>,
    );
    /**
     * Adds a middleware to the list of used middlewares.
     *
     * @param middleware - The middleware to be added.
     */
    use: (middleware: Middleware) => void;
    /**
     * Creates and returns an element based on the provided type, props, and children.
     *
     * @param type - The type of the element to create.
     * @param props - The properties or attributes to assign to the element.
     * @param children - The child elements or content to append to the element.
     * @returns - The created element.
     */
    createElement: (
      type: string,
      props: IAttributeCollection | null,
      ...children: any[]
    ) => ReturnType<typeof createElementRef>;
    /**
     * Create an element using the given type and props
     * @param type - The type of the element
     * @param props - The props for the element
     * @returns - The created element
     */
    jss: (
      type: string,
      props: IAttributeCollection | null,
    ) => React.ReactElement<{}, string | React.JSXElementConstructor<any>>;
    /**
     * Installs the Translate object and configures React.
     *
     * @param params - The parameters needed to create a new Translate instance.
     * @returns The installed Translate object.
     */
    static install: (
      locale?: Locale | undefined,
      transform?: ((str: string) => string) | undefined,
      config?: Partial<ITranslateConfig> | undefined,
    ) => Translate;
    /**
     * Clear the _skip and _transformed variables.
     *
     * @function
     */
    clear: () => void;
  }
  global {
    interface Window {
      Translate: Translate;
    }
  }
  export default Translate;
}

declare module "react-declarative/components/Breadcrumbs/Breadcrumbs" {
  import * as React from "react";
  import IBreadcrumbsOption from "react-declarative/model/IBreadcrumbsOption";
  /**
   * Represents the props for the Breadcrumbs component.
   *
   * @template T - The type of payload.
   *
   * @property [onSave] - The callback function for the save action.
   * @property [onBack] - The callback function for the back action.
   * @property [onAction] - The callback function for custom actions.
   * @property [actions] - The available actions.
   * @property [saveDisabled] - Indicates if the save action is disabled.
   * @property [title] - The title of the breadcrumbs.
   * @property [subtitle] - The subtitle of the breadcrumbs.
   * @property [withSave] - Indicates if the save action is included.
   * @property [payload] - The payload for custom actions.
   * @property [BeforeMenuContent] - The additional content to be displayed before the menu.
   * @property [AfterMenuContent] - The additional content to be displayed after the menu.
   */
  interface IBreadcrumbsProps<T extends any = any> {
    onSave?: () => void;
    onBack?: () => void;
    onAction?: (action: string) => void;
    actions?: IBreadcrumbsOption<T>[];
    saveDisabled?: boolean;
    title?: string;
    subtitle?: string;
    withSave?: boolean;
    payload?: T;
    BeforeMenuContent?: React.ComponentType<any>;
    AfterMenuContent?: React.ComponentType<any>;
  }
  /**
   * Renders a breadcrumb component with optional save button and action menu.
   *
   * @template T - The type of payload used by the actions.
   * @param props - The component props.
   * @param props.onSave - The callback function called when save button is clicked.
   * @param props.onBack - The callback function called when breadcrumb is clicked.
   * @param props.onAction - The callback function called when an action is selected from the menu.
   * @param props.actions - The list of actions to display in the menu.
   * @param props.saveDisabled - Whether the save button should be disabled.
   * @param props.payload - The payload object passed to the actions.
   * @param [props.title='Title'] - The title text for the breadcrumb.
   * @param [props.subtitle='Subtitle'] - The subtitle text for the breadcrumb.
   * @param [props.withSave=false] - Whether the save button should be displayed.
   * @param [props.BeforeMenuContent] - The optional content to display before the action menu.
   * @param [props.AfterMenuContent] - The optional content to display after the action menu.
   * @returns The rendered breadcrumb component.
   */
  export const Breadcrumbs: <T extends unknown = any>({
    onSave,
    onBack,
    onAction,
    actions,
    saveDisabled,
    payload,
    title,
    subtitle,
    withSave,
    BeforeMenuContent,
    AfterMenuContent,
  }: IBreadcrumbsProps<T>) => JSX.Element;
  export default Breadcrumbs;
}

declare module "react-declarative/components/ErrorBoundary/ErrorBoundary" {
  import * as React from "react";
  import { BrowserHistory, HashHistory, MemoryHistory } from "history";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents the props of an ErrorBoundary component.
   */
  interface IErrorBoundaryProps {
    onError?: (error: Error, errorInfo: any) => void;
    history?: MemoryHistory | BrowserHistory | HashHistory;
    reloadSubject?: TSubject<void>;
    children?: React.ReactNode;
  }
  /**
   * @typedef IErrorBoundaryState
   * @property hasError - Indicates if an error has occurred.
   */
  interface IErrorBoundaryState {
    hasError: boolean;
  }
  /**
   * Represents an error boundary component in React.
   */
  export class ErrorBoundary extends React.Component<
    IErrorBoundaryProps,
    IErrorBoundaryState
  > {
    /**
     * Returns an object that represents the new state for a component when an error is thrown during rendering.
     * This is a static method that can be implemented in a React class component.
     *
     * @function
     * @returns The new state object with the 'hasError' property set to true.
     */
    static getDerivedStateFromError(): {
      hasError: boolean;
    };
    constructor(props: IErrorBoundaryProps);
    /**
     * Listen for error cancelation
     *
     * @function componentDidMount
     * @memberof Component
     * @returns
     */
    componentDidMount: () => void;
    /**
     * Clears the garbage
     *
     * @function componentWillUnmount
     * @memberof Component
     * @returns
     */
    componentWillUnmount: () => void;
    /**
     * Listens for updates to the component and handles error state.
     *
     * @function componentDidUpdate
     * @memberof Component
     * @returns
     */
    componentDidUpdate: () => void;
    /**
     * Handles error caught during rendering in React components.
     *
     * @param error - The error object that was caught.
     * @param errorInfo - Additional information about the error.
     * @memberof [ComponentName]
     */
    componentDidCatch: (error: any, errorInfo: any) => void;
    /**
     * A function that renders the children component.
     * If there is an error in the state, it will return null.
     * Otherwise, it will return the children component.
     * @returns The rendered component or null if there is an error in the state.
     */
    render: () => React.ReactNode;
  }
  export default ErrorBoundary;
}

declare module "react-declarative/components/ColorButton/ColorButton" {
  import { BoxProps } from "@mui/material/Box";
  /**
   * Interface representing the props for the ColorButton component.
   */
  interface IColorButtonProps
    extends Omit<
      BoxProps,
      keyof {
        value: never;
        onChange: never;
        onClick: never;
      }
    > {
    value?: string;
    onChange?: (color: string) => void;
  }
  /**
   * Represents a color button component.
   * @typedef IColorButtonProps
   * @property className - The class name for the color button.
   * @property value - The initial value for the color button (default: "").
   * @property sx - The style object for the color button.
   * @property onChange - The function to be called when the color button value changes (default: () => null).
   */
  export const ColorButton: ({
    className,
    value: upperValue,
    sx,
    onChange,
    ...props
  }: IColorButtonProps) => JSX.Element;
  export default ColorButton;
}

declare module "react-declarative/components/ActionChip/ActionChip" {
  import { ChipProps } from "@mui/material/Chip";
  /**
   * Interface representing the props for the ActionChip component.
   *
   * @interface
   * @extends ChipProps
   * @property withSingleValue - Determines whether the action chip should display a single value.
   * @property value - The current value of the action chip.
   * @property onChange - The function to be called when the value of the action chip changes.
   * @property onLoadStart - The function to be called when the loading starts.
   * @property onLoadEnd - The function to be called when the loading ends.
   * @property fallback - The function to be called if an error occurs.
   * @property throwError - Determines whether an error should be thrown.
   */
  interface IActionChipProps
    extends Omit<
      ChipProps,
      keyof {
        variant: never;
        deleteIcon: never;
        onClick: never;
        onDelete: never;
        onChange: never;
      }
    > {
    withSingleValue?: boolean;
    value?: boolean;
    onChange?: (
      value: boolean,
    ) => void | boolean | undefined | Promise<void | boolean | undefined>;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
  }
  /**
   * ActionChip component represents a chip with dynamic action behavior.
   *
   * @param [value=false] - The initial value of the chip.
   * @param [withSingleValue=false] - Determines whether the chip should have a single value or not.
   * @param [onChange] - The function to be called when the chip value changes.
   * @param [onLoadStart] - The function to be called when the chip's loading state starts.
   * @param [onLoadEnd] - The function to be called when the chip's loading state ends.
   * @param [fallback] - The fallback content to be displayed while the chip is in the loading state.
   * @param [throwError] - Determines whether an error should be thrown if the onChange function is not defined.
   * @param [otherProps] - Additional props to be passed to the Chip component.
   *
   * @returns - The ActionChip component.
   */
  export const ActionChip: ({
    value: upperValue,
    withSingleValue,
    onChange,
    onLoadStart,
    onLoadEnd,
    fallback,
    throwError,
    ...otherProps
  }: IActionChipProps) => JSX.Element;
  export default ActionChip;
}

declare module "react-declarative/components/ActionMenu/ActionMenu" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import { IAsyncProps } from "react-declarative/components/Async";
  import IOption from "react-declarative/model/IOption";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents the properties of the ActionMenu component.
   *
   * @template T - The type of payload.
   */
  export interface IActionMenuProps<T extends any = object> {
    keepMounted?: boolean;
    options?: Partial<IOption>[];
    transparent?: boolean;
    disabled?: boolean;
    onAction?: (action: string) => void;
    onToggle?: (opened: boolean) => void;
    fallback?: (e: Error) => void;
    deps?: any[];
    throwError?: boolean;
    className?: string;
    reloadSubject?: TSubject<void>;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    payload?: IAsyncProps<T>["payload"];
    onLoadStart?: IAsyncProps<T>["onLoadStart"];
    onLoadEnd?: IAsyncProps<T>["onLoadEnd"];
    BeforeContent?: React.ComponentType<any>;
    AfterContent?: React.ComponentType<any>;
  }
  /**
   * ActionMenu is a component that displays a menu of options triggered by a button click.
   *
   * @template T - The type of payload passed to the action.
   *
   * @param options - An array of option objects that define the content and behavior of each menu option.
   * @param transparent - Determines whether the menu button should have a transparent style.
   * @param disabled - Determines whether the menu should be disabled and not respond to user interactions.
   * @param throwError - Determines whether to throw an error when an asynchronous action fails.
   * @param fallback - The fallback content to display when an asynchronous action fails.
   * @param onToggle - A callback function to handle the menu open/close state change event.
   * @param onAction - A callback function to handle the execution of an action when a menu option is clicked.
   * @param payload - A payload object to pass to the action callback function.
   * @param className - Additional CSS class name(s) to apply to the menu button.
   * @param style - Additional inline styles to apply to the menu button.
   * @param sx - Additional Stylsx object to apply to the menu button.
   * @param deps - An array of dependencies to update the menu when changed.
   * @param onLoadStart - A callback function to handle the start of an asynchronous action.
   * @param onLoadEnd - A callback function to handle the end of an asynchronous action.
   * @param keepMounted - Determines whether to keep the menu mounted in the DOM even when closed.
   * @param BeforeContent - The content to display before the menu options.
   * @param AfterContent - The content to display after the menu options.
   * @param reloadSubject - A subject that triggers the reload of the menu options.
   *
   * @returns - The rendered ActionMenu component.
   */
  export const ActionMenu: <T extends unknown = object>({
    options,
    transparent,
    disabled,
    throwError,
    fallback,
    onToggle,
    onAction,
    payload,
    className,
    style,
    sx,
    deps,
    onLoadStart,
    onLoadEnd,
    keepMounted,
    BeforeContent,
    AfterContent,
    reloadSubject,
  }: IActionMenuProps<T>) => JSX.Element;
  export default ActionMenu;
}

declare module "react-declarative/components/ActionGroup/ActionGroup" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import { IAsyncProps } from "react-declarative/components/Async";
  import IOption from "react-declarative/model/IOption";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents the properties of the ActionGroup component.
   *
   * @template T - The type of payload.
   */
  export interface IActionGroupProps<T extends any = object> {
    keepMounted?: boolean;
    options?: Partial<IOption>[];
    transparent?: boolean;
    disabled?: boolean;
    variant?: "text" | "outlined" | "contained";
    size?: "small" | "medium" | "large";
    onAction?: (action: string) => void;
    onToggle?: (opened: boolean) => void;
    fallback?: (e: Error) => void;
    deps?: any[];
    throwError?: boolean;
    className?: string;
    reloadSubject?: TSubject<void>;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    payload?: IAsyncProps<T>["payload"];
    onLoadStart?: IAsyncProps<T>["onLoadStart"];
    onLoadEnd?: IAsyncProps<T>["onLoadEnd"];
    BeforeContent?: React.ComponentType<any>;
    AfterContent?: React.ComponentType<any>;
  }
  /**
   * ActionGroup is a component that displays a menu of options triggered by a button click.
   *
   * @template T - The type of payload passed to the action.
   *
   * @param options - An array of option objects that define the content and behavior of each menu option.
   * @param transparent - Determines whether the menu button should have a transparent style.
   * @param disabled - Determines whether the menu should be disabled and not respond to user interactions.
   * @param throwError - Determines whether to throw an error when an asynchronous action fails.
   * @param fallback - The fallback content to display when an asynchronous action fails.
   * @param onToggle - A callback function to handle the menu open/close state change event.
   * @param onAction - A callback function to handle the execution of an action when a menu option is clicked.
   * @param payload - A payload object to pass to the action callback function.
   * @param className - Additional CSS class name(s) to apply to the menu button.
   * @param style - Additional inline styles to apply to the menu button.
   * @param sx - Additional Stylsx object to apply to the menu button.
   * @param deps - An array of dependencies to update the menu when changed.
   * @param onLoadStart - A callback function to handle the start of an asynchronous action.
   * @param onLoadEnd - A callback function to handle the end of an asynchronous action.
   * @param keepMounted - Determines whether to keep the menu mounted in the DOM even when closed.
   * @param BeforeContent - The content to display before the menu options.
   * @param AfterContent - The content to display after the menu options.
   * @param reloadSubject - A subject that triggers the reload of the menu options.
   *
   * @returns - The rendered ActionGroup component.
   */
  export const ActionGroup: <T extends unknown = object>({
    variant,
    size,
    options,
    disabled,
    throwError,
    fallback,
    onToggle,
    onAction,
    payload,
    className,
    style,
    sx,
    deps,
    onLoadStart,
    onLoadEnd,
    keepMounted,
    BeforeContent,
    AfterContent,
    reloadSubject,
  }: IActionGroupProps<T>) => JSX.Element;
  export default ActionGroup;
}

declare module "react-declarative/components/ActionButton/ActionButton" {
  import * as React from "react";
  import { ButtonProps } from "@mui/material/Button";
  /**
   * Represents a component that displays a loading indicator and content.
   *
   * @param props - The properties of the component.
   * @param props.children - The content to be displayed.
   * @param props.loading - Whether or not to display the loading indicator.
   *
   * @returns The rendered component.
   */
  const ProgressDefault: ({
    loading,
    children,
  }: {
    children: React.ReactNode;
    loading: boolean;
  }) => JSX.Element;
  /**
   * Represents the properties for an ActionButton component.
   * @interface
   */
  interface IActionButtonProps
    extends Omit<
      ButtonProps,
      keyof {
        onClick: never;
      }
    > {
    Progress?: typeof ProgressDefault;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    onClick?: (
      event: React.MouseEvent<HTMLButtonElement, MouseEvent>,
    ) => void | Promise<void>;
    fallback?: (e: Error) => void;
    throwError?: boolean;
  }
  /**
   * Represents an action button component.
   *
   * @component
   * @param props - The component props.
   * @param [props.Progress=ProgressDefault] - The progress component to show when the button is loading.
   * @param [props.onClick=()=>{}] - The function to be called when the button is clicked.
   * @param [props.onLoadStart] - The function to be called when the loading starts.
   * @param [props.onLoadEnd] - The function to be called when the loading ends.
   * @param [props.fallback] - The function to be called when an error occurs and throwError is false.
   * @param [props.children] - The content to be rendered inside the button.
   * @param [props.disabled] - Whether the button is disabled.
   * @param [props.throwError=false] - Whether to throw an error when an exception occurs.
   * @param [props.variant="outlined"] - The button style variant.
   *
   * @returns The rendered component.
   */
  export const ActionButton: ({
    Progress,
    onClick,
    onLoadStart,
    onLoadEnd,
    fallback,
    children,
    disabled,
    throwError,
    variant,
    ...otherProps
  }: IActionButtonProps) => JSX.Element;
  export default ActionButton;
}

declare module "react-declarative/components/ActionButton/api/usePreventAction" {
  /**
   * Represents a set of parameters for a certain functionality.
   *
   * @interface
   */
  interface IParams {
    disabled?: boolean;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
  }
  /**
   * A hook that allows preventing an action based on loading state.
   * @param [IParams] - The parameters for the hook.
   * @param [onLoadStart] - The function to execute when the loading starts.
   * @param [onLoadEnd] - The function to execute when the loading ends.
   * @param [disabled] - Whether the action is disabled.
   * @returns - An object containing the handleLoadStart, handleLoadEnd, and loading properties.
   */
  export const usePreventAction: ({
    onLoadStart,
    onLoadEnd,
    disabled,
  }?: IParams) => {
    readonly handleLoadStart: () => void;
    readonly handleLoadEnd: (isOk: boolean) => void;
    readonly loading: boolean | undefined;
  };
  export default usePreventAction;
}

declare module "react-declarative/components/ActionBounce/ActionBounce" {
  import * as React from "react";
  import { IPaperViewProps } from "react-declarative/components/PaperView";
  import TSubject from "react-declarative/model/TSubject";
  import ActionState from "react-declarative/components/ActionBounce/model/ActionState";
  interface IActionBounceProps
    extends Omit<
      IPaperViewProps,
      keyof {
        onAnimationEnd: never;
        onAnimationStart: never;
      }
    > {
    onAnimationStart?: (
      state: ActionState,
      e: React.AnimationEvent<HTMLDivElement>,
    ) => void;
    onAnimationEnd?: (
      state: ActionState,
      e: React.AnimationEvent<HTMLDivElement>,
    ) => void;
    defaultState?: ActionState;
    stateSubject: TSubject<ActionState>;
  }
  export const ActionBounce: ({
    defaultState,
    onAnimationEnd,
    onAnimationStart,
    className,
    children,
    stateSubject,
    ...otherProps
  }: IActionBounceProps) => JSX.Element;
  export default ActionBounce;
}

declare module "react-declarative/components/ActionBounce/model/ActionState" {
  export enum ActionState {
    Initial = "initial-state",
    Active = "active-state",
    Abort = "abort-state",
    Succeed = "succeed-state",
    Closed = "closed-state",
  }
  export default ActionState;
}

declare module "react-declarative/components/ActionStopIcon/ActionStopIcon" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import { IconButtonProps } from "@mui/material/IconButton";
  /**
   * Represents the properties for the ActionStopIcon component. This class extends the IconButtonProps interface and adds additional properties.
   * @interface
   */
  interface IActionStopIconProps
    extends Omit<
      IconButtonProps,
      keyof {
        className: never;
        style: never;
        sx: never;
        size: never;
        thickness: never;
        onClick: never;
      }
    > {
    children?: React.ReactNode;
    sx?: SxProps<any>;
    className?: string;
    style?: React.CSSProperties;
    noProgress?: boolean;
    disabled?: boolean;
    size?: number;
    thickness?: number;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    onClick?: (
      event: React.MouseEvent<HTMLButtonElement, MouseEvent>,
    ) => void | Promise<void>;
    fallback?: (e: Error) => void;
    throwError?: boolean;
  }
  /**
   * Represents an ActionStopIcon component.
   *
   * @typedef IActionStopIconProps
   * @property className - The CSS class name for the component.
   * @property style - The inline CSS styles for the component.
   * @property sx - The system styles for the component.
   * @property size - The size of the icon. Default is DEFAULT_SIZE.
   * @property thickness - The thickness of the CircularProgress spinner. Default is DEFAULT_THICKNESS.
   * @property noProgress - Flag indicating whether to show the CircularProgress spinner. Default is false.
   * @property throwError - Flag indicating whether to throw an error or trigger the fallback function upon an error. Default is false.
   * @property disabled - Flag indicating whether the component is disabled. Default is false.
   * @property onLoadStart - Callback function triggered when the component starts loading.
   * @property onLoadEnd - Callback function triggered when the component finishes loading.
   * @property fallback - The fallback function to be called when an error occurs and 'throwError' is set to false.
   * @property onClick - The click event handler for the component. Default is an empty function.
   * @property children - The child element to be rendered inside the component. Default is a CloseIcon.
   * @property otherProps - Any additional props for the component.
   */
  export const ActionStopIcon: ({
    className,
    style,
    sx,
    size,
    thickness,
    noProgress,
    throwError,
    disabled,
    onLoadStart,
    onLoadEnd,
    fallback,
    onClick,
    children,
    ...otherProps
  }: IActionStopIconProps) => JSX.Element;
  export default ActionStopIcon;
}

declare module "react-declarative/components/ActionFab/ActionFab" {
  import * as React from "react";
  import { FabProps } from "@mui/material/Fab";
  /**
   * Represents the props for the ActionFab component.
   * @interface
   * @extends FabProps
   */
  interface IActionFabProps
    extends Omit<
      FabProps,
      keyof {
        onClick: never;
        size?: never;
      }
    > {
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    onClick?: (
      event: React.MouseEvent<HTMLButtonElement, MouseEvent>,
    ) => void | Promise<void>;
    fallback?: (e: Error) => void;
    throwError?: boolean;
    thickness?: number;
    size?: number;
    noProgress?: boolean;
  }
  /**
   * ActionFab component.
   *
   * @param props - The component props.
   * @param props.className - The CSS class name for the root element.
   * @param props.style - The inline CSS styles for the root element.
   * @param props.sx - The style object for SX props.
   * @param props.noProgress - If true, the progress indicator will not be displayed when loading. Default is false.
   * @param props.throwError - If true, any error thrown during onClick will be re-thrown. Default is false.
   * @param props.disabled - If true, the component is disabled. Default is false.
   * @param props.size - The size of the component. Default is DEFAULT_SIZE.
   * @param props.thickness - The thickness of the progress indicator. Default is DEFAULT_THICKNESS.
   * @param props.color - The color of the component. Default is "primary".
   * @param props.onLoadStart - The callback function called when loading starts.
   * @param props.onLoadEnd - The callback function called when loading ends.
   * @param props.onClick - The callback function called when the component is clicked.
   * @param props.fallback - The fallback component to render if an error occurs during onClick.
   * @param props.children - The child components to render inside the component.
   * @param props.otherProps - The additional props to pass to the Fab component.
   * @returns The rendered component.
   */
  export const ActionFab: ({
    className,
    style,
    sx,
    noProgress,
    throwError,
    disabled,
    size,
    thickness,
    color,
    onLoadStart,
    onLoadEnd,
    onClick,
    fallback,
    children,
    ...otherProps
  }: IActionFabProps) => JSX.Element;
  export default ActionFab;
}

declare module "react-declarative/components/ActionFilter/ActionFilter" {
  import { BoxProps as MatBoxProps } from "@mui/material/Box";
  import IActionFilterProps from "react-declarative/components/ActionFilter/model/IActionFilterProps";
  /**
   * Represents the properties for a Box component.
   * Extends the MatBoxProps and removes the 'onChange' property.
   */
  type BoxProps = Omit<
    MatBoxProps,
    keyof {
      onChange: never;
    }
  >;
  /**
   * Represents an Action Filter component.
   *
   * @typedef ActionFilter
   * @property actions - The available filter actions.
   * @property label - The label for the filter component.
   * @property addLabel - The label for the "Add filter" button.
   * @property data - The initial filter data.
   * @property onChange - The callback function to be called when the filter data changes.
   * @property otherProps - Additional properties for the Box component.
   */
  export const ActionFilter: ({
    actions,
    label,
    addLabel,
    data: initialData,
    onChange,
    ...otherProps
  }: BoxProps & IActionFilterProps) => JSX.Element;
  export default ActionFilter;
}

declare module "react-declarative/components/ActionFilter/model/IActionFilter" {
  /**
   * Represents an action filter.
   * @interface
   */
  export interface IActionFilter {
    action: string;
    label: string;
    items: {
      value: string;
      label: string;
    }[];
  }
  export default IActionFilter;
}

declare module "react-declarative/components/ActionTrigger/ActionTrigger" {
  import IActionTriggerProps from "react-declarative/components/ActionTrigger/model/IActionTriggerProps";
  /**
   * Renders a component that triggers actions based on user interaction.
   *
   * @template T - The type of the payload returned by the action.
   * @param props - The props for the component.
   * @param props.actions - An array of objects representing the actions to be triggered. Each object should have the following properties:
   *   - action: The name of the action to be triggered.
   *   - label: The label of the action.
   *   - icon: An optional icon component for the action.
   *   - isAvailable: An optional function or boolean indicating whether the action is available. If a function is provided, it should return a boolean.
   * @param [props.variant='outlined'] - The variant of the action buttons.
   * @param [props.size='medium'] - The size of the action buttons.
   * @param [props.onAction=() => {}] - The callback function to be called when an action is triggered.
   * @param [props.fallback] - The fallback value to be passed to the Async component.
   * @param [props.onLoadStart] - The callback function to be called when the async operation starts.
   * @param [props.onLoadEnd] - The callback function to be called when the async operation ends.
   * @param [props.payload] - The payload data to be passed to the async operation.
   * @param [props.deps] - The dependencies of the async operation.
   * @param [props.throwError] - Whether to throw an error if the async operation fails.
   * @param otherProps - Additional props to be spread onto the container Box component.
   * @returns - The rendered component.
   */
  export const ActionTrigger: <T extends unknown = object>({
    actions,
    variant,
    size,
    onAction,
    fallback,
    onLoadStart,
    onLoadEnd,
    payload,
    deps,
    throwError,
    ...otherProps
  }: IActionTriggerProps<T>) => JSX.Element;
  export default ActionTrigger;
}

declare module "react-declarative/components/ActionTrigger/model/IActionTrigger" {
  import IAnything from "react-declarative/model/IAnything";
  import IOption from "react-declarative/model/IOption";
  /**
   * Represents an action trigger that determines when an action can be triggered.
   * @template Data - The type of data that the trigger function will receive.
   */
  export interface IActionTrigger<Data extends any = IAnything>
    extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
      }
    > {
    isAvailable?: ((payload: Data) => boolean | Promise<boolean>) | boolean;
  }
  export default IActionTrigger;
}

declare module "react-declarative/components/ActionIcon/ActionIcon" {
  import * as React from "react";
  import { IconButtonProps } from "@mui/material/IconButton";
  /**
   * Props for the ActionIcon component.
   *
   * @typedef IActionIconProps
   * @property [onLoadStart] - A callback function triggered when the icon starts loading.
   * @property [onLoadEnd] - A callback function triggered when the icon finishes loading.
   * @property [onClick] - A callback function triggered when the icon is clicked.
   * @property [fallback] - A callback function triggered when an error occurs while loading the icon.
   * @property [throwError] - Indicates whether an error should be thrown if the icon fails to load.
   * @property [size] - The size of the icon.
   * @property [thickness] - The thickness of the icon.
   * @property [noProgress] - Indicates whether to hide the progress indicator during loading.
   */
  interface IActionIconProps
    extends Omit<
      IconButtonProps,
      keyof {
        onClick: never;
        size: never;
      }
    > {
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    onClick?: (
      event: React.MouseEvent<HTMLButtonElement, MouseEvent>,
    ) => void | Promise<void>;
    fallback?: (e: Error) => void;
    throwError?: boolean;
    size?: number;
    thickness?: number;
    noProgress?: boolean;
  }
  /**
   * Represents an action icon component.
   * @typedef ActionIcon
   * @property className - The class name for the component.
   * @property style - The inline style for the component.
   * @property sx - The custom styling for the component using SX prop provided by Emotion.
   * @property noProgress - Determines if the progress spinner should be shown.
   * @property throwError - Determines if an error should be thrown in case of an exception.
   * @property disabled - Determines if the component is disabled.
   * @property onLoadStart - The callback function called when the action starts loading.
   * @property onLoadEnd - The callback function called when the action finishes loading.
   * @property onClick - The callback function called when the icon is clicked.
   * @property fallback - The fallback function called in case of an error and throwError is false.
   * @property children - The child components of the icon.
   * @property size - The size of the icon.
   * @property thickness - The thickness of the circular progress spinner.
   * @property otherProps - Other props to be passed to the IconButton component.
   */
  export const ActionIcon: ({
    className,
    style,
    sx,
    noProgress,
    throwError,
    disabled,
    onLoadStart,
    onLoadEnd,
    onClick,
    fallback,
    children,
    size,
    thickness,
    ...otherProps
  }: IActionIconProps) => JSX.Element;
  export default ActionIcon;
}

declare module "react-declarative/components/ActionToggle/ActionToggle" {
  import { SxProps } from "@mui/material";
  import { BoxProps } from "@mui/material/Box";
  /**
   * Interface for props of ActionToggle component.
   */
  interface IActionToggleProps
    extends Omit<
      BoxProps,
      keyof {
        onChange: never;
        onClick: never;
        sx?: never;
      }
    > {
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    onClick?: (value: boolean) => void | Promise<void>;
    fallback?: (e: Error) => void;
    checked?: boolean;
    disabled?: boolean;
    defaultChecked?: boolean;
    throwError?: boolean;
    sx?: SxProps<any>;
  }
  /**
   * Represents an action toggle component.
   *
   * @typedef ActionToggle
   * @param className - The custom class name for the component.
   * @param onClick - The callback function called when the toggle is clicked.
   * @param onLoadStart - The callback function called when the loading starts.
   * @param onLoadEnd - The callback function called when the loading ends.
   * @param fallback - The fallback function called when an error occurs and throwError is false.
   * @param disabled - Indicates whether the toggle is disabled.
   * @param throwError - Indicates whether an error should be thrown.
   * @param checked - Indicates whether the toggle is checked.
   * @param defaultChecked - The default value for the checked state.
   * @param otherProps - Additional props to be spread on the component.
   */
  export const ActionToggle: ({
    className,
    onClick,
    onLoadStart,
    onLoadEnd,
    fallback,
    disabled,
    throwError,
    checked: upperChecked,
    defaultChecked,
    ...otherProps
  }: IActionToggleProps) => JSX.Element;
  export default ActionToggle;
}

declare module "react-declarative/components/ActionModal/ActionModal" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import ISize from "react-declarative/model/ISize";
  import IField from "react-declarative/model/IField";
  import IOneApi from "react-declarative/model/IOneApi";
  import IAnything from "react-declarative/model/IAnything";
  import IOneProps from "react-declarative/model/IOneProps";
  import IOnePublicProps from "react-declarative/model/IOnePublicProps";
  /**
   * Interface representing the props for the ActionModal component.
   * @template Data - The type of the data.
   * @template Payload - The type of the payload.
   * @template Field - The type of the field.
   * @template Param - The type of the parameter.
   */
  export interface IActionModalProps<
    Data extends IAnything = IAnything,
    Payload = IAnything,
    Field = IField<Data>,
    Param = any,
  > {
    sizeRequest?: (size: ISize) => {
      height: number;
      width: number;
      sx?: SxProps<any>;
    };
    withLoader?: boolean;
    waitForChangesDelay?: number;
    withActionButton?: boolean;
    withStaticAction?: boolean;
    fullScreen?: boolean;
    hidden?: boolean;
    readonly?: boolean;
    apiRef?: React.Ref<IOneApi>;
    fields: Field[];
    title?: string;
    dirty?: boolean;
    param?: Param;
    isBaselineForRoot?: IOneProps<Data, Payload>["isBaselineForRoot"];
    isBaseline?: IOneProps<Data, Payload>["isBaseline"];
    features?: IOnePublicProps<Data, Payload>["features"];
    outlinePaper?: IOneProps<Data, Payload>["outlinePaper"];
    transparentPaper?: IOneProps<Data, Payload>["transparentPaper"];
    handler?: IOneProps<Data, Payload>["handler"];
    payload?: IOneProps<Data, Payload>["payload"];
    changeSubject?: IOneProps<Data, Payload>["changeSubject"];
    reloadSubject?: IOneProps<Data, Payload>["reloadSubject"];
    readTransform?: IOnePublicProps<Data, Payload>["readTransform"];
    writeTransform?: IOnePublicProps<Data, Payload>["writeTransform"];
    incomingTransform?: IOnePublicProps<Data, Payload>["incomingTransform"];
    outgoingTransform?: IOnePublicProps<Data, Payload>["outgoingTransform"];
    onSubmit?: (
      data: Data | null,
      payload: Payload,
      param: Param,
    ) => Promise<boolean> | boolean;
    onChange?: (data: Data, initial: boolean) => void;
    onInvalid?: (name: string, msg: string) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    AfterTitle?: React.ComponentType<{
      onClose?: () => void;
      payload: Payload;
      param: Param;
    }>;
    BeforeTitle?: React.ComponentType<{
      onClose?: () => void;
      payload: Payload;
      param: Param;
    }>;
    throwError?: boolean;
    open?: boolean;
    submitLabel?: string;
    submitIcon?: React.ComponentType<any>;
  }
  /**
   * The `SMALL_SIZE_REQUEST` variable is a function that returns an object containing the properties for
   * configuring the size of a modal component. It is of type `IActionModalProps['sizeRequest']`.
   *
   * @returns The size configuration object.
   * @property height - The height of the modal component. This value is set to 0.
   * @property width - The width of the modal component. This value is set to 0.
   * @property sx - An object with additional style properties for the modal component.
   * @property sx.maxHeight - The maximum height of the modal component. This value is set to "80%".
   * @property sx.minWidth - The minimum width of the modal component. This value is set to "330px".
   * @property sx.maxWidth - The maximum width of the modal component. This value is set to "450px".
   * @property sx.margin - The margin around the modal component. This value is set to "10px".
   */
  export const SMALL_SIZE_REQUEST: IActionModalProps["sizeRequest"];
  /**
   * Description: A function that modifies the size request for a modal action.
   *
   * @param sizeRequest - The original size request object containing height and width.
   * @param sizeRequest.height - The current height of the modal.
   * @param sizeRequest.width - The current width of the modal.
   *
   * @returns - The modified size request object with reduced height and width.
   * @returns - The modified size request object with reduced height.
   * @returns - The modified size request object with reduced width.
   */
  export const LARGE_SIZE_REQUEST: IActionModalProps["sizeRequest"];
  /**
   * ActionModal is a component that renders a modal dialog with customizable fields and actions.
   *
   * @template Data - The type of data for the fields in the modal.
   * @template Payload - The type of payload that will be passed to the onSubmit callback.
   * @template Field - The type of field that will be rendered in the modal.
   *
   * @typedef IActionModalProps - The props for the ActionModal component.
   * @property [withActionButton=true] - Determines whether an action button should be displayed.
   * @property [withStaticAction=false] - Determines whether a static action should be displayed.
   * @property [waitForChangesDelay=0] - The amount of time to wait for any changes before submitting the form.
   * @property [onSubmit=()=>true] - The callback function to be called when the form is submitted.
   * @property [onChange=()=>undefined] - The callback function to be called when any field changes.
   * @property [onInvalid=()=>undefined] - The callback function to be called when a field becomes invalid.
   * @property [onLoadStart] - The callback function to be called when the form starts loading.
   * @property [onLoadEnd] - The callback function to be called when the form finishes loading.
   * @property [fallback] - The fallback component to be displayed when an error occurs.
   * @property [fields] - The fields to be rendered in the form.
   * @property [param] - Additional parameter to be passed to the onSubmit callback.
   * @property [handler] - The function to be called when any field changes its value.
   * @property [payload={}] - The payload to be passed to the onSubmit callback.
   * @property [fullScreen=false] - Determines whether the modal should be displayed in full screen.
   * @property [sizeRequest] - The function to compute the size of the modal.
   * @property [title] - The title to be displayed in the modal.
   * @property [apiRef] - Reference to the api.
   * @property [features] - Additional features for the ActionModal.
   * @property [changeSubject] - Subject for changes.
   * @property [reloadSubject] - Subject for reloads.
   * @property [outlinePaper=false] - Determines whether the paper component should have an outline.
   * @property [transparentPaper=false] - Determines whether the paper component should be transparent.
   * @property [open=true] - Determines whether the modal is open.
   * @property [dirty=false] - Determines whether any field in the form is dirty.
   * @property [hidden=false] - Determines whether the modal is hidden.
   * @property [readonly=false] - Determines whether the modal is read-only.
   * @property [throwError=false] - Determines whether an error should be thrown on submission error.
   * @property [submitLabel='Submit'] - The label to be displayed on the action button.
   * @property [AfterTitle] - The component to be displayed after the title.
   * @property [BeforeTitle] - The component to be displayed before the title.
   *
   * @param props - The props for the ActionModal component.
   * @returns - The rendered modal component.
   */
  export const ActionModal: <
    Data extends unknown = any,
    Payload = any,
    Field = IField<Data, any>,
  >({
    withActionButton,
    withStaticAction,
    withLoader,
    waitForChangesDelay,
    onSubmit,
    onChange,
    onInvalid,
    onLoadStart,
    onLoadEnd,
    fallback,
    fields,
    param,
    handler,
    payload: upperPayload,
    fullScreen,
    sizeRequest,
    title,
    apiRef,
    features,
    changeSubject,
    reloadSubject,
    isBaselineForRoot,
    isBaseline,
    outlinePaper,
    transparentPaper,
    open,
    dirty,
    hidden,
    readonly,
    throwError,
    submitLabel,
    submitIcon: SubmitIcon,
    AfterTitle,
    BeforeTitle,
    readTransform,
    writeTransform,
    incomingTransform,
    outgoingTransform,
  }: IActionModalProps<Data, Payload, Field, any>) => JSX.Element;
  export default ActionModal;
}

declare module "react-declarative/components/ActionModal/useActionModal" {
  import { IActionModalProps } from "react-declarative/components/ActionModal/ActionModal";
  import TypedField from "react-declarative/model/TypedField";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Interface for the Params class.
   * @template Data - The type of the data.
   * @template Payload - The type of the payload.
   * @template Field - The type of the field.
   * @template Param - The type of the param.
   */
  export interface IParams<
    Data extends IAnything = IAnything,
    Payload extends IAnything = IAnything,
    Field = IField<Data>,
    Param = any,
  > extends Omit<
      IActionModalProps<Data, Payload, Field, Param>,
      keyof {
        open: never;
      }
    > {
    waitForChangesDelay?: number;
    param?: Param;
    onClose?: () => void;
  }
  /**
   * Creates a hook for managing an action modal.
   * @template Data - The type of data being submitted.
   * @template Payload - The type of payload data.
   * @template Field - The type of field data.
   * @template Param - The type of param data.
   * @param params - The parameters for configuring the action modal.
   * @param params.hidden - Indicates whether the action modal is hidden.
   * @param params.fields - The fields for the action modal.
   * @param params.waitForChangesDelay - The delay for waiting on changes.
   * @param params.param - The initial value for the param.
   * @param params.features - The features for the action modal.
   * @param params.handler - The handler function for the action modal.
   * @param params.fallback - The fallback element for the action modal.
   * @param params.apiRef - The reference to the API for the action modal.
   * @param params.changeSubject - The subject for change events.
   * @param params.reloadSubject - The subject for reload events.
   * @param params.withActionButton - Indicates whether to include an action button.
   * @param params.withStaticAction - Indicates whether to include a static action.
   * @param params.payload - The payload data for the action modal.
   * @param params.BeforeTitle - The element to render before the title.
   * @param params.onChange - The onChange event handler for the action modal.
   * @param params.onClose - The onClose event handler for the action modal.
   * @param params.onSubmit - The onSubmit event handler for the action modal.
   * @param params.onLoadEnd - The onLoadEnd event handler for the action modal.
   * @param params.onLoadStart - The onLoadStart event handler for the action modal.
   * @param params.onInvalid - The onInvalid event handler for the action modal.
   * @param params.AfterTitle - The element to render after the title.
   * @param params.outlinePaper - Indicates whether the paper has an outline.
   * @param params.transparentPaper - Indicates whether the paper is transparent.
   * @param params.submitLabel - The label for the submit button.
   * @param params.throwError - Indicates whether to throw an error on submit.
   * @param params.dirty - Indicates whether the form is dirty.
   * @param params.readonly - Indicates whether the form is readonly.
   * @param params.fullScreen - Indicates whether the action modal is fullscreen.
   * @param params.sizeRequest - The size request for the action modal.
   * @param params.title - The title for the action modal.
   * @returns - The state and render functions.
   * @property open - Indicates whether the action modal is open or closed.
   * @property render - The render function for the action modal.
   * @property pickData - The function for selecting data.
   */
  export const useActionModal: <
    Data extends unknown = any,
    Payload extends unknown = any,
    Field = IField<Data, any>,
    Param = any,
  >({
    hidden,
    fields,
    waitForChangesDelay,
    param: upperParam,
    features,
    handler,
    fallback,
    apiRef,
    changeSubject,
    reloadSubject,
    withLoader,
    withActionButton,
    withStaticAction,
    payload: upperPayload,
    BeforeTitle,
    onChange,
    onClose,
    onSubmit,
    onLoadEnd,
    onLoadStart,
    onInvalid,
    readTransform,
    writeTransform,
    incomingTransform,
    outgoingTransform,
    isBaseline,
    isBaselineForRoot,
    AfterTitle,
    outlinePaper,
    transparentPaper,
    submitLabel,
    submitIcon,
    throwError,
    dirty,
    readonly,
    fullScreen,
    sizeRequest,
    title,
  }: IParams<Data, Payload, Field, Param>) => {
    open: boolean;
    render: () => JSX.Element;
    pickData: (param?: Param | undefined) => void;
  };
  export const useActionModalTyped: <Data extends unknown = any>(
    params: IParams<Data, TypedField<Data, any>, IField<Data, any>, any>,
  ) => {
    open: boolean;
    render: () => JSX.Element;
    pickData: (param?: any) => void;
  };
  export default useActionModal;
}

declare module "react-declarative/components/SearchModal/SearchModal" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import SelectionMode from "react-declarative/model/SelectionMode";
  import IListProps from "react-declarative/model/IListProps";
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  import IField from "react-declarative/model/IField";
  import ISize from "react-declarative/model/ISize";
  /**
   * Represents the properties for the Search Modal component.
   * @template FilterData - The type for the filter data.
   * @template RowData - The type for the row data.
   * @template Payload - The type for the payload data.
   * @template Field - The type for the field.
   */
  export interface ISearchModalProps<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
    Field extends IField = IField<FilterData, Payload>,
  > extends Omit<
      IListProps<FilterData, RowData, Payload, Field>,
      keyof {
        selectedRows: never;
        heightRequest: never;
        widthRequest: never;
        onSelectedRows: never;
        onLoadStart: never;
        onLoadEnd: never;
        onRowClick: never;
      }
    > {
    fullScreen?: boolean;
    sizeRequest?: (size: ISize) => {
      height: number;
      width: number;
      sx?: SxProps<any>;
    };
    title?: string;
    AfterTitle?: React.ComponentType<{
      onClose?: () => void;
      payload: Payload;
    }>;
    BeforeTitle?: React.ComponentType<{
      onClose?: () => void;
      payload: Payload;
    }>;
    data?: IRowData["id"][];
    selectionMode?: SelectionMode;
    onSubmit?: (
      data: IRowData["id"][] | null,
      payload: Payload,
    ) => Promise<boolean> | boolean;
    onChange?: (data: IRowData["id"][] | null, initial: boolean) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
    open?: boolean;
    hidden?: boolean;
    submitLabel?: string;
    submitIcon?: React.ComponentType<any>;
  }
  /**
   * Represents a Search Modal component.
   *
   * @template FilterData - The type of filter data.
   * @template RowData - The type of row data.
   * @template Payload - The type of payload.
   * @template Field - The type of field.
   *
   * @param props - The props of the component.
   * @param [props.fullScreen=true] - Whether the modal should be displayed as full screen.
   * @param [props.sizeRequest] - The size request for the modal.
   * @param [props.hidden=false] - Whether the modal should be hidden.
   * @param [props.onSubmit] - The callback function when the form is submitted.
   * @param [props.onChange] - The callback function when the form data changes.
   * @param [props.onLoadStart] - The callback function when the data loading starts.
   * @param [props.onLoadEnd] - The callback function when the data loading ends.
   * @param [props.fallback] - The fallback function when an error occurs.
   * @param [props.AfterTitle] - The component to be rendered after the title.
   * @param [props.BeforeTitle] - The component to be rendered before the title.
   * @param [props.title] - The title of the modal.
   * @param [props.payload] - The payload data.
   * @param [props.withInitialLoader=true] - Whether to show the initial loader.
   * @param [props.selectionMode=SelectionMode.Multiple] - The selection mode for the list.
   * @param [props.data] - The data for the list.
   * @param [props.open=true] - Whether the modal is open.
   * @param [props.throwError=false] - Whether to throw an error when an error occurs.
   * @param [props.submitLabel="Submit"] - The label for the submit button.
   * @param [props.listProps] - The additional props for the list component.
   *
   * @returns The Search Modal component.
   */
  export const SearchModal: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload extends unknown = any,
    Field extends IField<any, any> = IField<FilterData, Payload>,
  >({
    fullScreen,
    sizeRequest,
    hidden,
    onSubmit,
    onChange,
    onLoadStart,
    onLoadEnd,
    fallback,
    AfterTitle,
    BeforeTitle,
    title,
    payload: upperPayload,
    withInitialLoader,
    selectionMode,
    data: upperData,
    open,
    throwError,
    submitLabel,
    submitIcon: SubmitIcon,
    ...listProps
  }: ISearchModalProps<FilterData, RowData, Payload, Field>) => JSX.Element;
  export default SearchModal;
}

declare module "react-declarative/components/SearchModal/useSearchModal" {
  import { ISearchModalProps } from "react-declarative/components/SearchModal/SearchModal";
  import TypedField from "react-declarative/model/TypedField";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  import IRowData from "react-declarative/model/IRowData";
  type Param = IRowData["id"][];
  /**
   * Interface representing the parameters for a class.
   *
   * @template FilterData - Type for the filter data.
   * @template RowData - Type for the row data.
   * @template Payload - Type for the payload.
   * @template Field - Type for the field.
   */
  interface IParams<
    FilterData extends {} = IAnything,
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
    Field extends IField = IField<FilterData, Payload>,
  > extends Omit<
      ISearchModalProps<FilterData, RowData, Payload, Field>,
      keyof {
        open: never;
        onSubmit: never;
        className: never;
        isChooser: never;
        style: never;
      }
    > {
    param?: Param;
    onSubmit?: (
      data: IRowData["id"][] | null,
      payload: Payload,
      param: Param,
    ) => Promise<boolean> | boolean;
  }
  /**
   * The useSearchModal function is a custom hook that provides functionality for displaying a search modal.
   * It accepts various parameters and returns an object with properties and methods for controlling the search modal.
   *
   * @template FilterData - The type of the filter data.
   * @template RowData - The type of the row data.
   * @template Payload - The type of the payload.
   * @template Field - The type of the field.
   *
   * @param params - The parameters for configuring the search modal.
   * @param params.param - The initial value for the parameter.
   * @param params.selectionMode - The selection mode for the search modal.
   * @param params.handler - The handler function for handling events.
   * @param params.fallback - The fallback function to be executed if an error occurs.
   * @param params.apiRef - The reference to the API.
   * @param params.reloadSubject - The subject for triggering reload events.
   * @param params.payload - The initial value for the payload.
   * @param params.onChange - The callback function for handling change events.
   * @param params.onAction - The callback function for handling action events.
   * @param params.onRowAction - The callback function for handling row action events.
   * @param params.onSubmit - The callback function for handling submit events.
   * @param params.onLoadEnd - The callback function to be executed when loading ends.
   * @param params.onLoadStart - The callback function to be executed when loading starts.
   * @param params.submitLabel - The label for the submit button.
   * @param params.throwError - Indicates whether to throw an error or not.
   * @param params.title - The title of the search modal.
   * @param params.hidden - Indicates whether the search modal should be hidden or not.
   * @param listProps - Additional properties for customizing the search modal.
   *
   * @returns An object with properties and methods for controlling the search modal.
   * @property open - Indicates whether the search modal is open or not.
   * @property render - A function for rendering the search modal.
   * @property pickData - A function for picking data.
   * @property close - A function for closing the search modal and handling submit with null data.
   */
  export const useSearchModal: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload extends unknown = any,
    Field extends IField<any, any> = IField<FilterData, Payload>,
  >({
    param: upperParam,
    selectionMode,
    handler,
    fallback,
    apiRef,
    reloadSubject,
    payload: upperPayload,
    onChange,
    onAction,
    onRowAction,
    onSubmit,
    onLoadEnd,
    onLoadStart,
    submitLabel,
    submitIcon,
    throwError,
    title,
    hidden,
    ...listProps
  }: IParams<FilterData, RowData, Payload, Field>) => {
    readonly open: boolean;
    readonly render: () => JSX.Element;
    readonly pickData: (param?: Param) => void;
    readonly close: () => Promise<boolean>;
  };
  /**
   * Hook for using a search modal with strong typed parameters.
   *
   * @template FilterData - The type of the filter data.
   * @template RowData - The type of the row data.
   * @template Payload - The type of the payload.
   * @template Field - The type of the field.
   *
   * @param params - The parameters for the search modal.
   *
   * @returns
   */
  export const useSearchModalTyped: <
    FilterData extends {} = any,
    RowData extends IRowData = any,
    Payload extends unknown = any,
    Field extends IField<any, any> = TypedField<FilterData, Payload>,
  >(
    params: IParams<FilterData, RowData, Payload, Field>,
  ) => {
    readonly open: boolean;
    readonly render: () => JSX.Element;
    readonly pickData: (param?: Param) => void;
    readonly close: () => Promise<boolean>;
  };
  export default useSearchModal;
}

declare module "react-declarative/components/SearchView/SearchView" {
  import ISearchViewProps from "react-declarative/components/SearchView/model/ISearchViewProps";
  /**
   * SearchView component documentation
   *
   * @template Data - The data type of the component
   * @template Payload - The payload type of the component
   *
   * @param props - The component props
   * @param [props.className] - The class name for the component
   * @param [props.style] - The inline style for the component
   * @param [props.sx] - The sx prop for the component (sx prop is a shorthand for sx={{}} in styled components)
   * @param [props.type="text"] - The type of the input field
   * @param [props.mode="text"] - The input mode of the input field
   * @param [props.variant="standard"] - The variant of the input field
   * @param [props.pattern] - The pattern attribute of the input field
   * @param [props.value] - The value of the component
   * @param [props.label] - The label for the input field
   * @param [props.placeholder] - The placeholder for the input field
   * @param [props.searchText] - The search text for the component
   * @param [props.changeSubject] - The change subject for the component
   * @param [props.onChange=() => undefined] - The change event handler for the value
   * @param [props.onTextChange=() => undefined] - The change event handler for the search text
   * @param [props.delay=DEFAULT_DELAY] - The delay in milliseconds before executing a search
   * @param [props.limit=DEFAULT_LIMIT] - The maximum number of search results to return
   * @param [props.payload] - The payload for the search request
   * @param [props.autoComplete] - The autocomplete attribute for the input field
   * @param [props.fullWidth] - Whether the input field should take up the full width
   * @param [props.disabled] - Whether the input field should be disabled
   * @param [props.onCreate] - The callback to create a new item
   * @param [props.onLoadStart] - The callback when the search request starts
   * @param [props.onLoadEnd] - The callback when the search request ends
   * @param [props.fallback] - The fallback content to display during loading or error
   * @param props.handler - The search handler function
   * @param [props.inputRef] - The ref for the input field
   * @param [props.SearchItem=SearchItemDefault] - The component to render each search item
   * @param [props.SearchInput=SearchInputDefault] - The component to render the search input
   * @param [props.CreateButton=CreateButtonDefault] - The component to render the create button
   * @param [props.startAdornment=null] - The start adornment for the input field
   * @param [props.endAdornment=null] - The end adornment for the input field
   * @param [props.throwError] - Whether errors should be thrown or not
   * @param [props.otherProps] - Any other props that should be passed to the TextField component
   *
   * @returns The SearchView component
   */
  export const SearchView: <Data extends unknown = any, Payload = any>({
    className,
    style,
    sx,
    type,
    mode,
    variant,
    pattern,
    value,
    label,
    placeholder,
    searchText,
    changeSubject: upperChangeSubject,
    onChange,
    onTextChange,
    delay,
    limit,
    payload: upperPayload,
    autoComplete,
    fullWidth,
    disabled,
    onCreate,
    onLoadStart,
    onLoadEnd,
    fallback,
    handler,
    inputRef,
    SearchItem,
    SearchInput,
    CreateButton,
    startAdornment,
    endAdornment,
    throwError,
    ...otherProps
  }: ISearchViewProps<Data, Payload>) => JSX.Element;
  export default SearchView;
}

declare module "react-declarative/components/ConstraintView/ConstraintView" {
  import * as React from "react";
  import {
    IAutoSizerProps,
    IChildParams,
  } from "react-declarative/components/AutoSizer";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Interface for props of ConstraintView component.
   * @template T - Type parameter for IConstraintViewProps.
   */
  interface IConstraintViewProps<T extends IAnything = IAnything>
    extends Omit<
      IAutoSizerProps<T>,
      keyof {
        children: never;
      }
    > {
    phoneView?: React.ComponentType<any>;
    tabletView?: React.ComponentType<any>;
    desktopView?: React.ComponentType<any>;
    onViewChanged?: (name: string) => void;
    params?: IChildParams<T>;
  }
  /**
   * Represents a view that is constrained by the device's screen size to render different content
   *
   * @template T - The type of data passed to the view components
   * @param props - The props for the ConstraintView component
   * @param props.desktopView - The view component to render on desktop devices
   * @param props.tabletView - The view component to render on tablet devices
   * @param props.phoneView - The view component to render on phone devices
   * @param props.onViewChanged - A callback function invoked when the view changes
   * @param props.params - The parameters to pass to the view components
   * @param props - Any other props to pass to the component
   * @returns - The rendered content based on the current device's screen size
   */
  export const ConstraintView: <T extends unknown = any>({
    desktopView: Desktop,
    tabletView: Tablet,
    phoneView: Phone,
    onViewChanged,
    params,
    ...otherProps
  }: IConstraintViewProps<T>) => JSX.Element;
  export default ConstraintView;
}

declare module "react-declarative/components/ConstraintView/useConstraint" {
  /**
   * Returns an object with boolean properties indicating whether the given width matches the responsive breakpoints.
   *
   * @param width - The width to check against the responsive breakpoints.
   * @returns - An object with the following properties:
   *      - isPhone: A boolean indicating whether the width matches the phone breakpoint.
   *      - isTablet: A boolean indicating whether the width matches the tablet breakpoint.
   *      - isDesktop: A boolean indicating whether the width matches the desktop breakpoint.
   */
  export const useConstraint: (width: number) => {
    isPhone: boolean;
    isTablet: boolean;
    isDesktop: boolean;
  };
  export default useConstraint;
}

declare module "react-declarative/components/ScrollTopView/ScrollTopView" {
  import { FabProps } from "@mui/material/Fab";
  type IScrollTopViewProps = Omit<
    FabProps,
    keyof {
      onClick: never;
    }
  > & {
    scrollTarget?: HTMLElement;
  };
  /**
   * Represents a scroll to top button view component.
   *
   * @param props - The component props.
   * @param [props.className] - The class name for the component.
   * @param [props.style] - The inline style for the component.
   * @param [props.sx] - The sx prop for the component.
   * @param [props.color="primary"] - The color of the component.
   * @param [props.size="medium"] - The size of the component.
   * @param [props.scrollTarget=document.documentElement] - The element to scroll when clicked.
   * @param [props.otherProps] - Other additional props.
   *
   * @returns The scroll to top button view component.
   */
  export const ScrollTopView: ({
    className,
    style,
    sx,
    color,
    size,
    scrollTarget,
    ...otherProps
  }: IScrollTopViewProps) => JSX.Element;
  export default ScrollTopView;
}

declare module "react-declarative/components/OutletView/OutletView" {
  import IOutletViewProps from "react-declarative/components/OutletView/model/IOutletViewProps";
  import IOtherProps from "react-declarative/components/OutletView/model/IOtherProps";
  /**
   * OutletView component documentation
   *
   * @description Use `history.replace` to navigate between subviews
   *
   * @param className - The class name of the component
   * @param readonly - Flag indicating if the component should be in read only mode
   * @param waitForChangesDelay - Delay in milliseconds for waiting for changes before submit
   * @param initialData - Initial data object for the component
   * @param animation - Animation type for the component
   * @param routes - Array of route objects for the component
   * @param params - Parameters object for the component
   * @param upperPayload - Payload object for the component
   * @param history - History object for the component
   * @param fallback - Fallback function for error handling
   * @param onChange - Change event handler function
   * @param onSubmit - Submit event handler function
   * @param onLoadStart - Load start event handler function
   * @param onLoadEnd - Load end event handler function
   * @param upperChangeSubject - Change subject for the component
   * @param otherProps - Other properties for the component
   * @returns The rendered component
   */
  export const OutletView: <
    Data extends {} = Record<string, any>,
    Payload = any,
    Params = any,
    OtherProps = IOtherProps,
  >({
    className,
    readonly,
    fullScreen,
    waitForChangesDelay,
    initialData: upperInitialData,
    changed: upperChanged,
    animation,
    routes,
    params,
    payload: upperPayload,
    history,
    fallback,
    onChange,
    onLeave,
    onSubmit,
    onLoadStart,
    onLoadEnd,
    changeSubject: upperChangeSubject,
    otherProps,
    ...revealProps
  }: IOutletViewProps<Data, Payload, Params, OtherProps>) => JSX.Element;
  export default OutletView;
}

declare module "react-declarative/components/OutletView/model/IOutlet" {
  import * as React from "react";
  import IAnything from "react-declarative/model/IAnything";
  import IOutletProps from "react-declarative/components/OutletView/model/IOutletProps";
  import IOtherProps from "react-declarative/components/OutletView/model/IOtherProps";
  /**
   * Represents an outlet that can be used to render content in a specific location in a React application.
   *
   * @template Data - The type of data to be passed to the outlet's props.
   * @template Payload - The type of payload to be passed to the outlet's props.
   * @template Params - The type of URL parameters to be passed to the outlet's props.
   * @template OtherProps - Additional properties to be passed to the outlet's props.
   *
   * @property id - The unique identifier of the outlet.
   * @property element - The React component function that renders the outlet's content.
   * @property [isAvailable] - Optional. A function that determines whether the outlet is available for a given pathname.
   * @property isActive - A function that determines whether the outlet is active for a given pathname.
   *
   */
  export interface IOutlet<
    Data = IAnything,
    Payload = IAnything,
    Params = IAnything,
    OtherProps = IOtherProps,
  > {
    id: string;
    /**
     * Renders an element for the active outlet
     *
     * @param props - The props to pass to the element.
     * @returns - The rendered element.
     */
    element: (
      props: IOutletProps<Data, Payload, Params> & OtherProps,
    ) => React.ReactElement;
    /**
     * Checks if a given path is available.
     *
     * @param pathname - The path to be checked.
     * @returns - True if the path is available, false otherwise.
     */
    isAvailable?: (pathname: string) => boolean;
    /**
     * Determines if the given pathname is active.
     *
     * @param pathname - The URL pathname to check.
     * @returns - True if the pathname is active, false otherwise.
     */
    isActive: (pathname: string) => boolean;
  }
  export default IOutlet;
}

declare module "react-declarative/components/OutletView/model/IOutletModal" {
  import IAnything from "react-declarative/model/IAnything";
  import IOutlet from "react-declarative/components/OutletView/model/IOutlet";
  export type ModalOtherProps = {
    onClose: () => void;
  };
  /**
   * Represents an outlet modal.
   * @template Data - The type of data received from the outlet.
   * @template Payload - The type of payload used in the outlet.
   * @template Params - The type of parameters used in the outlet.
   */
  export type IOutletModal<
    Data = IAnything,
    Payload = IAnything,
    Params = IAnything,
  > = IOutlet<Data, Payload, Params, ModalOtherProps>;
  export default IOutletModal;
}

declare module "react-declarative/components/OutletView/model/IOutletProps" {
  import IAnything from "react-declarative/model/IAnything";
  import History from "react-declarative/model/History";
  /**
   * Represents the properties of an outlet inner component.
   *
   * @template Data - The type of the component's data.
   * @template Payload - The type of the component's payload.
   * @template Params - The type of the component's params.
   */
  export interface IOutletProps<
    Data = IAnything,
    Payload = IAnything,
    Params = IAnything,
  > {
    /**
     * A callback function that is invoked when a change event occurs.
     *
     * @callback onChangeCallback
     * @param data - The updated data value.
     * @param [initial=false] - Indicates whether the change is triggered initially.
     * @returns
     */
    onChange: (data: Data[keyof Data], initial?: boolean) => void;
    /**
     * Callback function for handling an invalid event.
     *
     * @callback onInvalid
     * @param name - The name of the event that triggered the invalid event.
     * @param msg - The error message associated with the invalid event.
     * @returns - This function does not return any value.
     */
    onInvalid: (name: string, msg: string) => void;
    /**
     * Begins the save process.
     *
     * @function
     * @returns A promise that resolves to a boolean value indicating if the save process has started successfully.
     */
    beginSave: () => Promise<boolean>;
    /**
     * Executes the afterSave logic.
     *
     * @returns A Promise that resolves once the afterSave logic is completed.
     */
    afterSave: () => Promise<void>;
    /**
     * Indicates whether a certain state is dirty.
     *
     * @type {boolean}
     */
    dirty: boolean;
    /**
     * Represents the state of a form.
     *
     * @typedef FormState
     *
     * @property change - A callback function that is triggered when the form data changes. It receives a `data` parameter of type `Data`.
     * @property data - The current data of the form.
     * @property hasChanged - Indicates whether the form data has changed.
     * @property hasLoading - Indicates whether the form is currently loading.
     * @property hasInvalid - Indicates whether the form data is invalid.
     * @property payload - The payload associated with the form.
     * @property id - The unique identifier of the form.
     */
    formState: {
      change: (data: Data) => void;
      data: Data;
      hasChanged: boolean;
      hasLoading: boolean;
      hasInvalid: boolean;
      payload: Payload;
      id: string;
    };
    /**
     * Represents the history of an outlet.
     *
     * @class
     */
    history: History;
    /**
     * Represents the currently active option.
     *
     * @typedef activeOption
     * @description A string variable indicating the currently active option.
     */
    activeOption: string;
    /**
     * Specifies whether a variable is read-only or not.
     *
     * @typedef Readonly
     */
    readonly: boolean;
    /**
     * Represents the data of the outlet.
     */
    data: Data;
    /**
     * Indicates whether a change has occurred.
     *
     * @type {boolean}
     */
    hasChanged: boolean;
    /**
     * Represents the loading state of a system.
     *
     * @typedef hasLoading
     */
    hasLoading: boolean;
    /**
     * Indicates whether the value is invalid.
     *
     * @type {boolean}
     */
    hasInvalid: boolean;
    /**
     * Represents the parameters for a function.
     *
     * @typedef Params
     * @property param1 - The first parameter of type number.
     * @property param2 - The second parameter of type string.
     * @property param3 - The third parameter of type boolean.
     */
    params: Params;
    /**
     * Represents a payload object.
     */
    payload: Payload;
    /**
     * Represents the loading status.
     *
     * @typedef Loading
     */
    loading: boolean;
    /**
     * Sets the loading state to indicate whether the application is currently loading data or not.
     *
     * @param loading - A boolean value indicating whether the application is currently loading data.
     * @returns
     */
    setLoading: (loading: boolean) => void;
  }
  export default IOutletProps;
}

declare module "react-declarative/components/OutletView/model/IOutletModalProps" {
  import IAnything from "react-declarative/model/IAnything";
  import { ModalOtherProps } from "react-declarative/components/OutletView/model/IOutletModal";
  import IOutletProps from "react-declarative/components/OutletView/model/IOutletProps";
  export type IOutletModalProps<
    Data = IAnything,
    Payload = IAnything,
    Params = IAnything,
  > = IOutletProps<Data, Payload, Params> & ModalOtherProps;
  export default IOutletModalProps;
}

declare module "react-declarative/components/OutletView/hooks/useOutletModal" {
  import { IOutletModalProps } from "react-declarative/components/OutletView/components/OutletModal";
  import IAnything from "react-declarative/model/IAnything";
  import History from "react-declarative/model/History";
  import Id from "react-declarative/components/OutletView/model/Id";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Interface representing the parameters for a component.
   *
   * @template Data - The type of data that the component expects.
   * @template Payload - The type of payload that will be passed to the onSubmit callback.
   * @template Params - The type of additional parameters that can be passed to the component.
   */
  interface IParams<
    Data extends {} = Record<string, any>,
    Payload = IAnything,
    Params = IAnything,
  > extends Omit<
      IOutletModalProps<Data, Payload, Params>,
      keyof {
        outletIdSubject: never;
        history: never;
        onSubmit: never;
        className: never;
      }
    > {
    onSubmit?: (
      id: Id,
      data: Data | null,
      payload: Payload,
    ) => Promise<boolean> | boolean;
    pickDataSubject?: TSubject<Id>;
    fullScreen?: boolean;
    history?: History;
    pathname?: string;
  }
  /**
   * A custom hook that provides functionality for managing and rendering an outlet modal.
   *
   * @template Data - The type of data associated with the outlet modal.
   * @template Payload - The type of payload passed during submission.
   * @template Params - The type of additional parameters.
   *
   * @param params - The parameters object.
   * @param params.fallback - The fallback content to be rendered if the modal cannot be displayed.
   * @param [params.pathname="/"] - The pathname for the outlet modal history.
   * @param [params.history] - The history object used to manage navigation.
   * @param [params.fullScreen=true] - A boolean value indicating whether the modal should be displayed in full screen.
   * @param params.onLoadEnd - The callback function to be called when the outlet content finishes loading.
   * @param params.onLoadStart - The callback function to be called when the outlet content starts loading.
   * @param [params.throwError] - A boolean value indicating whether errors should be thrown during submission.
   * @param params.onChange - The callback function to be called when the outlet content changes.
   * @param [params.onSubmit=() => true] - The callback function to be called when the outlet content is submitted.
   * @param params.onMount - The callback function to be called when the outlet modal is mounted.
   * @param params.onUnmount - The callback function to be called when the outlet modal is unmounted.
   * @param [params.onClose] - The callback function to be called when the outlet modal is closed.
   * @param [params.submitLabel] - The label for the submit button in the outlet modal.
   * @param [params.title] - The title for the outlet modal.
   * @param [params.hidden] - A boolean value indicating whether the outlet modal should be hidden.
   * @param [params.pickDataSubject] - The subject used for picking data.
   * @param outletProps - Additional props for the underlying `OutletModal` component.
   *
   * @returns - An object containing the following methods and properties:
   *   - `open` - A boolean value indicating whether the modal is open.
   *   - `render` - A function that renders the outlet modal.
   *   - `pickData` - A function used to pick data for the modal.
   *   - `close` - A function used to close the modal.
   */
  export const useOutletModal: <
    Data extends {} = Record<string, any>,
    Payload = any,
    Params = any,
  >({
    fallback,
    pathname,
    history: upperHistory,
    fullScreen,
    onLoadEnd,
    onLoadStart,
    throwError,
    onChange,
    onSubmit,
    onMount,
    onUnmount,
    onClose,
    submitLabel,
    title,
    hidden,
    pickDataSubject: upperPickDataSubject,
    ...outletProps
  }: IParams<Data, Payload, Params>) => {
    readonly open: typeof open;
    readonly render: () => JSX.Element;
    readonly pickData: (id: Id) => void;
    readonly close: () => Promise<boolean>;
  };
  export default useOutletModal;
}

declare module "react-declarative/components/AlertView/AlertView" {
  import { StackProps } from "@mui/material/Stack";
  /**
   * Represents an alert with a specific color and content.
   *
   * @interface IAlert
   */
  interface IAlert {
    color: "success" | "info" | "warning" | "error";
    content: string;
  }
  /**
   * Represents the properties for the AlertView component.
   */
  interface IAlertViewProps extends StackProps {
    items?: IAlert[];
    variant?: "standard" | "filled" | "outlined";
  }
  /**
   * Represents an AlertView component that displays a stack of alerts.
   *
   * @param props - The properties used to configure the AlertView component.
   * @param props.className - The CSS class name for the AlertView component.
   * @param props.items - An array of items to display as alerts.
   * @param props.variant - The variant of the alerts. Default is "outlined".
   * @param props.otherProps - Additional props to be spread to the Stack component.
   * @returns - The rendered JSX element for the AlertView component.
   */
  export const AlertView: ({
    className,
    items,
    variant,
    ...otherProps
  }: IAlertViewProps) => JSX.Element;
  export default AlertView;
}

declare module "react-declarative/components/PaperView/PaperView" {
  import * as React from "react";
  import { PaperProps } from "@mui/material/Paper";
  export const PAPERVIEW_ROOT = "react-declatative__PaperView-root";
  /**
   * Interface representing the props for the PaperView component.
   *
   * @interface IPaperViewProps
   */
  export interface IPaperViewProps
    extends Omit<
      PaperProps,
      keyof {
        component: never;
      }
    > {
    component?: React.ElementType;
    outlinePaper?: boolean;
    transparentPaper?: boolean;
  }
  /**
   * React component for rendering a customizable paper view.
   *
   * @component
   * @param  props - The component props.
   * @param props.className - The CSS class name for the paper view.
   * @param props.outlinePaper - Specifies whether the paper view should have an outline.
   * @param props.transparentPaper - Specifies whether the paper view should be transparent.
   * @param ref - The ref to be forwarded to the underlying HTML element.
   * @returns The rendered paper view component.
   */
  export const PaperView: React.ForwardRefExoticComponent<
    Pick<
      IPaperViewProps,
      | "defaultValue"
      | "hidden"
      | "inputMode"
      | "tabIndex"
      | "outlinePaper"
      | "transparentPaper"
      | "className"
      | "style"
      | "title"
      | "placeholder"
      | "sx"
      | "color"
      | "translate"
      | "prefix"
      | "onChange"
      | "key"
      | "onClick"
      | "classes"
      | "children"
      | "variant"
      | "slot"
      | "defaultChecked"
      | "suppressContentEditableWarning"
      | "suppressHydrationWarning"
      | "accessKey"
      | "contentEditable"
      | "contextMenu"
      | "dir"
      | "draggable"
      | "id"
      | "lang"
      | "spellCheck"
      | "radioGroup"
      | "role"
      | "about"
      | "datatype"
      | "inlist"
      | "property"
      | "resource"
      | "typeof"
      | "vocab"
      | "autoCapitalize"
      | "autoCorrect"
      | "autoSave"
      | "itemProp"
      | "itemScope"
      | "itemType"
      | "itemID"
      | "itemRef"
      | "results"
      | "security"
      | "unselectable"
      | "is"
      | "aria-activedescendant"
      | "aria-atomic"
      | "aria-autocomplete"
      | "aria-busy"
      | "aria-checked"
      | "aria-colcount"
      | "aria-colindex"
      | "aria-colspan"
      | "aria-controls"
      | "aria-current"
      | "aria-describedby"
      | "aria-details"
      | "aria-disabled"
      | "aria-dropeffect"
      | "aria-errormessage"
      | "aria-expanded"
      | "aria-flowto"
      | "aria-grabbed"
      | "aria-haspopup"
      | "aria-hidden"
      | "aria-invalid"
      | "aria-keyshortcuts"
      | "aria-label"
      | "aria-labelledby"
      | "aria-level"
      | "aria-live"
      | "aria-modal"
      | "aria-multiline"
      | "aria-multiselectable"
      | "aria-orientation"
      | "aria-owns"
      | "aria-placeholder"
      | "aria-posinset"
      | "aria-pressed"
      | "aria-readonly"
      | "aria-relevant"
      | "aria-required"
      | "aria-roledescription"
      | "aria-rowcount"
      | "aria-rowindex"
      | "aria-rowspan"
      | "aria-selected"
      | "aria-setsize"
      | "aria-sort"
      | "aria-valuemax"
      | "aria-valuemin"
      | "aria-valuenow"
      | "aria-valuetext"
      | "dangerouslySetInnerHTML"
      | "onCopy"
      | "onCopyCapture"
      | "onCut"
      | "onCutCapture"
      | "onPaste"
      | "onPasteCapture"
      | "onCompositionEnd"
      | "onCompositionEndCapture"
      | "onCompositionStart"
      | "onCompositionStartCapture"
      | "onCompositionUpdate"
      | "onCompositionUpdateCapture"
      | "onFocus"
      | "onFocusCapture"
      | "onBlur"
      | "onBlurCapture"
      | "onChangeCapture"
      | "onBeforeInput"
      | "onBeforeInputCapture"
      | "onInput"
      | "onInputCapture"
      | "onReset"
      | "onResetCapture"
      | "onSubmit"
      | "onSubmitCapture"
      | "onInvalid"
      | "onInvalidCapture"
      | "onLoad"
      | "onLoadCapture"
      | "onError"
      | "onErrorCapture"
      | "onKeyDown"
      | "onKeyDownCapture"
      | "onKeyPress"
      | "onKeyPressCapture"
      | "onKeyUp"
      | "onKeyUpCapture"
      | "onAbort"
      | "onAbortCapture"
      | "onCanPlay"
      | "onCanPlayCapture"
      | "onCanPlayThrough"
      | "onCanPlayThroughCapture"
      | "onDurationChange"
      | "onDurationChangeCapture"
      | "onEmptied"
      | "onEmptiedCapture"
      | "onEncrypted"
      | "onEncryptedCapture"
      | "onEnded"
      | "onEndedCapture"
      | "onLoadedData"
      | "onLoadedDataCapture"
      | "onLoadedMetadata"
      | "onLoadedMetadataCapture"
      | "onLoadStart"
      | "onLoadStartCapture"
      | "onPause"
      | "onPauseCapture"
      | "onPlay"
      | "onPlayCapture"
      | "onPlaying"
      | "onPlayingCapture"
      | "onProgress"
      | "onProgressCapture"
      | "onRateChange"
      | "onRateChangeCapture"
      | "onSeeked"
      | "onSeekedCapture"
      | "onSeeking"
      | "onSeekingCapture"
      | "onStalled"
      | "onStalledCapture"
      | "onSuspend"
      | "onSuspendCapture"
      | "onTimeUpdate"
      | "onTimeUpdateCapture"
      | "onVolumeChange"
      | "onVolumeChangeCapture"
      | "onWaiting"
      | "onWaitingCapture"
      | "onAuxClick"
      | "onAuxClickCapture"
      | "onClickCapture"
      | "onContextMenu"
      | "onContextMenuCapture"
      | "onDoubleClick"
      | "onDoubleClickCapture"
      | "onDrag"
      | "onDragCapture"
      | "onDragEnd"
      | "onDragEndCapture"
      | "onDragEnter"
      | "onDragEnterCapture"
      | "onDragExit"
      | "onDragExitCapture"
      | "onDragLeave"
      | "onDragLeaveCapture"
      | "onDragOver"
      | "onDragOverCapture"
      | "onDragStart"
      | "onDragStartCapture"
      | "onDrop"
      | "onDropCapture"
      | "onMouseDown"
      | "onMouseDownCapture"
      | "onMouseEnter"
      | "onMouseLeave"
      | "onMouseMove"
      | "onMouseMoveCapture"
      | "onMouseOut"
      | "onMouseOutCapture"
      | "onMouseOver"
      | "onMouseOverCapture"
      | "onMouseUp"
      | "onMouseUpCapture"
      | "onSelect"
      | "onSelectCapture"
      | "onTouchCancel"
      | "onTouchCancelCapture"
      | "onTouchEnd"
      | "onTouchEndCapture"
      | "onTouchMove"
      | "onTouchMoveCapture"
      | "onTouchStart"
      | "onTouchStartCapture"
      | "onPointerDown"
      | "onPointerDownCapture"
      | "onPointerMove"
      | "onPointerMoveCapture"
      | "onPointerUp"
      | "onPointerUpCapture"
      | "onPointerCancel"
      | "onPointerCancelCapture"
      | "onPointerEnter"
      | "onPointerEnterCapture"
      | "onPointerLeave"
      | "onPointerLeaveCapture"
      | "onPointerOver"
      | "onPointerOverCapture"
      | "onPointerOut"
      | "onPointerOutCapture"
      | "onGotPointerCapture"
      | "onGotPointerCaptureCapture"
      | "onLostPointerCapture"
      | "onLostPointerCaptureCapture"
      | "onScroll"
      | "onScrollCapture"
      | "onWheel"
      | "onWheelCapture"
      | "onAnimationStart"
      | "onAnimationStartCapture"
      | "onAnimationEnd"
      | "onAnimationEndCapture"
      | "onAnimationIteration"
      | "onAnimationIterationCapture"
      | "onTransitionEnd"
      | "onTransitionEndCapture"
      | "component"
      | "elevation"
      | "square"
    > &
      React.RefAttributes<HTMLDivElement>
  >;
  export default PaperView;
}

declare module "react-declarative/components/DragDropView/DragDropView" {
  import * as React from "react";
  import { SxProps } from "@mui/material/styles";
  /**
   * @interface IDragDropViewProps
   * Represents the props for the DragDropView component.
   */
  interface IDragDropViewProps {
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    disabled?: boolean;
    multiple?: boolean;
    accept?: string;
    onData?: (files: File[]) => void;
    onReject?: (files: File[]) => void;
  }
  export const ACCEPT_DEFAULT =
    ".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel";
  /**
   * Represents a drag and drop view component.
   * @typedef DragDropView
   * @property className - The class name for the component.
   * @property style - The inline style for the component.
   * @property sx - The style object for sx prop.
   * @property disabled - Indicates whether the drag and drop functionality is disabled.
   * @property multiple - Indicates whether multiple files can be selected.
   * @property accept - The file types that are accepted for upload.
   * @property onData - The callback function called when files are dropped or selected.
   * @property onReject - The callback function called when files are rejected.
   */
  export const DragDropView: ({
    className,
    style,
    sx,
    disabled,
    multiple,
    accept,
    onData,
    onReject,
  }: IDragDropViewProps) => JSX.Element;
  export default DragDropView;
}

declare module "react-declarative/components/DropAreaView/DropAreaView" {
  import { IPaperViewProps } from "react-declarative/components/PaperView";
  export interface IDropAreaProps extends IPaperViewProps {
    onDropped?: (files: File[]) => void;
  }
  export const DropAreaView: ({
    className,
    children,
    onDropped,
    ...otherProps
  }: IDropAreaProps) => JSX.Element;
  export default DropAreaView;
}

declare module "react-declarative/components/FilesView/FilesView" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  /**
   * Represents the properties for the FilesView component.
   */
  export interface IFilesViewProps {
    items?: string[];
    disabled?: boolean;
    onUpload?: (file: File) => string | Promise<string>;
    onRemove?: (item: string) => void | Promise<void>;
    onChange?: (items: string[]) => void | Promise<void>;
    onClick?: (item: string) => void | Promise<void>;
    tr?: (item: string) => string | Promise<string>;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    accept?: string;
    multiple?: boolean;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
  }
  /**
   * A component for displaying a list of files with upload, remove, and click functionalities.
   *
   * @param items - The list of file names to display.
   * @param className - Additional CSS class names for the root element.
   * @param style - Additional inline styles for the root element.
   * @param sx - Additional theme styles for the root element.
   * @param disabled - Flag to disable the component.
   * @param onUpload - The callback function when a file is uploaded. It accepts the uploaded file as an argument and should return the name of the uploaded file.
   * @param onRemove - The callback function when a file is removed. It accepts the file name as an argument.
   * @param onChange - The callback function when the file list changes. It does not accept any arguments.
   * @param onClick - The callback function when a file is clicked. It accepts the file name as an argument.
   * @param tr - The translation function for translating labels. It accepts a label as an argument and should return the translated label.
   * @param accept - The file types that can be uploaded. Defaults to ACCEPT_DEFAULT.
   * @param multiple - Flag to allow multiple file uploads. Defaults to false.
   * @param onLoadStart - The callback function when file loading starts.
   * @param onLoadEnd - The callback function when file loading ends. It accepts a boolean flag indicating if the loading was successful or not.
   * @param fallback - The fallback function to handle errors. It accepts an Error object as an argument.
   * @param throwError - Flag to throw error instead of handling it with the fallback function.
   *
   * @returns The FilesView component.
   */
  export const FilesView: ({
    items,
    className,
    style,
    sx,
    disabled: upperDisabled,
    onUpload,
    onRemove,
    onChange,
    onClick,
    tr,
    accept,
    multiple,
    onLoadStart,
    onLoadEnd,
    fallback,
    throwError,
  }: IFilesViewProps) => JSX.Element;
  export default FilesView;
}

declare module "react-declarative/components/FilesView/api/usePreventNavigate" {
  import { MemoryHistory, BrowserHistory, HashHistory } from "history";
  /**
   * Represents the parameters for a specific operation.
   *
   * @interface IParams
   */
  interface IParams {
    history: MemoryHistory | BrowserHistory | HashHistory;
    withConfirm?: boolean;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
  }
  /**
   * Prevents navigation, displays confirmation prompt if specified,
   * and handles loading state changes.
   *
   * @param history - The history object from react-router-dom.
   * @param withConfirm - Determines if a confirmation prompt should be displayed before navigating.
   * @param onLoadStart - Callback function invoked when loading starts.
   * @param onLoadEnd - Callback function invoked when loading ends.
   * @returns Object containing methods and state for preventing navigation and handling loading state.
   */
  export const usePreventNavigate: ({
    history,
    withConfirm,
    onLoadStart,
    onLoadEnd,
  }: IParams) => {
    readonly handleLoadStart: () => void;
    readonly handleLoadEnd: (isOk: boolean) => void;
    readonly unblock: () => void;
    readonly block: () => void;
    readonly loading: boolean;
  };
  export default usePreventNavigate;
}

declare module "react-declarative/components/FilesView/useFilesView" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import { IFilesViewProps } from "react-declarative/components/FilesView/FilesView";
  import IAnything from "react-declarative/model/IAnything";
  import ISize from "react-declarative/model/ISize";
  /**
   * Represents the interface for the class IParams.
   * @template Payload - The payload type for the interface.
   */
  interface IParams<Payload extends IAnything = IAnything> {
    sizeRequest?: (size: ISize) => {
      height: number;
      width: number;
      sx?: SxProps<any>;
    };
    data?: string[] | null;
    fullScreen?: boolean;
    readonly?: boolean;
    submitLabel?: string;
    submitIcon?: React.ComponentType<any>;
    withActionButton?: boolean;
    withStaticAction?: boolean;
    payload?: Payload | (() => Payload);
    onSubmit?: (data: string[], payload: Payload) => void;
    onChange?: (data: string[], payload: Payload) => void;
    tr?: IFilesViewProps["tr"];
    fallback?: IFilesViewProps["fallback"];
    onLoadStart?: IFilesViewProps["onLoadStart"];
    onLoadEnd?: IFilesViewProps["onLoadEnd"];
    onClick?: IFilesViewProps["onClick"];
    onUpload?: IFilesViewProps["onUpload"];
  }
  /**
   * Represents a reusable component for displaying and managing files.
   * @template Payload - The payload type (optional)
   * @param params - The parameters for the component.
   * @param params.data - The initial data for the files (optional).
   * @param params.withActionButton - Determines if the submit button is displayed (default: true).
   * @param params.withStaticAction - Determines if the submit button should fail silently when clicked (default: false).
   * @param params.readonly - Determines if the files are readonly (optional).
   * @param params.submitLabel - The label for the submit button (default: "Save").
   * @param params.payload - The payload for the component (optional).
   * @param params.fullScreen - Determines if the component should be displayed in full screen mode (default: false).
   * @param params.sizeRequest - A function that computes the size request for the component (optional).
   * @param params.onChange - A callback function for changes in the files (optional).
   * @param params.onSubmit - A callback function for submitting the files (optional).
   * @param params.tr - The translations for the component (optional).
   * @param params.fallback - The fallback component for unsupported file types (optional).
   * @param params.onLoadStart - A callback function for when loading starts (optional).
   * @param params.onLoadEnd - A callback function for when loading ends (optional).
   * @param params.onClick - A callback function for clicking on a file (optional).
   * @param params.onUpload - A callback function for uploading a file (optional).
   * @returns - An object with the render function for the component and the pickFiles function to open the file picker.
   */
  export const useFilesView: <Payload extends unknown = any>({
    data,
    withActionButton,
    withStaticAction,
    readonly,
    submitLabel,
    submitIcon: SubmitIcon,
    payload: upperPayload,
    fullScreen,
    sizeRequest,
    onChange,
    onSubmit,
    tr,
    fallback,
    onLoadStart,
    onLoadEnd,
    onClick,
    onUpload,
  }: IParams<Payload>) => {
    render: () => JSX.Element;
    pickFiles: () => void;
  };
  export default useFilesView;
}

declare module "react-declarative/components/ScrollView/ScrollView" {
  import * as React from "react";
  import { BoxProps } from "@mui/material";
  export const SCROLL_VIEW_TARGER = "react-declarative__scrollViewTarget";
  /**
   * Represents the properties of an `IScrollView` component.
   */
  interface IScrollViewProps extends BoxProps {
    withScrollbar?: boolean;
    hideOverflowX?: boolean;
    hideOverflowY?: boolean;
    children: React.ReactNode;
    className?: string;
    style?: React.CSSProperties;
    center?: boolean;
  }
  /**
   * This component allows to create a scrollable view container with optional scrollbar.
   *
   * @param props - The props object.
   * @param props.children - The content to be rendered inside the ScrollView.
   * @param [props.className] - Optional class name to be added to the root element.
   * @param [props.style] - Optional inline styles for the root element.
   * @param [props.center=false] - Whether to horizontally center the content within the ScrollView.
   * @param [props.withScrollbar=false] - Whether to show a scrollbar within the ScrollView.
   * @param [props.hideOverflowX=false] - Whether to hide overflow in the X axis.
   * @param [props.hideOverflowY=false] - Whether to hide overflow in the Y axis.
   * @param [otherProps] - Other props to be spread on the root element.
   * @returns - The rendered ScrollView component.
   */
  export const ScrollView: ({
    children,
    className,
    style,
    center,
    withScrollbar,
    hideOverflowX,
    hideOverflowY,
    ...otherProps
  }: IScrollViewProps) => JSX.Element;
  export default ScrollView;
}

declare module "react-declarative/components/ScaleView/ScaleView" {
  import * as React from "react";
  /**
   * Interface for the properties of the ScaleView component.
   */
  interface IScaleViewProps {
    className?: string;
    style?: React.CSSProperties;
    children?: React.ReactNode;
    stretch?: boolean;
    center?: boolean;
  }
  /**
   * Represents a component that scales its children based on its size.
   * @typedef IScaleViewProps
   * @property children - The children elements to be scaled.
   * @property className - The class name of the root div element.
   * @property style - The custom style of the root div element.
   * @property stretch - Determines whether to stretch the scaled children to fit the container.
   * @property center - Determines whether to center the scaled children within the container.
   */
  export const ScaleView: ({
    children,
    className,
    style,
    stretch,
    center,
  }: IScaleViewProps) => JSX.Element;
  export default ScaleView;
}

declare module "react-declarative/components/AutoSizer/AutoSizer" {
  import * as React from "react";
  import ISize from "react-declarative/model/ISize";
  /**
   * The `IChildParams` interface defines the parameters for creating a child element.
   * It extends the `ISize` interface and allows specifying an optional payload of type `T`.
   *
   * @template T - The type of the payload.
   */
  export interface IChildParams<T extends any = unknown> extends ISize {
    payload?: T;
  }
  /**
   * Represents the properties for the AutoSizer component.
   * @template T - The type of the payload.
   */
  export interface IAutoSizerProps<T extends any = unknown> {
    children: (s: IChildParams<T>) => any;
    className?: string;
    defaultHeight?: number;
    defaultWidth?: number;
    withContainerHeight?: boolean;
    withContainerWidth?: boolean;
    heightRequest?: (h: number) => number;
    widthRequest?: (w: number) => number;
    onResize?: (s: ISize) => void;
    style?: React.CSSProperties;
    payload?: T;
    target?: HTMLElement;
    closest?: string;
    selector?: string;
  }
  /**
   * Represents the state of an element.
   * @typedef State
   * @property height - The height of the element.
   * @property width - The width of the element.
   * @property childHeight - The height of the child element.
   * @property childWidth - The width of the child element.
   */
  type State = {
    height: number;
    width: number;
    childHeight: number;
    childWidth: number;
  };
  /**
   * ResizeHandler is a function that can be used to handle resizing of an HTML element.
   *
   * @param element - The HTML element to be resized.
   * @param onResize - The callback function to be called when resize occurs.
   * @return {void}
   */
  type ResizeHandler = (element: HTMLElement, onResize: () => void) => void;
  /**
   * DetectElementResize is a class that provides methods for adding and removing
   * resize listeners to an element.
   *
   * @typedef ResizeHandler
   * @param element - The element to which the resize listener will be added or removed.
   * @param callback - The callback function to be called when the element is resized.
   * @callback ResizeCallback
   * @param element - The element that has been resized.
   *
   * @typedef DetectElementResize
   * @property addResizeListener - Adds a resize listener to the specified element.
   * @property removeResizeListener - Removes the resize listener from the specified element.
   */
  type DetectElementResize = {
    addResizeListener: ResizeHandler;
    removeResizeListener: ResizeHandler;
  };
  /**
   * A component that automatically resizes its children based on its parent element's size.
   */
  export class AutoSizer<T extends unknown = object> extends React.Component<
    IAutoSizerProps<T>,
    State
  > {
    /**
     * Default properties for the AutoSizer component.
     *
     * @type {Partial<IAutoSizerProps<any>>}
     */
    static defaultProps: Partial<IAutoSizerProps<any>>;
    lastHeightRequest: (h: number) => number;
    lastWidthRequest: (w: number) => number;
    /**
     * Represents the state of a component.
     *
     * @typedef State
     * @property height - The height of the component. Defaults to 0 if not provided.
     * @property width - The width of the component. Defaults to 0 if not provided.
     * @property childHeight - The height of the child component. Defaults to 0 if not provided.
     * @property childWidth - The width of the child component. Defaults to 0 if not provided.
     */
    state: {
      height: number;
      width: number;
      childHeight: number;
      childWidth: number;
    };
    _parentNode?: HTMLElement;
    _autoSizer?: HTMLElement | null;
    _detectElementResize?: DetectElementResize;
    /**
     * Determines whether the component should update based on the changes in the nextProps and nextState.
     *
     * @param nextProps - The next props that will be received by the component.
     * @param nextState - The next state that will be set in the component.
     * @returns - Returns true if the component should update, otherwise false.
     */
    shouldComponentUpdate(
      nextProps: IAutoSizerProps<T>,
      nextState: State,
    ): boolean;
    /**
     * Executes after the component has been mounted to the DOM.
     * It sets up the element for resizing and calls the resize event handler.
     *
     * @return
     */
    componentDidMount(): void;
    /**
     * This method is invoked immediately before a component is unmounted and destroyed.
     *
     * It removes the resize listener if it exists and the parent node is defined.
     */
    componentWillUnmount(): void;
    /**
     * Renders a container div with specified child parameters and styles.
     * @function
     * @returns - The rendered container div element.
     */
    render(): JSX.Element;
    /**
     * Function that handles the resize event.
     *
     * @function _onResize
     * @private
     * @returns
     */
    _onResize: () => void;
    /**
     * Sets the reference to the autoSizer element.
     *
     * @param autoSizer - The autoSizer element or null.
     * @returns
     */
    _setRef: (autoSizer: HTMLElement | null) => void;
  }
  export default AutoSizer;
}

declare module "react-declarative/components/FadeView/FadeView" {
  import * as React from "react";
  import { IFadeContainerProps } from "react-declarative/components/FadeView/components/FadeContainer";
  /**
   * Represents a fade container used for adding fading effects to a component.
   */
  type FadeContainerT = Pick<
    IFadeContainerProps,
    keyof {
      Fade: never;
      color: never;
      zIndex: never;
      disableBottom: never;
      disableRight: never;
    }
  >;
  /**
   * Represents the props for the FadeView component.
   */
  interface IFadeViewProps extends FadeContainerT {
    className?: string;
    style?: React.CSSProperties;
    children: React.ReactNode;
  }
  /**
   * Represents a fade view component with various customizable options.
   * @param props - The properties for the FadeView component.
   * @param props.className - The CSS class name for the FadeView component.
   * @param props.style - The inline style object for the FadeView component.
   * @param props.children - The child elements of the FadeView component.
   * @param props.Fade - The fade effect component to be used.
   * @param props.color - The color of the fade effect.
   * @param props.zIndex - The z-index of the fade effect.
   * @param props.disableBottom - Determines if the fade effect should be disabled at the bottom.
   * @param props.disableRight - Determines if the fade effect should be disabled at the right side.
   * @returns - The rendered FadeView component.
   */
  export const FadeView: ({
    className,
    style,
    children,
    Fade,
    color,
    zIndex,
    disableBottom,
    disableRight,
  }: IFadeViewProps) => JSX.Element;
  export default FadeView;
}

declare module "react-declarative/components/TabsView/TabsView" {
  import ITabsViewProps from "react-declarative/components/TabsView/model/ITabsViewProps";
  /**
   * Represents a view component for rendering tabs and associated content.
   *
   * @template Data - The type of data associated with the tabs.
   * @template Payload - The type of payload associated with the tabs.
   * @param props - The props for the TabsView component.
   * @param [props.className] - The CSS class name.
   * @param [props.style] - The inline style object.
   * @param [props.sx] - The theme styling object.
   * @param [props.outlinePaper=false] - Whether to use outline paper.
   * @param [props.transparentPaper=false] - Whether the paper is transparent.
   * @param [props.transparentHeader=false] - Whether the header is transparent.
   * @param [props.history=upperHistory] - The history object for navigation.
   * @param [props.payload=upperPayload] - The payload associated with the tabs.
   * @param [props.pathname="/"] - The current pathname.
   * @param [props.tabs=upperTabs] - The array of tabs to render.
   * @param routes - The array of routes associated with the tabs.
   * @param onTabChange - The callback function fired when a tab is changed.
   * @param onLoadStart - The callback function fired when the loading starts.
   * @param onLoadEnd - The callback function fired when the loading ends.
   * @param BeforeTabs - The component to render before the tabs.
   * @param AfterTabs - The component to render after the tabs.
   * @param [props.otherProps=upperOtherProps] - The other props to pass to sub-components.
   * @returns - The rendered TabsView component.
   */
  export const TabsView: <Data extends {} = any, Payload = any>({
    className,
    style,
    sx,
    withScroll,
    outlinePaper,
    transparentPaper,
    transparentHeader,
    history: upperHistory,
    payload: upperPayload,
    pathname,
    tabs: upperTabs,
    routes,
    onTabChange,
    onLoadStart,
    onLoadEnd,
    onSubmit,
    BeforeTabs,
    AfterTabs,
    BeforePaper,
    AfterPaper,
    fullScreen,
    onNavigate,
    otherProps: upperOtherProps,
    ...outletProps
  }: ITabsViewProps<Data, Payload, any>) => JSX.Element;
  export default TabsView;
}

declare module "react-declarative/components/TabsView/model/ITabsOutlet" {
  import IAnything from "react-declarative/model/IAnything";
  import ISize from "react-declarative/model/ISize";
  import { IOutlet } from "react-declarative/components/OutletView";
  import ITabsOutletProps from "react-declarative/components/TabsView/model/ITabsOutletProps";
  /**
   * Represents a set of additional properties.
   *
   * @typedef OtherProps
   * @property size - The size of the object.
   * @property loading - Indicates if the object is currently loading.
   * @property progress - The progress of loading the object.
   * @property setLoading - A function to set the loading state of the object.
   * @property setProgress - A function to set the progress of loading the object.
   */
  export type OtherProps = {
    size: ISize;
    loading: boolean;
    progress: number;
    setLoading: (loading: boolean) => void;
    setProgress: (progress: number) => void;
    onClose: () => void;
  };
  /**
   * Represents a tab outlet component.
   * @template Data - The type of data passed to the tab outlet.
   * @template Payload - The type of payload received by the tab outlet.
   */
  export interface ITabsOutlet<Data = IAnything, Payload = IAnything>
    extends Omit<
      IOutlet<Data, Payload>,
      keyof {
        element: never;
      }
    > {
    element: (props: ITabsOutletProps<Data, Payload>) => React.ReactElement;
  }
  export default ITabsOutlet;
}

declare module "react-declarative/components/TabsView/model/ITabsOutletProps" {
  import IAnything from "react-declarative/model/IAnything";
  import { IOutletProps } from "react-declarative/components/OutletView";
  import { OtherProps } from "react-declarative/components/TabsView/model/ITabsOutlet";
  /**
   * Represents the props for a TabsOutlet component.
   * @template Data - The type of data to be passed to the TabsOutlet component.
   * @template Payload - The type of payload to be passed to the TabsOutlet component.
   * @template Other - Additional properties to be included in the TabsOutlet props.
   */
  export type ITabsOutletProps<
    Data = IAnything,
    Payload = IAnything,
    Other = {},
  > = IOutletProps<Data, Payload, OtherProps & Other> & OtherProps & Other;
  export default ITabsOutletProps;
}

declare module "react-declarative/components/TabsView/model/ITabsStep" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents a step in a tabs component.
   *
   * @template Payload - The type of payload for the step.
   */
  export interface ITabsStep<Payload extends IAnything = IAnything> {
    id?: string;
    isMatch?: (id: string) => boolean;
    isVisible?: (payload: Payload) => boolean;
    label?: string;
    passthrough?: boolean;
    icon?: React.ComponentType<any>;
  }
  export default ITabsStep;
}

declare module "react-declarative/components/TabsView/model/ITabsModal" {
  import IAnything from "react-declarative/model/IAnything";
  import ITabsOutlet from "react-declarative/components/TabsView/model/ITabsOutlet";
  import ITabsModalProps from "react-declarative/components/TabsView/model/ITabsModalProps";
  /**
   * Represents a class ITabsModal.
   * @template Data - The type of data.
   * @template Payload - The type of payload.
   */
  export type ITabsModal<Data = IAnything, Payload = IAnything> = Omit<
    ITabsOutlet<Data, Payload>,
    keyof {
      element: never;
    }
  > & {
    element: (props: ITabsModalProps<Data, Payload>) => React.ReactElement;
  };
  export default ITabsModal;
}

declare module "react-declarative/components/TabsView/model/ITabsModalProps" {
  import IAnything from "react-declarative/model/IAnything";
  import ITabsOutletProps from "react-declarative/components/TabsView/model/ITabsOutletProps";
  import { OtherProps } from "react-declarative/components/TabsView/model/ITabsOutlet";
  type ModalOtherProps = {
    onClose: () => void;
  };
  /**
   * Represents the props for the ITabsModal component.
   * @template Data The type of data.
   * @template Payload The type of payload.
   */
  export type ITabsModalProps<Data = IAnything, Payload = IAnything> = Omit<
    ITabsOutletProps<Data, Payload, ModalOtherProps>,
    keyof {
      withScroll: never;
    }
  > &
    ModalOtherProps &
    OtherProps;
  export default ITabsModalProps;
}

declare module "react-declarative/components/FetchView/FetchView" {
  import * as React from "react";
  import { IAsyncProps } from "react-declarative/components/Async";
  import { IRevealProps } from "react-declarative/components/FetchView/components/Reveal";
  /**
   * Represents the possible types of the Result class.
   *
   * @typedef ResultType
   * @typedef VoidType
   */
  type Result = React.ReactNode | void;
  /**
   * Represents the state of an object with optional payload and result.
   *
   * @template P - The type of the payload.
   * @template A - The type of the result.
   */
  type ObjectState<P extends any = object, A = any> =
    | ((payload: P) => Promise<A>)
    | ((payload: P) => A);
  /**
   * Represents a tuple state with optional promises in TypeScript.
   *
   * @template P - The type of the payload.
   * @template A - The type of the first element of the tuple.
   * @template B - The type of the second element of the tuple.
   * @template C - The type of the third element of the tuple.
   * @template D - The type of the fourth element of the tuple.
   * @template E - The type of the fifth element of the tuple.
   * @template F - The type of the sixth element of the tuple.
   * @template G - The type of the seventh element of the tuple.
   * @template H - The type of the eighth element of the tuple.
   * @template I - The type of the ninth element of the tuple.
   * @template J - The type of the tenth element of the tuple.
   */
  type TupleState<
    P extends any = object,
    A = any,
    B = any,
    C = any,
    D = any,
    E = any,
    F = any,
    G = any,
    H = any,
    I = any,
    J = any,
  > =
    | ((
        payload: P,
      ) => readonly [
        Promise<A>?,
        Promise<B>?,
        Promise<C>?,
        Promise<D>?,
        Promise<E>?,
        Promise<F>?,
        Promise<G>?,
        Promise<H>?,
        Promise<I>?,
        Promise<J>?,
      ])
    | ((payload: P) => readonly [A?, B?, C?, D?, E?, F?, G?, H?, I?, J?])
    | ((
        payload: P,
      ) => [
        Promise<A>?,
        Promise<B>?,
        Promise<C>?,
        Promise<D>?,
        Promise<E>?,
        Promise<F>?,
        Promise<G>?,
        Promise<H>?,
        Promise<I>?,
        Promise<J>?,
      ])
    | ((payload: P) => [A?, B?, C?, D?, E?, F?, G?, H?, I?, J?]);
  /**
   * Props interface for the IFetchViewBase component.
   *
   * @template P - Type of the component's props.
   * @template A - Type of parameter A.
   * @template B - Type of parameter B.
   * @template C - Type of parameter C.
   * @template D - Type of parameter D.
   * @template E - Type of parameter E.
   * @template F - Type of parameter F.
   * @template G - Type of parameter G.
   * @template H - Type of parameter H.
   * @template I - Type of parameter I.
   * @template J - Type of parameter J.
   */
  export interface IFetchViewBaseProps<
    P extends any = object,
    A = any,
    B = any,
    C = any,
    D = any,
    E = any,
    F = any,
    G = any,
    H = any,
    I = any,
    J = any,
  > extends Omit<
      IAsyncProps<P>,
      keyof {
        children: never;
      }
    > {
    animation?: IRevealProps["animation"];
    className?: string;
    style?: React.CSSProperties;
    children: (
      a: A,
      b: B,
      c: C,
      d: D,
      e: E,
      f: F,
      g: G,
      h: H,
      i: I,
      j: J,
    ) => Promise<Result> | Result;
  }
  /**
   * Represents the properties required to fetch view object.
   *
   * @template P - The type of the props object.
   * @template A - The type of the additional data.
   * @template B - The type of additional data B.
   * @template C - The type of additional data C.
   * @template D - The type of additional data D.
   * @template E - The type of additional data E.
   * @template F - The type of additional data F.
   * @template G - The type of additional data G.
   * @template H - The type of additional data H.
   * @template I - The type of additional data I.
   * @template J - The type of additional data J.
   */
  export type IFetchViewObjectProps<
    P extends any = object,
    A = any,
    B = any,
    C = any,
    D = any,
    E = any,
    F = any,
    G = any,
    H = any,
    I = any,
    J = any,
  > = IFetchViewBaseProps<P, A, B, C, D, E, F, G, H, I, J> & {
    state: ObjectState<P, A>;
  };
  /**
   * Represents the properties required by the `IFetchViewTuple` component.
   *
   * @template P - The type of the component's props.
   * @template A - The type of the first element in the tuple state.
   * @template B - The type of the second element in the tuple state.
   * @template C - The type of the third element in the tuple state.
   * @template D - The type of the fourth element in the tuple state.
   * @template E - The type of the fifth element in the tuple state.
   * @template F - The type of the sixth element in the tuple state.
   * @template G - The type of the seventh element in the tuple state.
   * @template H - The type of the eighth element in the tuple state.
   * @template I - The type of the ninth element in the tuple state.
   * @template J - The type of the tenth element in the tuple state.
   */
  export type IFetchViewTupleProps<
    P extends any = object,
    A = any,
    B = any,
    C = any,
    D = any,
    E = any,
    F = any,
    G = any,
    H = any,
    I = any,
    J = any,
  > = IFetchViewBaseProps<P, A, B, C, D, E, F, G, H, I, J> & {
    state: TupleState<P, A, B, C, D, E, F, G, H, I, J>;
  };
  /**
   * @typedef IFetchViewProps
   * @template P - The type parameter for the main component props
   * @template A - The type parameter for the first additional prop
   * @template B - The type parameter for the second additional prop
   * @template C - The type parameter for the third additional prop
   * @template D - The type parameter for the fourth additional prop
   * @template E - The type parameter for the fifth additional prop
   * @template F - The type parameter for the sixth additional prop
   * @template G - The type parameter for the seventh additional prop
   * @template H - The type parameter for the eighth additional prop
   * @template I - The type parameter for the ninth additional prop
   * @template J - The type parameter for the tenth additional prop
   *
   * Represents the props required for the FetchView component.
   * The props can be either in a tuple format or in an object format.
   */
  export type IFetchViewProps<
    P extends any = object,
    A = any,
    B = any,
    C = any,
    D = any,
    E = any,
    F = any,
    G = any,
    H = any,
    I = any,
    J = any,
  > =
    | IFetchViewTupleProps<P, A, B, C, D, E, F, G, H, I, J>
    | IFetchViewObjectProps<P, A, B, C, D, E, F, G, H, I, J>;
  /**
   * FetchView is a React component that provides a convenient way to handle asynchronous data fetching and rendering.
   *
   * @template P - The type of the payload for the data fetching.
   * @template A - The type of the first element in the array of data returned by the state function.
   * @template B - The type of the second element in the array of data returned by the state function.
   * @template C - The type of the third element in the array of data returned by the state function.
   * @template D - The type of the fourth element in the array of data returned by the state function.
   * @template E - The type of the fifth element in the array of data returned by the state function.
   * @template F - The type of the sixth element in the array of data returned by the state function.
   * @template G - The type of the seventh element in the array of data returned by the state function.
   * @template H - The type of the eighth element in the array of data returned by the state function.
   * @template I - The type of the ninth element in the array of data returned by the state function.
   * @template J - The type of the tenth element in the array of data returned by the state function.
   *
   * @param props - The props object containing the following properties:
   *  - animation: The animation type for the component.
   *  - className: The CSS class name(s) for the component.
   *  - style: The inline style object for the component.
   *  - Loader: The component to render while data is being fetched.
   *  - Error: The component to render if an error occurs during data fetching.
   *  - onLoadEnd: A callback function to be called when data loading ends.
   *  - onLoadStart: A callback function to be called when data loading starts.
   *  - children: A function that receives the fetched data as arguments and returns the JSX to be rendered.
   *  - state: The function to transform the payload into an array of data.
   *  - payload: The payload for the data fetching.
   *  - otherProps: Any additional props to be passed to the underlying components.
   *
   * @returns - The rendered JSX for the FetchView component.
   */
  export const FetchView: <
    P extends unknown = object,
    A = any,
    B = any,
    C = any,
    D = any,
    E = any,
    F = any,
    G = any,
    H = any,
    I = any,
    J = any,
  >({
    animation,
    className,
    style,
    Loader,
    Error,
    onLoadEnd,
    onLoadStart,
    children,
    state,
    payload,
    ...otherProps
  }: IFetchViewProps<P, A, B, C, D, E, F, G, H, I, J>) => JSX.Element;
  export default FetchView;
}

declare module "react-declarative/components/FetchView/components/Reveal" {
  import * as React from "react";
  import { BoxProps } from "@mui/material/Box";
  /**
   * Interface for the props of the Reveal component.
   *
   * @interface IRevealProps
   * @extends BoxProps
   */
  export interface IRevealProps extends BoxProps {
    animation?: "slideDown" | "fadeIn" | "scale" | "none";
    appear?: boolean;
  }
  export const Reveal: (
    { children, className, animation, appear, ...otherProps }: IRevealProps,
    ref: React.Ref<HTMLDivElement>,
  ) => JSX.Element;
  export default Reveal;
}

declare module "react-declarative/components/WaitView/WaitView" {
  import * as React from "react";
  import { IAsyncProps } from "react-declarative/components/Async";
  /**
   * Interface representing the props for the WaitView component.
   *
   * @template P - The type of additional props for the Content component.
   * @template T - The type of the condition result.
   */
  interface IWaitViewProps<P extends any = object, T extends any = object>
    extends Omit<
      IAsyncProps<P>,
      keyof {
        children: never;
      }
    > {
    Content: React.ComponentType<any>;
    condition: () =>
      | Promise<boolean>
      | boolean
      | Promise<T>
      | T
      | Promise<null>
      | null;
    conditionMap?: (result: T) => boolean;
    onDone?: (attempts: number) => void;
    totalAttempts?: number;
    delay?: number;
  }
  /**
   * Renders a component with loading, content, and error states based on a condition.
   *
   * @template P - The type of the payload.
   * @template T - The type of the condition result.
   *
   * @param props - The component props.
   * @param props.onDone - A callback function to be executed when the condition is met.
   * @param props.condition - A function that returns a condition.
   * @param [props.Loader=Fragment] - The loading component.
   * @param [props.Content=Fragment] - The content component.
   * @param [props.Error=Fragment] - The error component.
   * @param [props.delay=1000] - The delay in milliseconds before retrying the condition.
   * @param [props.totalAttempts=Infinity] - The maximum number of attempts before showing the error state.
   * @param [props.conditionMap=(result) => !!result] - A function to map the condition result to a boolean value.
   * @param props.payload - The payload to be passed to the components.
   * @param otherProps - Other props to be passed to the Async component.
   *
   * @returns The rendered component.
   */
  export const WaitView: <
    P extends unknown = object,
    T extends unknown = object,
  >({
    onDone,
    condition,
    Loader,
    Content,
    Error,
    delay,
    totalAttempts,
    conditionMap,
    payload,
    ...otherProps
  }: IWaitViewProps<P, T>) => JSX.Element | null;
  export default WaitView;
}

declare module "react-declarative/components/PingView/PingView" {
  import * as React from "react";
  /**
   * Represents the properties of the PingView component.
   *
   * @template P The type of the payload.
   *
   * @property [children] - The children elements.
   * @property [Offline] - The component to render when offline.
   * @property ping - The function to perform the ping.
   * @property [fallback] - The function to handle errors.
   * @property [throwError] - A flag indicating whether to throw an error if the ping fails.
   * @property [delay=5000] - The delay (in milliseconds) between each ping.
   * @property [payload] - The payload to pass to the ping function.
   * @property [onOnline] - The function to call when the ping is successful.
   * @property [onOffline] - The function to call when the ping fails.
   */
  interface IPingViewProps<P extends any = object> {
    children?: React.ReactNode;
    Offline?: React.ComponentType<any>;
    ping: (payload?: P) => boolean | Promise<boolean>;
    fallback?: (e: Error) => void;
    throwError?: boolean;
    delay?: 5000;
    payload?: P;
    onOnline?: () => void;
    onOffline?: () => void;
  }
  /**
   * PingView component for checking online status using a ping function.
   * Renders children when online, displays offline component when offline.
   *
   * @template P - Type parameter for the payload object passed to the ping function
   *
   * @param props - The component props
   * @param props.ping - The ping function to check online status
   * @param props.children - The child components to render when online
   * @param [props.onOnline=() => null] - Callback function to be called when online
   * @param [props.onOffline=() => null] - Callback function to be called when offline
   * @param [props.Offline=Fragment] - The component to render when offline
   * @param [props.fallback] - The fallback component to render when an error occurs
   * @param [props.throwError] - Indicates if an error should be thrown when an error occurs during ping
   * @param [props.delay=5000] - The delay between consecutive pings (in milliseconds)
   * @param [props.payload] - The payload object to be passed to the ping function
   *
   * @returns - The rendered component or null if initialization is in progress
   */
  export const PingView: <P extends unknown = object>({
    ping,
    children,
    onOnline,
    onOffline,
    Offline,
    fallback,
    throwError,
    delay,
    payload,
  }: IPingViewProps<P>) => JSX.Element | null;
  export default PingView;
}

declare module "react-declarative/components/HtmlView/HtmlView" {
  import * as React from "react";
  import { BoxProps } from "@mui/material/Box";
  /**
   * Represents the configuration settings for the application.
   */
  interface IConfig {
    allowElements: string[];
    blockElements: string[];
    dropElements: string[];
    allowAttributes: Record<string, string[]>;
    dropAttributes: Record<string, string[]>;
    allowCustomElements: boolean;
    allowComments: boolean;
  }
  /**
   * Class representing a Sanitizer.
   * @class
   */
  class Sanitizer {
    constructor(config?: Partial<IConfig>);
  }
  global {
    interface Window {
      /**
       * Represents a Sanitizer class.
       *
       * @typedef Sanitizer
       * @param params - The parameters required to construct a Sanitizer object.
       * @constructor
       */
      Sanitizer: new (
        ...params: ConstructorParameters<typeof Sanitizer>
      ) => Sanitizer;
    }
  }
  /**
   * Props for the HtmlView component.
   *
   * @template T - The type of the payload data.
   */
  interface IHtmlViewProps<T extends any = object> extends BoxProps {
    children?: React.ReactNode;
    config?: Partial<IConfig>;
    handler: (p: T) => string | Promise<string>;
    fallback?: (e: Error) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    payload?: T;
    deps?: any[];
    throwError?: boolean;
  }
  /**
   * Represents an HTML view component.
   * @typedef HtmlView
   * @param children - The children elements.
   * @param config - The configuration object.
   * @param handler - The handler function.
   * @param fallback - The fallback function.
   * @param onLoadStart - The onLoadStart callback function.
   * @param onLoadEnd - The onLoadEnd callback function.
   * @param payload - The payload.
   * @param deps - The dependencies.
   * @param throwError - Indicates whether to throw an error if encountered.
   * @param otherProps - Other additional props.
   * @returns The HTML view component.
   */
  export const HtmlView: {
    ({
      children,
      config,
      handler,
      fallback,
      onLoadStart,
      onLoadEnd,
      payload,
      deps,
      throwError,
      ...otherProps
    }: IHtmlViewProps): JSX.Element;
    sanitize: (html: string, config?: Partial<IConfig> | undefined) => string;
  };
  export default HtmlView;
}

declare module "react-declarative/components/OfflineView/OfflineView" {
  import * as React from "react";
  /**
   * Represents the props for the OfflineView component.
   */
  interface IOfflineViewProps {
    children?: React.ReactNode;
    onOnline?: () => void;
    onOffline?: () => void;
    withPolling?: boolean;
    config?: IConfig;
    Offline?: React.ComponentType<any>;
  }
  /**
   * Represents a configuration for an API request.
   * @interface
   */
  interface IConfig {
    url: string;
    method?: string;
    interval?: number;
    timeout?: number;
  }
  /**
   * Represents a component that renders its child components conditionally based on the online status of the browser.
   *
   * @param OfflineViewProps - The configuration options for the OfflineView component.
   * @param children - The child components to be rendered when the browser is online.
   * @param onOnline - Callback function to be called when the browser transitions to the online state. (optional)
   * @param onOffline - Callback function to be called when the browser transitions to the offline state. (optional)
   * @param config - Configuration options for the OfflineView component. (optional, default: DEFAULT_CONFIG)
   * @param withPolling - Whether to enable polling for checking online status. (optional, default: false)
   * @param Offline - The component to be rendered when the browser is offline. (optional)
   * @returns The rendered child components or null if the initialization is not yet complete.
   */
  export const OfflineView: ({
    children,
    onOnline,
    onOffline,
    config,
    withPolling,
    Offline,
  }: IOfflineViewProps) => JSX.Element | null;
  export default OfflineView;
}

declare module "react-declarative/components/MetroView/MetroView" {
  import { OneHandler } from "react-declarative/model/IOneProps";
  import IMetroGroup from "react-declarative/components/MetroView/model/IMetroGroup";
  import IAnything from "react-declarative/model/IAnything";
  interface IMetroViewProps<Data = IAnything, Payload = IAnything> {
    routes: IMetroGroup<Data, Payload>[];
    data?: OneHandler<Data>;
    payload?: Payload | (() => Payload);
    onNavigate?: (to: string, payload: Payload) => void;
  }
  export const MetroView: <Data = any, Payload extends object = any>({
    routes,
    data,
    payload: upperPayload,
    onNavigate,
  }: IMetroViewProps<Data, Payload>) => JSX.Element;
  export default MetroView;
}

declare module "react-declarative/components/MetroView/model/IMetroGroup" {
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  import IMetroRoute from "react-declarative/components/MetroView/model/IMetroRoute";
  export interface IMetroGroup<Data = IAnything, Payload = IAnything> {
    label: string;
    isVisible?: IField<Data, Payload>["isVisible"];
    routes?: IMetroRoute<Data, Payload>[];
  }
  export default IMetroGroup;
}

declare module "react-declarative/components/MetroView/model/IMetroRoute" {
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  export interface IMetroRoute<Data = IAnything, Payload = IAnything> {
    label: string;
    icon?: React.ComponentType<any>;
    isVisible?: IField<Data, Payload>["isVisible"];
    to: string;
  }
  export default IMetroRoute;
}

declare module "react-declarative/components/RevealView/RevealView" {
  import * as React from "react";
  import { IRevealProps } from "react-declarative/components/FetchView/components/Reveal";
  /**
   * Represents the properties for the RevealView component.
   */
  interface IRevealViewProps {
    className?: string;
    style?: React.CSSProperties;
    animation?: IRevealProps["animation"];
    delay?: number;
    appear?: boolean;
    children: React.ReactNode;
  }
  /**
   * Render a RevealView component that animates the appearance of its children.
   *
   * @param props - The component props.
   * @param props.children - The children to be revealed.
   * @param [props.className] - The additional CSS class names for the component.
   * @param [props.style] - The inline CSS styles for the component.
   * @param [props.animation] - The animation to use for revealing the children.
   * @param [props.delay=REVEAL_DELAY] - The delay in milliseconds before the children start to appear.
   * @param [props.appear=true] - Determines whether the children should appear.
   */
  export const RevealView: ({
    children,
    className,
    style,
    animation,
    delay,
    appear: upperAppear,
  }: IRevealViewProps) => JSX.Element;
  export default RevealView;
}

declare module "react-declarative/components/SecretView/SecretView" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  /**
   * Interface for the SecretView component props.
   */
  interface ISecretViewProps {
    children?: React.ReactNode;
    onCode?: (code: number) => void;
    enabled?: boolean;
    title?: string;
    description?: string;
    digits?: number;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
  }
  /**
   * Represents a component that displays a secret view with an input for entering a code.
   *
   * @param className - The class name for the component.
   * @param style - The inline styles for the component.
   * @param sx - The sx styles for the component.
   * @param children - The child components to be rendered.
   * @param enabled - Whether the secret view is enabled or disabled. Default is true.
   * @param title - The title for the secret view. Default is "Service menu".
   * @param description - The description for the secret view. Default is "Please type a secret\ncode to continue".
   * @param digits - The total number of digits for the code. Default is DEFAULT_TOTAL_DIGITS.
   * @param onCode - The callback function to be called when the code is entered.
   * @returns - The rendered secret view component.
   */
  export const SecretView: ({
    className,
    style,
    sx,
    children,
    enabled,
    title,
    description,
    digits,
    onCode,
  }: ISecretViewProps) => JSX.Element;
  export default SecretView;
}

declare module "react-declarative/components/WizardView/WizardView" {
  import IWizardViewProps from "react-declarative/components/WizardView/model/IWizardViewProps";
  /**
   * WizardView component.
   *
   * @template Data - The type of data object passed to the WizardView.
   * @template Payload - The type of payload object passed to the WizardView.
   *
   * @param props - The props object.
   * @param props.className - The class name of the WizardView.
   * @param props.style - The inline styles of the WizardView.
   * @param props.sx - The sx prop for custom styling.
   * @param props.payload - The payload object for the WizardView.
   * @param props.outlinePaper - If true, the PaperView displays an outline.
   * @param props.transparentPaper - If true, the PaperView displays as transparent.
   * @param props.history - The history object for the WizardView.
   * @param props.pathname - The pathname for the WizardView.
   * @param props.steps - The steps array for the WizardView.
   * @param props.routes - The routes array for the WizardView.
   * @param props.onLoadStart - The function to be called when loading starts.
   * @param props.onLoadEnd - The function to be called when loading ends.
   * @param props.otherProps - The other props object for the WizardView.
   * @param outletProps - The outlet props object for the WizardView.
   *
   * @returns The rendered WizardView component.
   */
  export const WizardView: <
    Data extends {} = any,
    Payload = any,
    Params = any,
  >({
    className,
    style,
    sx,
    payload: upperPayload,
    fullScreen,
    outlinePaper,
    transparentPaper,
    withScroll,
    history: upperHistory,
    pathname,
    steps: upperSteps,
    routes,
    onLoadStart,
    onLoadEnd,
    onNavigate,
    onSubmit,
    otherProps: upperOtherProps,
    ...outletProps
  }: IWizardViewProps<Data, Payload, Params>) => JSX.Element;
  export default WizardView;
}

declare module "react-declarative/components/WizardView/components/WizardNavigation" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import { BoxProps } from "@mui/material/Box";
  /**
   * Interface for the properties of the Wizard Navigation component.
   */
  interface IWizardNavigationProps extends BoxProps {
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    disabled?: boolean;
    AfterPrev?: React.ComponentType<any>;
    BeforeNext?: React.ComponentType<any>;
    fallback?: (e: Error) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    hasPrev?: boolean;
    hasNext?: boolean;
    labelPrev?: string;
    labelNext?: string;
    onPrev?: () => void | Promise<void>;
    onNext?: () => void | Promise<void>;
    throwError?: boolean;
  }
  /**
   * Represents a component for navigating through a wizard.
   * @typedef WizardNavigation
   * @property className - The CSS class name for the component.
   * @property style - The inline style object for the component.
   * @property sx - The sx prop for the component.
   * @property disabled - Whether the component is disabled or not.
   * @property fallback - The fallback prop for the component.
   * @property onLoadStart - The onLoadStart prop for the component.
   * @property onLoadEnd - The onLoadEnd prop for the component.
   * @property onPrev - The onPrev prop for the component.
   * @property onNext - The onNext prop for the component.
   * @property AfterPrev - The AfterPrev prop for the component.
   * @property BeforeNext - The BeforeNext prop for the component.
   * @property hasPrev - Whether the component has a previous step or not.
   * @property hasNext - Whether the component has a next step or not.
   * @property labelPrev - The label for the previous button.
   * @property labelNext - The label for the next button.
   * @property throwError - Whether an error should be thrown or not.
   * @property - The additional props for the component.
   * @returns The rendered component.
   */
  export const WizardNavigation: ({
    className,
    style,
    sx,
    disabled,
    fallback,
    onLoadStart,
    onLoadEnd,
    onPrev,
    onNext,
    AfterPrev,
    BeforeNext,
    hasPrev,
    hasNext,
    labelPrev,
    labelNext,
    throwError,
    ...otherProps
  }: IWizardNavigationProps) => JSX.Element;
  export default WizardNavigation;
}

declare module "react-declarative/components/WizardView/components/WizardContainer" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import { BoxProps } from "@mui/material/Box";
  /**
   * Represents the props for the WizardContainer component.
   */
  interface IWizardContainerProps extends BoxProps {
    ref?: React.Ref<HTMLDivElement | undefined>;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    Navigation?: React.ReactNode;
  }
  /**
   * WizardContainer
   *
   * A container component that wraps the WizardContainerInternal component.
   * It is a functional component of type React.FC, which takes an IWizardContainerProps as its props.
   * It is created using `forwardRef` to allow obtaining a reference to the rendered DOM element for external usage.
   *
   * @component
   * @param ref - A forwarded reference to the underlying WizardContainerInternal component.
   * @param props - The props for the WizardContainer component.
   * @returns The rendered WizardContainer component.
   */
  export const WizardContainer: React.FC<IWizardContainerProps>;
  export default WizardContainer;
}

declare module "react-declarative/components/WizardView/model/IWizardOutlet" {
  import IAnything from "react-declarative/model/IAnything";
  import ISize from "react-declarative/model/ISize";
  import { IOutlet } from "react-declarative/components/OutletView";
  import IWizardOutletProps from "react-declarative/components/WizardView/model/IWizardOutletProps";
  /**
   * Represents additional properties for a component.
   *
   * @typedef OtherProps
   * @property size - The size of the component.
   * @property loading - Specifies if the component is being loaded.
   * @property setLoading - Sets the loading state of the component.
   * @property progress - The progress of the component.
   * @property setProgress - Sets the progress of the component.
   *
   * @since 1.0.0
   */
  export type OtherProps = {
    size: ISize;
    loading: boolean;
    setLoading: (loading: boolean) => void;
    progress: number;
    setProgress: (progress: number) => void;
    onClose: () => void;
  };
  /**
   * Represents an interface for a wizard outlet.
   *
   * @template Data - The data type for the outlet.
   * @template Payload - The payload type for the outlet.
   */
  export interface IWizardOutlet<Data = IAnything, Payload = IAnything>
    extends Omit<
      IOutlet<Data, Payload>,
      keyof {
        element: never;
      }
    > {
    element: (props: IWizardOutletProps<Data, Payload>) => React.ReactElement;
  }
  export default IWizardOutlet;
}

declare module "react-declarative/components/WizardView/model/IWizardOutletProps" {
  import IAnything from "react-declarative/model/IAnything";
  import { IOutletProps } from "react-declarative/components/OutletView";
  import { OtherProps } from "react-declarative/components/WizardView/model/IWizardOutlet";
  /**
   * Interface for the props of the WizardOutlet component.
   * @template Data - The type of data expected by the WizardOutlet component.
   * @template Payload - The type of payload expected by the WizardOutlet component.
   * @template Props - Additional props for the WizardOutlet component.
   */
  export type IWizardOutletProps<
    Data = IAnything,
    Payload = IAnything,
    Props = {},
  > = IOutletProps<Data, Payload, Props> & OtherProps;
  export default IWizardOutletProps;
}

declare module "react-declarative/components/WizardView/model/IWizardStep" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents a wizard step.
   * @template Payload - The type of payload for the step.
   */
  export interface IWizardStep<Payload extends IAnything = IAnything> {
    id?: string;
    isMatch?: (id: string) => boolean;
    isVisible?: (payload: Payload) => boolean;
    passthrough?: boolean;
    label?: string;
    icon?: React.ComponentType<any>;
  }
  export default IWizardStep;
}

declare module "react-declarative/components/WizardView/model/IWizardModal" {
  import IAnything from "react-declarative/model/IAnything";
  import IWizardOutlet from "react-declarative/components/WizardView/model/IWizardOutlet";
  import IWizardModalProps from "react-declarative/components/WizardView/model/IWizardModalProps";
  /**
   * Represents a modal wizard with specific data and payload types.
   *
   * @template Data - The type of data passed to the wizard.
   * @template Payload - The type of payload returned by the wizard.
   */
  export type IWizardModal<Data = IAnything, Payload = IAnything> = Omit<
    IWizardOutlet<Data, Payload>,
    keyof {
      element: never;
    }
  > & {
    element: (props: IWizardModalProps<Data, Payload>) => React.ReactElement;
  };
  export default IWizardModal;
}

declare module "react-declarative/components/WizardView/model/IWizardModalProps" {
  import IAnything from "react-declarative/model/IAnything";
  import IWizardOutletProps from "react-declarative/components/WizardView/model/IWizardOutletProps";
  /**
   * Represents the additional properties for a modal component.
   *
   * @typedef ModalOtherProps
   * @property onClose - The function to be called when the modal is closed.
   */
  type ModalOtherProps = {
    onClose: () => void;
  };
  /**
   * Interface for the props of the WizardModal component.
   * @template Data - The type of data for the wizard.
   * @template Payload - The type of payload for the wizard.
   */
  export type IWizardModalProps<
    Data = IAnything,
    Payload = IAnything,
  > = IWizardOutletProps<Data, Payload, ModalOtherProps> & ModalOtherProps;
  export default IWizardModalProps;
}

declare module "react-declarative/components/WizardView/hooks/useWizardModal" {
  import { IWizardModalProps } from "react-declarative/components/WizardView/components/WizardOutletModal";
  import IAnything from "react-declarative/model/IAnything";
  import History from "react-declarative/model/History";
  /**
   * Represents the interface for the Params class.
   * @template Data - The type of the Data parameter.
   * @template Payload - The type of the Payload parameter.
   */
  interface IParams<Data extends {} = Record<string, any>, Payload = IAnything>
    extends Omit<
      IWizardModalProps<Data, Payload>,
      keyof {
        openSubject: never;
        history: never;
        onSubmit: never;
        className: never;
      }
    > {
    onSubmit?: (
      data: Data | null,
      payload: Payload,
    ) => Promise<boolean> | boolean;
    fullScreen?: boolean;
    history?: History;
    pathname?: string;
  }
  /**
   * useWizardModal is a custom hook that provides a modal component for wizards.
   * It accepts various parameters and returns an object with functions and properties
   * related to the wizard modal.
   *
   * @param params - The parameters for the useWizardModal hook.
   * @param params.fallback - The fallback function to be called when an error occurs during rendering.
   * @param params.pathname - The pathname for the history object. Defaults to "/".
   * @param params.history - The history object. If not provided, a new memory history object will be created.
   * @param params.fullScreen - Determines whether the modal should be displayed in full screen. Defaults to true.
   * @param params.onLoadEnd - The function to be called when the wizard finishes loading.
   * @param params.onLoadStart - The function to be called when the wizard starts loading.
   * @param params.throwError - Determines whether an error should be thrown when an error occurs during submission. Defaults to false.
   * @param params.onChange - The function to be called when the wizard state changes.
   * @param params.onSubmit - The function to be called when the wizard is submitted. Defaults to a function that returns true.
   * @param params.onMount - The function to be called when the wizard component is mounted.
   * @param params.onUnmount - The function to be called when the wizard component is unmounted.
   * @param params.onClose - The function to be called when the modal is closed.
   * @param params.submitLabel - The label for the submit button.
   * @param params.title - The title of the wizard modal.
   * @param params.hidden - Determines whether the modal should be hidden. Defaults to false.
   * @param params.outletProps - Additional props to pass to the WizardOutletModal component.
   *
   * @returns - An object with functions and properties related to the wizard modal.
   * @returns return.open - A boolean value indicating whether the modal is open.
   * @returns return.render - A function that renders the wizard modal.
   * @returns return.pickData - A function that triggers the modal to open.
   * @returns return.close - A function that closes the modal and submits an empty payload.
   */
  export const useWizardModal: <
    Data extends {} = Record<string, any>,
    Payload = any,
  >({
    fallback,
    pathname,
    history: upperHistory,
    fullScreen,
    onLoadEnd,
    onLoadStart,
    throwError,
    onChange,
    onSubmit,
    onMount,
    onUnmount,
    onClose,
    submitLabel,
    title,
    hidden,
    ...outletProps
  }: IParams<Data, Payload>) => {
    readonly open: typeof open;
    readonly render: () => JSX.Element;
    readonly pickData: () => void;
    readonly close: () => Promise<boolean>;
  };
  export default useWizardModal;
}

declare module "react-declarative/components/PortalView/PortalView" {
  import * as React from "react";
  /**
   * Represents the properties for the PortalView component.
   */
  interface IPortalViewProps {
    children: React.ReactNode;
  }
  /**
   * Represents a portal view component.
   * @class
   */
  export class PortalView extends React.Component<IPortalViewProps> {
    element: HTMLDivElement | null;
    /**
     * Method componentWillUnmount
     *
     * This method is called when the component is about to be unmounted (removed) from the DOM.
     * It performs clean-up tasks, if any, to avoid memory leaks or unwanted effects after the component is removed.
     *
     * This method checks if 'this.element' (assumed to be a DOM element) exists, and if so,
     * removes it from the document body using 'document.body.removeChild()'.
     * Finally, it sets 'this.element' to null to release any references to the removed element.
     *
     * @return
     */
    componentWillUnmount(): void;
    /**
     * Renders the provided children into a portal, within a dynamically created div element appended to the document body.
     *
     * @return - The resulting React element after rendering the children into the portal.
     */
    render(): React.ReactPortal;
  }
  export default PortalView;
}

declare module "react-declarative/components/ErrorView/ErrorView" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  /**
   * Defines the props for the ErrorView component.
   */
  interface IErrorViewProps {
    appName?: string;
    Logo?: React.ComponentType<any>;
    buttonLabel?: React.ReactNode;
    contentLabel?: React.ReactNode;
    onButtonClick?: () => void;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
  }
  /**
   * Represents an ErrorView component.
   *
   * @typedef ErrorView
   * @property appName - The name of the application to be displayed on the ErrorView.
   * @property Logo - The logo component to be displayed on the ErrorView.
   * @property [className] - The additional class name to be applied to the ErrorView container.
   * @property [style] - The custom CSS styles to be applied to the ErrorView container.
   * @property [sx] - The custom sx styles to be applied to the ErrorView container (used in Theme UI library).
   * @property [buttonLabel="Reload page"] - The label text for the button displayed on the ErrorView.
   * @property [contentLabel] - The content text to be displayed on the ErrorView.
   * @property [onButtonClick=handleReload] - The click event handler for the button displayed on the ErrorView.
   */
  export const ErrorView: ({
    appName,
    Logo,
    className,
    style,
    sx,
    buttonLabel,
    contentLabel,
    onButtonClick,
  }: IErrorViewProps) => JSX.Element;
  export default ErrorView;
}

declare module "react-declarative/components/AuthView/AuthView" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import IOneProps, { OneHandler } from "react-declarative/model/IOneProps";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * @interface IAuthViewProps
   * @template Data - The data type for the fields in the authentication view
   * @template Payload - The payload type for the authentication handler
   * @template Field - The field type for the authentication fields
   *
   * Represents the props for an authentication view component.
   */
  interface IAuthViewProps<
    Data extends IAnything = IAnything,
    Payload = IAnything,
    Field = IField<Data, Payload>,
  > {
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    appName?: string;
    fields?: Field[];
    handler?: OneHandler<Data, Payload>;
    isBaseline?: IOneProps["isBaseline"];
    isBaselineForRoot?: IOneProps["isBaselineForRoot"];
    Logo?: React.ComponentType<any>;
    onAuth?: (data: Data) => void | Promise<void>;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
    BeforeSubmit?: React.ComponentType<any>;
    AfterSubmit?: React.ComponentType<any>;
  }
  /**
   * Represents the authentication view component.
   *
   * @template Data - The type of data.
   * @template Payload - The type of payload.
   * @template Field - The type of field.
   *
   * @param props - The props object.
   * @param props.className - The class name for the component.
   * @param props.style - The inline styles for the component.
   * @param props.sx - The sx prop for the component.
   * @param props.appName - The name of the app.
   * @param props.Logo - The component for the logo.
   * @param props.fields - The array of input fields.
   * @param [props.onLoadStart] - The callback function when the loading starts.
   * @param [props.onLoadEnd] - The callback function when the loading ends.
   * @param [props.throwError] - A boolean indicating whether to throw an error.
   * @param [props.handler] - The handler function.
   * @param [props.fallback] - The fallback function.
   * @param [props.onAuth] - The callback function for authentication.
   * @param [props.BeforeSubmit] - The component to render before submitting the form.
   * @param [props.AfterSubmit] - The component to render after submitting the form.
   *
   * @returns The AuthView component.
   */
  export const AuthView: <
    Data extends unknown = any,
    Payload = any,
    Field = IField<Data, Payload>,
  >({
    className,
    style,
    sx,
    appName,
    Logo,
    fields,
    onLoadStart,
    onLoadEnd,
    throwError,
    handler,
    fallback,
    isBaseline,
    isBaselineForRoot,
    onAuth,
    BeforeSubmit,
    AfterSubmit,
  }: IAuthViewProps<Data, Payload, Field>) => JSX.Element;
  export default AuthView;
}

declare module "react-declarative/components/KanbanView/KanbanView" {
  import * as React from "react";
  import IKanbanViewProps from "react-declarative/components/KanbanView/model/IKanbanViewProps";
  /**
   * @template Data, Payload, ColumnType
   * @typedef IKanbanViewProps - Props for KanbanViewInternal component
   * @property reloadSubject - Subject that triggers data reload
   * @property withUpdateOrder - Determines whether items should be sorted by update date
   * @property columns - Array of columns with corresponding rows, label and color
   * @property className - CSS class name for the component
   * @property payload - Payload object for custom data
   * @property disabled - Determines whether the component is disabled
   * @property items - Array of kanban items
   * @property style - Inline styles for the component
   * @property sx - Material-UI system styles
   * @property deps - Array of dependencies
   * @property withGoBack - Determines whether to allow going back to previous columns when dragging an item
   * @property withHeaderTooltip - Determines whether to show tooltip on column headers
   * @property filterFn - Function to filter kanban items
   * @property cardLabel - Function to generate card label from item ID
   * @property bufferSize - The number of card items to render in the virtual view
   * @property minRowHeight - Minimum height of each row in the virtual view
   * @property rowTtl - Time-to-live in milliseconds for each row cache
   * @property AfterCardContent - Custom component to render after card content
   * @property AfterColumnTitle - Custom component to render after column title
   * @property BeforeColumnTitle - Custom component to render before column title
   * @property onDataRequest - Function called when data is requested
   * @property onChangeColumn - Function called when an item is dragged to a new column
   * @property onCardLabelClick - Function called when the card label is clicked
   * @property onLoadStart - Function called when data loading starts
   * @property onLoadEnd - Function called when data loading ends
   * @property fallback - Function or React node to render when an error occurs
   * @property throwError - Function called when an error occurs
   * @property ref - Ref object for the root element of the component
   */
  export const KanbanView: {
    <
      Data extends unknown = any,
      Payload extends unknown = any,
      ColumnType = any,
    >(
      {
        reloadSubject: upperReloadSubject,
        withUpdateOrder,
        columns: upperColumns,
        className,
        payload: upperPayload,
        disabled,
        items,
        style,
        sx,
        deps,
        withGoBack,
        withHeaderTooltip,
        filterFn,
        cardLabel,
        bufferSize,
        minRowHeight,
        rowTtl,
        AfterCardContent,
        AfterColumnTitle,
        BeforeColumnTitle,
        onDataRequest,
        onChangeColumn,
        onCardLabelClick,
        onLoadStart,
        onLoadEnd,
        fallback,
        throwError,
      }: IKanbanViewProps<Data, Payload, ColumnType>,
      ref: React.Ref<HTMLDivElement>,
    ): JSX.Element;
    /**
     * @example useEffect(KanbanViewInternal.enableScrollOnDrag(ref), [])
     */
    enableScrollOnDrag(
      ref: React.MutableRefObject<HTMLDivElement | undefined>,
      {
        threshold,
        speed,
      }?: {
        threshold?: number | undefined;
        speed?: number | undefined;
      },
    ): () => import("../../utils/compose").Function;
  };
  export default KanbanView;
}

declare module "react-declarative/components/KanbanView/model/IBoard" {
  import IAnything from "react-declarative/model/IAnything";
  import { IBoardColumn } from "react-declarative/components/KanbanView/model/IBoardColumn";
  /**
   * Interface representing a board.
   *
   * @template Data - The type of data stored in the board.
   * @template Payload - The type of payload stored in the board.
   * @template ColumnType - The type of column in the board.
   */
  export interface IBoard<
    Data = IAnything,
    Payload = IAnything,
    ColumnType = IAnything,
  > {
    id: string;
    label: React.ReactNode;
    columns: IBoardColumn<Data, Payload, ColumnType>[];
  }
  export default IBoard;
}

declare module "react-declarative/components/KanbanView/model/IBoardDivider" {
  export type IBoardDivider = {
    divider: boolean;
  };
  export default IBoardDivider;
}

declare module "react-declarative/components/KanbanView/model/IBoardColumn" {
  import IAnything from "react-declarative/model/IAnything";
  import IBoardDivider from "react-declarative/components/KanbanView/model/IBoardDivider";
  import IBoardRow from "react-declarative/components/KanbanView/model/IBoardRow";
  /**
   * Interface representing a board column.
   *
   * @template Data - Type of data for each row in the column.
   * @template Payload - Type of payload for each row in the column.
   * @template ColumnType - Type of column.
   */
  export interface IBoardColumnInternal<
    Data = IAnything,
    Payload = IAnything,
    ColumnType = IAnything,
  > {
    column: ColumnType;
    color?: string;
    label?: string;
    divider?: boolean;
    rows: IBoardRow<Data, Payload>[];
  }
  export type IBoardColumn<
    Data = IAnything,
    Payload = IAnything,
    ColumnType = IAnything,
  > = IBoardColumnInternal<Data, Payload, ColumnType> | IBoardDivider;
  export default IBoardColumn;
}

declare module "react-declarative/components/KanbanView/model/IBoardItem" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Interface representing a board item.
   *
   * @template Data - The type of data for the board item.
   * @template Payload - The type of payload for the board item.
   * @template ColumnType - The type of column for the board item.
   */
  export interface IBoardItem<
    Data = IAnything,
    Payload = IAnything,
    ColumnType = IAnything,
  > {
    id: string;
    label?:
      | React.ReactNode
      | ((
          id: string,
          data: Data,
          payload: Payload,
        ) => React.ReactNode | Promise<React.ReactNode>);
    column: ColumnType;
    data: Data;
    updatedAt?: string;
  }
  export default IBoardItem;
}

declare module "react-declarative/components/KanbanView/model/IBoardRow" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents a row in a board with data and payload.
   *
   * @template Data - The type of data for the row.
   * @template Payload - The type of payload for the row.
   */
  export interface IBoardRow<Data = IAnything, Payload = IAnything> {
    label: React.ReactNode;
    value: (
      id: string,
      data: Data,
      payload: Payload,
    ) => React.ReactNode | Promise<React.ReactNode>;
    visible?:
      | boolean
      | ((
          id: string,
          data: Data,
          payload: Payload,
        ) => boolean | Promise<boolean>);
    click?: (id: string, data: Data, payload: Payload) => void | Promise<void>;
  }
  export default IBoardRow;
}

declare module "react-declarative/components/ReloadView/ReloadView" {
  import * as React from "react";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Interface for the props of a ReloadView component.
   */
  interface IReloadViewProps {
    reloadTrigger: TSubject<any>;
    children?: React.ReactNode;
  }
  /**
   * Represents a reload view component.
   * @class
   * @public
   */
  export class ReloadView extends React.Component<IReloadViewProps> {
    _disconnectListener: (() => void) | undefined;
    /**
     * Unsubscribes from previous reloadTrigger subscription and subscribes to a new reloadTrigger subscription.
     * Whenever reloadTrigger emits a value, it forces the component to update.
     *
     * @method doSubscribe
     */
    doSubscribe: () => void;
    /**
     * Invoked immediately after a component is mounted.
     *
     * @function componentDidMount
     */
    componentDidMount: () => void;
    /**
     * Executes the necessary operations after the component is updated.
     */
    componentDidUpdate: () => void;
    /**
     * Component lifecycle method that is called just before the component is unmounted and destroyed.
     * It is used to perform any necessary cleanup logic or clean up any resources that were previously allocated by this component.
     */
    componentWillUnmount: () => void;
    /**
     * Render lifecycle method
     */
    render: () => JSX.Element;
  }
  export default ReloadView;
}

declare module "react-declarative/components/InfiniteView/InfiniteView" {
  import * as React from "react";
  import { BoxProps } from "@mui/material/Box";
  import { SxProps } from "@mui/material";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents the props for the InfiniteView component.
   */
  interface IInfiniteViewProps extends BoxProps {
    withScrollbar?: boolean;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    children: React.ReactNode;
    hasMore?: boolean;
    loading?: boolean;
    scrollXSubject?: TSubject<number>;
    scrollYSubject?: TSubject<number>;
    onDataRequest?: (initial: boolean) => Promise<void> | void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
  }
  /**
   * InfiniteView component
   * @param props - Component props
   * @param props.className - Custom CSS class name
   * @param props.style - Custom inline styles
   * @param props.sx - SX prop from theme-ui
   * @param [props.loading=false] - Loading state of the component
   * @param [props.throwError=false] - Whether or not to throw errors
   * @param [props.hasMore=true] - Whether there is more data to load
   * @param props.children - Child components to render
   * @param props.scrollXSubject - Subject for horizontal scroll position
   * @param props.scrollYSubject - Subject for vertical scroll position
   * @param props.onDataRequest - Callback function to request data
   * @param props.onLoadStart - Callback function called when data loading starts
   * @param props.onLoadEnd - Callback function called when data loading ends
   * @param props.fallback - Fallback component to render in case of error
   * @returns Rendered component
   */
  export const InfiniteView: ({
    withScrollbar,
    className,
    style,
    sx,
    loading: upperLoading,
    throwError,
    hasMore,
    children: upperChildren,
    scrollXSubject: upperScrollXSubject,
    scrollYSubject: upperScrollYSubject,
    onDataRequest,
    onLoadStart,
    onLoadEnd,
    fallback,
    ...otherProps
  }: IInfiniteViewProps) => JSX.Element;
  export default InfiniteView;
}

declare module "react-declarative/components/VirtualView/VirtualView" {
  import * as React from "react";
  import { BoxProps } from "@mui/material/Box";
  import { TSubject } from "react-declarative/utils/rx/Subject";
  export const ROOT_ELEMENT = "virtual-view-root";
  export const CHILD_ELEMENT = "virtual-view-child";
  /**
   * Represents the props for the VirtualView component.
   * @interface
   * @extends BoxProps
   */
  export interface IVirtualViewProps
    extends Omit<
      BoxProps,
      keyof {
        ref: never;
      }
    > {
    withScrollbar?: boolean;
    loading?: boolean;
    hasMore?: boolean;
    minRowHeight?: number;
    bufferSize?: number;
    children: React.ReactNode;
    scrollXSubject?: TSubject<number>;
    scrollYSubject?: TSubject<number>;
    onDataRequest?: (initial: boolean) => Promise<void> | void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
  }
  /**
   * VirtualView component
   *
   * @typedef IVirtualViewProps - virtual view props
   * @property className - CSS class name
   * @property sx - custom styles
   * @property withScrollbar - flag indicating if scrollbar is visible
   * @property minRowHeight - minimum row height (default: DEFAULT_MIN_HEIGHT)
   * @property bufferSize - number of additional rows to render (default: DEFAULT_BUFFER_SIZE)
   * @property children - child elements
   * @property hasMore - flag indicating if there is more data to load (default: true)
   * @property loading - flag indicating if data is currently being loaded (default: false)
   * @property onDataRequest - function to request more data
   * @property onLoadStart - function called when data loading starts
   * @property onLoadEnd - function called when data loading ends
   * @property fallback - function called when an error occurs during data loading
   * @property scrollXSubject - scroll x subject
   * @property scrollYSubject - scroll y subject
   * @property throwError - flag indicating if errors should be thrown (default: false)
   * @property otherProps - other props
   */
  export const VirtualView: {
    ({
      className,
      sx,
      withScrollbar,
      minRowHeight,
      bufferSize: upperBufferSize,
      children: upperChildren,
      hasMore,
      loading: upperLoading,
      onDataRequest,
      onLoadStart,
      onLoadEnd,
      fallback,
      scrollXSubject: upperScrollXSubject,
      scrollYSubject: upperScrollYSubject,
      throwError,
      ...otherProps
    }: IVirtualViewProps): JSX.Element;
    /**
     * Virtualize is a method that helps in optimizing rendering performance by rendering only the visible elements in a view, using virtualization technique.
     */
    virtualize<T extends object = any>(
      OriginalComponent: React.ComponentType<T & IVirtualized>,
    ): React.ForwardRefExoticComponent<
      React.PropsWithoutRef<T> & React.RefAttributes<HTMLDivElement>
    >;
  };
  /**
   * Interface representing a virtualized component.
   * @interface
   * @property className - The class name of the component. This property should not be used.
   * @property style - The style of the component. This property should not be used.
   * @property ref - The ref of the component. This property should not be used.
   */
  interface IVirtualized {
    className?: never;
    style?: never;
    ref?: never;
  }
  export default VirtualView;
}

declare module "react-declarative/components/LoaderView/LoaderView" {
  import { BoxProps } from "@mui/material/Box";
  /**
   * Interface for the props of the LoaderView component.
   *
   * @interface ILoaderViewProps
   * @extends BoxProps
   */
  interface ILoaderViewProps
    extends Omit<
      BoxProps,
      keyof {
        children: never;
      }
    > {
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    handler?: () => Promise<void> | void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
    size?: number | string;
    variant?: "determinate" | "indeterminate";
    value?: number;
  }
  /**
   * Represents a loader view component.
   *
   * @param ILoaderViewProps - The props for the LoaderView component.
   * @param ILoaderViewProps.className - The class name for the component.
   * @param ILoaderViewProps.onLoadStart - The callback function to be called when loading starts.
   * @param ILoaderViewProps.onLoadEnd - The callback function to be called when loading ends.
   * @param ILoaderViewProps.handler - The asynchronous function to handle the loading logic.
   * @param ILoaderViewProps.fallback - The fallback function to handle errors in loading.
   * @param ILoaderViewProps.throwError - Indicates if the error should be thrown or handled by the fallback function.
   * @param ILoaderViewProps.size - The size of the circular progress spinner.
   * @param ILoaderViewProps.sx - Custom styling for the component.
   * @param otherProps - Any additional props to be passed to the component.
   *
   * @returns The rendered LoaderView component.
   */
  export const LoaderView: {
    ({
      className,
      onLoadStart,
      onLoadEnd,
      handler,
      fallback,
      throwError,
      size,
      sx,
      variant,
      value,
      ...otherProps
    }: ILoaderViewProps): JSX.Element;
    createLoader(size: number): () => JSX.Element;
  };
  export default LoaderView;
}

declare module "react-declarative/components/DocumentView/DocumentView" {
  import * as React from "react";
  import { BoxProps } from "@mui/material/Box";
  import { IActionMenuProps } from "react-declarative/components/ActionMenu";
  /**
   * Interface representing the props for the DocumentView component.
   *
   * @template T - The expected type for the document data.
   *
   * @interface IDocumentViewProps
   */
  interface IDocumentViewProps<T extends any = object>
    extends BoxProps,
      Omit<
        IActionMenuProps<T>,
        keyof {
          className: never;
          style: never;
          sx: never;
          transparent: never;
          onToggle: never;
        }
      > {
    withFullScreen?: boolean;
    withDelete?: boolean;
    className?: string;
    style?: React.CSSProperties;
    src: string;
    onFullScreenClick?: () => Promise<void> | void;
    onDeleteClick?: () => Promise<void> | void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
  }
  /**
   * Renders a document view component with optional full screen and delete functionality.
   *
   * @param withFullScreen - Determines if the full screen functionality is enabled. Default: false.
   * @param withDelete - Determines if the delete functionality is enabled. Default: false.
   * @param className - Additional CSS class name(s) for the root element.
   * @param style - Additional inline styles for the root element.
   * @param src - The source URL for the document.
   * @param onFullScreenClick - The callback function when the full screen button is clicked. Default: openBlank(src).
   * @param onDeleteClick - The callback function when the delete button is clicked. Default: () => undefined.
   * @param onLoadStart - The callback function when the document starts loading.
   * @param onLoadEnd - The callback function when the document finishes loading.
   * @param fallback - The fallback element to render if the document is not supported.
   * @param throwError - Determines if an error should be thrown if the document is not supported. Default: false.
   * @param disabled - Determines if the component is disabled. Default: false.
   * @param options - The action menu options to display.
   * @param onAction - The callback function when an action is selected from the action menu. Default: () => undefined.
   * @param payload - Additional payload data for the callback functions.
   * @param deps - Dependency array for the callback functions of the action menu.
   * @param keepMounted - Determines if the action menu should stay mounted when closed. Default: false.
   * @param BeforeContent - The content to display before the action menu.
   * @param AfterContent - The content to display after the action menu.
   * @param otherProps - Other additional props for the root element.
   * @returns The rendered document view component.
   */
  export const DocumentView: ({
    withFullScreen,
    withDelete,
    className,
    style,
    src,
    onFullScreenClick,
    onDeleteClick,
    onLoadStart,
    onLoadEnd,
    fallback,
    throwError,
    disabled,
    options,
    onAction,
    payload,
    deps,
    keepMounted,
    BeforeContent,
    AfterContent,
    ...otherProps
  }: IDocumentViewProps) => JSX.Element;
  export default DocumentView;
}

declare module "react-declarative/components/ImageView/ImageView" {
  import { BoxProps } from "@mui/material/Box";
  import { IActionMenuProps } from "react-declarative/components/ActionMenu";
  /**
   * Interface for the props of the ImageView component.
   *
   * @template T - The type of data that can be passed to the action menu.
   *
   * @interface
   * @extends BoxProps - Props for the parent Box component.
   * @extends Omit<IActionMenuProps<T>, keyof { className: never; style: never; sx: never; transparent: never; onToggle: never; }> - Omitted props from the IActionMenuProps interface.
   */
  interface IImageViewProps<T extends any = object>
    extends BoxProps,
      Omit<
        IActionMenuProps<T>,
        keyof {
          className: never;
          style: never;
          sx: never;
          transparent: never;
          onToggle: never;
        }
      > {
    withFullScreen?: boolean;
    withDelete?: boolean;
    src: string;
    onFullScreenClick?: () => Promise<void> | void;
    onDeleteClick?: () => Promise<void> | void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
  }
  /**
   * @typedef IImageViewProps
   * @property [withFullScreen=false] - Indicates whether the ImageView should have a full-screen option.
   * @property [withDelete=false] - Indicates whether the ImageView should have a delete option.
   * @property [className] - Additional class name for the ImageView component.
   * @property src - The source URL of the image to be displayed.
   * @property [onFullScreenClick] - Event handler for the full-screen click action. Defaults to opening a blank page with the source URL of the image.
   * @property [onDeleteClick] - Event handler for the delete click action. Defaults to an empty function.
   * @property [onLoadStart] - Event handler for the image loading start event.
   * @property [onLoadEnd] - Event handler for the image loading end event.
   * @property [fallback] - Custom fallback component to be displayed when the image fails to load.
   * @property [throwError=false] - Indicates whether an error should be thrown when the image fails to load.
   * @property [disabled=false] - Indicates whether the ImageView is disabled.
   * @property [options] - Array of options for the action menu.
   * @property [onAction] - Event handler for the action menu click action. Defaults to an empty function.
   * @property [payload] - Additional payload to be passed to the action menu click handler.
   * @property [deps] - Additional dependencies for the action menu.
   * @property [keepMounted] - Indicates whether the action menu should remain mounted when closed.
   * @property [BeforeContent] - Custom component to be displayed before the image content.
   * @property [AfterContent] - Custom component to be displayed after the image content.
   * @property [...otherProps] - Additional props to be spread onto the Box component.
   */
  export const ImageView: ({
    withFullScreen,
    withDelete,
    className,
    src,
    onFullScreenClick,
    onDeleteClick,
    onLoadStart,
    onLoadEnd,
    fallback,
    throwError,
    disabled,
    options,
    onAction,
    payload,
    deps,
    keepMounted,
    BeforeContent,
    AfterContent,
    ...otherProps
  }: IImageViewProps) => JSX.Element;
  export default ImageView;
}

declare module "react-declarative/components/TreeView/TreeView" {
  import { TextFieldProps } from "@mui/material/TextField";
  import INode from "react-declarative/components/TreeView/model/INode";
  /**
   * Represents the properties for the ITreeView component.
   *
   * @typedef ITreeViewProps
   * @property [value] - The selected values in the tree view.
   * @property [readOnly=false] - Specifies whether the tree view is read-only or not.
   * @property [loading=false] - Specifies whether the tree view is in loading state or not.
   * @property items - The nodes to render in the tree view.
   * @property [onChange] - The function to be called when the value in the tree view changes. It accepts a single parameter which is the new selected value or null.
   * @property [TextFieldProps] - The additional properties for the TextField component.
   */
  type ITreeViewProps = {
    value?: string[] | null;
    readOnly?: boolean;
    loading?: boolean;
    items: INode[];
    onChange?: (value: string[] | null) => void;
  } & Omit<
    TextFieldProps,
    keyof {
      onChange: never;
    }
  >;
  /**
   * Represents a TreeView component.
   *
   * @param className - The class name of the component.
   * @param style - The style object of the component.
   * @param sx - The sx object of the component.
   * @param loading - Indicates whether the component is in a loading state.
   * @param items - The items to be displayed in the TreeView.
   * @param value - The selected values in the TreeView.
   * @param onChange - The function to be called when the value of the TreeView changes.
   * @param textFieldProps - Additional props to be passed to the underlying TextField component.
   */
  export const TreeView: ({
    className,
    style,
    sx,
    disabled,
    loading,
    readOnly,
    items: upperItems,
    value: upperValue,
    onChange,
    ...textFieldProps
  }: ITreeViewProps) => JSX.Element;
  export default TreeView;
}

declare module "react-declarative/components/TreeView/model/INode" {
  /**
   * Represents a Node in a tree structure.
   */
  export interface INode {
    label: string;
    value: string;
    /**
     * Represents an array of child nodes excluding the "child" property (recursion).
     *
     * @typedef ChildArray
     */
    child?: Omit<INode, "child">[];
  }
  export default INode;
}

declare module "react-declarative/components/GridView/GridView" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import { ICardProps } from "react-declarative/components/GridView/components/Card";
  import { IGridProps, RowData } from "react-declarative/components/Grid";
  import { ITileProps, TileMode } from "react-declarative/components/Tile";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Interface for GridView component props.
   *
   * @template T - Type of the row data.
   * @template P - Type of the additional props.
   */
  interface IGridViewProps<T = RowData, P = IAnything>
    extends IGridProps<T, P> {
    className?: string;
    style?: React.CSSProperties;
    itemSx?: SxProps;
    tileMode?: TileMode;
    outlinePaper?: boolean;
    transparentPaper?: boolean;
    sx?: SxProps<any>;
    label?: ICardProps["label"];
    mobileItem?: ITileProps<T>["children"];
    BeforeLabel?: ICardProps["BeforeLabel"];
    AfterLabel?: ICardProps["AfterLabel"];
  }
  /**
   * Represents a GridView component.
   *
   * @template T - The type of RowData.
   * @template P - The type of IAnything.
   *
   * @param props - The component props.
   * @returns - The GridView component.
   */
  export const GridView: <T extends unknown = any, P extends unknown = any>({
    className,
    style,
    sx,
    label,
    BeforeLabel,
    AfterLabel,
    payload: upperPayload,
    mobileItem: MobileItem,
    itemSx,
    tileMode,
    outlinePaper,
    transparentPaper,
    loading,
    ...otherProps
  }: IGridViewProps<T, P>) => JSX.Element;
  export default GridView;
}

declare module "react-declarative/components/ChatView/helpers/ChatController" {
  import ActionRequest from "react-declarative/components/ChatView/model/ActionRequest";
  import ActionResponse from "react-declarative/components/ChatView/model/ActionResponse";
  import ChatOption from "react-declarative/components/ChatView/model/ChatOption";
  import Message from "react-declarative/components/ChatView/model/Message";
  import MessageContent from "react-declarative/components/ChatView/model/MessageContent";
  import OnActionChanged from "react-declarative/components/ChatView/model/OnActionChanged";
  import OnActionResponsed from "react-declarative/components/ChatView/model/OnActionResponsed";
  import OnMessagesChanged from "react-declarative/components/ChatView/model/OnMessagesChanged";
  /**
   * Class representing a Chat Controller.
   */
  export class ChatController {
    /**
     * Constructs an instance of ChatController.
     * @param [option] - The chat options.
     */
    constructor(option?: ChatOption);
    /**
     * Adds a message to the chat.
     * @param message - The message to add.
     * @returns A Promise resolving to the index of the added message.
     */
    addMessage(message: Message<MessageContent>): Promise<number>;
    /**
     * Updates a message in the chat.
     * @param index - The index of the message to update.
     * @param message - The updated message.
     */
    updateMessage(index: number, message: Message<MessageContent>): void;
    /**
     * Removes a message from the chat.
     * @param index - The index of the message to remove.
     */
    removeMessage(index: number): void;
    /**
     * Gets all messages in the chat.
     * @returns An array of messages.
     */
    getMessages(): Message<MessageContent>[];
    /**
     * Sets the messages in the chat.
     * @param messages - The messages to set.
     */
    setMessages(messages: Message<MessageContent>[]): void;
    /**
     * Clears all messages from the chat.
     */
    clearMessages(): void;
    /**
     * Adds an event handler for messages changed.
     * @param callback - The event handler to add.
     */
    addOnMessagesChanged(callback: OnMessagesChanged): void;
    /**
     * Removes an event handler for messages changed.
     * @param callback - The event handler to remove.
     */
    removeOnMessagesChanged(callback: OnMessagesChanged): void;
    /**
     * Sets the action request and its response handlers.
     * @param request - The action request.
     * @param [onResponse] - The response handler.
     * @returns A Promise resolving to the action response.
     */
    setActionRequest<T extends ActionRequest>(
      request: T,
      onResponse?: OnActionResponsed,
    ): Promise<ActionResponse>;
    /**
     * Cancels the current action request.
     */
    cancelActionRequest(): void;
    /**
     * Gets the current action request.
     * @returns The current action request.
     */
    getActionRequest(): ActionRequest | undefined;
    /**
     * Sets the action response and triggers related actions.
     * @param request - The action request.
     * @param response - The action response.
     * @returns A Promise resolving when the action response is processed.
     */
    setActionResponse(
      request: ActionRequest,
      response: ActionResponse,
    ): Promise<void>;
    /**
     * Gets all action responses.
     * @returns An array of action responses.
     */
    getActionResponses(): ActionResponse[];
    /**
     * Adds an event handler for action changed.
     * @param callback - The event handler to add.
     */
    addOnActionChanged(callback: OnActionChanged): void;
    /**
     * Removes an event handler for action changed.
     * @param callback - The event handler to remove.
     */
    removeOnActionChanged(callback: OnActionChanged): void;
    /**
     * Gets the chat options.
     * @returns The chat options.
     */
    getOption(): ChatOption;
  }
  export default ChatController;
}

declare module "react-declarative/components/ChatView/helpers/AudioMediaRecorder" {
  /**
   * A singleton class for handling audio recording using the MediaRecorder API.
   */
  export class AudioMediaRecorder {
    /**
     * Retrieves the singleton instance of AudioMediaRecorder.
     * @returns The singleton instance of AudioMediaRecorder.
     */
    static getInstance(): AudioMediaRecorder;
    /**
     * Constructs an instance of AudioMediaRecorder.
     * Throws an error if window.MediaRecorder is undefined.
     */
    constructor();
    /**
     * Initializes the MediaRecorder instance.
     * @returns A Promise resolving to the initialized AudioMediaRecorder instance.
     */
    initialize(): Promise<AudioMediaRecorder>;
    /**
     * Starts recording audio.
     * @returns A Promise resolving when recording starts.
     * @throws Throws an error if the MediaRecorder instance is not initialized.
     */
    startRecord(): Promise<void>;
    /**
     * Stops recording audio.
     * @returns A Promise resolving to the recorded audio Blob.
     * @throws Throws an error if the MediaRecorder instance is not initialized.
     */
    stopRecord(): Promise<Blob>;
  }
  export default AudioMediaRecorder;
}

declare module "react-declarative/components/ChatView/model/ActionRequest" {
  import { ActionResponse } from "react-declarative/components/ChatView/model/ActionResponse";
  /**
   * Represents a request for an action.
   * @typedef ActionRequest
   * @property type - The type of the action.
   * @property [always] - Indicates if the action should always be performed.
   * @property [addMessage] - Indicates if a message should be added.
   * @property [response] - The response object associated with the action.
   */
  export interface ActionRequest {
    type: string;
    always?: boolean;
    addMessage?: boolean;
    response?: ActionResponse;
  }
  export default ActionRequest;
}

declare module "react-declarative/components/ChatView/model/AudioActionRequest" {
  import ActionRequest from "react-declarative/components/ChatView/model/ActionRequest";
  import { AudioActionResponse } from "react-declarative/components/ChatView/model/AudioActionResponse";
  /**
   * @interface Represents an action request specific to audio interactions.
   * @extends {ActionRequest}
   * @property type - Specifies the type of action request.
   * @property [sendButtonText] - Text to display on the button for sending audio.
   * @property [response] - Response object for the audio action.
   */
  export interface AudioActionRequest extends ActionRequest {
    type: "audio";
    sendButtonText?: string;
    response?: AudioActionResponse;
  }
  export default AudioActionRequest;
}

declare module "react-declarative/components/ChatView/model/CustomActionRequest" {
  import ActionRequest from "react-declarative/components/ChatView/model/ActionRequest";
  import CustomActionResponse from "react-declarative/components/ChatView/model/CustomActionResponse";
  /**
   * @interface CustomActionRequest - Interface representing a custom action request.
   * @extends {ActionRequest} - Extends ActionRequest interface.
   * @property type - The type of the request. Value is 'custom'.
   * @property Component - The JSX element representing the custom action.
   * @property [response] - The response for the custom action (optional).
   */
  export interface CustomActionRequest extends ActionRequest {
    type: "custom";
    Component: JSX.Element;
    response?: CustomActionResponse;
  }
  export default CustomActionRequest;
}

declare module "react-declarative/components/ChatView/model/FileActionRequest" {
  import ActionRequest from "react-declarative/components/ChatView/model/ActionRequest";
  import FileActionResponse from "react-declarative/components/ChatView/model/FileActionResponse";
  /**
   * @interface FileActionRequest - Interface representing a file action request.
   * @extends {ActionRequest} - Extends ActionRequest interface.
   * @property type - The type of the request. Value is 'file'.
   * @property [accept] - The file types accepted (optional).
   * @property [multiple] - Whether multiple files can be selected (optional).
   * @property [response] - The response for the file action (optional).
   * @property [sendButtonText] - The text for the send button (optional).
   */
  export interface FileActionRequest extends ActionRequest {
    type: "file";
    accept?: string;
    multiple?: boolean;
    response?: FileActionResponse;
    sendButtonText?: string;
  }
  export default FileActionRequest;
}

declare module "react-declarative/components/ChatView/model/MultiSelectActionRequest" {
  import ActionRequest from "react-declarative/components/ChatView/model/ActionRequest";
  import MultiSelectActionResponse from "react-declarative/components/ChatView/model/MultiSelectActionResponse";
  /**
   * @interface MultiSelectActionRequest - Interface representing a multi-select action request.
   * @extends {ActionRequest} - Extends ActionRequest interface.
   * @property type - The type of the request. Value is 'multi-select'.
   * @property options - The options for multi-select.
   * @property [sendButtonText] - The text for the send button (optional).
   * @property [response] - The response for the multi-select action (optional).
   */
  export interface MultiSelectActionRequest extends ActionRequest {
    type: "multi-select";
    options: {
      value: string;
      text: string;
    }[];
    sendButtonText?: string;
    response?: MultiSelectActionResponse;
  }
  export default MultiSelectActionRequest;
}

declare module "react-declarative/components/ChatView/model/SelectActionRequest" {
  import ActionRequest from "react-declarative/components/ChatView/model/ActionRequest";
  import SelectActionResponse from "react-declarative/components/ChatView/model/SelectActionResponse";
  /**
   * @interface SelectActionRequest - Interface representing a select action request.
   * @extends {ActionRequest} - Extends ActionRequest interface.
   * @property type - The type of the request. Value is 'select'.
   * @property options - The options for selection.
   * @property [response] - The response for the select action (optional).
   */
  export interface SelectActionRequest extends ActionRequest {
    type: "select";
    options: {
      value: string;
      text: string;
    }[];
    response?: SelectActionResponse;
  }
  export default SelectActionRequest;
}

declare module "react-declarative/components/ChatView/model/TextActionRequest" {
  import ActionRequest from "react-declarative/components/ChatView/model/ActionRequest";
  import TextActionResponse from "react-declarative/components/ChatView/model/TextActionResponse";
  /**
   * @interface TextActionRequest - Interface representing a text action request.
   * @extends {ActionRequest} - Extends ActionRequest interface.
   * @property type - The type of the request. Value is 'text'.
   * @property [defaultValue] - The default value for the text input (optional).
   * @property [placeholder] - The placeholder text for the text input (optional).
   * @property [sendButtonText] - The text for the send button (optional).
   * @property [response] - The response for the text action (optional).
   */
  export interface TextActionRequest extends ActionRequest {
    type: "text";
    defaultValue?: string;
    placeholder?: string;
    sendButtonText?: string;
    response?: TextActionResponse;
  }
  export default TextActionRequest;
}

declare module "react-declarative/components/ChatView/ChatView" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import { ChatController } from "react-declarative/components/ChatView/helpers/ChatController";
  /**
   * @interface IChatViewProps - Interface representing props for a chat view component.
   * @property chatController - The chat controller associated with the chat view.
   * @property [className] - Additional CSS class name(s) for styling (optional).
   * @property [style] - Inline style object for additional styling (optional).
   * @property [sx] - The system props from Theme UI for additional styling (optional).
   */
  interface IChatViewProps {
    chatController: ChatController;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
  }
  /**
   * Represents a chat view component.
   * @param props - The props object.
   * @param props.chatController - The chat controller object.
   * @param [props.className] - Additional class name(s) for the component.
   * @param [props.style] - Inline styles for the component.
   * @param [props.sx] - The sx prop from Theme UI for custom styling.
   * @returns React component.
   * @example
   * function App(): React.ReactElement {
   *  const [chatCtl] = React.useState(new ChatController());
   *
   *  React.useMemo(async () => {
   *    // Chat content is displayed using ChatController
   *    await chatCtl.addMessage({
   *      type: 'text',
   *      content: `Hello, What's your name.`,
   *      self: false,
   *    });
   *    const name = await chatCtl.setActionRequest({ type: 'text' });
   *  }, [chatCtl]);
   *
   *  // Only one component used for display
   *  return <Chat chatController={chatCtl} />;
   * }
   */
  export const ChatView: ({
    chatController,
    className,
    style,
    sx,
  }: IChatViewProps) => JSX.Element;
  export default ChatView;
}

declare module "react-declarative/components/RoiView/RoiView" {
  import * as React from "react";
  import { IPaperViewProps } from "react-declarative/components/PaperView";
  import ICord from "react-declarative/components/RoiView/model/ICord";
  interface IRoiViewProps
    extends Omit<
      IPaperViewProps,
      keyof {
        onChange: never;
        onClick: never;
      }
    > {
    withNaturalSize?: boolean;
    imageSize?: {
      naturalHeight: number;
      naturalWidth: number;
    };
    src: string;
    readonly?: boolean;
    cords: ICord[];
    onChange?: (cords: ICord[]) => void;
    onClick?: (e: React.MouseEvent<HTMLDivElement>, id: string) => void;
    onHover?: (e: React.MouseEvent<HTMLDivElement>, id: string) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
  }
  export const RoiView: (
    {
      withNaturalSize,
      imageSize,
      className,
      src,
      cords: upperCords,
      readonly,
      onLoadStart,
      onLoadEnd,
      sx,
      onChange,
      onClick,
      onHover,
      ...otherProps
    }: IRoiViewProps,
    ref: React.Ref<HTMLDivElement>,
  ) => JSX.Element;
  export default RoiView;
}

declare module "react-declarative/components/RoiView/model/ICord" {
  export interface ICord {
    type: "rect" | "roi";
    color: string;
    id: string;
    top: number;
    left: number;
    width: number;
    height: number;
    label: string;
    angle: number;
  }
  export interface ICordInternal
    extends Omit<
      ICord,
      keyof {
        color: never;
        label: never;
      }
    > {}
  export default ICord;
}

declare module "react-declarative/components/Grid/Grid" {
  import IGridProps from "react-declarative/components/Grid/model/IGridProps";
  /**
   * Represents a grid component with customizable features.
   * @template T - The type of row data in the grid.
   * @param props - The properties for the grid.
   * @returns - The grid component.
   */
  export const Grid: <T extends unknown>(
    props: IGridProps<T, any>,
  ) => JSX.Element;
  export default Grid;
}

declare module "react-declarative/components/Grid/api/useOffsetPaginator" {
  import TSubject from "react-declarative/model/TSubject";
  import RowData from "react-declarative/components/Grid/model/RowData";
  /**
   * Represents the parameters required to configure a data handler for fetching and processing data.
   *
   * @template Data - The type of data to be handled.
   */
  interface IParams<Data = RowData> {
    reloadSubject?: TSubject<void>;
    initialData?: Data[];
    handler: (
      limit: number,
      offset: number,
      initial: boolean,
      currentRows: Data[],
    ) => Data[] | Promise<Data[]>;
    limit?: number;
    delay?: number;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (error: Error) => void;
    throwError?: boolean;
  }
  /**
   * Implements an offset-based pagination logic for fetching and managing data.
   *
   * @template Data - The type of the data to be paginated, extending RowData.
   *
   * @param params - The parameters for configuring the pagination logic.
   * @param params.reloadSubject - The reload subject used to trigger a data reload.
   * @param params.initialData - The initial data to be displayed.
   * @param params.handler - The function for fetching more data.
   * @param params.limit - The maximum number of items to be fetched per request.
   * @param params.delay - The delay (in milliseconds) between requests.
   * @param queryProps - Additional query properties to be passed to the handler function.
   *
   * @returns - An object containing the paginated data and various utility functions.
   * @returns data - The paginated data.
   * @returns setData - A function to update the paginated data.
   * @returns offset - The offset of the current page.
   * @returns hasMore - A flag indicating if there are more items to load.
   * @returns loading - A flag indicating if a request is currently loading.
   * @returns error - The error object, if an error occurred during the request.
   * @returns onSkip - A function to skip to the next page.
   * @returns reloadSubject - The reload subject used to trigger a data reload.
   * @returns clear - A function to clear the paginated data and reset the pagination state.
   */
  export const useOffsetPaginator: <Data extends unknown = any>({
    reloadSubject: upperReloadSubject,
    initialData: upperInitialData,
    handler,
    limit,
    delay,
    ...queryProps
  }: IParams<Data>) => {
    data: Data[];
    setData: (data: Data[] | ((prevData: Data[]) => Data[])) => void;
    offset: number;
    hasMore: boolean;
    loading: boolean;
    error: boolean;
    onSkip: import("../../../hooks/useSinglerunAction").IExecute<void, boolean>;
    reloadSubject: TSubject<void>;
    clear: () => void;
  };
  export default useOffsetPaginator;
}

declare module "react-declarative/components/Grid/api/useCursorPaginator" {
  import TSubject from "react-declarative/model/TSubject";
  import RowData from "react-declarative/components/Grid/model/RowData";
  /**
   * Interface representing the parameters for fetching data.
   * @template Data - Type of data
   */
  interface IParams<Data = RowData> {
    reloadSubject?: TSubject<void>;
    initialData?: Data[];
    handler: (
      cursor: string | null,
      initial: boolean,
      limit: number,
      currentRows: Data[],
    ) => Data[] | Promise<Data[]>;
    limit?: number;
    delay?: number;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (error: Error) => void;
    throwError?: boolean;
  }
  /**
   * A function that handles pagination using cursor-based pagination technique.
   *
   * @template Data The type of data in each row.
   * @param params - The input parameters.
   * @param params.reloadSubject - The reload subject used to trigger a reload.
   * @param [params.initialData=[]] - The initial data for the paginator.
   * @param params.handler - The handler function for fetching more data.
   * @param [params.delay=SCROLL_REQUEST_DELAY] - The delay between each scroll request.
   * @param [params.limit=DEFAULT_LIMIT] - The maximum number of rows to fetch at a time.
   * @param queryProps - Additional properties to be passed to the query.
   * @returns - An object containing the paginator data and functions.
   */
  export const useCursorPaginator: <Data extends unknown = any>({
    reloadSubject: upperReloadSubject,
    initialData: upperInitialData,
    handler,
    delay,
    limit,
    ...queryProps
  }: IParams<Data>) => {
    data: Data[];
    setData: (data: Data[] | ((prevData: Data[]) => Data[])) => void;
    hasMore: boolean;
    lastCursor: any;
    loading: boolean;
    error: boolean;
    onSkip: import("../../../hooks/useSinglerunAction").IExecute<void, boolean>;
    reloadSubject: import("../../..").Subject<void>;
  };
  export default useCursorPaginator;
}

declare module "react-declarative/components/Grid/api/useGridAction" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents a class that defines parameters for data fetching and actions handling.
   * @template Data - The type of the data.
   */
  interface IParams<Data extends IAnything = IAnything> {
    fetchRow: (id: string) => Data | Promise<Data>;
    onAction?: (
      action: string,
      rows: Data[],
      deselectAll: () => void,
    ) => Promise<void> | void;
    onRowAction?: (
      action: string,
      row: Data,
      deselectAll: () => void,
    ) => Promise<void> | void;
    onLoadStart?: () => void;
    onSelectionChange?: (selectedRows: string[]) => void;
    selectedRows?: string[];
    onLoadEnd?: (isOk: boolean) => void;
    throwError?: boolean;
    fallback?: (e: Error) => void;
  }
  /**
   * Executes grid actions and row actions.
   *
   * @template Data - The type of data in the grid rows.
   * @param Object - The parameters for the useGridAction function.
   * @param Object.onLoadStart - A callback function executed when a grid action or row action is started.
   * @param Object.onLoadEnd - A callback function executed when a grid action or row action is completed or failed.
   * @param Object.throwError - A flag indicating whether to throw an error if a grid action or row action fails.
   * @param Object.fallback - A flag indicating whether to use a fallback solution if a grid action or row action fails.
   * @param Object.fetchRow - A function that fetches a row.
   * @param Object.onAction - A callback function executed when a grid action is performed. This function receives the action name, the rows to perform the action on, and a
   * deselectAll function to deselect all rows.
   * @param Object.onRowAction - A callback function executed when a row action is performed. This function receives the action name, the row to perform the action on, and a
   * deselectAll function to deselect all rows.
   * @returns An object containing the following properties:
   *   - deselectAll - A function that deselects all rows in the grid.
   *   - selectedRows - An array of selected rows in the grid.
   *   - gridProps - The grid properties.
   *   - commitAction - A function that commits a grid action. This function receives the action name and calls the onAction callback function with the selected rows.
   *   - commitRowAction - A function that commits a row action. This function receives the action name and the row and calls the onRowAction callback function.
   */
  export const useGridAction: <Data extends unknown = any>({
    onLoadStart,
    onLoadEnd,
    throwError,
    fallback,
    fetchRow,
    onAction,
    onRowAction,
    onSelectionChange,
    selectedRows: upperSelectedRows,
  }: IParams<Data>) => {
    readonly deselectAll: () => void;
    readonly selectedRows: string[];
    readonly gridProps: {
      readonly selectedRows: string[];
      readonly onSelectedRows: (rowIds: string[]) => void;
    };
    readonly commitAction: (p?: string | undefined) => Promise<void | null>;
    readonly commitRowAction: (
      action: string,
      row: Data,
    ) => Promise<void | null>;
  };
  export default useGridAction;
}

declare module "react-declarative/components/Grid/api/useGridSelection" {
  /**
   * Represents the interface for the params.
   * @interface
   */
  interface IParams {
    selectedRows?: string[];
    onChange: (selectedRows: string[]) => void;
  }
  /**
   * Hook for managing grid selection.
   *
   * @returns - An object containing the following properties:
   *  - selectedRows: Array of selected row IDs.
   *  - gridProps: Object with properties for grid selection:
   *    - selectedRows: Array of selected row IDs.
   *    - onSelectedRows: Function to handle selected row IDs.
   *  - deselectAll: Function to clear all selected rows.
   */
  export const useGridSelection: ({
    selectedRows: defaultSelectedRows,
    onChange,
  }?: Partial<IParams>) => {
    readonly selectedRows: string[];
    readonly gridProps: {
      readonly selectedRows: string[];
      readonly onSelectedRows: (rowIds: string[]) => void;
    };
    readonly deselectAll: () => void;
    readonly setSelectedRows: import("react").Dispatch<
      import("react").SetStateAction<string[]>
    >;
  };
  export default useGridSelection;
}

declare module "react-declarative/components/Grid/model/IGridProps" {
  import React from "react";
  import { SxProps } from "@mui/material";
  import IColumn from "react-declarative/components/Grid/model/IColumn";
  import RowData from "react-declarative/components/Grid/model/RowData";
  import IGridAction from "react-declarative/components/Grid/model/IGridAction";
  import IAnything from "react-declarative/model/IAnything";
  import TSort from "react-declarative/components/Grid/model/TSort";
  import { IVirtualViewProps } from "react-declarative/components/VirtualView";
  import { TSubject } from "react-declarative/utils/rx/Subject";
  import SelectionMode from "react-declarative/model/SelectionMode";
  /**
   * Represents the properties of the IGrid component.
   *
   * @template T - The type of the RowData.
   * @template P - The type of the payload.
   */
  export interface IGridProps<T = RowData, P = IAnything> {
    outlinePaper?: boolean;
    transparentPaper?: boolean;
    noDataLabel?: string;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    header?: React.ReactNode;
    data: Array<T>;
    columns: Array<IColumn<T, P>>;
    scrollXSubject?: TSubject<number>;
    scrollYSubject?: TSubject<number>;
    onTableRowClick?: (evt: React.MouseEvent, row: T) => void;
    onRowClick?: (row: T) => void;
    rowActions?: Array<IGridAction<T>>;
    payload?: P | (() => P);
    onRowAction?: (action: string, row: T) => void;
    recomputeSubject?: TSubject<void>;
    loading?: boolean;
    hasMore?: boolean;
    rowMark?: ((row: RowData) => string) | ((row: RowData) => Promise<string>);
    rowColor?: ((row: RowData) => string) | ((row: RowData) => Promise<string>);
    onSkip?: (initial: boolean) => void;
    onButtonSkip?: () => void;
    rowKey?: keyof T;
    sort?: TSort<T>;
    errorMessage?: string | null;
    selectionMode?: SelectionMode;
    onClickHeaderColumn?: (value: keyof T) => void;
    onSelectedRows?: (rowIds: string[], initialChange: boolean) => void;
    selectedRows?: string[];
    minRowHeight?: IVirtualViewProps["minRowHeight"];
    bufferSize?: IVirtualViewProps["bufferSize"];
  }
  export default IGridProps;
}

declare module "react-declarative/components/Grid/model/RowData" {
  export type RowData = any;
  export default RowData;
}

declare module "react-declarative/components/Grid/model/IColumn" {
  import IAnything from "react-declarative/model/IAnything";
  import Dimension from "react-declarative/components/Grid/model/Dimension";
  import RowData from "react-declarative/components/Grid/model/RowData";
  /**
   * Represents a column in a table.
   *
   * @template T - The type of the row data.
   */
  export interface IColumn<T = RowData, Payload = IAnything> {
    field?: keyof T;
    label: string;
    align?: "center" | "left" | "right" | "stretch";
    format?: (row: T, payload: Payload) => React.ReactElement | string;
    minWidth?: number;
    width?: Dimension | ((containerWidth: number) => Dimension);
  }
  export default IColumn;
}

declare module "react-declarative/components/Grid/model/IGridAction" {
  import { IActionMenuProps } from "react-declarative/components/ActionMenu";
  import IOption from "react-declarative/model/IOption";
  /**
   * Represents an interface for grid actions.
   * @template T - The type of the row data.
   */
  export interface IGridAction<T>
    extends Omit<
      IOption,
      keyof {
        isVisible: never;
        isDisabled: never;
      }
    > {
    isVisible?: (
      row: T,
      payload: IActionMenuProps["payload"],
    ) => boolean | Promise<boolean>;
    isDisabled?: (
      row: T,
      payload: IActionMenuProps["payload"],
    ) => boolean | Promise<boolean>;
  }
  export default IGridAction;
}

declare module "react-declarative/components/Grid/model/TSort" {
  import { IColumn } from "react-declarative/components/Grid/model/IColumn";
  /**
   * Represents a TSort object used for sorting data in a specific direction based on a column value.
   *
   * @template T - The type of the column value.
   */
  export type TSort<T> = {
    sortDirection: "ASC" | "DESC";
    value: IColumn<T>["field"];
  };
  export default TSort;
}

declare module "react-declarative/components/Grid/hooks/useGridProps" {
  import * as React from "react";
  import IGridProps from "react-declarative/components/Grid/model/IGridProps";
  export const useGridProps: () => IGridProps<any, any>;
  /**
   * Interface representing the props for the IGridPropsProvider component.
   */
  interface IGridPropsProviderProps {
    children: React.ReactNode;
    value: IGridProps;
  }
  /**
   * Provides Grid properties to its children.
   * @param props - The component props.
   * @param props.children - The child components to render.
   * @param props.value - The Grid properties value.
   * @returns - The rendered JSX.
   */
  export const GridPropsProvider: ({
    children,
    value,
  }: IGridPropsProviderProps) => JSX.Element;
  export default useGridProps;
}

declare module "react-declarative/components/Tile/Tile" {
  import ITileProps from "react-declarative/components/Tile/model/ITileProps";
  /**
   * Tile component for displaying a list of items in a virtual view.
   *
   * @template Data - The type of data in each tile item.
   * @template Payload - The type of additional payload data.
   * @param props - The props for the Tile component.
   * @param [props.className] - The CSS class name for the Tile component.
   * @param [props.style] - The inline style for the Tile component.
   * @param [props.sx] - The sx prop for the Tile component (System UI).
   * @param props.data - The array of data items to be rendered.
   * @param props.loading - Indicates if the tile list is currently loading data.
   * @param props.hasMore - Indicates if there are more items to load.
   * @param [props.bufferSize=10] - The number of items to render outside the visible area.
   * @param [props.minRowHeight=48] - The minimum height of each row item.
   * @param [props.payload={}] - Additional payload data to be passed to the TileItem component.
   * @param [props.rowColor=() => 'inherit'] - A function that returns the background color for each row item.
   * @param [props.rowKey="id"] - The key to use for identifying each row item.
   * @param [props.errorMessage] - The error message to display if there was an error loading data.
   * @param [props.children] - The child elements to be rendered within each TileItem component.
   * @param [props.onSkip] - A callback function to handle skipping to the next page of data.
   * @param [props.onButtonSkip] - A callback function to handle skipping to the next page of data when a button is clicked.
   * @param [props.onItemClick] - A callback function to handle when a row item is clicked.
   * @param [props.onSelectedRows] - A callback function to handle when a row item is selected.
   * @param [props.selectedRows] - The array of data items that are currently selected.
   * @param [props.selectionMode] - The selection mode for the Tile component (e.g., "single", "multiple").
   * @param [props.recomputeSubject] - The subject(s) to trigger recomputation of row heights.
   * @param [props.rowMark] - The key to use for identifying each row mark.
   * @returns The Tile component.
   */
  export const Tile: <Data extends unknown = any, Payload = any>({
    className,
    style,
    sx,
    itemSx,
    data,
    loading,
    hasMore,
    mode,
    bufferSize,
    minRowHeight,
    payload: upperPayload,
    rowKey,
    noDataLabel,
    errorMessage,
    children,
    onSkip,
    onButtonSkip,
    onItemClick,
    onSelectedRows,
    selectedRows,
    selectionMode,
    recomputeSubject,
    scrollXSubject,
    scrollYSubject,
    withHeader,
    headerLabel,
    rowMark,
    rowColor,
  }: ITileProps<Data, Payload>) => JSX.Element;
  export default Tile;
}

declare module "react-declarative/components/Tile/components/TileCheckbox" {
  import SelectionMode from "react-declarative/model/SelectionMode";
  interface ITileCheckboxProps {
    isSelected: boolean;
    selectionMode: SelectionMode;
    toggleSelection: () => void;
    disabled?: boolean;
  }
  export const TileCheckbox: ({
    isSelected,
    selectionMode,
    toggleSelection,
    disabled,
  }: ITileCheckboxProps) => JSX.Element;
  export default TileCheckbox;
}

declare module "react-declarative/components/Tile/model/TileMode" {
  /**
   * @enum {string} TileMode - Enumeration representing tile modes.
   * @readonly
   * @property Virtual - Virtual tile mode.
   * @property Intersection - Intersection tile mode.
   */
  export enum TileMode {
    Virtual = "virtual",
    Intersection = "intersection",
  }
  export default TileMode;
}

declare module "react-declarative/components/Tile/model/ITileProps" {
  import { SxProps } from "@mui/material";
  import IAnything from "react-declarative/model/IAnything";
  import SelectionMode from "react-declarative/model/SelectionMode";
  import TSubject from "react-declarative/model/TSubject";
  import ITile from "react-declarative/components/Tile/model/ITile";
  import TileMode from "react-declarative/components/Tile/model/TileMode";
  /**
   * Represents the properties required for the `ITile` component.
   *
   * @template Data - The type of data used in the tile.
   * @template Payload - The type of payload used in the tile.
   */
  export interface ITileProps<Data = IAnything, Payload = IAnything> {
    withHeader?: boolean;
    headerLabel?: string;
    mode?: TileMode;
    noDataLabel?: string;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    itemSx?: SxProps<any>;
    loading?: boolean;
    hasMore?: boolean;
    scrollYSubject?: TSubject<number>;
    scrollXSubject?: TSubject<number>;
    errorMessage?: string | null;
    bufferSize?: number;
    minRowHeight?: number;
    children: React.ComponentType<ITile<Data, Payload>>;
    rowKey?: string | number | symbol;
    payload?: Payload | (() => Payload);
    data: Data[];
    onSkip?: (initial: boolean) => void;
    onButtonSkip?: () => void;
    onItemClick?: (item: {
      data: Data;
      payload: Payload;
      isSelected: boolean;
      toggleSelection: () => void;
    }) => void;
    selectionMode?: SelectionMode;
    recomputeSubject?: TSubject<void>;
    rowMark?: ((row: Data) => string) | ((row: Data) => Promise<string>);
    rowColor?: ((row: Data) => string) | ((row: Data) => Promise<string>);
    onSelectedRows?: (rowIds: string[], initialChange: boolean) => void;
    selectedRows?: string[];
  }
  export default ITileProps;
}

declare module "react-declarative/components/Spinner/Spinner" {
  import { BoxProps } from "@mui/material/Box";
  /**
   * The `ISpinnerProps` interface represents the properties of the Spinner component.
   * It extends the `BoxProps` interface and excludes the `children` property.
   */
  interface ISpinnerProps
    extends Omit<
      BoxProps,
      keyof {
        children: never;
      }
    > {}
  /**
   * Represents a spinner component that displays a loading animation.
   * @component
   *
   * @param props - The props object for the spinner component.
   * @param props.className - The custom CSS class name for the spinner component.
   * @param props.otherProps - The additional props to be spread on the root Box element.
   *
   * @returns The spinner component.
   */
  export const Spinner: ({
    className,
    ...otherProps
  }: ISpinnerProps) => JSX.Element;
  export default Spinner;
}

declare module "react-declarative/components/Async/Async" {
  import * as React from "react";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents the properties for an asynchronous component.
   * @template T - The type of the payload.
   */
  export interface IAsyncProps<T extends any = object> {
    loading?: boolean;
    disabled?: boolean;
    reloadSubject?: TSubject<void>;
    children: (p: T) => Result | Promise<Result>;
    fallback?: (e: Error) => void;
    Loader?: React.ComponentType<any>;
    Error?: React.ComponentType<any>;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    payload?: T;
    deps?: any[];
    throwError?: boolean;
  }
  type Result = React.ReactNode | void;
  /**
   * Async
   * @template T - The type of the payload data.
   * @param params - The parameters object.
   * @param params.reloadSubject - The subject used to trigger a reload of the async data.
   * @param params.loading - A boolean indicating whether the async data is currently being loaded.
   * @param params.children - The children component that renders the async data.
   * @param params.fallback - The fallback component to render in case of an error.
   * @param params.Loader - The loader component to render while the async data is being loaded.
   * @param params.Error - The error component to render in case of an error.
   * @param params.onLoadStart - A function to be called when the async data loading starts.
   * @param params.onLoadEnd - A function to be called when the async data loading ends.
   * @param params.payload - The payload data to be passed to the children component.
   * @param params.deps - The dependencies of the async data.
   * @param params.throwError - A boolean indicating whether to throw an error in case of an error or to fallback.
   * @returns - The rendered component.
   */
  export const Async: <T extends unknown = object>({
    reloadSubject: upperReloadSubject,
    loading: upperLoading,
    disabled: upperDisabled,
    children,
    fallback,
    Loader,
    Error,
    onLoadStart,
    onLoadEnd,
    payload,
    deps,
    throwError,
  }: IAsyncProps<T>) => JSX.Element;
  export default Async;
}

declare module "react-declarative/components/Copy/Copy" {
  import * as React from "react";
  import { BoxProps } from "@mui/material/Box";
  /**
   * Represents an interface for copying properties.
   *
   * @interface
   */
  interface ICopyProps
    extends Omit<
      BoxProps,
      keyof {
        onCopy: never;
      }
    > {
    fullWidth?: boolean;
    transparent?: boolean;
    content: string;
    children?: React.ReactNode;
    onCopy?: (content: string) => void;
    onCopyClick?: () => void;
    fallback?: (e: Error) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    throwError?: boolean;
  }
  /**
   * Copy Component
   * @param className - Additional class name for the root element.
   * @param content - The text content to be copied.
   * @param fullWidth - If true, the component spans the full width of its container.
   * @param transparent - If true, the button appears without a border.
   * @param children - The content of the component.
   * @param onCopy - Callback function to be called when copying is triggered.
   * @param onCopyClick - Callback function to be called when the copy button is clicked.
   * @param onLoadStart - Callback function to be called when copying starts.
   * @param onLoadEnd - Callback function to be called when copying ends.
   * @param fallback - Callback function to be called when an error occurs during copying.
   * @param throwError - If true, an error during copying will cause an exception to be thrown.
   * @param otherProps - Additional props to be spread to the root element.
   * @returns
   */
  export const Copy: ({
    className,
    content,
    fullWidth,
    transparent,
    children,
    onCopy,
    onCopyClick,
    onLoadStart,
    onLoadEnd,
    fallback,
    throwError,
    ...otherProps
  }: ICopyProps) => JSX.Element;
  export default Copy;
}

declare module "react-declarative/components/If/If" {
  import * as React from "react";
  /**
   * Represents the props for the IIf component.
   *
   * @template T - The type of the payload.
   */
  export interface IIfProps<T extends any = object> {
    Else?: React.ReactNode;
    Loading?: React.ReactNode;
    condition: boolean | ((payload: T) => boolean | Promise<boolean>);
    children: React.ReactNode;
    fallback?: (e: Error) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    payload?: T;
    deps?: any[];
    throwError?: boolean;
  }
  /**
   * A conditional rendering component with asynchronous support.
   *
   * @template T - The type of payload passed to the condition.
   * @param props - The props object.
   * @param props.Else - The content to render if the condition is false and not loading.
   * @param [props.Loading=props.Else] - The content to render while loading.
   * @param props.children - The content to render if the condition is true.
   * @param props.condition - The condition to evaluate. Can be a function that accepts the payload or a static value.
   * @param [props.fallback] - The function to call if an error occurs and `throwError` is false.
   * @param [props.onLoadStart] - The function to call when loading starts.
   * @param [props.onLoadEnd] - The function to call when loading ends. Receives a boolean indicating if the operation was successful.
   * @param [props.payload] - The payload to pass to the condition function.
   * @param [props.deps=[]] - The dependencies to include in the useEffect hook.
   * @param [props.throwError=false] - Whether to throw an error or call the fallback function if an error occurs.
   * @returns - The rendered content based on the condition and loading state.
   */
  export const If: <T extends unknown = object>({
    Else,
    Loading,
    children,
    condition,
    fallback,
    onLoadStart,
    onLoadEnd,
    payload,
    deps,
    throwError,
  }: IIfProps<T>) => JSX.Element;
  export default If;
}

declare module "react-declarative/components/Map/Map" {
  import type mapboxglInternal from "mapbox-gl";
  import { BoxProps } from "@mui/material/Box";
  global {
    var mapboxgl: typeof mapboxglInternal;
  }
  interface IPosition {
    lng: number;
    lat: number;
  }
  interface IMapProps
    extends Omit<
      BoxProps,
      keyof {
        onChange: never;
      }
    > {
    withZoomAdjust?: boolean;
    readonly?: boolean;
    value?: IPosition;
    zoom?: number;
    token?: string;
    onChange?: (position: IPosition) => void;
  }
  export const Map: ({
    withZoomAdjust,
    value: pos,
    readonly,
    zoom,
    token,
    onChange,
    ...otherProps
  }: IMapProps) => JSX.Element;
  export default Map;
}

declare module "react-declarative/components/CopyButton/CopyButton" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  /**
   * Represents the properties for the CopyButton component.
   *
   * @interface ICopyButtonProps
   */
  interface ICopyButtonProps {
    disabled?: boolean;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    delay?: number;
    onClick?: (
      e: React.MouseEvent<HTMLButtonElement>,
      doCopy: () => void,
    ) => void;
    onCopy?: (content: string) => void;
    startIcon?: React.ReactNode;
    variant?: "text" | "outlined" | "contained";
    size?: "small" | "medium" | "large";
    color?:
      | "inherit"
      | "primary"
      | "secondary"
      | "success"
      | "error"
      | "info"
      | "warning";
    content: string | number;
    label?: string | number;
  }
  /**
   * Represents a copy button component.
   *
   * @typedef ICopyButtonProps
   * @property disabled - Determines if the button is disabled.
   * @property className - The class name for the button.
   * @property style - The inline style for the button.
   * @property sx - The custom style for the button using the sx prop from the Material-UI theme.
   * @property onClick - The click event handler for the button.
   * @property delay - The delay before the tooltip closes.
   * @property variant - The variant type of the button.
   * @property size - The size of the button.
   * @property color - The color of the button.
   * @property startIcon - The start icon component of the button.
   * @property content - The content of the button.
   * @property label - The label text of the button.
   */
  export const CopyButton: ({
    disabled,
    className,
    style,
    sx,
    onClick,
    content,
    onCopy,
    delay,
    variant,
    size,
    color,
    startIcon,
    label,
  }: ICopyButtonProps) => JSX.Element;
  export default CopyButton;
}

declare module "react-declarative/components/SubjectBinding/SubjectBinding" {
  import * as React from "react";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents the properties for the SubjectBinding component.
   */
  interface ISubjectBindingProps {
    target?: TSubject<any>;
    children: React.ReactNode;
  }
  /**
   * A React component that binds to a subject and updates when the subject emits a value.
   *
   * @extends React.Component
   */
  export class SubjectBinding extends React.Component<ISubjectBindingProps> {
    componentDidMount: () => void;
    componentWillUnmount: () => void;
    render: () => JSX.Element;
  }
  export default SubjectBinding;
}

declare module "react-declarative/components/Countdown/Countdown" {
  import * as React from "react";
  import { BoxProps } from "@mui/material/Box";
  /**
   * Interface for the Countdown component props.
   */
  export interface ICountdownProps extends BoxProps {
    children?: React.ReactNode;
    expireAt: string | number | Date;
    onExpire?: () => void;
  }
  /**
   * Countdown component displays a countdown timer that expires at a given time.
   *
   * @typedef  ICountdownProps
   * @property className - The CSS class name for styling the component.
   * @} children - The content to be displayed inside the countdown component.
   * @property expireAt - The time at which the countdown expires.
   * @property onExpire - The callback function to be called when the countdown expires.
   * @property otherProps - Additional props to be spread onto the root element.
   *
   * @param props - The countdown component props.
   * @returns - The countdown component.
   */
  export const Countdown: ({
    className,
    children,
    expireAt,
    onExpire,
    ...otherProps
  }: ICountdownProps) => JSX.Element;
  export default Countdown;
}

declare module "react-declarative/components/Chip/Chip" {
  import { ChipProps } from "@mui/material/Chip";
  /**
   * Interface for extending the `ChipProps` with an optional `color` property.
   */
  interface IChipProps
    extends Omit<
      ChipProps,
      keyof {
        color: never;
      }
    > {
    color?: string;
  }
  /**
   * Represents a Chip component with customized color.
   *
   * @param props - The props passed to the Chip component.
   * @param props.color - The color of the chip. Overrides the primary color of the theme.
   * @param props.otherProps - Additional props passed to the underlying MatChip component.
   * @param props.otherProps - Additional props passed to the underlying MatChip component.
   *
   * @returns The rendered Chip component.
   */
  export const Chip: ({ color, ...otherProps }: IChipProps) => JSX.Element;
  export default Chip;
}

declare module "react-declarative/components/ScrollAdjust/ScrollAdjust" {
  import React from "react";
  type Height = Exclude<React.CSSProperties["height"], undefined>;
  /**
   * Represents a component that adjusts the scroll behavior based on certain conditions.
   *
   * @returns - The adjusted scroll component.
   */
  export const ScrollAdjust: {
    (): JSX.Element;
    /**
     * Sets the value to adjust the scroll force.
     *
     * @param force - The force to adjust the scroll.
     */
    setAdjustForce(force: boolean): void;
    /**
     * Sets the adjustment height for scrollbars.
     *
     * @param adjustHeight - The height to adjust the scrollbars.
     * @returns
     */
    setAdjustHeight(height: Height): void;
    /**
     * Sets the adjustment filler for ScrollAdjust component.
     *
     * @param filler - The HTML element to be used as adjustment filler.
     */
    setAdjustFiller(element: React.ComponentType<any>): void;
  };
  export default ScrollAdjust;
}

declare module "react-declarative/components/MasterDetail/MasterDetail" {
  import IMasterDetailProps from "react-declarative/components/MasterDetail/model/IMasterDetailProps";
  /**
   * Represents a master-detail component with various modes and customizations.
   * @template Payload - The payload type for the component.
   * @param props - The component props.
   * @param props.mode - The mode of the component. Default is MasterDetailMode.Card.
   * @param props.withTransparentTabs - Specifies whether to use transparent tabs. Default is false.
   * @param props.withMenuCollapse - Specifies whether to enable menu collapse. Default is false.
   * @param props.withFixedPos - Specifies whether to fix the position. Default is false.
   * @param props.fixedPosHeaderAdjust - The adjustment value for the fixed position header. Default is 0.
   * @param props.title - The title of the component.
   * @param props.className - The class name for the component.
   * @param props.style - The inline style object for the component.
   * @param props.sx - The theme-ui styles for the component.
   * @param props.activeOption - The initially active option ID.
   * @param props.payload - The payload for the component.
   * @param props.deps - The dependencies array for the component.
   * @param props.options - The options array for generating master-detail items.
   * @param props.children - The child components.
   * @param props.Loader - The loader component to show during async actions. Default is LoaderDefault.
   * @param props.Error - The error component to show when an error occurs during async actions. Default is ErrorDefault.
   * @param props.onActiveOptionChange - The callback function to handle active option change.
   * @param props.fallback - The fallback component to show when there are no items available.
   * @param props.onLoadStart - The callback function to execute when the async action starts.
   * @param props.onLoadEnd - The callback function to execute when the async action ends.
   * @param props.throwError - Specifies whether to throw an error during async actions.
   * @returns - The rendered component.
   */
  export const MasterDetail: <Payload extends unknown = any>({
    mode,
    withTransparentTabs,
    withMenuCollapse,
    withFixedPos,
    fixedPosHeaderAdjust,
    title,
    className,
    style,
    sx,
    activeOption: upperActiveOption,
    payload,
    deps,
    options,
    children,
    Loader,
    Error,
    onActiveOptionChange,
    fallback,
    onLoadStart,
    onLoadEnd,
    throwError,
  }: IMasterDetailProps<Payload>) => JSX.Element;
  export default MasterDetail;
}

declare module "react-declarative/components/MasterDetail/config" {
  export const MASTER_DETAIL_ROOT = "react-declatative__master-detail-root";
  export const MASTER_DETAIL_HEADER = "react-declatative__master-detail-header";
}

declare module "react-declarative/components/MasterDetail/model/IMasterDetailOption" {
  import React from "react";
  /**
   * Represents a configuration option for a master-detail component.
   * @template Payload - The type of payload that the option functions will receive.
   */
  export interface IMasterDetailOption<Payload = any> {
    id: string;
    icon?: React.ComponentType<any>;
    label?: string;
    isVisible?: (payload: Payload) => boolean | Promise<boolean>;
    isDisabled?: (payload: Payload) => boolean | Promise<boolean>;
    isActive?: (payload: Payload) => boolean | Promise<boolean>;
  }
  /**
   * Represents an internal interface for a master-detail option.
   *
   * @template Payload - The type of payload associated with the option.
   */
  export interface IMasterDetailOptionInternal<Payload = any>
    extends Omit<
      IMasterDetailOption<Payload>,
      keyof {
        isVisible: never;
        isDisabled: never;
        isActive: never;
      }
    > {
    visible: boolean;
    disabled: boolean;
    active: boolean;
  }
  export default IMasterDetailOption;
}

declare module "react-declarative/components/MasterDetail/model/MasterDetailMode" {
  /**
   * Represents the available modes for a master-detail view.
   */
  export enum MasterDetailMode {
    Paper = "paper",
    Outline = "outline",
    Card = "card",
    Tabs = "tabs",
  }
  export default MasterDetailMode;
}

declare module "react-declarative/components/common/Group" {
  export * from "react-declarative/components/common/Group/Group";
  export { default } from "react-declarative/components/common/Group/Group";
}

declare module "react-declarative/components/common/Outline" {
  export * from "react-declarative/components/common/Outline/Outline";
  export { default } from "react-declarative/components/common/Outline/Outline";
}

declare module "react-declarative/components/common/Paper" {
  export * from "react-declarative/components/common/Paper/Paper";
  export { default } from "react-declarative/components/common/Paper/Paper";
}

declare module "react-declarative/components/common/Expansion" {
  export * from "react-declarative/components/common/Expansion/Expansion";
  export { default } from "react-declarative/components/common/Expansion/Expansion";
}

declare module "react-declarative/components/SearchView/model/ISearchItemProps" {
  import IAnything from "react-declarative/model/IAnything";
  import ISearchItem from "react-declarative/components/SearchView/model/ISearchItem";
  /**
   * Represents the properties for a search item.
   *
   * @template T - The data type for the search item.
   */
  export interface ISearchItemProps<T extends IAnything = IAnything>
    extends Omit<
      ISearchItem,
      keyof {
        data: never;
      }
    > {
    disabled: boolean;
    payload: IAnything;
    data: T;
  }
  export default ISearchItemProps;
}

declare module "react-declarative/components/SearchView/model/ISearchInputProps" {
  import ISearchViewProps from "react-declarative/components/SearchView/model/ISearchViewProps";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents the properties for the SearchInput component.
   */
  export interface ISearchInputProps {
    placeholder?: string;
    type: Exclude<ISearchViewProps["type"], undefined>;
    mode: Exclude<ISearchViewProps["mode"], undefined>;
    autoComplete: ISearchViewProps["autoComplete"];
    pattern: ISearchViewProps["pattern"];
    reloadSubject: TSubject<void>;
    onTextChange: (value: string) => void;
    loading: boolean;
    getValue: () => string;
  }
  export default ISearchInputProps;
}

declare module "react-declarative/components/SearchView/model/ICreateButtonProps" {
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents the properties for creating a button.
   */
  export interface ICreateButtonProps {
    search: string;
    payload: IAnything;
  }
  export default ICreateButtonProps;
}

declare module "react-declarative/components/List/slots/ActionAddSlot" {
  export * from "react-declarative/components/List/slots/ActionAddSlot/IActionAddSlot";
  export * from "react-declarative/components/List/slots/ActionAddSlot/ActionAddSlot";
  export { default } from "react-declarative/components/List/slots/ActionAddSlot/ActionAddSlot";
}

declare module "react-declarative/components/List/slots/ActionFabSlot" {
  export * from "react-declarative/components/List/slots/ActionFabSlot/IActionFabSlot";
  export * from "react-declarative/components/List/slots/ActionFabSlot/ActionFabSlot";
  export { default } from "react-declarative/components/List/slots/ActionFabSlot/ActionFabSlot";
}

declare module "react-declarative/components/List/slots/ActionMenuSlot" {
  export * from "react-declarative/components/List/slots/ActionMenuSlot/IActionMenuSlot";
  export * from "react-declarative/components/List/slots/ActionMenuSlot/ActionMenuSlot";
  export { default } from "react-declarative/components/List/slots/ActionMenuSlot/ActionMenuSlot";
}

declare module "react-declarative/components/List/slots/BodyRowSlot" {
  export * from "react-declarative/components/List/slots/BodyRowSlot/IBodyRowSlot";
  export * from "react-declarative/components/List/slots/BodyRowSlot/BodyRowSlot";
  export { default } from "react-declarative/components/List/slots/BodyRowSlot/BodyRowSlot";
}

declare module "react-declarative/components/List/slots/CheckboxCellSlot" {
  export * from "react-declarative/components/List/slots/CheckboxCellSlot/ICheckboxCellSlot";
  export * from "react-declarative/components/List/slots/CheckboxCellSlot/CheckboxCellSlot";
  export { default } from "react-declarative/components/List/slots/CheckboxCellSlot/CheckboxCellSlot";
}

declare module "react-declarative/components/List/slots/CommonCellSlot" {
  export * from "react-declarative/components/List/slots/CommonCellSlot/ICommonCellSlot";
  export * from "react-declarative/components/List/slots/CommonCellSlot/CommonCellSlot";
  export { default } from "react-declarative/components/List/slots/CommonCellSlot/CommonCellSlot";
}

declare module "react-declarative/components/List/slots/HeadRowSlot" {
  export * from "react-declarative/components/List/slots/HeadRowSlot/IHeadRowSlot";
  export * from "react-declarative/components/List/slots/HeadRowSlot/HeadRowSlot";
  export { default } from "react-declarative/components/List/slots/HeadRowSlot/HeadRowSlot";
}

declare module "react-declarative/components/List/slots/ActionListSlot" {
  export * from "react-declarative/components/List/slots/ActionListSlot/IActionListSlot";
  export * from "react-declarative/components/List/slots/ActionListSlot/ActionListSlot";
  export { default } from "react-declarative/components/List/slots/ActionListSlot/ActionListSlot";
}

declare module "react-declarative/components/List/slots/ChipListSlot" {
  export * from "react-declarative/components/List/slots/ChipListSlot/IChipListSlot";
  export * from "react-declarative/components/List/slots/ChipListSlot/ChipListSlot";
  export { default } from "react-declarative/components/List/slots/ChipListSlot/ChipListSlot";
}

declare module "react-declarative/components/List/slots/FilterListSlot" {
  export * from "react-declarative/components/List/slots/FilterListSlot/IFilterListSlot";
  export * from "react-declarative/components/List/slots/FilterListSlot/FilterListSlot";
  export { default } from "react-declarative/components/List/slots/FilterListSlot/FilterListSlot";
}

declare module "react-declarative/components/List/slots/OperationListSlot" {
  export * from "react-declarative/components/List/slots/OperationListSlot/IOperationListSlot";
  export * from "react-declarative/components/List/slots/OperationListSlot/OperationListSlot";
  export { default } from "react-declarative/components/List/slots/OperationListSlot/OperationListSlot";
}

declare module "react-declarative/components/List/slots/SearchSlot" {
  export * from "react-declarative/components/List/slots/SearchSlot/ISearchSlot";
  export * from "react-declarative/components/List/slots/SearchSlot/SearchSlot";
  export { default } from "react-declarative/components/List/slots/SearchSlot/SearchSlot";
}

declare module "react-declarative/components/List/components/SlotFactory/SlotFactory" {
  import * as React from "react";
  import ISlotFactoryContext from "react-declarative/components/List/components/SlotFactory/ISlotFactoryContext";
  /**
   * Interface for the props of the SlotFactory component.
   */
  interface ISlotFactoryProps extends Partial<ISlotFactoryContext> {
    children: React.ReactNode;
  }
  /**
   * SlotFactory - A factory function to create slots for a given SlotContext.
   *
   * @param props - The props for the SlotFactory.
   * @param props.children - The children to render within the SlotFactory.
   * @param props.currentSlots - The slots to be added/overridden within the SlotFactory.
   *
   * @returns The rendered children within the SlotFactory.
   */
  export const SlotFactory: ({
    children,
    ...currentSlots
  }: Partial<ISlotFactoryProps>) => JSX.Element;
  export default SlotFactory;
}

declare module "react-declarative/components/List/components/SlotFactory/SlotContext" {
  import ISlotFactoryContext from "react-declarative/components/List/components/SlotFactory/ISlotFactoryContext";
  /**
   * @description Variable holding an array of default slot components.
   */
  export const defaultSlots: {
    BodyRow: <RowData extends import("../../../..").IRowData = any>(
      props: import("../..").IBodyRowSlot<RowData>,
    ) => JSX.Element;
    CheckboxCell: <RowData_1 extends import("../../../..").IRowData = any>({
      row,
      disabled,
    }: import("./components/CheckboxCell").ICheckboxCellProps<RowData_1>) => JSX.Element;
    CommonCell: <RowData_2 extends import("../../../..").IRowData = any>({
      column,
      row,
      disabled,
      onMenuToggle,
      onAction,
    }: import("../..").ICommonCellSlot<RowData_2>) => any;
    HeadRow: (props: import("../..").IHeadRowSlot<any>) => JSX.Element;
    ActionAdd: ({
      action,
      width,
      label,
      isVisible,
      isDisabled,
    }: import("../..").IActionAddSlot<any, any>) => JSX.Element;
    ActionMenu: ({
      options,
      deps,
    }: import("../..").IActionMenuSlot) => JSX.Element | null;
    ActionFab: ({
      action,
      label,
      width,
      icon: Icon,
      isVisible,
      isDisabled,
    }: import("../..").IActionFabSlot<any, any>) => JSX.Element;
    ChipListSlot: (props: import("../..").IChipListSlot<any>) => JSX.Element;
    ActionListSlot: <FilterData extends {}>({
      className,
      actions,
      style,
      title,
      height,
      width,
      deps,
    }: import("../..").IActionListSlot<FilterData>) => JSX.Element;
    FilterListSlot: <FilterData_1 extends {}>({
      className,
      style,
      height,
      filterData,
      filters,
      change,
      label,
      loading,
      withSearch,
      withToggledFilters,
      search,
      onSearchChange,
      onFilterChange,
      onCollapsedChange,
    }: import("../..").IFilterListSlot<FilterData_1>) => JSX.Element;
    OperationListSlot: ({
      className,
      style,
      operations,
      width,
    }: import("../..").IOperationListSlot) => JSX.Element;
    SearchSlot: ({
      className,
      style,
      label,
      loading,
      search,
      onSearchChange,
    }: import("../..").ISearchSlot) => JSX.Element;
    DesktopBodyRow: <RowData_3 extends import("../../../..").IRowData = any>({
      row,
      mode,
      columns,
      disabled,
      fullWidth,
    }: import("../..").IBodyRowSlot<RowData_3>) => JSX.Element;
    MobileBodyRow: <RowData_4 extends import("../../../..").IRowData = any>({
      row,
      mode,
      disabled,
      columns,
      fullWidth,
    }: import("../..").IBodyRowSlot<RowData_4>) => JSX.Element;
  };
  export const SlotContext: import("react").Context<ISlotFactoryContext>;
  export default SlotContext;
}

declare module "react-declarative/components/List/components/SlotFactory/ISlotFactoryContext" {
  import { ComponentType } from "react";
  import { IBodyRowSlot } from "react-declarative/components/List/slots/BodyRowSlot";
  import { ICheckboxCellSlot } from "react-declarative/components/List/slots/CheckboxCellSlot";
  import { ICommonCellSlot } from "react-declarative/components/List/slots/CommonCellSlot";
  import { IHeadRowSlot } from "react-declarative/components/List/slots/HeadRowSlot";
  import { IActionAddSlot } from "react-declarative/components/List/slots/ActionAddSlot";
  import { IActionMenuSlot } from "react-declarative/components/List/slots/ActionMenuSlot";
  import { IActionFabSlot } from "react-declarative/components/List/slots/ActionFabSlot";
  import { IActionListSlot } from "react-declarative/components/List/slots/ActionListSlot";
  import { IChipListSlot } from "react-declarative/components/List/slots/ChipListSlot";
  import { IFilterListSlot } from "react-declarative/components/List/slots/FilterListSlot";
  import { IOperationListSlot } from "react-declarative/components/List/slots/OperationListSlot";
  import { ISearchSlot } from "react-declarative/components/List/slots/SearchSlot";
  /**
   * Interface representing the context for the Slot Factory.
   *
   * @interface ISlotFactoryContext
   */
  export interface ISlotFactoryContext {
    DesktopBodyRow: ComponentType<IBodyRowSlot>;
    MobileBodyRow: ComponentType<IBodyRowSlot>;
    BodyRow: ComponentType<IBodyRowSlot>;
    CheckboxCell: ComponentType<ICheckboxCellSlot>;
    CommonCell: ComponentType<ICommonCellSlot>;
    HeadRow: ComponentType<IHeadRowSlot>;
    ActionAdd: ComponentType<IActionAddSlot>;
    ActionFab: ComponentType<IActionFabSlot>;
    ActionMenu: ComponentType<IActionMenuSlot>;
    ActionListSlot: ComponentType<IActionListSlot>;
    FilterListSlot: ComponentType<IFilterListSlot>;
    ChipListSlot: ComponentType<IChipListSlot>;
    OperationListSlot: ComponentType<IOperationListSlot>;
    SearchSlot: ComponentType<ISearchSlot>;
  }
  export default ISlotFactoryContext;
}

declare module "react-declarative/components/List/common/DenseFilterListSlot/DenseFilterListSlot" {
  import { IFilterListSlot } from "react-declarative/components/List/slots/FilterListSlot";
  export const DenseFilterListSlot: ({
    className,
    style,
    filterData,
    filters,
    change,
    label,
    loading,
    withSearch,
    withToggledFilters,
    search,
    height,
    width,
    onSearchChange,
    onFilterChange,
  }: IFilterListSlot) => JSX.Element;
  export default DenseFilterListSlot;
}

declare module "react-declarative/components/List/common/DenseSearchSlot/DenseSearchSlot" {
  import { ISearchSlot } from "react-declarative/components/List/slots/SearchSlot";
  /**
   * Represents a search input component with label, loading state, and search functionality.
   * @param props - The properties of the SearchSlot component.
   * @param props.className - The additional CSS class name for the root element of the component.
   * @param props.style - The inline CSS style object for the root element of the component.
   * @param props.label - The label text for the search input component.
   * @param props.loading - The loading state of the search input component.
   * @param props.search - The current search value of the search input component.
   * @param props.onSearchChange - The callback function triggered when the search value changes.
   * @returns - The rendered SearchSlot component.
   */
  export const DenseSearchSlot: ({
    className,
    style,
    label,
    loading,
    search,
    height,
    width,
    onSearchChange,
  }: ISearchSlot) => JSX.Element;
  export default DenseSearchSlot;
}

declare module "react-declarative/components/List/rules/denceFilterRule" {
  import { ISlotFactoryContext } from "react-declarative/components/List/components/SlotFactory";
  export const denceFilterRule: Partial<ISlotFactoryContext>;
  export default denceFilterRule;
}

declare module "react-declarative/components/common/ItemModal/ItemModal" {
  import IField from "react-declarative/model/IField";
  import IManaged from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  export interface IItemModalProps {
    _autofocusDelay?: number;
    type: Exclude<IField["type"], undefined>;
    onValueChange: Exclude<IManaged["onChange"], undefined>;
    value: IAnything;
    data: IAnything;
    payload: IAnything;
    title: IField["title"];
    placeholder: IField["placeholder"];
    tip: IField["tip"];
    tr: IField["tr"];
    keepRaw: IField["keepRaw"];
    itemList: IField["itemList"];
  }
  export const ItemModal: ({
    _autofocusDelay,
    type,
    data,
    payload,
    itemList,
    tip,
    tr,
    keepRaw,
    value,
    title,
    placeholder,
    onValueChange,
  }: IItemModalProps) => JSX.Element;
  export default ItemModal;
}

declare module "react-declarative/components/One/components/SlotFactory/SlotFactory" {
  import * as React from "react";
  import ISlotFactoryContext from "react-declarative/components/One/components/SlotFactory/ISlotFactoryContext";
  /**
   * Represents the properties for the ISlotFactory component.
   * @interface
   */
  interface ISlotFactoryProps extends Partial<ISlotFactoryContext> {
    children: React.ReactNode;
  }
  /**
   * SlotFactory function
   * @param param - Slots prop for SlotFactory
   * @param param.children - React node to be rendered as children
   * @returns React node containing the children with the provided slots
   */
  export const SlotFactory: ({
    children,
    ...currentSlots
  }: Partial<ISlotFactoryProps>) => JSX.Element;
  export default SlotFactory;
}

declare module "react-declarative/components/One/components/SlotFactory/SlotContext" {
  import ISlotFactoryContext from "react-declarative/components/One/components/SlotFactory/ISlotFactoryContext";
  /**
   * @description A list of default slots for a component.
   * @type {Array}
   * @property Checkbox Slot for a checkbox component.
   * @property Combo Slot for a comboBox component.
   * @property Items Slot for an items component.
   * @property Line Slot for a line component.
   * @property Radio Slot for a radio component.
   * @property Rating Slot for a rating component.
   * @property Progress Slot for a progress component.
   * @property Typography Slot for a typography component.
   * @property Text Slot for a text component.
   * @property Date Slot for a date component.
   * @property Time Slot for a time component.
   * @property Switch Slot for a switch component.
   * @property Slider Slot for a slider component.
   * @property File Slot for a file component.
   * @property Choose Slot for a choose component.
   * @property Complete Slot for a complete component.
   * @property YesNo Slot for a yes/no component.
   * @property Dict Slot for a dictionary component.
   * @property Tree Slot for a tree component.
   */
  export const defaultSlots: {
    CheckBox: ({
      disabled,
      onChange,
      title,
      value,
    }: import("../..").ICheckBoxSlot) => JSX.Element;
    Combo: ({
      value: upperValue,
      disabled,
      readonly,
      description,
      placeholder,
      outlined,
      itemList,
      virtualListBox,
      watchItemList,
      labelShrink,
      noDeselect,
      freeSolo,
      loading: upperLoading,
      title,
      dirty,
      invalid,
      incorrect,
      fieldReadonly,
      withContextMenu,
      tr,
      onChange,
    }: import("../..").IComboSlot) => JSX.Element;
    Items: ({
      value: upperValue,
      disabled,
      readonly,
      description,
      placeholder,
      outlined,
      itemList,
      freeSolo,
      noDeselect,
      virtualListBox,
      watchItemList,
      labelShrink,
      loading: upperLoading,
      dirty,
      invalid,
      incorrect,
      title,
      fieldReadonly,
      tr,
      onChange,
      withContextMenu,
    }: import("../..").IItemsSlot) => JSX.Element;
    Line: ({
      title,
      lineTransparent,
    }: import("../..").ILineSlot) => JSX.Element;
    Radio: ({
      disabled,
      onChange,
      title,
      readonly,
      radioValue,
      value,
      name,
    }: import("../..").IRadioSlot) => JSX.Element;
    Rating: ({
      value,
      disabled,
      readonly,
      onChange,
    }: import("../..").IRatingSlot) => JSX.Element;
    Progress: ({
      maxPercent,
      showPercentLabel,
      value,
    }: import("../..").IProgressSlot) => JSX.Element;
    Typography: ({
      value,
      placeholder,
      typoVariant,
      style,
    }: import("../..").ITypographySlot) => JSX.Element;
    Button: ({
      disabled,
      click,
      icon: Icon,
      title,
      value,
      placeholder,
      buttonVariant,
      buttonSize,
      buttonColor,
    }: import("../..").IButtonSlot) => JSX.Element;
    Text: ({
      invalid,
      incorrect,
      value,
      disabled,
      readonly,
      inputType,
      inputMode,
      inputPattern,
      labelShrink,
      description,
      outlined,
      title,
      leadingIcon: li,
      trailingIcon: ti,
      leadingIconClick: lic,
      trailingIconClick: tic,
      leadingIconTabIndex,
      trailingIconTabIndex,
      leadingIconRipple: lir,
      trailingIconRipple: tir,
      inputRows: rows,
      placeholder,
      inputAutocomplete: autoComplete,
      inputFormatterSymbol: symbol,
      inputFormatterAllowed: allowed,
      inputFormatterReplace: replace,
      inputFormatterTemplate: template,
      inputFormatter,
      dirty,
      loading,
      autoFocus,
      inputRef,
      onChange,
    }: import("../..").ITextSlot) => JSX.Element;
    Icon: ({
      disabled,
      click,
      icon: Icon,
      iconSize,
      iconColor,
      iconBackground,
    }: import("../../slots/IconSlot").IIconSlot) => JSX.Element;
    Date: ({
      invalid,
      incorrect,
      value: upperValue,
      disabled,
      readonly,
      description,
      outlined,
      title,
      placeholder,
      labelShrink,
      dirty,
      autoFocus,
      inputRef,
      onChange,
      withContextMenu,
    }: import("../..").IDateSlot) => JSX.Element;
    Time: ({
      invalid,
      incorrect,
      value: upperValue,
      disabled,
      readonly,
      description,
      outlined,
      title,
      labelShrink,
      placeholder,
      dirty,
      autoFocus,
      inputRef,
      onChange,
      withContextMenu,
    }: import("../..").ITimeSlot) => JSX.Element;
    Switch: ({
      disabled,
      value,
      onChange,
      title,
      switchNoColor,
      switchActiveLabel,
    }: import("../..").ISwitchSlot) => JSX.Element;
    Slider: ({
      value,
      onChange,
      leadingIcon: li,
      trailingIcon: ti,
      leadingIconClick: lic,
      trailingIconClick: tic,
      leadingIconTabIndex,
      trailingIconTabIndex,
      leadingIconRipple: lir,
      trailingIconRipple: tir,
      labelFormatSlider,
      stepSlider,
      disabled,
      readonly,
      maxSlider,
      minSlider,
    }: import("../..").ISliderSlot) => JSX.Element;
    File: ({
      invalid,
      incorrect,
      value,
      disabled,
      readonly,
      description,
      outlined,
      labelShrink,
      title,
      placeholder,
      dirty,
      loading: upperLoading,
      inputRef,
      onChange,
      fileAccept,
      name,
      upload,
      view,
    }: import("../..").IFileSlot) => JSX.Element;
    Choose: ({
      invalid,
      incorrect,
      value,
      disabled,
      readonly,
      description,
      outlined,
      title,
      placeholder,
      labelShrink,
      dirty,
      loading: upperLoading,
      inputRef,
      onChange,
      choose,
      tr,
    }: import("../..").IChooseSlot) => JSX.Element;
    Complete: ({
      invalid,
      incorrect,
      value,
      disabled,
      readonly,
      inputType,
      inputMode,
      inputPattern,
      labelShrink,
      description,
      outlined,
      keepRaw,
      title,
      placeholder,
      inputAutocomplete: autoComplete,
      dirty,
      loading: upperLoading,
      tip,
      tipSelect,
      autoFocus,
      onChange,
      fieldReadonly,
      inputFormatterSymbol: symbol,
      inputFormatterAllowed: allowed,
      inputFormatterReplace: replace,
      inputFormatterTemplate: template,
      inputFormatter,
      withContextMenu,
    }: import("../..").ICompleteSlot) => JSX.Element;
    YesNo: ({
      value: upperValue,
      disabled,
      readonly,
      description,
      placeholder,
      outlined,
      virtualListBox,
      labelShrink,
      noDeselect,
      title,
      tr,
      dirty,
      invalid,
      incorrect,
      onChange,
    }: import("../..").IYesNoSlot) => JSX.Element;
    Dict: ({
      invalid,
      incorrect,
      value,
      disabled,
      readonly,
      inputType,
      inputMode,
      inputPattern,
      inputAutocomplete,
      description,
      outlined,
      title,
      placeholder,
      dirty,
      loading,
      inputRef,
      onChange,
      dictLimit,
      dictDelay,
      dictOnText,
      dictOnItem,
      dictSearch,
      dictValue,
      dictSearchText,
      dictOnAppend,
      dictSearchItem,
      dictCreateButton,
      inputFormatterSymbol: symbol,
      inputFormatterAllowed: allowed,
      inputFormatterReplace: replace,
      inputFormatterTemplate: template,
      inputFormatter,
      leadingIcon: li,
      trailingIcon: ti,
      leadingIconClick: lic,
      trailingIconClick: tic,
      leadingIconRipple: lir,
      trailingIconRipple: tir,
      leadingIconTabIndex,
      trailingIconTabIndex,
    }: import("../..").IDictSlot) => JSX.Element;
    Tree: ({
      invalid,
      incorrect,
      value,
      disabled,
      readonly,
      description,
      outlined,
      title,
      placeholder,
      dirty,
      loading: upperLoading,
      onChange,
      itemTree,
    }: import("../..").ITreeSlot) => JSX.Element;
  };
  export const SlotContext: import("react").Context<ISlotFactoryContext>;
  export default SlotContext;
}

declare module "react-declarative/components/One/components/SlotFactory/ISlotFactoryContext" {
  import { ComponentType } from "react";
  import { IProgressSlot } from "react-declarative/components/One/slots/ProgressSlot";
  import { ICheckBoxSlot } from "react-declarative/components/One/slots/CheckBoxSlot";
  import { IItemsSlot } from "react-declarative/components/One/slots/ItemsSlot";
  import { IComboSlot } from "react-declarative/components/One/slots/ComboSlot";
  import { ILineSlot } from "react-declarative/components/One/slots/LineSlot";
  import { IRadioSlot } from "react-declarative/components/One/slots/RadioSlot";
  import { IRatingSlot } from "react-declarative/components/One/slots/RatingSlot";
  import { ITypographySlot } from "react-declarative/components/One/slots/TypographySlot";
  import { ITextSlot } from "react-declarative/components/One/slots/TextSlot";
  import { IDateSlot } from "react-declarative/components/One/slots/DateSlot";
  import { ITimeSlot } from "react-declarative/components/One/slots/TimeSlot";
  import { ISwitchSlot } from "react-declarative/components/One/slots/SwitchSlot";
  import { ISliderSlot } from "react-declarative/components/One/slots/SliderSlot";
  import { IFileSlot } from "react-declarative/components/One/slots/FileSlot/IFileSlot";
  import { IChooseSlot } from "react-declarative/components/One/slots/ChooseSlot";
  import { ICompleteSlot } from "react-declarative/components/One/slots/CompleteSlot";
  import { IYesNoSlot } from "react-declarative/components/One/slots/YesNoSlot";
  import { IDictSlot } from "react-declarative/components/One/slots/DictSlot";
  import { ITreeSlot } from "react-declarative/components/One/slots/TreeSlot";
  import { IButtonSlot } from "react-declarative/components/One/slots/ButtonSlot";
  import { IIconSlot } from "react-declarative/components/One/slots/IconSlot";
  /**
   * A context object that provides access to various component types used by the slot factory.
   * @typedef ISlotFactoryContext
   * @property CheckBox - The component type for Checkbox slots.
   * @property Combo - The component type for Combo slots.
   * @property YesNo - The component type for YesNo slots.
   * @property Items - The component type for Items slots.
   * @property Line - The component type for Line slots.
   * @property Progress - The component type for Progress slots.
   * @property Radio - The component type for Radio slots.
   * @property Rating - The component type for Rating slots.
   * @property Typography - The component type for Typography slots.
   * @property Text - The component type for Text slots.
   * @property Date - The component type for Date slots.
   * @property Time - The component type for Time slots.
   * @property Switch - The component type for Switch slots.
   * @property Slider - The component type for Slider slots.
   * @property File - The component type for File slots.
   * @property Choose - The component type for Choose slots.
   * @property Complete - The component type for Complete slots.
   * @property Dict - The component type for Dict slots.
   * @property Tree - The component type for Tree slots.
   */
  export interface ISlotFactoryContext {
    CheckBox: ComponentType<ICheckBoxSlot>;
    Button: ComponentType<IButtonSlot>;
    Icon: ComponentType<IIconSlot>;
    Combo: ComponentType<IComboSlot>;
    YesNo: ComponentType<IYesNoSlot>;
    Items: ComponentType<IItemsSlot>;
    Line: ComponentType<ILineSlot>;
    Progress: ComponentType<IProgressSlot>;
    Radio: ComponentType<IRadioSlot>;
    Rating: ComponentType<IRatingSlot>;
    Typography: ComponentType<ITypographySlot>;
    Text: ComponentType<ITextSlot>;
    Date: ComponentType<IDateSlot>;
    Time: ComponentType<ITimeSlot>;
    Switch: ComponentType<ISwitchSlot>;
    Slider: ComponentType<ISliderSlot>;
    File: ComponentType<IFileSlot>;
    Choose: ComponentType<IChooseSlot>;
    Complete: ComponentType<ICompleteSlot>;
    Dict: ComponentType<IDictSlot>;
    Tree: ComponentType<ITreeSlot>;
  }
  export default ISlotFactoryContext;
}

declare module "react-declarative/components/common/ListPicker/ListPicker" {
  import IRowData, { RowId } from "react-declarative/model/IRowData";
  import IListProps from "react-declarative/model/IListProps";
  import IAnything from "react-declarative/model/IAnything";
  import IColumn from "react-declarative/model/IColumn";
  import SelectionMode from "react-declarative/model/SelectionMode";
  import IListRowAction from "react-declarative/model/IListRowAction";
  /**
   * Represents the props for the IListPicker component.
   * @template RowData - The type of data for each row in the list.
   */
  export interface IListPickerProps<RowData extends IRowData = IAnything> {
    onChange: (data: RowId[] | null) => void;
    handler: IListProps<RowData>["handler"];
    selectionMode: SelectionMode.Single | SelectionMode.Multiple;
    columns: Omit<
      IColumn<RowData>,
      keyof {
        headerName: never;
        width: never;
      }
    >[];
    selectedRows: NonNullable<IListProps<RowData>["selectedRows"]> | null;
    payload?: IListProps<RowData>["payload"];
    features?: IListProps<RowData>["features"];
    minHeight: number;
    minWidth: number;
    title: string;
    open: boolean;
    rowActions?: IListRowAction[];
  }
  /**
   * ListPicker component displays a list of items in a modal dialog and allows the user to make a selection.
   *
   * @template RowData - The type of data displayed in each row of the list.
   *
   * @param props - The component props.
   * @param props.onChange - The callback function that is called when the user selects or dismisses the selection. Receives an array of selected rows or null
   * if dismissed.
   * @param props.handler - The handler function for the list.
   * @param props.title - The title of the modal dialog.
   * @param props.columns - The list of columns to be displayed in the list.
   * @param props.open - Whether to show the modal dialog or not.
   * @param props.selectionMode - The selection mode for the list.
   * @param props.selectedRows - The initially selected rows in the list.
   * @param props.minHeight - The minimum height of the list container.
   * @param props.minWidth - The minimum width of the list container.
   * @param props.rowActions - The actions to be displayed for each row in the list.
   *
   * @returns The rendered ListPicker component.
   */
  export const ListPicker: <RowData extends IRowData = any>({
    onChange,
    handler,
    title,
    columns,
    open,
    selectionMode,
    selectedRows: upperSelectedRows,
    minHeight,
    minWidth,
    rowActions,
  }: IListPickerProps<RowData>) => JSX.Element;
  export default ListPicker;
}

declare module "react-declarative/components/CardView/model/ICardViewProps" {
  import React from "react";
  import { BoxProps } from "@mui/material";
  import TSubject from "react-declarative/model/TSubject";
  import ICardViewOperation from "react-declarative/components/CardView/model/ICardViewOperation";
  import ICardViewAction from "react-declarative/components/CardView/model/ICardViewAction";
  import IItemData from "react-declarative/components/CardView/model/IItemData";
  /**
   * Represents the properties for the CardView component.
   *
   * @template ItemData - The type of data for each item in the CardView.
   * @template Payload - The type of payload.
   *
   * @interface ICardViewProps
   * @extends {BoxProps}
   */
  export interface ICardViewProps<
    ItemData extends IItemData = any,
    Payload extends any = any,
  > extends BoxProps {
    handler:
      | ItemData[]
      | ((search: string, skip: number) => ItemData[] | Promise<ItemData[]>);
    scrollXSubject?: TSubject<number>;
    scrollYSubject?: TSubject<number>;
    reloadSubject?: TSubject<void>;
    cardActions?: ICardViewAction<ItemData, Payload>[];
    operations?: ICardViewOperation<ItemData, Payload>[];
    payload?: (() => Payload) | Payload;
    formatMedia?: (item: ItemData) => React.ReactNode;
    formatCardLabel?: (item: ItemData) => React.ReactNode;
    formatKey?: (key: keyof ItemData) => React.ReactNode;
    formatValue?: (
      key: keyof ItemData,
      value: ItemData[keyof ItemData],
    ) => React.ReactNode;
    onOperation?: (
      operation: string,
      selectedItems: ItemData[],
      isAllSelected: boolean,
    ) => void | Promise<void>;
    onAction?: (action: string, item: ItemData) => void;
    onCardClick?: (item: ItemData) => void;
    onLoadStart?: () => void;
    pickFields?: (keyof ItemData)[];
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    skipStep?: number;
    throwError?: boolean;
    noSearch?: boolean;
    noFooter?: boolean;
  }
  export default ICardViewProps;
}

declare module "react-declarative/components/CalendarView/model/ICalendarViewProps" {
  import dayjs from "dayjs";
  import { SxProps } from "@mui/material";
  import ICalendarRequest from "react-declarative/components/CalendarView/model/ICalendarRequest";
  import ICalendarItem from "react-declarative/components/CalendarView/model/ICalendarItem";
  import ICalendarTile from "react-declarative/components/CalendarView/model/ICalendarTile";
  import { stamp } from "react-declarative/utils/getMomentStamp";
  import IAnything from "react-declarative/model/IAnything";
  import TSubject from "react-declarative/model/TSubject";
  import { TileMode } from "react-declarative/components/Tile";
  /**
   * Interface representing the props for the CalendarView component.
   *
   * @template Data The type of data associated with each calendar item.
   * @template Payload The type of payload associated with each calendar item.
   */
  export interface ICalendarViewProps<
    Data extends IAnything = IAnything,
    Payload extends IAnything = IAnything,
  > {
    reloadSubject?: TSubject<void>;
    itemSx?: SxProps;
    dotSide?: number;
    outlinePaper?: boolean;
    transparentPaper?: boolean;
    BeforeCalendarHeader?: React.ComponentType<{
      fromStamp: stamp;
      toStamp: stamp;
      payload: Payload;
    }>;
    AfterCalendarHeader?: React.ComponentType<{
      fromStamp: stamp;
      toStamp: stamp;
      payload: Payload;
    }>;
    BeforeDayHeader?: React.ComponentType<{
      stamp: stamp;
      items: ICalendarItem<Data, Payload>[];
      payload: Payload;
    }>;
    AfterDayHeader?: React.ComponentType<{
      stamp: stamp;
      items: ICalendarItem<Data, Payload>[];
      payload: Payload;
    }>;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    fallback?: (e: Error) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    throwError?: boolean;
    handler:
      | ((
          req: ICalendarRequest<Payload>,
        ) => Omit<ICalendarItem<Data, Payload>, "payload">[])
      | ((
          req: ICalendarRequest<Payload>,
        ) => Promise<Omit<ICalendarItem<Data, Payload>, "payload">[]>);
    payload?: Payload | (() => Payload);
    date?: dayjs.Dayjs;
    minDate?: dayjs.Dayjs;
    maxDate?: dayjs.Dayjs;
    tileMode?: TileMode;
    onChange?: (date: dayjs.Dayjs | null) => void;
    renderItem: React.ComponentType<ICalendarTile<Data, Payload>>;
    onItemClick: (item: { data: Data; payload: Payload }) => void;
    rowMark?: ((row: Data) => string) | ((row: Data) => Promise<string>);
    rowColor?: ((row: Data) => string) | ((row: Data) => Promise<string>);
  }
  export default ICalendarViewProps;
}

declare module "react-declarative/components/FeatureView/model/IFeatureViewProps" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import IFeatureGroup from "react-declarative/components/FeatureView/model/IFeatureGroup";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents the props for the FeatureView component.
   */
  export interface IFeatureViewProps {
    changeSubject?: TSubject<any>;
    data?: string[] | null;
    outlinePaper?: boolean;
    transparentPaper?: boolean;
    onChange?: (data: string[]) => void;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    readonly?: boolean;
    features: IFeatureGroup[];
    expandAll?: boolean;
  }
  export default IFeatureViewProps;
}

declare module "react-declarative/components/VisibilityView/model/IVisibilityViewProps" {
  import { SxProps } from "@mui/material";
  import IVisibilityGroup from "react-declarative/components/VisibilityView/model/IVisibilityGroup";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Interface representing the props for the VisibilityView component.
   */
  export interface IVisibilityViewProps {
    changeSubject?: TSubject<any>;
    outlinePaper?: boolean;
    transparentPaper?: boolean;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    expandAll?: boolean;
    readonly?: boolean;
    data?: Record<string, string[]> | null;
    ignore?: (key: string) => boolean;
    onChange?: (data: Record<string, string[]>) => void;
    groups: IVisibilityGroup[];
    keyToTitle?: (name: string) => string;
  }
  export default IVisibilityViewProps;
}

declare module "react-declarative/components/RecordView/model/IData" {
  export type Value = boolean | number | string;
  /**
   * Represents a data structure that can hold various types of data.
   */
  export interface IData {
    [key: string]: IData[] | Value[] | IData | Value;
  }
  export default IData;
}

declare module "react-declarative/components/RecordView/model/IRecordViewProps" {
  import * as React from "react";
  import { GridSize, BoxProps } from "@mui/material";
  import IData from "react-declarative/components/RecordView/model/IData";
  import IAnything from "react-declarative/model/IAnything";
  import { IItemProps } from "react-declarative/components/RecordView/components/Item";
  /**
   * Interface for the props of the RecordView component.
   *
   * @template Data - The type of the data.
   * @template Payload - The type of the payload.
   * @extends BoxProps - Props for the Box component.
   */
  export interface IRecordViewProps<Data = IData, Payload = IAnything>
    extends BoxProps {
    background?: string;
    data: Data;
    search?: string;
    keyWidth?: GridSize;
    valueWidth?: GridSize;
    totalWidth?: number;
    withExpandAll?: boolean;
    withExpandRoot?: boolean;
    expandList?: Array<string>;
    withExpandLevel?: number;
    EmptyItem?: React.ComponentType<any>;
    CustomItem?: React.ComponentType<IItemProps>;
    formatValue?: (
      key: string,
      value: boolean | number | string | null,
      path: string,
    ) => React.ReactNode;
    formatKey?: (key: string, path: string) => React.ReactNode;
    formatSearch?: (
      key: string,
      value: boolean | number | string | null,
      path: string,
    ) => string;
    onSearchChanged?: (search: string) => void;
    BeforeSearch?: React.ComponentType<any>;
    AfterSearch?: React.ComponentType<any>;
    BeforeCollapseLabel?: React.ComponentType<{
      itemKey: string;
      payload: Payload;
      path: string;
    }>;
    AfterCollapseLabel?: React.ComponentType<{
      itemKey: string;
      payload: Payload;
      path: string;
    }>;
    payload?: Payload;
  }
  export default IRecordViewProps;
}

declare module "react-declarative/components/Scaffold2/model/IScaffold2Props" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import IScaffold2Group, {
    IScaffold2GroupInternal,
  } from "react-declarative/components/Scaffold2/model/IScaffold2Group";
  import IScaffold2Action from "react-declarative/components/Scaffold2/model/IScaffold2Action";
  import Payload from "react-declarative/components/Scaffold2/model/Payload";
  /**
   * Represents the properties of the IScaffold2 component.
   */
  export interface IScaffold2Props<T = Payload> {
    noOptionHover?: boolean;
    noContent?: boolean;
    noAppName?: boolean;
    fixedHeader?: boolean;
    noSearch?: boolean;
    dense?: boolean;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    appName?: string;
    options: IScaffold2Group<T>[];
    actions?: IScaffold2Action<T>[];
    loading?: boolean | number;
    payload?: T;
    /**
     * An array of dependencies.
     *
     * @typedef Dependencies
     */
    deps?: any[];
    /**
     * Specifies the active option path.
     *
     * @typedef activeOptionPath
     * @description This variable holds the path of the currently active option.
     *              The path is represented as a string value.
     */
    activeOptionPath: string;
    /**
     * Represents the path of the active tab.
     *
     * @typedef activeTabPath
     *
     * @description
     * The `activeTabPath` variable is an optional string that represents the path of the active tab.
     * It is used to track and store the current tab's path within the application.
     */
    activeTabPath?: string;
    /**
     * Represents the type definition for the `AfterAppName` variable.
     *
     * @typedef AfterAppName
     *
     * @description
     * A variable of type `React.ComponentType<any>` representing a React component.
     */
    AfterAppName?: React.ComponentType<any>;
    /**
     * Represents a React component BeforeActionMenu.
     *
     * @component
     * @typedef BeforeActionMenu
     */
    BeforeActionMenu?: React.ComponentType<any>;
    /**
     * BeforeSearch is a React component type used for rendering a component before the search functionality.
     *
     * @typedef BeforeSearch
     * @memberof module:components
     * @see {@link https://reactjs.org/docs/react-component.html|React.ComponentType}
     */
    BeforeSearch?: React.ComponentType<any>;
    /**
     * Represents a React component type for the AfterSearch component.
     *
     */
    AfterSearch?: React.ComponentType<any>;
    /**
     * Represents the type definition for the BeforeMenuContent variable.
     *
     * @description
     * This variable represents a React component that serves as the content to be rendered
     * before the menu component. It can accept any props as specified by the `any` type.
     */
    BeforeMenuContent?: React.ComponentType<any>;
    /**
     * Type definition for the variable AfterMenuContent.
     *
     * @typedef AfterMenuContent
     * @description A React component type that represents the content to be rendered after a menu component.
     */
    AfterMenuContent?: React.ComponentType<any>;
    /**
     * Represents the `BeforeContent` variable.
     *
     * @typedef BeforeContent
     * @description This variable is a React component type that can accept any props. It is typically used to render content that should appear before the main content within a parent component
     */
    BeforeContent?: React.ComponentType<any>;
    /**
     * Represents a React component type for rendering content after the main content.
     *
     * @typedef AfterContent
     */
    AfterContent?: React.ComponentType<any>;
    /**
     * The Copyright component is a React component that represents a copyright notice.
     * It can be used in a React application to display the copyright information.
     *
     * @component
     * @category UI Components
     *
     * @param props - The properties of the Copyright component.
     *
     * @returns The Copyright React component.
     */
    Copyright?: React.ComponentType<any>;
    /**
     * Represents a optional callback function that is triggered when an action is performed.
     * The function takes a `name` parameter of type `string` and returns `void`.
     *
     * @typedef onAction
     * @param name - The name of the action being performed.
     * @returns
     */
    onAction?: (name: string) => void;
    /**
     * Callback function that is triggered when an option is clicked.
     *
     * @param path - The path of the option.
     * @param id - The ID of the option.
     * @returns - Returns undefined or a boolean value based on the processing of the option click.
     */
    onOptionClick?: (path: string, id: string) => void | undefined | boolean;
    /**
     * Function called when an option group is clicked.
     *
     * @param path - The path of the option group.
     * @param id - The ID of the clicked option group.
     * @return {undefined | boolean} - Returns undefined or a boolean value.
     */
    onOptionGroupClick?: (
      path: string,
      id: string,
    ) => void | undefined | boolean;
    /**
     * Represents a callback for when a tab change event occurs.
     *
     * @param path - The current path of the tab.
     * @param tab - The name of the tab that was changed to.
     * @param id - The unique identifier of the tab.
     * @returns
     */
    onTabChange?: (path: string, tab: string, id: string) => void;
    children: React.ReactNode;
    /**
     * @typedef onInit
     * @description Represents a function that may or may not initialize something.
     * The function returns either void or a Promise that resolves to void.
     */
    onInit?: () => void | Promise<void>;
    /**
     * Represents a callback function that will be invoked when a load operation starts.
     *
     * @callback onLoadStart
     * @returns
     */
    onLoadStart?: () => void;
    /**
     * Represents a callback function that is called when the loading process ends.
     *
     * @callback onLoadEnd
     * @param isOk - A boolean value indicating whether the loading process was successful.
     * @returns This callback does not return anything.
     */
    onLoadEnd?: (isOk: boolean) => void;
    /**
     * Represents a function that acts as a fallback, which is executed when an error occurs.
     * @param e - The error that occurred.
     * @returns
     */
    fallback?: (e: Error) => void;
    /**
     * Indicates whether an error should be thrown.
     *
     * @typedef throwError
     */
    throwError?: boolean;
    /**
     * Flag to indicate whether backdrop transition should be disabled.
     *
     * @type {boolean}
     * @optional
     */
    disableBackdropTransition?: boolean;
    /**
     * The variable `disableDiscovery` determines if the discovery feature is enabled or disabled.
     *
     * @type {boolean|undefined}
     * @default undefined
     */
    disableDiscovery?: boolean;
    /**
     * Represents whether swipe to open functionality is disabled or not.
     *
     * @type {boolean}
     * @default false
     */
    disableSwipeToOpen?: boolean;
    /**
     * The width of the swipe area.
     * @type {number} - Optional parameter, represents the width of the swipe area in pixels.
     */
    swipeAreaWidth?: number;
  }
  /**
   * Represents the internal props for the IScaffold2 component.
   *
   * @template T - The type of payload.
   */
  export interface IScaffold2InternalProps<T = Payload>
    extends Omit<
      IScaffold2Props<T>,
      keyof {
        options: never;
      }
    > {
    options: IScaffold2GroupInternal<T>[];
  }
  export default IScaffold2Props;
}

declare module "react-declarative/components/Scaffold2/model/Payload" {
  export type Payload = any;
  export default Payload;
}

declare module "react-declarative/components/Scaffold3/model/IScaffold3Props" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import IScaffold3Group, {
    IScaffold3GroupInternal,
  } from "react-declarative/components/Scaffold3/model/IScaffold3Group";
  import IScaffold3Action from "react-declarative/components/Scaffold3/model/IScaffold3Action";
  import Payload from "react-declarative/components/Scaffold3/model/Payload";
  /**
   * Represents the properties of the IScaffold3 component.
   */
  export interface IScaffold3Props<T = Payload> {
    noOptionHover?: boolean;
    noContent?: boolean;
    noAppName?: boolean;
    fixedHeader?: boolean;
    noSearch?: boolean;
    dense?: boolean;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    appName?: string;
    options: IScaffold3Group<T>[];
    actions?: IScaffold3Action<T>[];
    loading?: boolean | number;
    payload?: T;
    /**
     * An array of dependencies.
     *
     * @typedef Dependencies
     */
    deps?: any[];
    /**
     * Specifies the active option path.
     *
     * @typedef activeOptionPath
     * @description This variable holds the path of the currently active option.
     *              The path is represented as a string value.
     */
    activeOptionPath: string;
    /**
     * Represents the path of the active tab.
     *
     * @typedef activeTabPath
     *
     * @description
     * The `activeTabPath` variable is an optional string that represents the path of the active tab.
     * It is used to track and store the current tab's path within the application.
     */
    activeTabPath?: string;
    /**
     * Represents the type definition for the `AfterAppName` variable.
     *
     * @typedef AfterAppName
     *
     * @description
     * A variable of type `React.ComponentType<any>` representing a React component.
     */
    AfterAppName?: React.ComponentType<any>;
    /**
     * Represents a React component BeforeActionMenu.
     *
     * @component
     * @typedef BeforeActionMenu
     */
    BeforeActionMenu?: React.ComponentType<any>;
    /**
     * BeforeSearch is a React component type used for rendering a component before the search functionality.
     *
     * @typedef BeforeSearch
     * @memberof module:components
     * @see {@link https://reactjs.org/docs/react-component.html|React.ComponentType}
     */
    BeforeSearch?: React.ComponentType<any>;
    /**
     * Represents a React component type for the AfterSearch component.
     *
     */
    AfterSearch?: React.ComponentType<any>;
    /**
     * Represents the type definition for the BeforeMenuContent variable.
     *
     * @description
     * This variable represents a React component that serves as the content to be rendered
     * before the menu component. It can accept any props as specified by the `any` type.
     */
    BeforeMenuContent?: React.ComponentType<any>;
    /**
     * Type definition for the variable AfterMenuContent.
     *
     * @typedef AfterMenuContent
     * @description A React component type that represents the content to be rendered after a menu component.
     */
    AfterMenuContent?: React.ComponentType<any>;
    /**
     * Represents the `BeforeContent` variable.
     *
     * @typedef BeforeContent
     * @description This variable is a React component type that can accept any props. It is typically used to render content that should appear before the main content within a parent component
     */
    BeforeContent?: React.ComponentType<any>;
    /**
     * Represents a React component type for rendering content after the main content.
     *
     * @typedef AfterContent
     */
    AfterContent?: React.ComponentType<any>;
    /**
     * The Copyright component is a React component that represents a copyright notice.
     * It can be used in a React application to display the copyright information.
     *
     * @component
     * @category UI Components
     *
     * @param props - The properties of the Copyright component.
     *
     * @returns The Copyright React component.
     */
    Copyright?: React.ComponentType<any>;
    /**
     * Represents a optional callback function that is triggered when an action is performed.
     * The function takes a `name` parameter of type `string` and returns `void`.
     *
     * @typedef onAction
     * @param name - The name of the action being performed.
     * @returns
     */
    onAction?: (name: string) => void;
    /**
     * Callback function that is triggered when an option is clicked.
     *
     * @param path - The path of the option.
     * @param id - The ID of the option.
     * @returns - Returns undefined or a boolean value based on the processing of the option click.
     */
    onOptionClick?: (path: string, id: string) => void | undefined | boolean;
    /**
     * Function called when an option group is clicked.
     *
     * @param path - The path of the option group.
     * @param id - The ID of the clicked option group.
     * @return {undefined | boolean} - Returns undefined or a boolean value.
     */
    onOptionGroupClick?: (
      path: string,
      id: string,
    ) => void | undefined | boolean;
    /**
     * Represents a callback for when a tab change event occurs.
     *
     * @param path - The current path of the tab.
     * @param tab - The name of the tab that was changed to.
     * @param id - The unique identifier of the tab.
     * @returns
     */
    onTabChange?: (path: string, tab: string, id: string) => void;
    children: React.ReactNode;
    /**
     * @typedef onInit
     * @description Represents a function that may or may not initialize something.
     * The function returns either void or a Promise that resolves to void.
     */
    onInit?: () => void | Promise<void>;
    /**
     * Represents a callback function that will be invoked when a load operation starts.
     *
     * @callback onLoadStart
     * @returns
     */
    onLoadStart?: () => void;
    /**
     * Represents a callback function that is called when the loading process ends.
     *
     * @callback onLoadEnd
     * @param isOk - A boolean value indicating whether the loading process was successful.
     * @returns This callback does not return anything.
     */
    onLoadEnd?: (isOk: boolean) => void;
    /**
     * Represents a function that acts as a fallback, which is executed when an error occurs.
     * @param e - The error that occurred.
     * @returns
     */
    fallback?: (e: Error) => void;
    /**
     * Indicates whether an error should be thrown.
     *
     * @typedef throwError
     */
    throwError?: boolean;
  }
  /**
   * Represents the internal props for the IScaffold3 component.
   *
   * @template T - The type of payload.
   */
  export interface IScaffold3InternalProps<T = Payload>
    extends Omit<
      IScaffold3Props<T>,
      keyof {
        options: never;
      }
    > {
    options: IScaffold3GroupInternal<T>[];
  }
  export default IScaffold3Props;
}

declare module "react-declarative/components/Scaffold3/model/Payload" {
  export type Payload = any;
  export default Payload;
}

declare module "react-declarative/components/One/slots/CheckBoxSlot" {
  export * from "react-declarative/components/One/slots/CheckBoxSlot/ICheckBoxSlot";
  export * from "react-declarative/components/One/slots/CheckBoxSlot/CheckBoxSlot";
  export { default } from "react-declarative/components/One/slots/CheckBoxSlot/CheckBoxSlot";
}

declare module "react-declarative/components/One/slots/ComboSlot" {
  export * from "react-declarative/components/One/slots/ComboSlot/IComboSlot";
  export * from "react-declarative/components/One/slots/ComboSlot/ComboSlot";
  export { default } from "react-declarative/components/One/slots/ComboSlot/ComboSlot";
}

declare module "react-declarative/components/One/slots/ItemsSlot" {
  export * from "react-declarative/components/One/slots/ItemsSlot/IItemsSlot";
  export * from "react-declarative/components/One/slots/ItemsSlot/ItemsSlot";
  export { default } from "react-declarative/components/One/slots/ItemsSlot/ItemsSlot";
}

declare module "react-declarative/components/One/slots/LineSlot" {
  export * from "react-declarative/components/One/slots/LineSlot/ILineSlot";
  export * from "react-declarative/components/One/slots/LineSlot/LineSlot";
  export { default } from "react-declarative/components/One/slots/LineSlot/LineSlot";
}

declare module "react-declarative/components/One/slots/ProgressSlot" {
  export * from "react-declarative/components/One/slots/ProgressSlot/IProgressSlot";
  export * from "react-declarative/components/One/slots/ProgressSlot/ProgressSlot";
  export { default } from "react-declarative/components/One/slots/ProgressSlot/ProgressSlot";
}

declare module "react-declarative/components/One/slots/RadioSlot" {
  export * from "react-declarative/components/One/slots/RadioSlot/IRadioSlot";
  export * from "react-declarative/components/One/slots/RadioSlot/RadioSlot";
  export { default } from "react-declarative/components/One/slots/RadioSlot/RadioSlot";
}

declare module "react-declarative/components/One/slots/RatingSlot" {
  export * from "react-declarative/components/One/slots/RatingSlot/IRatingSlot";
  export * from "react-declarative/components/One/slots/RatingSlot/RatingSlot";
  export { default } from "react-declarative/components/One/slots/RatingSlot/RatingSlot";
}

declare module "react-declarative/components/One/slots/SliderSlot" {
  export * from "react-declarative/components/One/slots/SliderSlot/ISliderSlot";
  export * from "react-declarative/components/One/slots/SliderSlot/SliderSlot";
  export { default } from "react-declarative/components/One/slots/SliderSlot/SliderSlot";
}

declare module "react-declarative/components/One/slots/SwitchSlot" {
  export * from "react-declarative/components/One/slots/SwitchSlot/ISwitchSlot";
  export * from "react-declarative/components/One/slots/SwitchSlot/SwitchSlot";
  export { default } from "react-declarative/components/One/slots/SwitchSlot/SwitchSlot";
}

declare module "react-declarative/components/One/slots/TextSlot" {
  export * from "react-declarative/components/One/slots/TextSlot/ITextSlot";
  export * from "react-declarative/components/One/slots/TextSlot/TextSlot";
  export { default } from "react-declarative/components/One/slots/TextSlot/TextSlot";
}

declare module "react-declarative/components/One/slots/TypographySlot" {
  export * from "react-declarative/components/One/slots/TypographySlot/ITypographySlot";
  export * from "react-declarative/components/One/slots/TypographySlot/TypographySlot";
  export { default } from "react-declarative/components/One/slots/TypographySlot/TypographySlot";
}

declare module "react-declarative/components/One/slots/DateSlot" {
  export * from "react-declarative/components/One/slots/DateSlot/IDateSlot";
  export * from "react-declarative/components/One/slots/DateSlot/DateSlot";
  export { default } from "react-declarative/components/One/slots/DateSlot/DateSlot";
}

declare module "react-declarative/components/One/slots/TimeSlot" {
  export * from "react-declarative/components/One/slots/TimeSlot/ITimeSlot";
  export * from "react-declarative/components/One/slots/TimeSlot/TimeSlot";
  export { default } from "react-declarative/components/One/slots/TimeSlot/TimeSlot";
}

declare module "react-declarative/components/One/slots/FileSlot" {
  export * from "react-declarative/components/One/slots/FileSlot/IFileSlot";
  export * from "react-declarative/components/One/slots/FileSlot/FileSlot";
  export { default } from "react-declarative/components/One/slots/FileSlot/FileSlot";
}

declare module "react-declarative/components/One/slots/ChooseSlot" {
  export * from "react-declarative/components/One/slots/ChooseSlot/IChooseSlot";
  export * from "react-declarative/components/One/slots/ChooseSlot/ChooseSlot";
  export { default } from "react-declarative/components/One/slots/ChooseSlot/ChooseSlot";
}

declare module "react-declarative/components/One/slots/CompleteSlot" {
  export * from "react-declarative/components/One/slots/CompleteSlot/ICompleteSlot";
  export * from "react-declarative/components/One/slots/CompleteSlot/CompleteSlot";
  export { default } from "react-declarative/components/One/slots/CompleteSlot/CompleteSlot";
}

declare module "react-declarative/components/One/slots/YesNoSlot" {
  export * from "react-declarative/components/One/slots/YesNoSlot/IYesNoSlot";
  export * from "react-declarative/components/One/slots/YesNoSlot/YesNoSlot";
  export { default } from "react-declarative/components/One/slots/YesNoSlot/YesNoSlot";
}

declare module "react-declarative/components/One/slots/DictSlot" {
  export * from "react-declarative/components/One/slots/DictSlot/IDictSlot";
  export * from "react-declarative/components/One/slots/DictSlot/DictSlot";
  export { default } from "react-declarative/components/One/slots/DictSlot/DictSlot";
}

declare module "react-declarative/components/One/slots/TreeSlot" {
  export * from "react-declarative/components/One/slots/TreeSlot/ITreeSlot";
  export * from "react-declarative/components/One/slots/TreeSlot/TreeSlot";
  export { default } from "react-declarative/components/One/slots/TreeSlot/TreeSlot";
}

declare module "react-declarative/components/One/slots/ButtonSlot" {
  export * from "react-declarative/components/One/slots/ButtonSlot/IButtonSlot";
  export * from "react-declarative/components/One/slots/ButtonSlot/ButtonSlot";
  export { default } from "react-declarative/components/One/slots/ButtonSlot/ButtonSlot";
}

declare module "react-declarative/components/One/components/OneConfig/OneConfig" {
  import { IConfig } from "react-declarative/components/One/components/OneConfig/OneConfigInstance";
  export const GET_REF_SYMBOL: unique symbol;
  /**
   * Class representing the OneConfig.
   */
  export class OneConfig {
    static [GET_REF_SYMBOL]: () => IConfig;
    static setValue: (config: Partial<IConfig>) => void;
  }
  export { IConfig };
  export default OneConfig;
}

declare module "react-declarative/components/One/components/makeField/makeField" {
  import * as React from "react";
  import IAnything from "react-declarative/model/IAnything";
  import IManaged from "react-declarative/model/IManaged";
  import IEntity from "react-declarative/model/IEntity";
  import IField from "react-declarative/model/IField";
  /**
   * Represents the configuration options for makeField hoc.
   *
   * @template Data - The type of data the configuration will handle.
   */
  interface IConfig<Data = IAnything> {
    withApplyQueue?: boolean;
    skipDebounce?: boolean;
    skipDirtyClickListener?: boolean;
    skipFocusReadonly?: boolean;
    skipFocusBlurCall?: boolean;
    skipClickListener?: boolean;
    defaultProps?: Partial<
      Omit<
        IField<Data>,
        keyof {
          fields: never;
          child: never;
        }
      >
    >;
  }
  /**
   * - Оборачивает IEntity в удобную абстракцию IManaged, где сразу
   *   представлены invalid, disabled, visible и можно задваивать вызов onChange
   * - Управляет фокусировкой, мануально ожидая потерю фокуса, эмулируя onBlur
   */
  export function makeField(
    originalComponent: React.FC<IManaged>,
    fieldConfig?: IConfig,
  ): {
    <Data extends unknown = any>({
      className,
      sx,
      columns,
      phoneColumns,
      tabletColumns,
      desktopColumns,
      phoneHidden: upperPhoneHidden,
      tabletHidden: upperTabletHidden,
      desktopHidden: upperDesktopHidden,
      isDisabled: isDisabledUpper,
      isVisible: isVisibleUpper,
      isInvalid: isInvalidUpper,
      isIncorrect: isIncorrectUpper,
      isReadonly: isReadonlyUpper,
      readTransform,
      writeTransform,
      change,
      fallback,
      ready,
      compute: upperCompute,
      shouldRecompute,
      click,
      map,
      object: upperObject,
      name,
      title,
      menu,
      type,
      debug,
      focus,
      blur,
      invalidity,
      prefix,
      dirty: upperDirty,
      disabled: fieldDisabled,
      readonly: upperReadonly,
      autoFocus,
      style,
      menuItems,
      groupRef: ref,
      fieldRightMargin,
      fieldBottomMargin,
      outlinePaper,
      transparentPaper,
      testId,
      ...otherProps
    }: IEntity<Data, any>): JSX.Element | null;
    displayName: string;
  };
  export default makeField;
}

declare module "react-declarative/components/One/components/makeLayout/makeLayout" {
  import * as React from "react";
  import IAnything from "react-declarative/model/IAnything";
  import IEntity from "react-declarative/model/IEntity";
  /**
   * Represents the layout of a component.
   *
   * @template Data - The type of data associated with the layout.
   */
  export interface ILayout<Data extends IAnything = IAnything>
    extends IEntity<Data> {
    children: React.ReactElement[];
  }
  /**
   * Renders a component based on input data and conditions.
   *
   * @template T - The type of layout component
   * @param originalComponent - The original component to be wrapped
   * @returns - The wrapped component
   */
  export function makeLayout<T extends ILayout<any>>(
    originalComponent: React.FC<T>,
  ): React.FC<T>;
  export default makeLayout;
}

declare module "react-declarative/components/One/components/common/MenuItems" {
  import * as React from "react";
  import IField, { Value } from "react-declarative/model/IField";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Interface for defining parameters for a component.
   *
   * @interface
   */
  export interface IParams {
    name: Exclude<IField["name"], undefined>;
    menuItems: Exclude<IField["menuItems"], undefined>;
    onValueChange: (value: Value) => void;
    menu: Exclude<IField["menu"], undefined>;
  }
  /**
   * Represents the IRequest interface.
   * This interface extends IParams interface, and adds an event property of type React.MouseEvent<HTMLDivElement>.
   */
  export interface IRequest extends IParams {
    event: React.MouseEvent<HTMLDivElement>;
  }
  /**
   * Represents the properties for the MenuItems component
   */
  interface IMenuItemsProps {
    requestSubject: TSubject<IRequest>;
  }
  /**
   * Renders a menu with a list of options based on the provided props.
   *
   * @param props - The menu items props.
   * @param props.requestSubject - An observer subject to listen for menu requests.
   *
   * @returns The rendered menu.
   */
  export const MenuItems: ({ requestSubject }: IMenuItemsProps) => JSX.Element;
  export default MenuItems;
}

declare module "react-declarative/components/OneIcon/model/IOneIconProps" {
  import { SxProps } from "@mui/material";
  import IOneProps, { OneHandler } from "react-declarative/model/IOneProps";
  import { IconButtonProps } from "@mui/material/IconButton";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Represents the properties of a context menu button component.
   *
   * @template Data - The type of data associated with the button.
   * @template Payload - The type of payload associated with the button.
   */
  export interface IOneButtonProps<
    Data extends {} = IAnything,
    Payload extends IAnything = IAnything,
  > extends Omit<
      IconButtonProps,
      keyof {
        onChange: never;
        onClick: never;
        onInvalid: never;
        onFocus: never;
        onBlur: never;
        color: never;
      }
    > {
    noBadge?: boolean;
    fieldDebounce?: number;
    waitForChangesDelay?: number;
    fields: IField<Data, Payload>[];
    payload?: Payload | (() => Payload);
    handler: OneHandler<Data, Payload>;
    onChange?: IOneProps<Data, Payload>["change"];
    onInvalid?: IOneProps<Data, Payload>["invalidity"];
    onFocus?: IOneProps<Data, Payload>["focus"];
    onBlur?: IOneProps<Data, Payload>["blur"];
    isBaseline?: IOneProps<Data, Payload>["isBaseline"];
    isBaselineForRoot?: IOneProps<Data, Payload>["isBaselineForRoot"];
    badgeColor?:
      | "primary"
      | "secondary"
      | "default"
      | "error"
      | "info"
      | "success"
      | "warning";
    badgeOverlap?: "rectangular" | "circular";
    badgeSx?: SxProps<any>;
    oneSx?: SxProps<any>;
    color?:
      | "inherit"
      | "default"
      | "primary"
      | "secondary"
      | "error"
      | "info"
      | "success"
      | "warning";
  }
  export default IOneButtonProps;
}

declare module "react-declarative/components/OneButton/model/IOneButtonProps" {
  import { SxProps } from "@mui/material";
  import IOneProps, { OneHandler } from "react-declarative/model/IOneProps";
  import { ButtonProps } from "@mui/material/Button";
  import IOnePublicProps from "react-declarative/model/IOnePublicProps";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * @interface IOneButtonProps
   * @template Data - The data type of the IField object's data property
   * @template Payload - The payload type of the IField object
   * @property [noBadge] - Determines whether to display a badge on the button. Default is false.
   * @property [fieldDebounce] - The debounce time in milliseconds for field changes. Default is null.
   * @property [waitForChangesDelay] - The delay time in milliseconds to wait for changes before invoking the handler. Default is null.
   * @property fields - An array of IField objects representing the fields associated with the button.
   * @property [payload] - The payload to be passed to the handler when the button is clicked.
   * @property handler - The handler function to be invoked when the button is clicked.
   * @property [onChange] - The change callback function for the button. Default is null.
   * @property [onInvalid] - The invalidity callback function for the button. Default is null.
   * @property [onFocus] - The focus callback function for the button. Default is null.
   * @property [onBlur] - The blur callback function for the button. Default is null.
   * @property [badgeColor] - The color of the badge. Default is 'primary'.
   * @property [badgeOverlap] - The overlap type for the badge. Default is 'rectangular'.
   * @property [badgeSx] - The style for the badge. Default is null.
   * @property [oneSx] - The style for the button. Default is null.
   * @property [color] - The color of the button. Default is 'inherit'.
   */
  export interface IOneButtonProps<
    Data extends {} = IAnything,
    Payload extends IAnything = IAnything,
  > extends Omit<
      ButtonProps,
      keyof {
        onChange: never;
        onClick: never;
        onInvalid: never;
        onFocus: never;
        onBlur: never;
        color: never;
      }
    > {
    withCloseAfterChange?: boolean;
    noBadge?: boolean;
    fieldDebounce?: number;
    waitForChangesDelay?: number;
    fields: IField<Data, Payload>[];
    payload?: Payload | (() => Payload);
    handler: OneHandler<Data, Payload>;
    onChange?: IOneProps<Data, Payload>["change"];
    onInvalid?: IOneProps<Data, Payload>["invalidity"];
    onFocus?: IOneProps<Data, Payload>["focus"];
    onBlur?: IOneProps<Data, Payload>["blur"];
    isBaseline?: IOneProps<Data, Payload>["isBaseline"];
    isBaselineForRoot?: IOneProps<Data, Payload>["isBaselineForRoot"];
    readTransform?: IOnePublicProps<Data, Payload>["readTransform"];
    writeTransform?: IOnePublicProps<Data, Payload>["writeTransform"];
    incomingTransform?: IOnePublicProps<Data, Payload>["incomingTransform"];
    outgoingTransform?: IOnePublicProps<Data, Payload>["outgoingTransform"];
    badgeColor?:
      | "primary"
      | "secondary"
      | "default"
      | "error"
      | "info"
      | "success"
      | "warning";
    badgeOverlap?: "rectangular" | "circular";
    badgeSx?: SxProps<any>;
    oneSx?: SxProps<any>;
    color?:
      | "inherit"
      | "primary"
      | "secondary"
      | "success"
      | "error"
      | "info"
      | "warning";
  }
  export default IOneButtonProps;
}

declare module "react-declarative/components/ActionFilter/model/IActionFilterProps" {
  import React from "react";
  import IActionFilter from "react-declarative/components/ActionFilter/model/IActionFilter";
  /**
   * Represents the properties for the ActionFilter component.
   */
  export interface IActionFilterProps {
    actions: IActionFilter[];
    label?: React.ReactNode;
    addLabel?: React.ReactNode;
    data?: Record<string, string>;
    onChange?: (data: Record<string, string>) => void;
  }
  export default IActionFilterProps;
}

declare module "react-declarative/components/ActionTrigger/model/IActionTriggerProps" {
  import IActionTrigger from "react-declarative/components/ActionTrigger/model/IActionTrigger";
  import { ButtonProps } from "@mui/material/Button";
  import { BoxProps } from "@mui/material/Box";
  import { IAsyncProps } from "react-declarative/components/Async";
  /**
   * Interface representing the properties of an action trigger component.
   * @template T - The type of data being passed to the component, defaults to object.
   */
  export interface IActionTriggerProps<T extends any = object>
    extends Omit<
        IAsyncProps<T>,
        keyof {
          Loader: never;
          Error: never;
          children: never;
        }
      >,
      Omit<
        BoxProps,
        keyof {
          onChange: never;
          onLoadStart: never;
          children: never;
        }
      > {
    actions: IActionTrigger[];
    onAction?: (action: string) => void | Promise<void>;
    variant?: ButtonProps["variant"];
    size?: ButtonProps["size"];
  }
  export default IActionTriggerProps;
}

declare module "react-declarative/components/OutletView/model/IOutletViewProps" {
  import { IRevealProps } from "react-declarative/components/FetchView";
  import { BoxProps } from "@mui/material";
  import IAnything from "react-declarative/model/IAnything";
  import TSubject from "react-declarative/model/TSubject";
  import History from "react-declarative/model/History";
  import IOutlet from "react-declarative/components/OutletView/model/IOutlet";
  import IOtherProps from "react-declarative/components/OutletView/model/IOtherProps";
  /**
   * Props for OutletView component
   *
   * @template Data - The type of the data object
   * @template Payload - The type of the payload object
   * @template Params - The type of the params object
   * @template OtherProps - Additional props for the component
   */
  export interface IOutletViewProps<
    Data extends {} = Record<string, any>,
    Payload = IAnything,
    Params = IAnything,
    OtherProps = IOtherProps,
  > extends Omit<
      BoxProps,
      keyof {
        onChange: never;
        onSubmit: never;
      }
    > {
    fullScreen?: boolean;
    waitForChangesDelay?: number;
    history: History;
    readonly?: boolean;
    animation?: IRevealProps["animation"];
    payload?: Payload | (() => Payload);
    params?: Params;
    routes: IOutlet<Data, Payload, Params, OtherProps>[];
    initialData?: Data | (() => Data);
    changed?: boolean | ((data: Data, payload: Payload) => boolean);
    onChange?: (
      data: Data,
      initial: boolean,
      payload: Payload,
      source: string,
    ) => void;
    onSubmit?: (
      data: Data,
      payload: Payload,
      config: {
        afterSave: () => Promise<void>;
      },
    ) => boolean | Promise<boolean>;
    onLeave?: () => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (error: Error) => void;
    changeSubject?: TSubject<[keyof Data, Data]>;
    otherProps?: OtherProps;
  }
  export default IOutletViewProps;
}

declare module "react-declarative/components/OutletView/model/IOtherProps" {
  export interface IOtherProps {}
  export default IOtherProps;
}

declare module "react-declarative/components/OutletView/components/OutletModal" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import { IFetchViewProps } from "react-declarative/components/FetchView";
  import IOutletModal, {
    ModalOtherProps,
  } from "react-declarative/components/OutletView/model/IOutletModal";
  import IOutletViewProps from "react-declarative/components/OutletView/model/IOutletViewProps";
  import TBehaviorSubject from "react-declarative/model/TBehaviorSubject";
  import IAnything from "react-declarative/model/IAnything";
  import TSubject from "react-declarative/model/TSubject";
  import ISize from "react-declarative/model/ISize";
  import Id from "react-declarative/components/OutletView/model/Id";
  /**
   * Interface for the OutletModalProps class.
   * @template Data - The data type for storing the data.
   * @template Payload - The payload type.
   * @template Params - The params type.
   */
  export interface IOutletModalProps<
    Data extends {} = Record<string, any>,
    Payload = IAnything,
    Params = IAnything,
  > extends Omit<
      IOutletViewProps<Data, Payload, Params, ModalOtherProps>,
      keyof {
        otherProps: never;
        onSubmit: never;
        initialData: never;
        payload: never;
        params: never;
        routes: never;
        data: never;
        id: never;
      }
    > {
    sizeRequest?: (size: ISize) => {
      height: number;
      width: number;
      sx?: SxProps<any>;
    };
    fullScreen?: boolean;
    /**
     * Specifies whether the component should include an action button.
     *
     * @type {boolean}
     * @default false
     */
    withActionButton?: boolean;
    /**
     * Indicates whether the action being performed is static or not.
     *
     * @type {boolean}
     */
    withStaticAction?: boolean;
    outletIdSubject: TBehaviorSubject<Id | null>;
    title?: string;
    fetchState?: IFetchViewProps<Id>["state"];
    reloadSubject?: TSubject<void>;
    /**
     * Handles the onSubmit event.
     *
     * @param id - The identifier.
     * @param data - The data or null.
     * @param payload - The payload.
     * @returns A promise resolving to a boolean or a boolean value.
     */
    onSubmit?: (
      id: Id,
      data: Data | null,
      payload: Payload,
    ) => Promise<boolean> | boolean;
    /**
     * Represents the AfterTitle component.
     *
     * @component
     * @param props - The component props.
     * @param props.onClose - The function to be called when closing the component.
     * @param props.data - The data to be displayed in the component.
     * @param props.id - The unique identifier for the component.
     * @return {ReactElement|null} - The rendered AfterTitle component or null if data is null.
     */
    AfterTitle?: React.ComponentType<{
      onClose: () => void;
      data: Data | null;
      id: string;
    }>;
    /**
     * BeforeTitle is a React component that renders a title with a close button.
     *
     * @param props - The props object that contains the following properties:
     *   @param props.onClose - The callback function to be called when the close button is clicked.
     *   @param props.data - The data to be displayed in the component. Can be null if there is no data.
     *   @param props.id - The unique identifier for the component.
     *
     * @returns The BeforeTitle component.
     */
    BeforeTitle?: React.ComponentType<{
      onClose: () => void;
      data: Data | null;
      id: string;
    }>;
    /**
     * Represents an array of outlet modals routes.
     *
     * @template Data - The type of data provided by the outlet modals.
     * @template Payload - The type of payload accepted by the outlet modals.
     * @template Params - The type of parameters expected by the outlet modals.
     */
    routes: IOutletModal<Data, Payload, Params>[];
    data?: Data | null;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
    hidden?: boolean;
    submitLabel?: string;
    submitIcon?: React.ComponentType<any>;
    /**
     * Maps the payload with the given ID and data.
     *
     * @param id - The ID of the payload.
     * @param data - The data to be mapped.
     *
     * @returns - The mapped payload.
     */
    mapPayload?: (
      id: Id,
      data: Record<string, any>[],
    ) => Payload | Promise<Payload>;
    /**
     * Maps the given data into parameters based on the provided id.
     *
     * @param id - The identifier to map the data.
     * @param data - The data to be mapped.
     * @returns The mapped parameters.
     */
    mapParams?: (
      id: Id,
      data: Record<string, any>[],
    ) => Params | Promise<Params>;
    /**
     * Represents a function to initialize data based on given ID and data.
     *
     * @param id - The ID for initialization.
     * @param data - An array of data records.
     * @returns - The initialized data or a promise of the initialized data.
     */
    mapInitialData?: (
      id: Id,
      data: Record<string, any>[],
    ) => Data | Promise<Data>;
    onMount?: () => void;
    onUnmount?: () => void;
    onClose?: () => void;
  }
  /**
   * A modal component for displaying and editing data.
   *
   * @template Data - The type of the data to be displayed in the modal.
   * @template Payload - The type of the payload to be passed when submitting the form.
   * @template Params - The type of the parameters to pass to the map functions.
   *
   * @typedef OutletModal
   * @property withActionButton - Determines whether to display an action button in the modal. Default is `false`.
   * @property hidden - Determines whether the modal is hidden. Default is `false`.
   * @property onSubmit - Callback function that is called when the form is submitted. Default is `() => true`.
   * @property onChange - Callback function that is called when the form data changes. Default is `() => undefined`.
   * @property)`.
   * @property)`.
   * @property)`.
   * @property fullScreen - Determines whether the modal should be fullscreen. Default is `true`.
   * @property sizeRequest - Size request object that defines the height, width, and sx properties of the modal.
   * @property onLoadStart - Callback function that is called when loading starts. Default is `undefined`.
   * @property onLoadEnd - Callback function that is called when loading ends. Default is `undefined`.
   * @property fallback - Fallback component to be rendered if an error occurs.
   * @property reloadSubject - Observable subject for triggering a reload of the modal.
   * @property outletIdSubject - Observable subject for providing the outlet ID.
   * @property)`.
   * @property AfterTitle - Component to be rendered after the title.
   * @property BeforeTitle - Component to be rendered before the title.
   * @property title - The title of the modal.
   * @property data - The initial data to be displayed in the modal. Default is `null`.
   * @property withStaticAction - Determines whether the action button should always be enabled. Default is `false`.
   * @property throwError - Determines whether to throw an error if an exception occurs. Default is `false`.
   * @property submitLabel - The label of the action button. Default is "Submit".
   * @property waitForChangesDelay - The delay in milliseconds to wait for changes before submitting the form. Default is `0`.
   * @property readonly - Determines whether the modal is in read-only mode. Default is `false`.
   * @property onMount - Callback function that is called when the modal is mounted. Default is `undefined`.
   * @property onUnmount - Callback function that is called when the modal is unmounted. Default is `undefined`.
   * @property onClose - Callback function that is called when the modal is closed. Default is `() => null`.
   * @property outletProps - Additional props to pass to the `OutletView` component.
   *
   * @param props - The props for the OutletModal component.
   * @returns - The rendered outlet modal component.
   */
  export const OutletModal: <
    Data extends {} = Record<string, any>,
    Payload = any,
    Params = any,
  >({
    withActionButton,
    hidden,
    onSubmit,
    onChange,
    mapParams,
    mapInitialData,
    mapPayload,
    fullScreen,
    sizeRequest,
    onLoadStart,
    onLoadEnd,
    fallback,
    reloadSubject,
    outletIdSubject,
    fetchState,
    AfterTitle,
    BeforeTitle,
    title,
    data: upperData,
    withStaticAction,
    throwError,
    submitLabel,
    submitIcon: SubmitIcon,
    waitForChangesDelay,
    readonly,
    onMount,
    onUnmount,
    onClose,
    ...outletProps
  }: IOutletModalProps<Data, Payload, Params>) => JSX.Element;
  export default OutletModal;
}

declare module "react-declarative/components/OutletView/model/Id" {
  export type Id = string;
  export default Id;
}

declare module "react-declarative/components/FadeView/components/FadeContainer" {
  import * as React from "react";
  import DefaultFade from "react-declarative/components/FadeView/components/DefaultFade";
  export const SCROLL_VIEW_TARGER = "react-declarative__scrollViewTarget";
  /**
   * Represents the properties for the FadeContainer component.
   */
  export interface IFadeContainerProps {
    className?: string;
    Fade?: typeof DefaultFade;
    style?: React.CSSProperties;
    children: React.ReactNode;
    color?: string;
    selector?: string;
    zIndex?: number;
    disableBottom?: boolean;
    disableRight?: boolean;
  }
  /**
   * Represents a container component that fades out its content on certain scroll and resize events.
   *
   * @typedef FadeContainer
   * @property className - The CSS class names to apply to the root element.
   * @property style - The inline CSS styles to apply to the root element.
   * @property color - The color of the fade effect.
   * @property children - The content to be rendered inside the container.
   * @property disableBottom - Whether or not to disable the bottom fade effect. Default is false.
   * @property disableRight - Whether or not to disable the right fade effect. Default is false.
   * @property zIndex - The z-index of the fade effect. Default is 9.
   * @property Fade - The fade effect component to use. Default is DefaultFade.
   * @property`.
   *
   * @returns - The rendered FadeContainer component.
   */
  export const FadeContainer: ({
    className,
    style,
    color,
    children,
    disableBottom,
    disableRight,
    zIndex,
    Fade,
    selector,
  }: IFadeContainerProps) => JSX.Element;
  export default FadeContainer;
}

declare module "react-declarative/components/TabsView/model/ITabsViewProps" {
  import React from "react";
  import { SxProps } from "@mui/material";
  import History from "react-declarative/model/History";
  import IAnything from "react-declarative/model/IAnything";
  import IOutletViewProps from "react-declarative/components/OutletView/model/IOutletViewProps";
  import ITabsOutlet, {
    OtherProps,
  } from "react-declarative/components/TabsView/model/ITabsOutlet";
  import ITabsStep from "react-declarative/components/TabsView/model/ITabsStep";
  import { MemoryHistory, Update } from "history";
  /**
   * Represents the props for the ITabsView component.
   *
   * @template Data - The data type.
   * @template Payload - The payload type.
   */
  export interface ITabsViewProps<
    Data extends {} = IAnything,
    Payload = IAnything,
    Params = IAnything,
  > extends Omit<
      IOutletViewProps<Data, Payload, Params, Partial<OtherProps>>,
      keyof {
        history: never;
        routes: never;
      }
    > {
    withScroll?: boolean;
    fullScreen?: boolean;
    transparentHeader?: boolean;
    onNavigate?: (update: Update) => void;
    BeforePaper?: React.ComponentType<{
      payload: Payload;
      history: History;
      activeTab: ITabsStep<Payload>;
    }>;
    AfterPaper?: React.ComponentType<{
      payload: Payload;
      history: History;
      activeTab: ITabsStep<Payload>;
    }>;
    BeforeTabs?: React.ComponentType<{
      payload: Payload;
      history: History;
      activeTab: ITabsStep<Payload>;
    }>;
    AfterTabs?: React.ComponentType<{
      payload: Payload;
      history: History;
      activeTab: ITabsStep<Payload>;
    }>;
    className?: string;
    outlinePaper?: boolean;
    transparentPaper?: boolean;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    onTabChange: (id: string, history: MemoryHistory, payload: Payload) => void;
    routes: ITabsOutlet<Data, Payload>[];
    tabs: ITabsStep<Payload>[];
    history?: History;
    pathname?: string;
  }
  export default ITabsViewProps;
}

declare module "react-declarative/components/WizardView/model/IWizardViewProps" {
  import { SxProps } from "@mui/material";
  import History from "react-declarative/model/History";
  import IAnything from "react-declarative/model/IAnything";
  import IOutletViewProps from "react-declarative/components/OutletView/model/IOutletViewProps";
  import IWizardOutlet, {
    OtherProps,
  } from "react-declarative/components/WizardView/model/IWizardOutlet";
  import IWizardStep from "react-declarative/components/WizardView/model/IWizardStep";
  import { Update } from "history";
  /**
   * Interface representing the props for the WizardView component.
   *
   * @template Data - Type of data object.
   * @template Payload - Type of payload object.
   */
  export interface IWizardViewProps<
    Data extends {} = IAnything,
    Payload = IAnything,
    Params = IAnything,
  > extends Omit<
      IOutletViewProps<Data, Payload, Params, Partial<OtherProps>>,
      keyof {
        history: never;
        routes: never;
      }
    > {
    onNavigate?: (update: Update) => void;
    withScroll?: boolean;
    className?: string;
    outlinePaper?: boolean;
    fullScreen?: boolean;
    transparentPaper?: boolean;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    routes: IWizardOutlet<Data, Payload>[];
    steps: IWizardStep<Payload>[];
    history?: History;
    pathname?: string;
  }
  export default IWizardViewProps;
}

declare module "react-declarative/components/WizardView/components/WizardOutletModal" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import { IFetchViewProps } from "react-declarative/components/FetchView";
  import IWizardModal from "react-declarative/components/WizardView/model/IWizardModal";
  import TBehaviorSubject from "react-declarative/model/TBehaviorSubject";
  import IWizardViewProps from "react-declarative/components/WizardView/model/IWizardViewProps";
  import IAnything from "react-declarative/model/IAnything";
  import TSubject from "react-declarative/model/TSubject";
  import ISize from "react-declarative/model/ISize";
  /**
   * Interface for props of the WizardModal component.
   *
   * @template Data - The type of data passed to the wizard.
   * @template Payload - The type of payload passed to the wizard.
   */
  export interface IWizardModalProps<
    Data extends {} = Record<string, any>,
    Payload = IAnything,
  > extends Omit<
      IWizardViewProps<Data, Payload>,
      keyof {
        otherProps: never;
        onSubmit: never;
        initialData: never;
        payload: never;
        params: never;
        routes: never;
        data: never;
        id: never;
        outlinePaper: never;
        transparentPaper: never;
      }
    > {
    sizeRequest?: (size: ISize) => {
      height: number;
      width: number;
      sx?: SxProps<any>;
    };
    openSubject: TBehaviorSubject<boolean>;
    fullScreen?: boolean;
    withActionButton?: boolean;
    withStaticAction?: boolean;
    title?: string;
    fetchState?: IFetchViewProps["state"];
    reloadSubject?: TSubject<void>;
    onSubmit?: (
      data: Data | null,
      payload: Payload,
    ) => Promise<boolean> | boolean;
    AfterTitle?: React.ComponentType<{
      onClose: () => void;
      data: Data | null;
    }>;
    BeforeTitle?: React.ComponentType<{
      onClose: () => void;
      data: Data | null;
    }>;
    routes: IWizardModal<Data, Payload>[];
    data?: Data | null;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    throwError?: boolean;
    hidden?: boolean;
    submitLabel?: string;
    submitIcon?: React.ComponentType<any>;
    mapPayload?: (data: Record<string, any>[]) => Payload | Promise<Payload>;
    mapInitialData?: (data: Record<string, any>[]) => Data | Promise<Data>;
    onMount?: () => void;
    onUnmount?: () => void;
    onClose?: () => void;
  }
  /**
   * OutletModal is a component that displays a modal with a form and allows the user to submit the form data.
   *
   * @template Data - The type of the form data
   * @template Payload - The type of the payload to be sent when submitting the form
   *
   * @param withActionButton - If true, display a submit button in the modal (default: false)
   * @param hidden - If true, the modal is hidden (default: false)
   * @param onSubmit - The function to handle form submission (default: () => true)
   * @param onChange - The function to handle form data changes (default: () => undefined)
   * @param mapInitialData - The function to map the initial form data (default: () => ({} as Data))
   * @param mapPayload - The function to map the payload to be sent (default: () => ({} as Payload))
   * @param onLoadStart - The function to be called when data loading starts
   * @param onLoadEnd - The function to be called when data loading ends
   * @param fallback - The function to be called if an error occurs (default: undefined)
   * @param fullScreen - If true, the modal will occupy the full screen (default: true)
   * @param sizeRequest - The function to compute the size of the modal (default: fullScreen ? LARGE_SIZE_REQUEST : SMALL_SIZE_REQUEST)
   * @param reloadSubject - The subject to trigger form data reload
   * @param fetchState - The function to compute the state of the data fetching (default: () => ({}))
   * @param AfterTitle - The component to be rendered after the title
   * @param BeforeTitle - The component to be rendered before the title
   * @param title - The title of the modal
   * @param upperData - The initial form data (default: null)
   * @param throwError - If true, throw an error when an error occurs (default: false)
   * @param withStaticAction - If true, the submit button is always enabled (default: false)
   * @param waitForChangesDelay - The delay in ms to wait for form data changes (default: withStaticAction ? 0 : WAIT_FOR_CHANGES_DELAY)
   * @param submitLabel - The label of the submit button (default: "Submit")
   * @param openSubject - The subject to control the visibility of the modal
   * @param readonly - If true, the form is read-only (default: undefined)
   * @param routes - The routes object for the wizard component
   * @param onMount - The function to be called when the component is mounted
   * @param onUnmount - The function to be called when the component is unmounted
   * @param onClose - The function to handle modal closure (default: () => null)
   * @param outletProps - Other props for the OutletModal component
   *
   * @returns The rendered OutletModal component
   */
  export const OutletModal: <
    Data extends {} = Record<string, any>,
    Payload = any,
  >({
    withActionButton,
    hidden,
    onSubmit,
    onChange,
    mapInitialData,
    mapPayload,
    onLoadStart,
    onLoadEnd,
    fallback,
    fullScreen,
    sizeRequest,
    reloadSubject,
    fetchState,
    AfterTitle,
    BeforeTitle,
    title,
    data: upperData,
    throwError,
    withStaticAction,
    waitForChangesDelay,
    submitLabel,
    submitIcon: SubmitIcon,
    openSubject,
    readonly,
    routes,
    onMount,
    onUnmount,
    onClose,
    ...outletProps
  }: IWizardModalProps<Data, Payload>) => JSX.Element;
  export default OutletModal;
}

declare module "react-declarative/components/KanbanView/model/IKanbanViewProps" {
  import { SxProps } from "@mui/material";
  import IAnything from "react-declarative/model/IAnything";
  import IBoardColumn from "react-declarative/components/KanbanView/model/IBoardColumn";
  import IBoardItem from "react-declarative/components/KanbanView/model/IBoardItem";
  import TSubject from "react-declarative/model/TSubject";
  /**
   * Represents the properties for the KanbanView component.
   *
   * @template Data - The type of data associated with each item.
   * @template Payload - The type of payload associated with each item.
   * @template ColumnType - The type of column associated with each item.
   */
  export interface IKanbanViewProps<
    Data = IAnything,
    Payload = IAnything,
    ColumnType = IAnything,
  > {
    reloadSubject?: TSubject<void>;
    ref?: React.Ref<HTMLDivElement | undefined>;
    deps?: any[];
    withUpdateOrder?: boolean;
    withGoBack?: boolean;
    withHeaderTooltip?: boolean;
    className?: string;
    rowTtl?: number;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    payload?: (() => Payload) | Payload;
    disabled?: boolean;
    items: IBoardItem<Data, Payload, ColumnType>[];
    columns: IBoardColumn<Data, Payload, ColumnType>[];
    bufferSize?: number;
    minRowHeight?: number;
    cardLabel?:
      | React.ReactNode
      | ((
          id: string,
          data: Data,
          payload: Payload,
        ) => React.ReactNode | Promise<React.ReactNode>);
    onChangeColumn?: (
      id: string,
      column: ColumnType,
      data: Data,
      payload: IAnything,
    ) => void | Promise<void>;
    onCardLabelClick?: (id: string, data: Data, payload: IAnything) => void;
    onDataRequest?: (initial: boolean) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    fallback?: (e: Error) => void;
    filterFn?: (item: IBoardItem<Data, Payload, ColumnType>) => boolean;
    throwError?: boolean;
    AfterCardContent?: React.ComponentType<{
      id: string;
      data: Data;
      payload: IAnything;
    }>;
    BeforeColumnTitle?: React.ComponentType<{
      column: ColumnType;
      payload: IAnything;
    }>;
    AfterColumnTitle?: React.ComponentType<{
      column: ColumnType;
      payload: IAnything;
    }>;
  }
  export default IKanbanViewProps;
}

declare module "react-declarative/components/GridView/components/Card" {
  import * as React from "react";
  import { SxProps } from "@mui/material/styles";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents the properties for the `Card` component.
   *
   * @template P - The type for the payload data.
   * @property [label] - The label for the card.
   * @property [outlinePaper] - Whether to show the card with an outline paper.
   * @property [transparentPaper] - Whether to show the card with a transparent paper.
   * @property [sx] - The styling props for the card.
   * @property [children] - The content of the card.
   * @property [className] - The CSS class name for the card.
   * @property [payload] - The payload data.
   * @property loading - Whether the card is in a loading state.
   * @property [style] - The inline style for the card.
   * @property [BeforeLabel] - The component to render before the label.
   * @property [AfterLabel] - The component to render after the label.
   */
  export interface ICardProps<P = IAnything> {
    label?: React.ReactNode;
    outlinePaper?: boolean;
    transparentPaper?: boolean;
    sx?: SxProps<any>;
    children?: React.ReactNode;
    className?: string;
    payload?: P;
    loading: boolean;
    style?: React.CSSProperties;
    BeforeLabel?: React.ComponentType<{
      payload: P;
      loading: boolean;
    }>;
    AfterLabel?: React.ComponentType<{
      payload: P;
      loading: boolean;
    }>;
  }
  /**
   * Represents a Card component.
   *
   * @typedef Card
   * @property children - The content of the card.
   * @property outlinePaper - Whether to show an outline paper.
   * @property transparentPaper - Whether to show a transparent paper.
   * @property className - Additional CSS class names for the card.
   * @property style - Additional inline styles for the card.
   * @property sx - Custom styles for Scalable Box component.
   * @property label - The label for the card.
   * @property payload - Payload data associated with the card.
   * @property loading - Whether the card is in a loading state.
   * @property BeforeLabel - The component to render before the label.
   * @property AfterLabel - The component to render after the label.
   *
   * @param props - The properties passed to the Card component.
   * @returns - The rendered Card component.
   */
  export const Card: ({
    children,
    outlinePaper,
    transparentPaper,
    className,
    style,
    sx,
    label,
    payload,
    loading,
    BeforeLabel,
    AfterLabel,
  }: ICardProps) => JSX.Element;
  export default Card;
}

declare module "react-declarative/components/ChatView/model/ActionResponse" {
  /**
   * Represents the response structure for actions.
   * @interface ActionResponse
   * @property type - The type of the response.
   * @property value - The value of the response.
   * @property [error] - Optional error object if an error occurred during the action.
   */
  export interface ActionResponse {
    type: string;
    value: string;
    error?: Error;
  }
  export default ActionResponse;
}

declare module "react-declarative/components/ChatView/model/ChatOption" {
  /**
   * @interface ChatOption - Interface representing options for a chat.
   * @property [delay] - The delay in milliseconds before displaying a message (optional).
   * @property [showDateTime] - Whether to display date and time for each message (optional).
   */
  export interface ChatOption {
    delay?: number;
    showDateTime?: boolean;
  }
  export default ChatOption;
}

declare module "react-declarative/components/ChatView/model/Message" {
  import MessageContent from "react-declarative/components/ChatView/model/MessageContent";
  /**
   * @interface Message - Interface representing a message.
   * @template C - Type parameter for the content of the message.
   * @property type - The type of the message.
   * @property content - The content of the message.
   * @property self - Indicates whether the message is sent by the current user.
   * @property [username] - The username associated with the message (optional).
   * @property [avatar] - The avatar associated with the message (optional).
   * @property [createdAt] - The creation date of the message (optional).
   * @property [updatedAt] - The last update date of the message (optional).
   * @property [deletedAt] - The deletion date of the message (optional).
   */
  export interface Message<C extends MessageContent> {
    type: string;
    content: C;
    self: boolean;
    username?: string;
    avatar?: string;
    createdAt?: Date;
    updatedAt?: Date;
    deletedAt?: Date;
  }
  export default Message;
}

declare module "react-declarative/components/ChatView/model/MessageContent" {
  /**
   * @typedef MessageContent - Type representing the content of a message, which can be a string or a JSX element.
   */
  export type MessageContent = string | JSX.Element;
  export default MessageContent;
}

declare module "react-declarative/components/ChatView/model/OnActionChanged" {
  import ActionRequest from "react-declarative/components/ChatView/model/ActionRequest";
  import ActionResponse from "react-declarative/components/ChatView/model/ActionResponse";
  /**
   * @callback OnActionChanged - Function signature for the action changed event handler.
   * @param request - The action request.
   * @param [response] - The action response (optional).
   * @returns {void}
   */
  export interface OnActionChanged {
    (request: ActionRequest, response?: ActionResponse): void;
  }
  export default OnActionChanged;
}

declare module "react-declarative/components/ChatView/model/OnActionResponsed" {
  import ActionResponse from "react-declarative/components/ChatView/model/ActionResponse";
  /**
   * @callback OnActionResponsed - Function signature for the action responsed event handler.
   * @param response - The action response.
   * @returns {void}
   */
  export interface OnActionResponsed {
    (response: ActionResponse): void;
  }
  export default OnActionResponsed;
}

declare module "react-declarative/components/ChatView/model/OnMessagesChanged" {
  import Message from "react-declarative/components/ChatView/model/Message";
  import MessageContent from "react-declarative/components/ChatView/model/MessageContent";
  /**
   * @callback OnMessagesChanged - Function signature for the messages changed event handler.
   * @param messages - The array of messages.
   * @returns {void}
   */
  export interface OnMessagesChanged {
    (messages: Message<MessageContent>[]): void;
  }
  export default OnMessagesChanged;
}

declare module "react-declarative/components/ChatView/model/AudioActionResponse" {
  import ActionResponse from "react-declarative/components/ChatView/model/ActionResponse";
  /**
   * @interface AudioActionResponse - Interface representing an audio action response.
   * @extends {ActionResponse} - Extends ActionResponse interface.
   * @property type - The type of the response. Value is 'audio'.
   * @property [audio] - The audio data (optional).
   */
  export interface AudioActionResponse extends ActionResponse {
    type: "audio";
    audio?: Blob;
  }
  export default AudioActionResponse;
}

declare module "react-declarative/components/ChatView/model/CustomActionResponse" {
  import ActionResponse from "react-declarative/components/ChatView/model/ActionResponse";
  /**
   * @interface CustomActionResponse - Interface representing a custom action response.
   * @extends {ActionResponse} - Extends ActionResponse interface.
   * @property type - The type of the response. Value is 'custom'.
   */
  export interface CustomActionResponse extends ActionResponse {
    type: "custom";
  }
  export default CustomActionResponse;
}

declare module "react-declarative/components/ChatView/model/FileActionResponse" {
  import ActionResponse from "react-declarative/components/ChatView/model/ActionResponse";
  /**
   * @interface FileActionResponse - Interface representing a file action response.
   * @extends {ActionResponse} - Extends ActionResponse interface.
   * @property type - The type of the response. Value is 'file'.
   * @property files - The array of files.
   */
  export interface FileActionResponse extends ActionResponse {
    type: "file";
    files: File[];
  }
  export default FileActionResponse;
}

declare module "react-declarative/components/ChatView/model/MultiSelectActionResponse" {
  import ActionResponse from "react-declarative/components/ChatView/model/ActionResponse";
  /**
   * @interface MultiSelectActionResponse - Interface representing a multi-select action response.
   * @extends {ActionResponse} - Extends ActionResponse interface.
   * @property type - The type of the response. Value is 'multi-select'.
   * @property options - The options selected in the multi-select response.
   */
  export interface MultiSelectActionResponse extends ActionResponse {
    type: "multi-select";
    options: {
      value: string;
      text: string;
    }[];
  }
  export default MultiSelectActionResponse;
}

declare module "react-declarative/components/ChatView/model/SelectActionResponse" {
  import ActionResponse from "react-declarative/components/ChatView/model/ActionResponse";
  /**
   * @interface SelectActionResponse - Interface representing a select action response.
   * @extends {ActionResponse} - Extends ActionResponse interface.
   * @property type - The type of the response. Value is 'select'.
   * @property option - The selected option.
   */
  export interface SelectActionResponse extends ActionResponse {
    type: "select";
    option: {
      value: string;
      text: string;
    };
  }
  export default SelectActionResponse;
}

declare module "react-declarative/components/ChatView/model/TextActionResponse" {
  import ActionResponse from "react-declarative/components/ChatView/model/ActionResponse";
  /**
   * @interface TextActionResponse - Interface representing a text action response.
   * @extends {ActionResponse} - Extends ActionResponse interface.
   * @property type - The type of the response. Value is 'text'.
   */
  export interface TextActionResponse extends ActionResponse {
    type: "text";
  }
  export default TextActionResponse;
}

declare module "react-declarative/components/Grid/model/Dimension" {
  export type Dimension = number | string;
  export default Dimension;
}

declare module "react-declarative/components/MasterDetail/model/IMasterDetailProps" {
  import IMasterDetailOption from "react-declarative/components/MasterDetail/model/IMasterDetailOption";
  import MasterDetailMode from "react-declarative/components/MasterDetail/model/MasterDetailMode";
  import React from "react";
  import { SxProps } from "@mui/material";
  /**
   * Props interface for the IMasterDetail component.
   *
   * @template Payload - The type of the payload data.
   *
   * @property [withTransparentTabs=false] - Determines if the tabs should have a transparent background.
   * @property [withMenuCollapse=false] - Determines if the menu should collapse when the detail view is open.
   * @property [withFixedPos=false] - Determines if the component should have a fixed position.
   * @property [fixedPosHeaderAdjust] - The number of pixels to adjust the header when the component has a fixed position.
   * @property [mode] - The mode of the master detail component.
   * @property [title] - The title of the component.
   * @property children - The child components of the master detail component.
   * @property [Loader] - The loader component to use.
   * @property [Error] - The error component to use.
   * @property [activeOption] - The currently active option.
   * @property [onActiveOptionChange] - Callback function called when the active option is changed.
   * @property [className] - The CSS class name for the component.
   * @property [style] - The inline style for the component.
   * @property [sx] - The custom styling props for the component.
   * @property [payload] - The payload data.
   * @property [deps] - The dependencies for the component.
   * @property options - The options for the component.
   * @property [fallback] - The fallback function in case of an error.
   * @property [onLoadStart] - Callback function called when the data loading starts.
   * @property [onLoadEnd] - Callback function called when the data loading ends.
   * @property [throwError=false] - Determines if an error should be thrown.
   */
  export interface IMasterDetailProps<Payload = any> {
    withTransparentTabs?: boolean;
    withMenuCollapse?: boolean;
    withFixedPos?: boolean;
    fixedPosHeaderAdjust?: number;
    mode?: MasterDetailMode;
    title?: string;
    children: React.ReactNode;
    Loader?: React.ComponentType<any>;
    Error?: React.ComponentType<any>;
    activeOption?: string;
    onActiveOptionChange?: (activeOption: string, initial: boolean) => void;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    payload?: Payload;
    deps?: any[];
    options: IMasterDetailOption<Payload>[];
    fallback?: (e: Error) => void;
    onLoadStart?: () => void;
    onLoadEnd?: (isOk: boolean) => void;
    throwError?: boolean;
  }
  export default IMasterDetailProps;
}

declare module "react-declarative/components/common/Group/Group" {
  import * as React from "react";
  import { IManagedLayout, PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Represents the props for a group component.
   *
   * @template Data - The type of data accepted by the group component.
   * @template Payload - The type of payload used by the group component.
   * @extends IManagedLayout - Inherit props from IManagedLayout.
   */
  export interface IGroupProps<Data = IAnything, Payload = IAnything>
    extends IManagedLayout<Data, Payload> {
    style?: PickProp<IField<Data, Payload>, "style">;
    className?: PickProp<IField<Data, Payload>, "className">;
  }
  /**
   * Represents a private interface for a group component.
   *
   * @interface IGroupPrivate
   */
  interface IGroupPrivate {
    children: React.ReactNode;
    isItem?: boolean;
    isBaselineAlign?: boolean;
    onClick?: React.MouseEventHandler<HTMLDivElement>;
    onFocus?: () => void;
    onContextMenu?: React.MouseEventHandler<HTMLDivElement>;
  }
  /**
   * Group component
   *
   * @typedef Group
   * @property className - The class name of the group
   * @property columns - The columns property of the group
   * @property phoneColumns - The phone columns property of the group
   * @property tabletColumns - The tablet columns property of the group
   * @property desktopColumns - The desktop columns property of the group
   * @property children - The children of the group
   * @property isItem - Whether the group is an item
   * @property isBaselineAlign - Whether to align the group baseline
   * @property style - The style object of the group
   * @property columnsOverride - The columns override property of the group
   * @property sx - The sx property of the group
   * @property fieldRightMargin - The right margin of the field
   * @property fieldBottomMargin - The bottom margin of the field
   * @property onClick - The onClick event handler of the group
   * @property onFocus - The onFocus event handler of the group
   * @property onContextMenu - The onContextMenu event handler of the group
   * @property ...otherProps - Other props passed to the group
   * @property ref - The ref of the group
   *
   * @param Group - The Group component function
   * @returns The rendered component
   */
  export const Group: {
    (
      {
        className,
        columns,
        phoneColumns,
        tabletColumns,
        desktopColumns,
        children,
        isItem,
        isBaselineAlign,
        style,
        columnsOverride,
        sx,
        fieldRightMargin,
        fieldBottomMargin,
        onClick,
        onFocus,
        onContextMenu,
        ...otherProps
      }: IGroupProps & IGroupPrivate,
      ref: React.Ref<HTMLDivElement>,
    ): JSX.Element;
    displayName: string;
  };
  const _default: React.ForwardRefExoticComponent<
    IGroupProps<any, any> & IGroupPrivate & React.RefAttributes<HTMLDivElement>
  >;
  export default _default;
}

declare module "react-declarative/components/common/Outline/Outline" {
  import * as React from "react";
  import { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Interface for the `Outline` component props.
   *
   * @template Data - The data type of the component.
   * @template Payload - The payload type of the component.
   */
  export interface IOutlineProps<Data = IAnything, Payload = IAnything> {
    className?: PickProp<IField<Data, Payload>, "className">;
    style?: PickProp<IField<Data, Payload>, "style">;
  }
  /**
   * Interface representing a private outline.
   *
   * @template Data - The data type used in the outline.
   * @template Payload - The payload type used in the outline.
   */
  interface IOutlinePrivate<Data = IAnything, Payload = IAnything> {
    children: React.ReactNode;
    columnsOverride?: PickProp<IField<Data, Payload>, "columnsOverride">;
    sx?: PickProp<IField<Data, Payload>, "sx">;
    isBaselineAlign: boolean;
  }
  /**
   * Render an outline component.
   *
   * @param [className=""] - The class name for the outline component.
   * @param [columnsOverride] - An object representing the column overrides.
   * @param [style] - Inline styles for the outline component.
   * @param children - The content to be rendered within the outline component.
   * @param [isBaselineAlign] - Flag indicating whether to align items to the baseline.
   * @param sx - The custom styling for the outline component using the sx prop.
   * @returns The rendered outline component.
   */
  export const Outline: {
    ({
      className,
      columnsOverride,
      style,
      children,
      isBaselineAlign,
      sx,
    }: IOutlineProps & IOutlinePrivate): JSX.Element;
    displayName: string;
  };
  export default Outline;
}

declare module "react-declarative/components/common/Paper/Paper" {
  import * as React from "react";
  import { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Represents the props for the Paper component.
   *
   * @template Data - The type of data used by the component.
   * @template Payload - The type of payload used by the component.
   */
  export interface IPaperProps<Data = IAnything, Payload = IAnything> {
    className?: PickProp<IField<Data, Payload>, "className">;
    style?: PickProp<IField<Data, Payload>, "style">;
  }
  /**
   * The `IPaperPrivate` interface is used to describe a private paper component.
   *
   * @template Data - The type of data for the paper component.
   * @template Payload - The type of payload for the paper component.
   */
  interface IPaperPrivate<Data = IAnything, Payload = IAnything> {
    children: React.ReactNode;
    isBaselineAlign: boolean;
    columnsOverride?: PickProp<IField<Data, Payload>, "columnsOverride">;
    sx?: PickProp<IField<Data, Payload>, "sx">;
  }
  /**
   * Represents a Paper component that displays a block of content with a paper-like background.
   *
   * @typedef Paper
   * @param [className=""] - The additional CSS class name(s) to apply to the Paper component.
   * @param [style] - The inline style object to apply to the Paper component.
   * @param children - The content to be rendered inside the Paper component.
   * @param columnsOverride - The number of columns to override the default layout.
   * @param isBaselineAlign - Specifies whether to align the child elements on the baseline.
   * @param sx - The custom style object to apply to the Paper component using sx prop from the Material-UI theme.
   *
   * @returns - The rendered Paper component.
   */
  export const Paper: {
    ({
      className,
      style,
      children,
      columnsOverride,
      isBaselineAlign,
      sx,
    }: IPaperProps & IPaperPrivate): JSX.Element;
    displayName: string;
  };
  export default Paper;
}

declare module "react-declarative/components/common/Expansion/Expansion" {
  import * as React from "react";
  import { PickProp } from "react-declarative/model/IManaged";
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Represents the properties for the Expansion component.
   *
   * @template Data - The type of data associated with the component.
   * @template Payload - The type of payload associated with the component.
   */
  export interface IExpansionProps<Data = IAnything, Payload = IAnything> {
    title?: PickProp<IField<Data, Payload>, "title">;
    style?: PickProp<IField<Data, Payload>, "style">;
    description?: PickProp<IField<Data, Payload>, "description">;
    className?: PickProp<IField<Data, Payload>, "className">;
    expansionOpened?: PickProp<IField<Data, Payload>, "expansionOpened">;
  }
  /**
   * Interface for private expansion components.
   *
   * @template Data - The type of data.
   * @template Payload - The type of payload.
   */
  interface IExpansionPrivate<Data = IAnything, Payload = IAnything> {
    children: React.ReactNode;
    columnsOverride?: PickProp<IField<Data, Payload>, "columnsOverride">;
    sx?: PickProp<IField<Data, Payload>, "sx">;
    isBaselineAlign: boolean;
  }
  /**
   * Expansion component used for creating expandable sections in UI.
   *
   * @param props - The props for the Expansion component.
   * @param props.title - The title of the expansion section.
   * @param props.description - The description of the expansion section.
   * @param props.className - The CSS class name for the expansion section.
   * @param props.columnsOverride - Override columns for Group component.
   * @param props.isBaselineAlign - Specifies if the content of the expansion section should be baseline-aligned.
   * @param props.sx - The style object for the expansion section.
   * @param props.style - The inline style object for the expansion section.
   * @param props.children - The content of the expansion section.
   * @param props.expansionOpened - Specifies if the expansion section should be initially expanded.
   * @returns The rendered Expansion component.
   */
  export const Expansion: {
    ({
      title,
      description,
      className,
      columnsOverride,
      isBaselineAlign,
      sx,
      style,
      children,
      expansionOpened,
    }: IExpansionProps & IExpansionPrivate): JSX.Element;
    displayName: string;
  };
  export default Expansion;
}

declare module "react-declarative/components/List/slots/ActionAddSlot/IActionAddSlot" {
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Interface for adding a slot in an action.
   *
   * @template RowData - The type of data for selected rows.
   * @template Payload - The type of payload data.
   */
  export interface IActionAddSlot<
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
  > {
    action?: string;
    label?: string;
    height: number;
    width: number;
    /**
     * Determines the visibility of an element based on selected rows and payload.
     *
     * @param selectedRows - Array of selected rows.
     * @param payload - Input payload.
     * @returns - A Promise that resolves to a boolean indicating the visibility of the element, or a boolean indicating the visibility directly.
     */
    isVisible?: (
      selectedRows: RowData[],
      payload: Payload,
    ) => Promise<boolean> | boolean;
    /**
     * Checks if the provided rows are disabled based on the given payload.
     *
     * @param selectedRows - The selected rows to be checked.
     * @param payload - The payload used to determine if the rows are disabled.
     * @returns - A Promise resolving to a boolean indicating if the rows are disabled.
     */
    isDisabled?: (
      selectedRows: RowData[],
      payload: Payload,
    ) => Promise<boolean> | boolean;
  }
  export default IActionAddSlot;
}

declare module "react-declarative/components/List/slots/ActionAddSlot/ActionAddSlot" {
  import IActionAddSlot from "react-declarative/components/List/slots/ActionAddSlot/IActionAddSlot";
  /**
   * ActionAddSlot function.
   *
   * @param props - Props object for the ActionAddSlot component.
   * @returns - ActionAdd component with the given props.
   */
  export const ActionAddSlot: (props: IActionAddSlot) => JSX.Element;
  export default ActionAddSlot;
}

declare module "react-declarative/components/List/slots/ActionFabSlot/IActionFabSlot" {
  import React from "react";
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Represents an action slot for a FAB (Floating Action Button).
   *
   * @template RowData - The type of data for the selected rows.
   * @template Payload - The type of data for the action payload.
   */
  export interface IActionFabSlot<
    RowData extends IRowData = IAnything,
    Payload extends IAnything = IAnything,
  > {
    action?: string;
    label?: string;
    icon?: React.ComponentType<any>;
    height: number;
    width: number;
    /**
     * Determines if the element is visible based on the selected rows and payload.
     *
     * @param selectedRows - The selected rows to check against.
     * @param payload - The payload to evaluate.
     * @returns - True if the element is visible, false otherwise.
     */
    isVisible?: (
      selectedRows: RowData[],
      payload: Payload,
    ) => Promise<boolean> | boolean;
    /**
     * Determines whether a specific feature is disabled based on the selected rows and payload.
     *
     * @param selectedRows - The selected rows.
     * @param payload - The payload.
     * @returns - A promise that resolves to a boolean or a boolean value.
     */
    isDisabled?: (
      selectedRows: RowData[],
      payload: Payload,
    ) => Promise<boolean> | boolean;
  }
  export default IActionFabSlot;
}

declare module "react-declarative/components/List/slots/ActionFabSlot/ActionFabSlot" {
  import IActionFabSlot from "react-declarative/components/List/slots/ActionFabSlot/IActionFabSlot";
  /**
   * Represents a component that renders an action floating action button slot.
   * @param props - The props for the action floating action button slot.
   * @returns - The rendered action floating action button slot.
   */
  export const ActionFabSlot: (props: IActionFabSlot) => JSX.Element;
  export default ActionFabSlot;
}

declare module "react-declarative/components/List/slots/ActionMenuSlot/IActionMenuSlot" {
  import IAnything from "react-declarative/model/IAnything";
  import { IListActionOption } from "react-declarative/model/IListProps";
  /**
   * Represents an action menu slot.
   *
   * @interface IActionMenuSlot
   */
  export interface IActionMenuSlot {
    /**
     * Represents a set of options for a list action.
     * These options are stored in an array of partial objects of type IListActionOption.
     *
     * @typedef ListActionOptions
     */
    options?: Partial<IListActionOption>[];
    deps?: IAnything[];
  }
  export default IActionMenuSlot;
}

declare module "react-declarative/components/List/slots/ActionMenuSlot/ActionMenuSlot" {
  import IActionMenuSlot from "react-declarative/components/List/slots/ActionMenuSlot/IActionMenuSlot";
  /**
   * Renders an action menu slot component.
   * @param props - The props for the action menu slot component
   * @returns - The rendered action menu slot component
   */
  export const ActionMenuSlot: (props: IActionMenuSlot) => JSX.Element;
  export default ActionMenuSlot;
}

declare module "react-declarative/components/List/slots/BodyRowSlot/IBodyRowSlot" {
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  import IColumn from "react-declarative/model/IColumn";
  import DisplayMode from "react-declarative/model/DisplayMode";
  /**
   * Represents a column in the body of a table.
   * @template RowData - The type of data in the table rows.
   */
  export type BodyColumn<RowData extends IRowData = IAnything> = Omit<
    IColumn<RowData>,
    keyof {
      width: never;
    }
  > & {
    width: string;
  };
  /**
   * Represents a slot for a body row in a table.
   *
   * @template RowData - The type of data associated with the row.
   */
  export interface IBodyRowSlot<RowData extends IRowData = IAnything> {
    fullWidth: number;
    row: RowData;
    disabled: boolean;
    /**
     * Represents an array of body columns.
     * @typedef columns
     *
     * @template RowData The type of data stored in the rows of the column.
     * @property length - The number of columns in the array.
     * @method {function(): Iterator<BodyColumn<RowData>, undefined, undefined>} @@iterator - Returns a new Iterator object that can be used to iterate over each column in the array.
     */
    columns: BodyColumn<RowData>[];
    mode: DisplayMode;
  }
  export default IBodyRowSlot;
}

declare module "react-declarative/components/List/slots/BodyRowSlot/BodyRowSlot" {
  import IBodyRowSlot from "react-declarative/components/List/slots/BodyRowSlot/IBodyRowSlot";
  /**
   * Function that renders a body row slot component.
   *
   * @param props - The props object containing the properties for the body row slot component.
   * @returns - The rendered body row component.
   */
  export const BodyRowSlot: (props: IBodyRowSlot) => JSX.Element;
  export default BodyRowSlot;
}

declare module "react-declarative/components/List/slots/CheckboxCellSlot/ICheckboxCellSlot" {
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  import { ICheckboxCellProps } from "react-declarative/components/List/components/SlotFactory/components/CheckboxCell/CheckboxCell";
  /**
   * Represents a slot for a checkbox cell in a table.
   *
   * @template RowData - The type of data for the row in the table.
   *
   * @interface
   * @extends ICheckboxCellProps<RowData>
   */
  export interface ICheckboxCellSlot<RowData extends IRowData = IAnything>
    extends ICheckboxCellProps<RowData> {}
  export default ICheckboxCellSlot;
}

declare module "react-declarative/components/List/slots/CheckboxCellSlot/CheckboxCellSlot" {
  import ICheckboxCellSlot from "react-declarative/components/List/slots/CheckboxCellSlot/ICheckboxCellSlot";
  /**
   * Renders a checkbox inside a cell slot.
   *
   * @param props - The props object for the checkbox cell slot.
   * @returns The rendered checkbox cell slot.
   */
  export const CheckboxCellSlot: (props: ICheckboxCellSlot) => JSX.Element;
  export default CheckboxCellSlot;
}

declare module "react-declarative/components/List/slots/CommonCellSlot/ICommonCellSlot" {
  import { IActionMenuProps } from "react-declarative/components/ActionMenu";
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  import IColumn from "react-declarative/model/IColumn";
  import DisplayMode from "react-declarative/model/DisplayMode";
  /**
   * Represents a common cell column.
   *
   * @template RowData - The type of the row data for the column.
   */
  export type CommonCellColumn<RowData extends IRowData = IAnything> = Omit<
    IColumn<RowData>,
    keyof {
      width: never;
    }
  > & {
    width: string;
  };
  /**
   * Represents a common cell slot.
   *
   * @template RowData - The type of row data used in the cell slot.
   *
   * @property column - The column associated with the cell slot.
   * @property row - The row data associated with the cell slot.
   * @property idx - The index of the cell slot.
   * @property fullWidth - The full width of the cell slot.
   * @property disabled - Indicates if the cell slot is disabled.
   * @property mode - The display mode of the cell slot.
   * @property onMenuToggle - The function to call when the menu toggle is triggered.
   * @property onAction - The function to call when an action is triggered in the menu.
   */
  export interface ICommonCellSlot<RowData extends IRowData = IAnything> {
    column: CommonCellColumn<RowData>;
    row: RowData;
    idx: number;
    fullWidth: number;
    disabled: boolean;
    mode: DisplayMode;
    /**
     * Callback function for the toggle action of a menu.
     *
     * @callback onMenuToggle
     * @param isOpen - Specifies whether the menu is open or closed.
     * @returns
     */
    onMenuToggle: IActionMenuProps["onToggle"];
    /**
     * The callback function for an action triggered in the action menu.
     *
     * @param action - The action triggered in the action menu.
     * @returns
     */
    onAction: IActionMenuProps["onAction"];
  }
  export default ICommonCellSlot;
}

declare module "react-declarative/components/List/slots/CommonCellSlot/CommonCellSlot" {
  import ICommonCellSlot from "react-declarative/components/List/slots/CommonCellSlot/ICommonCellSlot";
  /**
   * Represents a common cell slot component.
   *
   * @param props - The props object containing the required data for the component.
   * @returns - The rendered CommonCell component.
   */
  export const CommonCellSlot: (props: ICommonCellSlot) => JSX.Element;
  export default CommonCellSlot;
}

declare module "react-declarative/components/List/slots/HeadRowSlot/IHeadRowSlot" {
  import IAnything from "react-declarative/model/IAnything";
  import IRowData from "react-declarative/model/IRowData";
  import IColumn from "react-declarative/model/IColumn";
  import DisplayMode from "react-declarative/model/DisplayMode";
  /**
   * Represents a column in a table's header.
   *
   * @template RowData - The type of data in the rows of the table.
   */
  export type HeadColumn<RowData extends IRowData = IAnything> = Omit<
    IColumn<RowData>,
    keyof {
      width: never;
    }
  > & {
    width: string;
  };
  /**
   * Interface for the head row slot of a table component.
   * @template RowData - The type of data for each row.
   */
  export interface IHeadRowSlot<RowData extends IRowData = IAnything> {
    /**
     * Represents an array of column headers with associated row data.
     * @typedef Columns
     * @template RowData The type of data contained in each column's rows.
     */
    columns: HeadColumn<RowData>[];
    fullWidth: number;
    mode: DisplayMode;
  }
  export default IHeadRowSlot;
}

declare module "react-declarative/components/List/slots/HeadRowSlot/HeadRowSlot" {
  import IHeadRowSlot from "react-declarative/components/List/slots/HeadRowSlot/IHeadRowSlot";
  /**
   * Represents a slot component for displaying a head row in a table.
   * @param props - The props for the component.
   * @returns The rendered head row slot component.
   */
  export const HeadRowSlot: (props: IHeadRowSlot) => JSX.Element;
  export default HeadRowSlot;
}

declare module "react-declarative/components/List/slots/ActionListSlot/IActionListSlot" {
  import { IListAction } from "react-declarative/model/IListProps";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Represents a slot in an action list.
   *
   * @template FilterData - The type of filter data for this slot.
   */
  export interface IActionListSlot<FilterData extends {} = IAnything> {
    className?: string;
    style?: React.CSSProperties;
    filterData: FilterData;
    /**
     * Represents a list of actions.
     *
     * @typedef actions
     * @property 0 - The first action in the list.
     * @property 1 - The second action in the list.
     * ...
     */
    actions: IListAction[];
    deps?: any[];
    height: number;
    width: number;
    title?: string;
  }
  export default IActionListSlot;
}

declare module "react-declarative/components/List/slots/ActionListSlot/ActionListSlot" {
  import IActionListSlot from "react-declarative/components/List/slots/ActionListSlot/IActionListSlot";
  /**
   * Function component representing an action list slot.
   * @param props - The properties for the action list slot.
   * @returns - The rendered action list slot.
   */
  export const ActionListSlot: (props: IActionListSlot) => JSX.Element;
  export default ActionListSlot;
}

declare module "react-declarative/components/List/slots/ChipListSlot/IChipListSlot" {
  import IAnything from "react-declarative/model/IAnything";
  import IListProps from "react-declarative/model/IListProps";
  import IRowData from "react-declarative/model/IRowData";
  /**
   * Represents a slot in a chip list.
   * @template RowData - The type of data in the chip list row.
   */
  export interface IChipListSlot<RowData extends IRowData = IAnything> {
    /**
     * Represents a list of chips in a row data object.
     *
     * @typedef ListChips
     */
    listChips: IListProps<RowData>["chips"];
    loading: boolean;
  }
  export default IChipListSlot;
}

declare module "react-declarative/components/List/slots/ChipListSlot/ChipListSlot" {
  import IChipListSlot from "react-declarative/components/List/slots/ChipListSlot/IChipListSlot";
  /**
   * Renders a chip list slot component.
   *
   * @param props - The props for the chip list slot.
   * @returns - The rendered chip list slot component.
   */
  export const ChipListSlot: (props: IChipListSlot) => JSX.Element;
  export default ChipListSlot;
}

declare module "react-declarative/components/List/slots/FilterListSlot/IFilterListSlot" {
  import IAnything from "react-declarative/model/IAnything";
  import IField from "react-declarative/model/IField";
  /**
   * Represents a filter list slot.
   *
   * @template FilterData - The type of filter data.
   */
  export interface IFilterListSlot<FilterData extends {} = IAnything> {
    className?: string;
    filterData: FilterData;
    style?: React.CSSProperties;
    /**
     * Represents an array of field filters.
     *
     * @typedef FilterArray
     */
    filters: IField<FilterData>[];
    change: (data: FilterData) => void;
    /**
     * Represents a callback function for the onSearchChange event.
     *
     * @callback onSearchChangeCallback
     * @param search - The search keyword entered by the user.
     * @returns
     */
    onSearchChange?: (search: string) => void;
    /**
     * Function signature for the onFilterChange event callback.
     *
     * @param data - The data object representing the filter changes.
     * @returns
     */
    onFilterChange?: (data: FilterData) => void;
    /**
     * Callback function called when the collapsed state changes.
     *
     * @param collapsed - The new collapsed state.
     * @returns
     */
    onCollapsedChange?: (collapsed: boolean) => void;
    /**
     * @description A flag indicating whether filters are toggled or not.
     * @type {boolean|undefined}
     */
    withToggledFilters?: boolean;
    clean: () => void;
    loading: boolean;
    label: string;
    search: string;
    withSearch: boolean;
    height: number;
    width: number;
  }
  export default IFilterListSlot;
}

declare module "react-declarative/components/List/slots/FilterListSlot/FilterListSlot" {
  import IFilterListSlot from "react-declarative/components/List/slots/FilterListSlot/IFilterListSlot";
  /**
   * A component that renders a slot for a filter list.
   *
   * @param props - The props for the component.
   * @param props - The context object for the filter list slot.
   *
   * @returns The rendered filter list slot component.
   */
  export const FilterListSlot: (props: IFilterListSlot) => JSX.Element;
  export default FilterListSlot;
}

declare module "react-declarative/components/List/slots/OperationListSlot/IOperationListSlot" {
  import IListOperation from "react-declarative/model/IListOperation";
  /**
   * A interface representing a list of operations in a slot.
   *
   * @interface
   */
  export interface IOperationListSlot {
    className?: string;
    style?: React.CSSProperties;
    /**
     * Represents a list of operations to perform on an IList.
     *
     * @typedef IListOperation
     * @property name - The name of the operation.
     * @property parameters - The parameters required for the operation.
     */
    operations: IListOperation[];
    width: number;
  }
  export default IOperationListSlot;
}

declare module "react-declarative/components/List/slots/OperationListSlot/OperationListSlot" {
  import IOperationListSlot from "react-declarative/components/List/slots/OperationListSlot/IOperationListSlot";
  /**
   * Represents a slot component for rendering an operation list.
   *
   * @component
   *
   * @param props - The props for the component.
   * @returns The rendered React node.
   */
  export const OperationListSlot: (props: IOperationListSlot) => JSX.Element;
  export default OperationListSlot;
}

declare module "react-declarative/components/List/slots/SearchSlot/ISearchSlot" {
  /**
   * Represents a search slot with various properties and functions.
   *
   * @interface ISearchSlot
   */
  export interface ISearchSlot {
    className?: string;
    style?: React.CSSProperties;
    /**
     * Represents a callback function for handling search input changes.
     *
     * @callback onSearchChangeCallback
     * @param search - The search query entered by the user.
     * @returns
     */
    onSearchChange?: (search: string) => void;
    clean: () => void;
    loading: boolean;
    label: string;
    search: string;
    height: number;
    width: number;
  }
  export default ISearchSlot;
}

declare module "react-declarative/components/List/slots/SearchSlot/SearchSlot" {
  import ISearchSlot from "react-declarative/components/List/slots/SearchSlot/ISearchSlot";
  /**
   * Renders a SearchSlot component.
   *
   * @param props - The properties passed to the SearchSlot component.
   * @param props.SearchSlot - The SearchSlot component passed as a context.
   * @returns - The rendered SearchSlot component.
   */
  export const SearchSlot: (props: ISearchSlot) => JSX.Element;
  export default SearchSlot;
}

declare module "react-declarative/components/One/slots/FileSlot/IFileSlot" {
  import {
    IFileFieldProps,
    IFileFieldPrivate,
  } from "react-declarative/components/One/fields/FileField";
  type IFileBase = IFileFieldProps & IFileFieldPrivate;
  /**
   * Represents a file slot interface that extends the IFileBase interface.
   *
   * @interface
   * @extends {IFileBase}
   */
  export interface IFileSlot extends IFileBase {}
  export default IFileSlot;
}

declare module "react-declarative/components/One/slots/IconSlot" {
  export * from "react-declarative/components/One/slots/IconSlot/IIconSlot";
  export * from "react-declarative/components/One/slots/IconSlot/IconSlot";
  export { default } from "react-declarative/components/One/slots/IconSlot/IconSlot";
}

declare module "react-declarative/components/RecordView/components/Item" {
  export * from "react-declarative/components/RecordView/components/Item/Item";
  export { default } from "react-declarative/components/RecordView/components/Item/Item";
}

declare module "react-declarative/components/One/slots/CheckBoxSlot/ICheckBoxSlot" {
  import {
    ICheckboxFieldPrivate,
    ICheckboxFieldProps,
  } from "react-declarative/components/One/fields/CheckboxField";
  /**
   * Represents a checkbox slot for a checkbox field.
   *
   * @interface ICheckBoxSlot
   * @extends ICheckboxFieldProps
   * @extends ICheckboxFieldPrivate
   */
  export interface ICheckBoxSlot
    extends ICheckboxFieldProps,
      ICheckboxFieldPrivate {}
  export default ICheckBoxSlot;
}

declare module "react-declarative/components/One/slots/CheckBoxSlot/CheckBoxSlot" {
  import ICheckBoxSlot from "react-declarative/components/One/slots/CheckBoxSlot/ICheckBoxSlot";
  /**
   * Represents a checkbox slot component.
   *
   * @param props - The props for the checkbox slot component.
   * @returns - The rendered checkbox element.
   */
  export const CheckBoxSlot: (props: ICheckBoxSlot) => JSX.Element;
  export default CheckBoxSlot;
}

declare module "react-declarative/components/One/slots/ComboSlot/IComboSlot" {
  import {
    IComboFieldPrivate,
    IComboFieldProps,
  } from "react-declarative/components/One/fields/ComboField";
  /**
   * Represents a combo slot for a combo field.
   *
   * @interface IComboSlot
   * @extends Omit<IComboFieldProps, "readonly">
   * @extends IComboFieldPrivate
   */
  export interface IComboSlot
    extends Omit<IComboFieldProps, "readonly">,
      IComboFieldPrivate {}
  export default IComboSlot;
}

declare module "react-declarative/components/One/slots/ComboSlot/ComboSlot" {
  import IComboSlot from "react-declarative/components/One/slots/ComboSlot/IComboSlot";
  /**
   * Represents a combo slot component.
   *
   * @param props - The properties for the combo slot.
   * @returns A combo slot component.
   */
  export const ComboSlot: (props: IComboSlot) => JSX.Element;
  export default ComboSlot;
}

declare module "react-declarative/components/One/slots/ItemsSlot/IItemsSlot" {
  import {
    IItemsFieldPrivate,
    IItemsFieldProps,
  } from "react-declarative/components/One/fields/ItemsField";
  /**
   * Represents an interface for an ItemsSlot in a field.
   * Extends the IItemsFieldProps and IItemsFieldPrivate interfaces.
   *
   * @interface IItemsSlot
   * @extends {IItemsFieldProps}
   * @extends {IItemsFieldPrivate}
   */
  export interface IItemsSlot extends IItemsFieldProps, IItemsFieldPrivate {}
  export default IItemsSlot;
}

declare module "react-declarative/components/One/slots/ItemsSlot/ItemsSlot" {
  import IItemsSlot from "react-declarative/components/One/slots/ItemsSlot/IItemsSlot";
  /**
   * Represents a component that provides a slot for items.
   * @param props - The component's properties.
   * @return The rendered component.
   */
  export const ItemsSlot: (props: IItemsSlot) => JSX.Element;
  export default ItemsSlot;
}

declare module "react-declarative/components/One/slots/LineSlot/ILineSlot" {
  import { ILineFieldProps } from "react-declarative/components/One/fields/LineField";
  /**
   * Represents a line slot which extends ILineFieldProps interface.
   *
   * @interface ILineSlot
   * @extends {ILineFieldProps}
   */
  export interface ILineSlot extends ILineFieldProps {}
  export default ILineSlot;
}

declare module "react-declarative/components/One/slots/LineSlot/LineSlot" {
  import ILineSlot from "react-declarative/components/One/slots/LineSlot/ILineSlot";
  /**
   * Represents a Line Slot component.
   *
   * @param props - The props passed to the component.
   * @returns - The rendered Line component along with the props passed to it.
   */
  export const LineSlot: (props: ILineSlot) => JSX.Element;
  export default LineSlot;
}

declare module "react-declarative/components/One/slots/ProgressSlot/IProgressSlot" {
  import {
    IProgressFieldProps,
    IProgressFieldPrivate,
  } from "react-declarative/components/One/fields/ProgressField";
  /**
   * @interface
   * Interface for IProgressSlot.
   * Represents a progress slot that implements IProgressFieldProps and IProgressFieldPrivate interfaces.
   */
  export interface IProgressSlot
    extends IProgressFieldProps,
      IProgressFieldPrivate {}
  export default IProgressSlot;
}

declare module "react-declarative/components/One/slots/ProgressSlot/ProgressSlot" {
  import IProgressSlot from "react-declarative/components/One/slots/ProgressSlot/IProgressSlot";
  /**
   * Represents a Progress Slot component.
   *
   * @param props - The props passed to the component.
   * @returns - The rendered Progress component.
   */
  export const ProgressSlot: (props: IProgressSlot) => JSX.Element;
  export default ProgressSlot;
}

declare module "react-declarative/components/One/slots/RadioSlot/IRadioSlot" {
  import {
    IRadioFieldPrivate,
    IRadioFieldProps,
  } from "react-declarative/components/One/fields/RadioField";
  /**
   * An interface that extends IRadioFieldProps and IRadioFieldPrivate to represent a radio slot.
   *
   * @interface
   * @extends IRadioFieldProps
   * @extends IRadioFieldPrivate
   */
  export interface IRadioSlot extends IRadioFieldProps, IRadioFieldPrivate {}
  export default IRadioSlot;
}

declare module "react-declarative/components/One/slots/RadioSlot/RadioSlot" {
  import IRadioSlot from "react-declarative/components/One/slots/RadioSlot/IRadioSlot";
  /**
   * Represents a radio slot component.
   *
   * @param props - The props object for the radio slot component.
   * @returns - The rendered radio element.
   */
  export const RadioSlot: (props: IRadioSlot) => JSX.Element;
  export default RadioSlot;
}

declare module "react-declarative/components/One/slots/RatingSlot/IRatingSlot" {
  import {
    IRatingFieldProps,
    IRatingFieldPrivate,
  } from "react-declarative/components/One/fields/RatingField";
  /**
   * Represents a rating slot.
   *
   * @interface
   * @extends IRatingFieldProps
   * @extends IRatingFieldPrivate
   */
  export interface IRatingSlot
    extends Omit<IRatingFieldProps, "readonly">,
      IRatingFieldPrivate {}
  export default IRatingSlot;
}

declare module "react-declarative/components/One/slots/RatingSlot/RatingSlot" {
  import IRatingSlot from "react-declarative/components/One/slots/RatingSlot/IRatingSlot";
  /**
   * Renders a component that displays a rating using the Rating component from the SlotContext.
   *
   * @param props - The properties to be passed to the Rating component.
   * @returns - The rendered component.
   */
  export const RatingSlot: (props: IRatingSlot) => JSX.Element;
  export default RatingSlot;
}

declare module "react-declarative/components/One/slots/SliderSlot/ISliderSlot" {
  import {
    ISliderFieldPrivate,
    ISliderFieldProps,
  } from "react-declarative/components/One/fields/SliderField";
  /**
   * @interface
   * Represents a slider slot in a slider component.
   *
   * @extends {ISliderFieldProps} - Interface representing the properties of the slider field.
   * @extends {ISliderFieldPrivate} - Interface representing the private properties of the slider field.
   */
  export interface ISliderSlot extends ISliderFieldProps, ISliderFieldPrivate {}
  export default ISliderSlot;
}

declare module "react-declarative/components/One/slots/SliderSlot/SliderSlot" {
  import ISliderSlot from "react-declarative/components/One/slots/SliderSlot/ISliderSlot";
  /**
   * Represents a Slider component wrapped in a SlotContext.
   *
   * @param props - The props object that contains the properties for the Slider component.
   * @returns The Slider component with the given props.
   */
  export const SliderSlot: (props: ISliderSlot) => JSX.Element;
  export default SliderSlot;
}

declare module "react-declarative/components/One/slots/SwitchSlot/ISwitchSlot" {
  import {
    ISwitchFieldPrivate,
    ISwitchFieldProps,
  } from "react-declarative/components/One/fields/SwitchField";
  /**
   * Represents a switch slot.
   *
   * @interface ISwitchSlot
   * @extends {ISwitchFieldProps}
   * @extends {ISwitchFieldPrivate}
   */
  export interface ISwitchSlot extends ISwitchFieldProps, ISwitchFieldPrivate {}
  export default ISwitchSlot;
}

declare module "react-declarative/components/One/slots/SwitchSlot/SwitchSlot" {
  import ISwitchSlot from "react-declarative/components/One/slots/SwitchSlot/ISwitchSlot";
  /**
   * Represents a Switch Slot component.
   *
   * @param props - The properties for the Switch Slot component.
   * @returns The rendered Switch component with the given properties.
   */
  export const SwitchSlot: (props: ISwitchSlot) => JSX.Element;
  export default SwitchSlot;
}

declare module "react-declarative/components/One/slots/TextSlot/ITextSlot" {
  import {
    ITextFieldProps,
    ITextFieldPrivate,
  } from "react-declarative/components/One/fields/TextField";
  type ITextBase = ITextFieldProps & ITextFieldPrivate;
  /**
   * Represents a text slot.
   * @interface
   * @extends {ITextBase}
   */
  export interface ITextSlot extends ITextBase {}
  export default ITextSlot;
}

declare module "react-declarative/components/One/slots/TextSlot/TextSlot" {
  import ITextSlot from "react-declarative/components/One/slots/TextSlot/ITextSlot";
  /**
   * Represents a text slot component.
   *
   * @param props - The properties to configure the component.
   * @returns - The rendered text component.
   */
  export const TextSlot: (props: ITextSlot) => JSX.Element;
  export default TextSlot;
}

declare module "react-declarative/components/One/slots/TypographySlot/ITypographySlot" {
  import {
    ITypographyFieldPrivate,
    ITypographyFieldProps,
  } from "react-declarative/components/One/fields/TypographyField";
  /**
   * The ITypographySlot interface represents a typography slot.
   *
   * @interface
   * @extends ITypographyFieldProps
   * @extends ITypographyFieldPrivate
   */
  export interface ITypographySlot
    extends ITypographyFieldProps,
      ITypographyFieldPrivate {}
  export default ITypographySlot;
}

declare module "react-declarative/components/One/slots/TypographySlot/TypographySlot" {
  import ITypographySlot from "react-declarative/components/One/slots/TypographySlot/ITypographySlot";
  /**
   * Represents a slot for typography components.
   * @param props - The properties for the typography slot.
   * @returns A typography component.
   */
  export const TypographySlot: (props: ITypographySlot) => JSX.Element;
  export default TypographySlot;
}

declare module "react-declarative/components/One/slots/DateSlot/IDateSlot" {
  import {
    IDateFieldProps,
    IDateFieldPrivate,
  } from "react-declarative/components/One/fields/DateField";
  type IDateBase = IDateFieldProps & IDateFieldPrivate;
  /**
   * Represents a date slot.
   *
   * @interface IDateSlot
   * @extends IDateBase
   */
  export interface IDateSlot extends IDateBase {}
  export default IDateSlot;
}

declare module "react-declarative/components/One/slots/DateSlot/DateSlot" {
  import IDateSlot from "react-declarative/components/One/slots/DateSlot/IDateSlot";
  /**
   * Represents a DateSlot component.
   *
   * @param props - The props for the DateSlot component.
   * @returns - The rendered Date component.
   */
  export const DateSlot: (props: IDateSlot) => JSX.Element;
  export default DateSlot;
}

declare module "react-declarative/components/One/slots/TimeSlot/ITimeSlot" {
  import {
    ITimeFieldProps,
    ITimeFieldPrivate,
  } from "react-declarative/components/One/fields/TimeField";
  type TTimeBase = ITimeFieldProps & ITimeFieldPrivate;
  /**
   * Represents a time slot.
   * @interface ITimeSlot
   * @extends TTimeBase
   */
  export interface ITimeSlot extends TTimeBase {}
  export default ITimeSlot;
}

declare module "react-declarative/components/One/slots/TimeSlot/TimeSlot" {
  import ITimeSlot from "react-declarative/components/One/slots/TimeSlot/ITimeSlot";
  /**
   * Represents a TimeSlot component.
   * @param props - The properties of the TimeSlot component.
   * @returns The rendered Time component.
   */
  export const TimeSlot: (props: ITimeSlot) => JSX.Element;
  export default TimeSlot;
}

declare module "react-declarative/components/One/slots/FileSlot/FileSlot" {
  import IFileSlot from "react-declarative/components/One/slots/FileSlot/IFileSlot";
  /**
   * Represents a file slot component.
   * @param props - The props for the file slot component.
   * @returns The rendered file slot component.
   */
  export const FileSlot: (props: IFileSlot) => JSX.Element;
  export default FileSlot;
}

declare module "react-declarative/components/One/slots/ChooseSlot/IChooseSlot" {
  import {
    IChooseFieldProps,
    IChooseFieldPrivate,
  } from "react-declarative/components/One/fields/ChooseField";
  type IChooseBase = IChooseFieldProps & IChooseFieldPrivate;
  /**
   * Represents the interface for choosing a time slot.
   * @interface
   * @extends IChooseBase
   */
  export interface IChooseSlot extends IChooseBase {}
  export default IChooseSlot;
}

declare module "react-declarative/components/One/slots/ChooseSlot/ChooseSlot" {
  import IChooseSlot from "react-declarative/components/One/slots/ChooseSlot/IChooseSlot";
  /**
   * Renders the component by passing the properties to the Choose component obtained from the SlotContext.
   *
   * @param props - The properties for the ChooseSlot component.
   * @returns - The rendered Choose component.
   */
  export const ChooseSlot: (props: IChooseSlot) => JSX.Element;
  export default ChooseSlot;
}

declare module "react-declarative/components/One/slots/CompleteSlot/ICompleteSlot" {
  import {
    ICompleteFieldProps,
    ICompleteFieldPrivate,
  } from "react-declarative/components/One/fields/CompleteField";
  type ICompleteBase = ICompleteFieldProps & ICompleteFieldPrivate;
  /**
   * Represents a complete slot.
   *
   * @interface ICompleteSlot
   * @extends ICompleteBase
   */
  export interface ICompleteSlot extends ICompleteBase {}
  export default ICompleteSlot;
}

declare module "react-declarative/components/One/slots/CompleteSlot/CompleteSlot" {
  import ICompleteSlot from "react-declarative/components/One/slots/CompleteSlot/ICompleteSlot";
  /**
   * Represents a complete slot.
   *
   * @param props - The props for the complete slot.
   * @returns - The JSX element representing the complete slot.
   */
  export const CompleteSlot: (props: ICompleteSlot) => JSX.Element;
  export default CompleteSlot;
}

declare module "react-declarative/components/One/slots/YesNoSlot/IYesNoSlot" {
  import {
    IYesNoFieldPrivate,
    IYesNoFieldProps,
  } from "react-declarative/components/One/fields/YesNoField";
  /**
   * Represents a Yes/No slot.
   *
   * @interface IYesNoSlot
   * @extends IYesNoFieldProps
   * @extends IYesNoFieldPrivate
   */
  export interface IYesNoSlot
    extends Omit<IYesNoFieldProps, "readonly">,
      IYesNoFieldPrivate {}
  export default IYesNoSlot;
}

declare module "react-declarative/components/One/slots/YesNoSlot/YesNoSlot" {
  import IYesNoSlot from "react-declarative/components/One/slots/YesNoSlot/IYesNoSlot";
  /**
   * Represents a slot for yes/no values.
   * @param props - The props for the YesNoSlot component.
   * @param props.YesNo - The YesNo component provided by the SlotContext.
   * @returns - The rendered YesNo component.
   */
  export const YesNoSlot: (props: IYesNoSlot) => JSX.Element;
  export default YesNoSlot;
}

declare module "react-declarative/components/One/slots/DictSlot/IDictSlot" {
  import {
    IDictFieldProps,
    IDictFieldPrivate,
  } from "react-declarative/components/One/fields/DictField";
  type IDictBase = IDictFieldProps & IDictFieldPrivate;
  /**
   * Represents an interface for a dictionary slot.
   * @interface
   * @extends IDictBase
   */
  export interface IDictSlot extends IDictBase {}
  export default IDictSlot;
}

declare module "react-declarative/components/One/slots/DictSlot/DictSlot" {
  import IDictSlot from "react-declarative/components/One/slots/DictSlot/IDictSlot";
  /**
   * Represents a dictionary slot component.
   * @param props - The props object containing input data.
   * @returns The rendered dictionary slot.
   */
  export const DictSlot: (props: IDictSlot) => JSX.Element;
  export default DictSlot;
}

declare module "react-declarative/components/One/slots/TreeSlot/ITreeSlot" {
  import {
    ITreeFieldProps,
    ITreeFieldPrivate,
  } from "react-declarative/components/One/fields/TreeField";
  type ITreeBase = ITreeFieldProps & ITreeFieldPrivate;
  /**
   * Represents a slot in a tree structure.
   * Extends the interface ITreeBase.
   *
   * @interface
   * @extends ITreeBase
   */
  export interface ITreeSlot extends ITreeBase {}
  export default ITreeSlot;
}

declare module "react-declarative/components/One/slots/TreeSlot/TreeSlot" {
  import ITreeSlot from "react-declarative/components/One/slots/TreeSlot/ITreeSlot";
  /**
   * Represents a slot for a tree component.
   *
   * @param props - The props for the TreeSlot component.
   * @returns - The rendered Tree component.
   */
  export const TreeSlot: (props: ITreeSlot) => JSX.Element;
  export default TreeSlot;
}

declare module "react-declarative/components/One/slots/ButtonSlot/IButtonSlot" {
  import {
    IButtonFieldPrivate,
    IButtonFieldProps,
  } from "react-declarative/components/One/fields/ButtonField";
  /**
   * Represents a checkbox slot for a checkbox field.
   *
   * @interface IButtonSlot
   * @extends IButtonFieldProps
   * @extends IButtonFieldPrivate
   */
  export interface IButtonSlot extends IButtonFieldProps, IButtonFieldPrivate {}
  export default IButtonSlot;
}

declare module "react-declarative/components/One/slots/ButtonSlot/ButtonSlot" {
  import IButtonSlot from "react-declarative/components/One/slots/ButtonSlot/IButtonSlot";
  /**
   * Represents a checkbox slot component.
   *
   * @param props - The props for the checkbox slot component.
   * @returns - The rendered checkbox element.
   */
  export const ButtonSlot: (props: IButtonSlot) => JSX.Element;
  export default ButtonSlot;
}

declare module "react-declarative/components/One/components/OneConfig/OneConfigInstance" {
  /**
   * Represents a configuration object for the one component.
   *
   * @interface IConfig
   */
  export interface IConfig {
    WITH_DIRTY_CLICK_LISTENER: boolean;
    WITH_MOBILE_READONLY_FALLBACK: boolean;
    WITH_WAIT_FOR_MOVE_LISTENER: boolean;
    WITH_WAIT_FOR_TAB_LISTENER: boolean;
    WITH_WAIT_FOR_TOUCH_LISTENER: boolean;
    WITH_DISMOUNT_LISTENER: boolean;
    WITH_SYNC_COMPUTE: boolean;
    CUSTOM_FIELD_DEBOUNCE: number;
    FIELD_BLUR_DEBOUNCE: number;
  }
  /**
   * Class representing a OneConfigInstance.
   * @class
   */
  export class OneConfigInstance {
    getRef: () => IConfig;
    setValue: (config: Partial<IConfig>) => void;
  }
  export default OneConfigInstance;
}

declare module "react-declarative/components/FadeView/components/DefaultFade" {
  /**
   * Interface representing the props for the DefaultFade component.
   */
  interface IDefaultFadeProps {
    className: string;
    visible: boolean;
    zIndex: number;
    position: "bottom" | "right";
    color?: string;
    none: boolean;
  }
  /**
   * Represents a component that applies a fade effect to its background.
   * @typedef IDefaultFadeProps
   * @property className - The additional CSS class to be applied to the root element.
   * @property visible - Determines if the component is visible.
   * @property color - The color of the fade effect. If not provided, the default background color of the theme will be used.
   * @property none - Determines if the fade effect should not be applied.
   * @property position - The position of the fade effect. Can be either 'bottom' or 'right'.
   * @property zIndex - The z-index of the root element.
   */
  export const DefaultFade: ({
    className,
    visible,
    color,
    none,
    position,
    zIndex,
  }: IDefaultFadeProps) => JSX.Element;
  export default DefaultFade;
}

declare module "react-declarative/model/DisplayMode" {
  /**
   * Enum representing the display modes for different devices.
   */
  export enum DisplayMode {
    Phone = "phone",
    Tablet = "tablet",
    Desktop = "desktop",
  }
  export default DisplayMode;
}

declare module "react-declarative/components/List/components/SlotFactory/components/CheckboxCell/CheckboxCell" {
  import IRowData from "react-declarative/model/IRowData";
  import IAnything from "react-declarative/model/IAnything";
  /**
   * Interface for defining props for a CheckboxCell component.
   * @template RowData - The type of data in the row.
   */
  export interface ICheckboxCellProps<RowData extends IRowData = IAnything> {
    row: RowData;
    disabled: boolean;
  }
  /**
   * CheckboxCell component for rendering checkboxes in a table cell.
   *
   * @template RowData - The type of the data for each row in the table
   * @param props - The props for the CheckboxCell component
   * @returns - The rendered CheckboxCell component
   */
  export const CheckboxCell: <RowData extends IRowData = any>({
    row,
    disabled,
  }: ICheckboxCellProps<RowData>) => JSX.Element;
  export default CheckboxCell;
}

declare module "react-declarative/components/One/slots/IconSlot/IIconSlot" {
  import {
    IIconFieldPrivate,
    IIconFieldProps,
  } from "react-declarative/components/One/fields/IconField";
  /**
   * Represents a checkbox slot for a checkbox field.
   *
   * @interface IIconSlot
   * @extends IIconFieldProps
   * @extends IIconFieldPrivate
   */
  export interface IIconSlot extends IIconFieldProps, IIconFieldPrivate {}
  export default IIconSlot;
}

declare module "react-declarative/components/One/slots/IconSlot/IconSlot" {
  import IIconSlot from "react-declarative/components/One/slots/IconSlot/IIconSlot";
  /**
   * Represents a checkbox slot component.
   *
   * @param props - The props for the checkbox slot component.
   * @returns - The rendered checkbox element.
   */
  export const IconSlot: (props: IIconSlot) => JSX.Element;
  export default IconSlot;
}

declare module "react-declarative/components/RecordView/components/Item/Item" {
  import * as React from "react";
  import { SxProps } from "@mui/material";
  import IRecordViewProps from "react-declarative/components/RecordView/model/IRecordViewProps";
  /**
   * Represents the properties of an item in a record view.
   */
  export interface IItemProps
    extends Pick<
      IRecordViewProps,
      keyof {
        keyWidth: never;
        valueWidth: never;
        totalWidth: never;
      }
    > {
    background?: IRecordViewProps["background"];
    formatValue: Exclude<IRecordViewProps["formatValue"], undefined>;
    formatKey: Exclude<IRecordViewProps["formatKey"], undefined>;
    index: number;
    path: string;
    itemKey: string;
    value: unknown;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    withDarkParent?: boolean;
  }
  /**
   * Represents the props for an item in a record view.
   */
  export interface IItemProps
    extends Pick<
      IRecordViewProps,
      keyof {
        keyWidth: never;
        valueWidth: never;
        totalWidth: never;
      }
    > {
    formatValue: Exclude<IRecordViewProps["formatValue"], undefined>;
    index: number;
    path: string;
    itemKey: string;
    value: unknown;
    className?: string;
    style?: React.CSSProperties;
    sx?: SxProps<any>;
    withDarkParent?: boolean;
  }
  /**
   * Represents an item component.
   *
   * @param ItemProps - The props for the item component.
   * @param ItemProps.formatValue - The formatting function for the item's value.
   * @param ItemProps.formatKey - The formatting function for the item's key.
   * @param ItemProps.keyWidth - The width of the item's key column.
   * @param ItemProps.valueWidth - The width of the item's value column.
   * @param ItemProps.totalWidth - The total width of the item component.
   * @param ItemProps.value - The value of the item.
   * @param ItemProps.itemKey - The key of the item.
   * @param ItemProps.path - The path of the item.
   * @param ItemProps.index - The index of the item.
   * @param ItemProps.background - The background color of the item.
   * @param ItemProps.withDarkParent - Indicates if the item has a dark parent.
   * @returns The rendered item component.
   */
  export const Item: ({
    formatValue,
    formatKey,
    keyWidth,
    valueWidth,
    totalWidth,
    value: upperValue,
    itemKey,
    path,
    index,
    background,
    withDarkParent,
  }: IItemProps) => JSX.Element;
  export default Item;
}
