import * as CSS from 'csstype'; export type DebugData = { componentName: string; siteVariables: Object[]; componentVariables: Object[]; componentStyles: Record; }; export type Extendable = T & { [key: string]: V; }; export type ObjectOrFunc = ((arg: TArg) => TResult) | TResult; export type AnimationKeyFrame = Record<'from' | 'to' | string, CSSCustom>; export interface AnimationName

> { keyframe?: AnimationKeyFrame | ((params: P) => AnimationKeyFrame); params?: P; } type CSSProperties = Omit, 'animationName'> & { speak?: CSS.Globals | 'none' | 'normal' | 'spell-out'; WebkitFontSmoothing?: CSS.Globals | 'auto' | 'none' | 'antialiased' | 'subpixel-antialiased'; MozOsxFontSmoothing?: CSS.Globals | 'auto' | 'grayscale'; '-webkit-appearance'?: never; '-webkit-box-orient'?: never; '-webkit-font-smoothing'?: never; '-webkit-line-clamp'?: never; '-webkit-text-fill-color'?: never; }; type CSSObject = CSSProperties & CSSPseudos & { animationName?: AnimationName | AnimationKeyFrame | string | 'none'; }; type CSSCustom = { [prop: string]: number | string | ICSSInJSStyle; }; type CSSPseudos = { [K in CSS.Pseudos]?: CSSObject & { content?: string; }; }; export type ICSSInJSStyle = CSSObject | CSSCustom; export interface ThemeAnimation { keyframe: ((kp: KP) => object) | object | string; delay?: string; direction?: string; duration?: string; fillMode?: string; iterationCount?: string; playState?: string; timingFunction?: string; keyframeParams?: KP; } export interface SiteVariablesInput extends Record { } export interface SiteVariablesPrepared extends SiteVariablesInput { fontSizes: Record; } export type ComponentVariablesObject = any; export type ComponentVariablesInput = ComponentVariablesObject | ComponentVariablesPrepared; export type ComponentVariablesPrepared = (siteVariables?: SiteVariablesPrepared) => ComponentVariablesObject; export type ComponentSlotStyle = ComponentSlotStyleFunction | ICSSInJSStyle; export type PropsWithVarsAndStyles = Extendable<{ variables?: ComponentVariablesInput; styles?: ComponentSlotStyle; }>; export interface ComponentSlotStylesInput extends Record> { } export interface ComponentSlotStylesPrepared extends Record> { } export interface ComponentSlotStylesResolved extends Record { } export interface ComponentStyleFunctionParam { props: TProps; variables: TVars; theme: ThemePrepared; rtl: boolean; disableAnimations: boolean; } export type ComponentSlotStyleFunction = (styleParam: ComponentStyleFunctionParam) => ICSSInJSStyle; export interface ComponentSlotStylesPrepared extends Record> { } export type ThemeComponentVariablesInput = { [K in keyof ThemeStylesProps]?: ComponentVariablesInput; } & Record; export type ThemeComponentVariablesPrepared = { [K in keyof ThemeStylesProps]?: ComponentVariablesPrepared; } & Record; export type ThemeComponentStylesInput = any> = { [K in keyof ThemeStylesProps]?: ComponentSlotStylesInput; } & Record; export type ThemeComponentStylesPrepared = any> = { [K in keyof ThemeStylesProps]?: ComponentSlotStylesPrepared; } & Record; export interface ThemeInput = any> { siteVariables?: SiteVariablesInput; componentVariables?: ThemeComponentVariablesInput; componentStyles?: ThemeComponentStylesInput; animations?: { [key: string]: ThemeAnimation; }; } export interface ThemePrepared = any> { siteVariables: SiteVariablesPrepared; componentVariables: ThemeComponentVariablesPrepared; componentStyles: ThemeComponentStylesPrepared; animations: Record; } export {};