import { type ComponentType } from 'react'; import type { CSSInterpolation } from '@ant-design/cssinjs'; import type { ComponentTokenMap, GlobalToken, OverrideToken, UseComponentStyleResult } from '../interface'; export type OverrideTokenWithoutDerivative = ComponentTokenMap; export type OverrideComponent = keyof OverrideTokenWithoutDerivative; export type GlobalTokenWithComponent = GlobalToken & ComponentTokenMap[ComponentName]; type ComponentToken = Exclude; type ComponentTokenKey = keyof ComponentToken; export interface StyleInfo { hashId: string; prefixCls: string; rootPrefixCls: string; iconPrefixCls: string; overrideComponentToken: ComponentTokenMap[ComponentName]; } export type TokenWithCommonCls = T & { /** Wrap component class with `.` prefix */ componentCls: string; /** Origin prefix which do not have `.` prefix */ prefixCls: string; /** Wrap icon class with `.` prefix */ iconCls: string; /** Wrap ant prefixCls class with `.` prefix */ antCls: string; }; export type FullToken = TokenWithCommonCls>; export type GenStyleFn = (token: FullToken, info: StyleInfo) => CSSInterpolation; export default function genComponentStyleHook(componentName: ComponentName | [ComponentName, string], styleFn: GenStyleFn, getDefaultToken?: null | OverrideTokenWithoutDerivative[ComponentName] | ((token: GlobalToken) => OverrideTokenWithoutDerivative[ComponentName]), options?: { resetStyle?: boolean; deprecatedTokens?: [ComponentTokenKey, ComponentTokenKey][]; /** * Only use component style in client side. Ignore in SSR. */ clientOnly?: boolean; /** * Set order of component style. Default is -999. */ order?: number; }): (prefixCls: string) => UseComponentStyleResult; export interface SubStyleComponentProps { prefixCls: string; } type RestParameters = T extends [any, ...infer Rest] ? Rest : never; export declare const genSubStyleComponent: (componentName: [ComponentName, string], ...args: RestParameters>>) => ComponentType; export {};