type UnionToIntersection = ( U extends any ? (arg: U) => void : never ) extends (arg: infer R) => void ? R : never; type LastOf = UnionToIntersection T : never> extends () => infer R ? R : never; type UnionToTuple> = [T] extends [never] ? [] : [...UnionToTuple>, Last]; type TailOfTuple = T extends [infer _, ...infer Tail] ? Tail : never; type TailOfUnion = TailOfTuple>[number]; export type Breakpoints = Record; export type ErrorPrefix = `[${string}]: `; declare const DEFAULT_BREAKPOINTS: { readonly xs: '0px'; readonly sm: '576px'; readonly md: '768px'; readonly lg: '992px'; readonly xl: '1200px'; readonly xxl: '1400px'; }; type DefaultBreakpoints = typeof DEFAULT_BREAKPOINTS; type DefaultBreakpointKeys = keyof DefaultBreakpoints; export type Options = { breakpoints?: T; errorPrefix?: ErrorPrefix; }; interface StyledBreakpointsTheme { breakpoints: { up(min: Min, orientation?: 'portrait' | 'landscape'): string; down(max: Max, orientation?: 'portrait' | 'landscape'): string; between(min: Min, max: Max, orientation?: 'portrait' | 'landscape'): string; only(key: Min, orientation?: 'portrait' | 'landscape'): string; }; } export function createStyledBreakpointsTheme< T extends Breakpoints = DefaultBreakpoints, Keys extends keyof T = DefaultBreakpointKeys, KeysWithoutFirst extends TailOfUnion = TailOfUnion, >(options?: Options): StyledBreakpointsTheme;