import TKButtonWidget from '../terminalKit/TKButtonWidget';
import TkInputWidget from '../terminalKit/TkInputWidget';
import TkLayoutCellWidget from '../terminalKit/TkLayoutCellWidget';
import TkLayoutWidget from '../terminalKit/TkLayoutWidget';
import TkMenuBarWidget from '../terminalKit/TkMenuBarWidget';
import TkPopupWidget from '../terminalKit/TkPopupWidget';
import TkProgressBarWidget from '../terminalKit/TkProgressBarWidget';
import TkTextWidget from '../terminalKit/TkTextWidget';
import TkWindowWidget from '../terminalKit/TkWindowWidget';
import { ButtonWidget, ButtonWidgetOptions } from './button.types';
import { InputWidget, InputWidgetOptions } from './input.types';
import { LayoutWidgetOptions, LayoutWidget, LayoutCellWidgetOptions, LayoutCellWidget } from './layout.types';
import { MenuBarWidgetOptions, MenuBarWidget } from './menuBar.types';
import { PopupWidget, PopupWidgetOptions } from './popup.types';
import { ProgressBarWidgetOptions, ProgressBarWidget } from './progressBar.types';
import { TextWidgetOptions, TextWidget } from './text.types';
import { UniversalWidgetOptions } from './widgets.types';
import { WindowWidgetOptions, WindowWidget } from './window.types';
export type WidgetType = keyof WidgetRegistry;
export type Widget<T extends WidgetType = WidgetType> = WidgetRegistry[T];
export type FactoryOptions<T extends WidgetType> = UniversalWidgetOptions & OptionsMap[T];
interface OptionsMap {
    text: TextWidgetOptions;
    window: WindowWidgetOptions;
    layout: LayoutWidgetOptions;
    layoutCell: LayoutCellWidgetOptions;
    progressBar: ProgressBarWidgetOptions;
    menuBar: MenuBarWidgetOptions;
    popup: PopupWidgetOptions;
    button: ButtonWidgetOptions;
    input: InputWidgetOptions;
}
export interface WidgetRegistry {
    text: TextWidget;
    window: WindowWidget;
    layout: LayoutWidget;
    layoutCell: LayoutCellWidget;
    progressBar: ProgressBarWidget;
    menuBar: MenuBarWidget;
    popup: PopupWidget;
    button: ButtonWidget;
    input: InputWidget;
}
export declare const widgetRegistry: {
    window: typeof TkWindowWidget;
    text: typeof TkTextWidget;
    layout: typeof TkLayoutWidget;
    layoutCell: typeof TkLayoutCellWidget;
    progressBar: typeof TkProgressBarWidget;
    menuBar: typeof TkMenuBarWidget;
    popup: typeof TkPopupWidget;
    button: typeof TKButtonWidget;
    input: typeof TkInputWidget;
};
export declare const contractRegistry: {
    window: {
        eventSignatures: {
            key: {
                emitPayloadSchema: {
                    id: string;
                    fields: {
                        key: {
                            type: "text";
                            isRequired: true;
                        };
                    };
                };
            };
            kill: {
                emitPayloadSchema: {
                    id: string;
                    fields: {
                        code: {
                            type: "number";
                            isRequired: true;
                        };
                    };
                };
            };
            resize: {
                emitPayloadSchema: {
                    id: string;
                    fields: {
                        width: {
                            type: "number";
                            isRequired: true;
                        };
                        height: {
                            type: "number";
                            isRequired: true;
                        };
                    };
                };
            };
        };
    };
    text: {
        eventSignatures: {
            click: {
                emitPayloadSchema: {
                    id: string;
                    fields: {
                        column: {
                            type: "number";
                            isRequired: true;
                        };
                        row: {
                            type: "number";
                            isRequired: true;
                        };
                        text: {
                            type: "text";
                        };
                    };
                };
            };
        };
    };
    layout: null;
    layoutCell: null;
    progressBar: null;
    menuBar: {
        eventSignatures: {
            select: {
                emitPayloadSchema: {
                    id: string;
                    fields: {
                        value: {
                            type: "text";
                            isRequired: true;
                        };
                    };
                };
            };
        };
    };
    popup: null;
    button: {
        eventSignatures: {
            click: {};
        };
    };
    input: {
        eventSignatures: {
            submit: {
                emitPayloadSchema: {
                    id: string;
                    fields: {
                        value: {
                            type: "raw";
                            isRequired: true;
                            options: {
                                valueType: string;
                            };
                        };
                    };
                };
            };
            cancel: {};
        };
    };
};
export {};
