import type * as React from 'react';
export type CommonProps = {
    id?: string;
    className?: string;
    style?: React.CSSProperties;
};
/**
 * Makes `as` prop available and merges original OwnProps and the inferred props from `as` element.
 * Extends ForwardRefExoticComponent so ref gets the correct type.
 *
 * `DefaultAs` should be the default element that is used for the `as`  prop.
 *
 * @example
 * const Button = React.forwardRef((props, forwardedRef) => {
 *   // ...
 * }) as PolymorphicForwardRefComponent<'button', ButtonOwnProps>;
 */
export interface PolymorphicForwardRefComponent<DefaultAs, OwnProps = {}> extends React.ForwardRefExoticComponent<Merge<DefaultAs extends React.ElementType<any> ? React.ComponentPropsWithRef<DefaultAs> : never, OwnProps & {
    as?: DefaultAs;
}>> {
    <As = DefaultAs>(props: As extends keyof React.JSX.IntrinsicElements ? Merge<React.JSX.IntrinsicElements[As], OwnProps & {
        as: As;
    }> : As extends React.ComponentType<infer P> ? Merge<P, OwnProps & {
        as: As;
    }> : never): React.ReactElement<any> | null;
}
type Merge<P1, P2> = Omit<P1, keyof P2> & P2;
export {};
