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

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

export const initializeInstances = (NCoreUIKit: NCoreUIKitBase<NCoreUIKitConfig>) => {
    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;
};
