// Type definitions for ui/ForwardRef

type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;

export interface ForwardRefConfig extends Object {
  /**
   * The prop name to pass the ref callback
   */
  prop?: string;
}
export interface ForwardRefProps {}
export function ForwardRef<P>(
  config: ForwardRefConfig,
  Component: React.ComponentType<P> | string,
): React.ComponentType<P & ForwardRefProps>;

export function ForwardRef<P>(
  Component: React.ComponentType<P> | string,
): React.ComponentType<P & ForwardRefProps>;

export default ForwardRef;
