import "../../src/types/index";
import defaultLocaleJSON from "../src/variants/locales/default.json";
import defaultThemeJSON from "../src/variants/themes/default.json";

declare global {
    namespace NCoreUIKit {
        type PaletteNames = "gmcore";

        interface PaletteKey extends Record<PaletteType, unknown>, Record<PaletteNames, unknown> {
        }

        type ProjectLocalizationL = typeof defaultLocaleJSON[0];

        type GeneratedProjectTranslations = {
            [K in keyof ProjectLocalizationL["translations"]]: ProjectLocalizationL["translations"][K];
        };

        interface Translation extends GeneratedTranslations, GeneratedProjectTranslations {
        }

        type DefaultPaletteL = typeof defaultThemeJSON.palettes[0];

        type ProjectDataL = DefaultPaletteL["themes"]["dark"]["project"];
        type DefaultProjectColorsL = ProjectDataL;

        interface ProjectColorPalette extends DefaultProjectColors, DefaultProjectColorsL {
        }

        type SystemDataL = DefaultPaletteL["themes"]["dark"]["system"];
        type DefaultSystemColorsL = SystemDataL;

        interface SystemColorPalette extends DefaultSystemColors, DefaultSystemColorsL {
        }

        type ContentDataL = DefaultPaletteL["themes"]["dark"]["content"];
        type DefaultContentColorsL = ContentDataL;

        interface ContentColorPalette extends DefaultContentColors, DefaultContentColorsL {
        }
    }
}
