import './UIElement.scss';
import type { JSX } from 'preact';
import type { EmptyObject } from 'type-fest';
import type { AuthProviderProps } from '../../core/context/AuthContext/AuthProvider';
import type { CoreProviderProps } from '../../core/context/CoreProvider';
import type { ExperimentsProps } from '../../core/context/ExperimentContext/types';
import type { ExpiryProviderProps } from '../../core/context/ExpiryContext/ExpiryContext';
import type { I18nProviderProps } from '../../core/context/I18nProvider/I18nProvider';
import type { SettingsProps } from '../../core/context/SettingsContext/types';
import type { UserEventCallback } from '../../core/user-events';
import type { BaseElementProps } from '../../core/BaseElement';
import { BaseElement } from '../../core/BaseElement';
import type { ComponentMap } from '../index';
export interface UIElementProps<Props extends object> extends BaseElementProps, CoreProviderProps, AuthProviderProps, I18nProviderProps, ExpiryProviderProps, SettingsProps, ExperimentsProps {
    onUserEvent?: UserEventCallback;
    component: (props: Props) => JSX.Element;
    componentName: keyof ComponentMap;
    componentProps: Props;
}
export declare class UIElement<Props extends object = EmptyObject> extends BaseElement<UIElementProps<Props>> {
    render: () => JSX.Element;
}
