import { As, Omit } from '@nature-ui/utils'; import React from 'react'; interface NatureProps { children?: React.ReactNode; } type PropsOf = React.ComponentPropsWithoutRef & { as?: As; }; type WithAs = P & Omit, 'as' | keyof P> & { as?: T; }; type WithNature = Props extends { transition?: any; } ? Props & Omit : Props & NatureProps; type Merge = P & Omit, keyof P>; type Exotic

= ((props: { as?: T; } & (T extends As ? Merge : P)) => JSX.Element) | ((props: P & { as?: As; }) => JSX.Element); type ForwardRefComponent

= Exotic

& { displayName?: string; propTypes?: React.WeakValidationMap

; defaultProps?: Partial

; }; type OmitCommonProps = Omit; type RightJoinProps = OmitCommonProps & OverrideProps; type MergeWithAs = RightJoinProps & RightJoinProps & { as?: AsComponent; }; type ComponentWithAs = { (props: MergeWithAs, React.ComponentProps, Props, AsComponent>): JSX.Element; displayName?: string; propTypes?: React.WeakValidationMap; contextTypes?: React.ValidationMap; defaultProps?: Partial; id?: string; }; interface NatureComponent extends ComponentWithAs, 'size'> & P>; defaultProps?: Partial, 'size'> & P & NatureProps>; } & P> { } export { ComponentWithAs, ForwardRefComponent, MergeWithAs, NatureComponent, NatureProps, OmitCommonProps, PropsOf, RightJoinProps, WithAs, WithNature };