import type {
    NCoreUIKitBase
} from ".";
import type {
    NCoreUIKitConfig,
    LocalizeType,
    ThemesType
} from "../types";
import type NCoreUIKitBottomSheetClass from "../context/bottomSheet";
import type NCoreUIKitDialogClass from "../context/dialog";
import type NCoreUIKitEmbeddedMenuClass from "../context/embeddedMenu";
import type NCoreUIKitLocalizeClass from "../context/localize";
import type NCoreUIKitMenuClass from "../context/menu";
import type NCoreUIKitModalClass from "../context/modal";
import type NCoreUIKitSnackBarClass from "../context/snackBar";
import type NCoreUIKitThemeClass from "../context/theme";
import type NCoreUIKitToastClass from "../context/toast";

export let NCoreUIKitLocalize: NCoreUIKitLocalizeClass<LocalizeType>;
export let NCoreUIKitEmbeddedMenu: NCoreUIKitEmbeddedMenuClass;
export let NCoreUIKitBottomSheet: NCoreUIKitBottomSheetClass;
export let NCoreUIKitTheme: NCoreUIKitThemeClass<ThemesType>;
export let NCoreUIKitSnackBar: NCoreUIKitSnackBarClass;
export let NCoreUIKitDialog: NCoreUIKitDialogClass;
export let NCoreUIKitModal: NCoreUIKitModalClass;
export let NCoreUIKitToast: NCoreUIKitToastClass;
export let NCoreUIKitMenu: NCoreUIKitMenuClass;

export const initializeInstances = (NCoreUIKit: NCoreUIKitBase<NCoreUIKitConfig>) => {
    NCoreUIKitEmbeddedMenu = NCoreUIKit.NCoreUIKitContext.NCoreUIKitEmbeddedMenu;
    NCoreUIKitBottomSheet = NCoreUIKit.NCoreUIKitContext.NCoreUIKitBottomSheet;
    NCoreUIKitLocalize = NCoreUIKit.NCoreUIKitContext.NCoreUIKitLocalize;
    NCoreUIKitSnackBar = NCoreUIKit.NCoreUIKitContext.NCoreUIKitSnackBar;
    NCoreUIKitDialog = NCoreUIKit.NCoreUIKitContext.NCoreUIKitDialog;
    NCoreUIKitTheme = NCoreUIKit.NCoreUIKitContext.NCoreUIKitTheme;
    NCoreUIKitModal = NCoreUIKit.NCoreUIKitContext.NCoreUIKitModal;
    NCoreUIKitToast = NCoreUIKit.NCoreUIKitContext.NCoreUIKitToast;
    NCoreUIKitMenu = NCoreUIKit.NCoreUIKitContext.NCoreUIKitMenu;
};
