import { Properties as CSSProperties } from 'csstype'; export = goober; export as namespace goober; declare namespace goober { interface DefaultTheme {} type Theme = keyof T extends never ? T : { theme: T }; interface StyledFunction { // used when creating a styled component from a native HTML element ( tag: T, forwardRef?: ForwardRefFunction ): Tagged< React.JSX.LibraryManagedAttributes & P & Theme >; // used to extend other styled components. Inherits props from the extended component ( tag: StyledVNode, forwardRef?: ForwardRefFunction ): Tagged>; // used when creating a component from a string (html native) but using a non HTML standard // component, such as when you want to style web components

(tag: string): Tagged< P & Partial >; // used to create a styled component from a JSX element (both functional and class-based) ( tag: T, forwardRef?: ForwardRefFunction ): Tagged

; } // used when creating a styled component from a native HTML element with the babel-plugin-transform-goober parser type BabelPluginTransformGooberStyledFunction = { [T in keyof React.JSX.IntrinsicElements]: Tagged< React.JSX.LibraryManagedAttributes & Theme >; }; type ForwardRefFunction = { (props: any, ref: any): any; }; type ForwardPropsFunction = (props: object) => void; const styled: StyledFunction & BabelPluginTransformGooberStyledFunction; function setup( val: T, prefixer?: (key: string, val: any) => string, theme?: Function, forwardProps?: ForwardPropsFunction ): void; function extractCss(target?: Element): string; function glob( tag: CSSAttribute | TemplateStringsArray | string, ...props: Array ): void; function css( tag: CSSAttribute | TemplateStringsArray | string, ...props: Array ): string; function keyframes( tag: CSSAttribute | TemplateStringsArray | string, ...props: Array ): string; type StyledVNode = ((props: T, ...args: any[]) => any) & { defaultProps?: T; displayName?: string; }; type StylesGenerator

= (props: P) => CSSAttribute | string; type Tagged

= ( tag: | CSSAttribute | (CSSAttribute | StylesGenerator

)[] | TemplateStringsArray | string | StylesGenerator

, ...props: Array< | string | number | ((props: P & PP) => CSSAttribute | string | number | false | undefined) > ) => StyledVNode>>; interface CSSAttribute extends CSSProperties { [key: string]: CSSAttribute | string | number | undefined | null; } }