import * as CSS from 'csstype'; interface StylikTheme { } interface StylikBreakpoints { } type Config = { theme: StylikTheme; breakpoints: StylikBreakpoints; }; type ParsePseudos = T extends `::${infer U}` ? `_${U}` : T extends `:${infer V}` ? `_${V}` : never; type Pseudos = ParsePseudos; type Breakpoint = keyof StylikBreakpoints; type WithMedia> = { [K in keyof T]: T[K] | ({ [B in Breakpoint]?: T[K]; } & { [N: number]: T[K]; }); }; type TLength = string | number; type CSSProperties = CSS.StandardPropertiesFallback & CSS.SvgPropertiesFallback & CSS.VendorPropertiesHyphenFallback & CSS.ObsoletePropertiesFallback; type ExtendedNestedCSSProperties = WithMedia; type StylikCSSProperties = ExtendedNestedCSSProperties & { [K in Pseudos]?: ExtendedNestedCSSProperties; } & { _selectors?: Record; }; export type { Breakpoint as B, Config as C, StylikCSSProperties as S, StylikTheme as a, StylikBreakpoints as b };