import { Describe } from 'superstruct';
import { ExpandRecursively } from '@knapsack/utils';
import { ColorConfig } from './color-config';
import { FontFaceConfig, pageElements, pageElementsV2 } from './typography-config';
import { customizableNavElements } from './nav-customization-config';
export type UiConfigV1 = {
    version: 1;
    oldSillySidebarBgColor: string;
};
export declare const UiConfigV1Struct: Describe<UiConfigV1>;
export type UiConfigV2 = {
    version: 2;
    anotherSillySidebarBgColor: string;
};
export declare const UiConfigV2Struct: Describe<UiConfigV2>;
export type UiConfigV3 = {
    version: 3;
    sidebarBgColor: string;
};
export declare const UiConfigV3Struct: Describe<UiConfigV3>;
export type UiConfigV4 = {
    version: 4;
    primaryColor: ColorConfig;
    darkColor: ColorConfig;
    lightColor: ColorConfig;
    enableSidebarIcons?: boolean;
};
export declare const UiConfigV4Struct: Describe<UiConfigV4>;
export type UiConfigV5 = {
    version: 5;
    primaryColor: ColorConfig;
    darkColor: ColorConfig;
    lightColor: ColorConfig;
    linkColor: ColorConfig;
    enableSidebarIcons: boolean;
};
export declare const UiConfigV5Struct: Describe<UiConfigV5>;
export interface _UiConfigV6 extends Omit<UiConfigV5, 'version'> {
    version: 6;
    appearance: {
        customFonts?: FontFaceConfig[];
        pageElements: typeof pageElements;
    };
}
export type UiConfigV6 = ExpandRecursively<_UiConfigV6>;
export declare const UiConfigV6Struct: Describe<UiConfigV6>;
export interface _UiConfigV7 extends Omit<UiConfigV6, 'version'> {
    version: 7;
    appearance: {
        navigation?: typeof customizableNavElements;
        customFonts?: UiConfigV6['appearance']['customFonts'];
        pageElements: UiConfigV6['appearance']['pageElements'];
    };
}
export type UiConfigV7 = ExpandRecursively<_UiConfigV7>;
export declare const UiConfigV7Struct: Describe<UiConfigV7>;
export interface _UiConfigV8 extends Omit<UiConfigV7, 'version' | 'enableSidebarIcons'> {
    version: 8;
}
export type UiConfigV8 = ExpandRecursively<_UiConfigV8>;
export declare const UiConfigV8Struct: Describe<UiConfigV8>;
export interface _UiConfigV9 extends Omit<UiConfigV8, 'version' | 'primaryColor' | 'darkColor' | 'lightColor' | 'linkColor'> {
    version: 9;
}
export type UiConfigV9 = ExpandRecursively<_UiConfigV9>;
export declare const UiConfigV9Struct: Describe<UiConfigV9>;
export interface _UiConfigV10 extends Omit<UiConfigV9, 'version'> {
    version: 10;
    appearance: {
        navigation?: UiConfigV9['appearance']['navigation'];
        customFonts?: UiConfigV9['appearance']['customFonts'];
        pageElements: typeof pageElementsV2;
    };
}
export type UiConfigV10 = ExpandRecursively<_UiConfigV10>;
export declare const UiConfigV10Struct: Describe<UiConfigV10>;
export type UiConfigVersions = typeof UiConfigV1Struct.TYPE | typeof UiConfigV2Struct.TYPE | typeof UiConfigV3Struct.TYPE | typeof UiConfigV4Struct.TYPE | typeof UiConfigV5Struct.TYPE | typeof UiConfigV6Struct.TYPE | typeof UiConfigV7Struct.TYPE | typeof UiConfigV8Struct.TYPE | typeof UiConfigV9Struct.TYPE | typeof UiConfigV10Struct.TYPE;
export type UiConfig = UiConfigV10;
export declare const UiConfigStruct: typeof UiConfigV10Struct;
export type NavElementNames = keyof UiConfig['appearance']['navigation'];
//# sourceMappingURL=ui-config.d.ts.map