import { GridState } from '../types/index.js'; interface ValidationRule { type: "required" | "email" | "min" | "max" | "minLength" | "maxLength" | "pattern" | "custom"; value?: unknown; message: string; } interface FormControllerOptions { validation?: Record; onSubmit?: (values: Record) => void | Promise; onValidationError?: (errors: Record) => void; onFieldChange?: (name: string, value: unknown) => void; submitUrl?: string; } declare class FormController { private el; private props; private state; private options; constructor(el: HTMLFormElement, props: Record, options?: FormControllerOptions); init(): void; private getInitialValues; private bindSubmit; private submitToServer; private bindFieldChanges; private updateValue; private bindReset; private validateAll; private validateField; private checkRule; private showFieldError; private clearAllErrors; private updateSubmitButton; setValues(values: Record): void; getValues(): Record; getErrors(): Record; isValid(): boolean; private emit; destroy(): void; } interface GridControllerOptions { onSort?: (field: string, direction: "asc" | "desc") => void; onPageChange?: (page: number) => void; onSelectionChange?: (selectedKeys: string[]) => void; onFilter?: (filters: Record) => void; fetchData?: (state: GridState) => Promise; } declare class GridController { private el; private props; private state; private options; constructor(el: HTMLElement, props: Record, options?: GridControllerOptions); init(): void; private bindSorting; private bindPagination; private bindSelection; private bindSearch; private setupKeyboardNavigation; sort(field: string): void; private updateSortIndicators; goToPage(page: number): void; private getTotalPages; private updatePaginationUI; selectAll(checked: boolean): void; toggleRowSelection(key: string): void; filter(filters: Record): void; refresh(): Promise; getState(): GridState; getSelectedRows(): string[]; private emit; destroy(): void; } interface ComponentController { init(): void; destroy(): void; } declare global { interface Window { __UI_HYDRATE__?: string[]; __UI_FRAMEWORK__?: UIHydrator; } } declare class UIHydrator { private components; private controllers; private options; constructor(); /** * Register options for a specific component instance */ configure(id: string, options: Record): void; /** * Hydrate all components marked for hydration */ hydrateAll(): Promise; /** * Hydrate a single component by element or ID */ hydrate(elOrId: HTMLElement | string): Promise; /** * Get a component controller by ID */ get(id: string): ComponentController | undefined; /** * Destroy a component and remove from tracking */ destroy(id: string): void; /** * Destroy all tracked components */ destroyAll(): void; } declare function initUIFramework(): UIHydrator; export { FormController, GridController, UIHydrator, initUIFramework };