import { RefObject, JSX } from 'preact';
import { BaseElementProps, ExternalComponentType, IUIElement, UIElementProps, UIElementStatus } from '../../types';
import BaseElement from '../BaseElement';
import './UIElement.scss';
export declare class UIElement<P> extends BaseElement<P & UIElementProps> implements IUIElement {
    protected componentRef: UIElement<P> | null;
    componentToRender: (() => JSX.Element) | null;
    compRef: RefObject<HTMLDivElement>;
    customClassNames: string | undefined;
    elementRef: UIElement<P> | null;
    onContactSupport?: () => void;
    constructor(props: P & UIElementProps & BaseElementProps);
    get isValid(): boolean;
    /**
     * Get the element's displayable name
     */
    get displayName(): ExternalComponentType;
    /**
     * Get the element accessible name, used in the aria-label of the button that controls selected component
     */
    get accessibleName(): string;
    /**
     * Return the type of an element
     */
    get type(): ExternalComponentType;
    formatProps(props: P): P;
    /**
     * Formats the component data output
     */
    formatData(): {
        errors?: {
            [key: string]: any;
        };
        valid?: {
            [key: string]: boolean;
        };
        fieldProblems?: {
            [key: string]: any;
        };
        isValid?: boolean;
    };
    setState(newState: Record<any, any>): void;
    private setUIElementStatus;
    setStatus(status: UIElementStatus, props: P & UIElementProps): this;
    render(): JSX.Element;
}
export default UIElement;
//# sourceMappingURL=UIElement.d.ts.map