import type { ComponentChildren } from 'preact';
import { Screen, type ScreenOptions, ViewProps, Window as WrWindow } from '@teaui/core';
import type { CheckboxProps, CollapsibleTextProps, ConsoleProps, DigitsProps, HeaderProps, InputProps, ProgressProps, SeparatorProps, SliderProps, SpaceProps, SpinnerProps, ToggleGroupProps, BoxProps, ButtonProps, CollapsibleProps, ScrollableProps, StackProps, StyleProps, TextProps, AccordionProps, AccordionSectionProps, DrawerProps, HotKeyProps, KeyboardProps, MouseProps, TabsProps, TabsSectionProps } from './components.js';
declare module 'preact' {
    namespace JSX {
        interface IntrinsicElements {
            'tui-br': {};
            'tui-checkbox': CheckboxProps;
            'tui-collapsible-text': CollapsibleTextProps;
            'tui-console': ConsoleProps;
            'tui-digits': DigitsProps;
            'tui-hotkey': HotKeyProps;
            'tui-keyboard': KeyboardProps;
            'tui-mouse': MouseProps;
            'tui-h1': HeaderProps;
            'tui-h2': HeaderProps;
            'tui-h3': HeaderProps;
            'tui-h4': HeaderProps;
            'tui-h5': HeaderProps;
            'tui-h6': HeaderProps;
            'tui-input': InputProps;
            'tui-progress': ProgressProps;
            'tui-separator': SeparatorProps;
            'tui-slider': SliderProps;
            'tui-space': SpaceProps;
            'tui-spinner': SpinnerProps;
            'tui-toggle-group': ToggleGroupProps;
            'tui-tree': ViewProps;
            'tui-box': BoxProps;
            'tui-button': ButtonProps;
            'tui-collapsible': CollapsibleProps;
            'tui-scrollable': ScrollableProps;
            'tui-stack': StackProps;
            'tui-style': StyleProps;
            'tui-text': TextProps;
            'tui-accordion': AccordionProps;
            'tui-accordion-section': AccordionSectionProps;
            'tui-drawer': DrawerProps;
            'tui-tabs': TabsProps;
            'tui-tabs-section': TabsSectionProps;
        }
    }
}
type ViewFactory = (props: any) => any;
/**
 * Register a custom element type for the Preact reconciler.
 * External packages (e.g. @teaui/subprocess) can call this to add new JSX elements.
 *
 * @example
 * registerElement('tui-subprocess', (props) => new SubprocessView(props))
 */
export declare function registerElement(type: string, factory: ViewFactory): void;
export declare function render(screen: Screen, window: WrWindow, component: ComponentChildren): () => void;
export declare function run(component: ComponentChildren, options?: Partial<ScreenOptions>): Promise<[Screen, WrWindow, ComponentChildren, () => void]>;
export {};
