import { EventName, Options } from '@lit/react';

type EventNames = Record<string, EventName | string>;
type StencilProps<I extends HTMLElement, E extends EventNames, C> = Omit<React.HTMLAttributes<I>, keyof E> & Partial<{
    [K in keyof E]: E[K] extends EventName<infer T> ? (event: T) => void : (event: any) => void;
}> & Partial<C> & React.RefAttributes<I>;
export type StencilReactComponent<I extends HTMLElement, E extends EventNames = {}, C = Omit<I, keyof HTMLElement>> = React.FunctionComponent<StencilProps<I, E, C>>;
/**
 * Defines a custom element and creates a React component.
 * @public
 */
export declare const createComponent: <I extends HTMLElement, E extends EventNames = {}, C = Omit<I, keyof HTMLElement>>({ defineCustomElement, tagName, transformTag, ...options }: Options<I, E> & {
    defineCustomElement: () => void;
    transformTag?: (tagName: string) => string;
}) => StencilReactComponent<I, E, C>;
export {};
