import { ComponentType, FC, JSX } from 'react'; import { NoStrictEntityMods } from '@bem-react/classname'; export interface IClassNameProps { className?: string; } export type Enhance = (WrappedComponent: ComponentType) => ComponentType; type withBemModOptions = { __passToProps: boolean; __simple: boolean; }; export declare function withBemMod(blockName: string, mod: NoStrictEntityMods, enhance?: Enhance | withBemModOptions): { (WrappedComponent: ComponentType): FC; __isSimple: boolean; __blockName: string; __mod: string; __value: string | number | boolean | undefined; __passToProps: boolean; }; export declare function createClassNameModifier(blockName: string, mod: NoStrictEntityMods): { (WrappedComponent: ComponentType): FC; __isSimple: boolean; __blockName: string; __mod: string; __value: string | number | boolean | undefined; __passToProps: boolean; }; export type ExtractProps = T extends ComponentType ? { [P in keyof K]: K[P]; } : never; export type HOC = (WrappedComponent: ComponentType) => ComponentType; export type Wrapper = HOC; export type Composition = >(fn: U) => FC> & T>; export declare function compose(fn1: HOC): Composition; export declare function compose(fn1: HOC, fn2: HOC): Composition; export declare function compose(fn1: HOC, fn2: HOC, fn3: HOC): Composition; export declare function compose(fn1: HOC, fn2: HOC, fn3: HOC, fn4: HOC): Composition; export declare function compose(fn1: HOC, fn2: HOC, fn3: HOC, fn4: HOC, fn5: HOC): Composition; export declare function compose(fn1: HOC, fn2: HOC, fn3: HOC, fn4: HOC, fn5: HOC, fn6: HOC): Composition; export declare function compose(fn1: HOC, fn2: HOC, fn3: HOC, fn4: HOC, fn5: HOC, fn6: HOC, fn7: HOC): Composition; export declare function compose(fn1: HOC, fn2: HOC, fn3: HOC, fn4: HOC, fn5: HOC, fn6: HOC, fn7: HOC, fn8: HOC): Composition; export declare function compose(...fns: Array>): Composition; type SafeUnionType = P extends keyof C ? C[P] : never; type DeepUnion2 = { [P in keyof (T1 & T2)]: SafeUnionType | SafeUnionType; }; type DeepUnion3 = { [P in keyof (T1 & T2 & T3)]: SafeUnionType | SafeUnionType | SafeUnionType; }; type DeepUnion4 = { [P in keyof (T1 & T2 & T3 & T4)]: SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType; }; type DeepUnion5 = { [P in keyof (T1 & T2 & T3 & T4 & T5)]: SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType; }; type DeepUnion6 = { [P in keyof (T1 & T2 & T3 & T4 & T5 & T6)]: SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType; }; type DeepUnion7 = { [P in keyof (T1 & T2 & T3 & T4 & T5 & T6 & T7)]: SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType; }; type DeepUnion8 = { [P in keyof (T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8)]: SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType | SafeUnionType; }; export declare function composeU(fn1: HOC): Composition; export declare function composeU(fn1: HOC, fn2: HOC): Composition>; export declare function composeU(fn1: HOC, fn2: HOC, fn3: HOC): Composition>; export declare function composeU(fn1: HOC, fn2: HOC, fn3: HOC, fn4: HOC): Composition>; export declare function composeU(fn1: HOC, fn2: HOC, fn3: HOC, fn4: HOC, fn5: HOC): Composition>; export declare function composeU(fn1: HOC, fn2: HOC, fn3: HOC, fn4: HOC, fn5: HOC, fn6: HOC): Composition>; export declare function composeU(fn1: HOC, fn2: HOC, fn3: HOC, fn4: HOC, fn5: HOC, fn6: HOC, fn7: HOC): Composition>; export declare function composeU(fn1: HOC, fn2: HOC, fn3: HOC, fn4: HOC, fn5: HOC, fn6: HOC, fn7: HOC, fn8: HOC): Composition>; export declare function composeU(...fns: Array>): Composition; export {};