import { Show } from '../nx-theme-palette/utils';
import { ThemeColors, ThemeWithOptions } from './color-types';
export type RecursivePartial<T> = {
    [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object | undefined ? RecursivePartial<T[P]> : T[P];
};
export declare const defineCustomEventFactory: <Detail, EventName extends string>(eventName: EventName) => (detail: Detail) => CustomEvent<Detail>;
export declare const themeUpdatedEventName = "nx-components:theme:updated";
export declare const createThemeUpdateEvent: (detail: ThemeWithOptions) => CustomEvent<ThemeWithOptions>;
export declare const themePatchEventName = "nx-components:theme:patch";
export declare const createThemePatchEvent: (detail: RecursivePartial<ThemeWithOptions>) => CustomEvent<RecursivePartial<ThemeWithOptions>>;
export declare const themeResetEventName = "nx-components:theme:reset";
export declare const createThemeResetEvent: (detail: RecursivePartial<ThemeWithOptions>) => CustomEvent<RecursivePartial<ThemeWithOptions>>;
export declare const baseColorStorybookEventName = "nx-components:storybook:set-base";
export declare const createColorStorybookEvent: (color: ThemeColors) => CustomEvent<ThemeColors>;
export declare const colorGroupStorybookEventName = "nx-components:storybook:set-group";
export declare const createColorGroupStorybookEvent: (group: Show) => CustomEvent<Show>;
export declare const createComponentVariablesEventName = "nx-components:component:variables";
export declare const createComponentVariablesEvent: (detail: Record<string, [string, string]>) => CustomEvent<Record<string, [string, string]>>;
export declare const toggleSecondaryMenuEventName = "nx-components:layout:toggleSecondaryMenu";
export declare const toggleSecondaryMenuEvent: (open?: boolean) => CustomEvent<boolean | undefined>;
export declare const toggleModalEventName = "nx-components:layout:toggleModal";
export declare const toggleModalEvent: (open?: boolean, width?: string, collapsible?: boolean) => CustomEvent<{
    open?: boolean;
    width?: string;
    collapsible: boolean;
}>;
export interface CustomNxComponentsEventMap {
    [themeUpdatedEventName]: ReturnType<typeof createThemeUpdateEvent>;
    [themePatchEventName]: ReturnType<typeof createThemePatchEvent>;
    [themeResetEventName]: ReturnType<typeof createThemePatchEvent>;
    [baseColorStorybookEventName]: ReturnType<typeof createColorStorybookEvent>;
    [colorGroupStorybookEventName]: ReturnType<typeof createColorGroupStorybookEvent>;
    [createComponentVariablesEventName]: ReturnType<typeof createComponentVariablesEvent>;
    [toggleSecondaryMenuEventName]: ReturnType<typeof toggleSecondaryMenuEvent>;
    [toggleModalEventName]: ReturnType<typeof toggleModalEvent>;
}
