import type { Component, JSX, JSXElementConstructor, Ref } from 'react' import type { TamaguiComponent } from '../types' // gets the ref type of any type of react component export type GetRef = C extends TamaguiComponent ? Ref : C extends new (props: any) => Component ? InstanceType : C extends abstract new (...args: any) => any ? InstanceType : C extends Component ? C : ( C extends JSXElementConstructor<{ ref?: infer R }> ? R : C extends keyof JSX.IntrinsicElements ? JSX.IntrinsicElements[C]['ref'] : unknown ) extends Ref | string | undefined ? T : unknown