// Generated by dts-bundle-generator v9.5.1

/**
 * Tag enumeration for supported HTML elements
 */
export declare enum tag {
	DIV = "div",
	H1 = "h1",
	H2 = "h2",
	H3 = "h3",
	H4 = "h4",
	H5 = "h5",
	H6 = "h6",
	P = "p",
	SPAN = "span",
	A = "a",
	IMG = "img",
	UL = "ul",
	OL = "ol",
	LI = "li",
	NAV = "nav",
	HEADER = "header",
	FOOTER = "footer",
	SECTION = "section",
	ARTICLE = "article",
	ASIDE = "aside",
	MAIN = "main",
	FORM = "form",
	INPUT = "input",
	BUTTON = "button",
	LABEL = "label",
	TEXTAREA = "textarea",
	SELECT = "select",
	OPTION = "option",
	TABLE = "table",
	TR = "tr",
	TD = "td",
	TH = "th",
	THEAD = "thead",
	TBODY = "tbody",
	TFOOT = "tfoot",
	CAPTION = "caption",
	VIDEO = "video",
	AUDIO = "audio",
	IFRAME = "iframe",
	CANVAS = "canvas",
	SVG = "svg",
	PATH = "path"
}
/**
 * Type for tag property (enum or string)
 */
export type _tag = tag | string;
/**
 * Type for classList property
 */
export type _classList = ((() => string) | string)[];
/**
 * Type for id property
 */
export type _id = (number | string) | (() => string | number);
/**
 * Type for events property
 */
export type _events = {
	[key: string]: (e?: Event | undefined) => void;
};
/**
 * Type for attributes property
 */
export type _atr = {
	[key: string]: (() => string) | string | undefined;
};
/**
 * Type for children property
 */
export type _children = unknown[];
/**
 * Type for text property
 */
export type _text = (() => string | number) | (string | number);
/**
 * Type for inner property
 */
export type _inner = string | null;
/**
 * Interface for IO element props
 */
export interface iIO {
	tag?: _tag;
	classList?: _classList;
	id?: _id;
	events?: _events;
	atr?: _atr;
	children?: _children;
	components?: _components;
	text?: _text;
	inner?: _inner;
	inputProps?: {
		placeholder?: string;
		[key: string]: unknown;
	};
}
/**
 * Interface for query status
 */
export interface iQueryStatus<T> {
	data: () => T;
	loading: boolean;
	error: Error | null;
}
/**
 * Interface for IO root
 */
export interface iIORoot {
	rootElement: HTMLElement;
	rootComponent: (() => unknown) | null;
}
/**
 * Interface for IO page
 */
export interface iPage {
	[key: string]: () => unknown;
}
/**
 * Interface for state query callbacks
 */
export interface iStateQueryCallbacks<T> {
	ok?: (res: T) => void;
	error?: (err: Error) => void;
}
/**
 * Model directive for two-way data binding
 */
export type ModelDirective<T = string> = [
	getter: () => T,
	setter: (value: T) => void
];
/**
 * Submit directive for form submission
 */
export type SubmitDirective<T = string> = (value: T) => void;
/**
 * Validate directive for value validation
 */
export type ValidateDirective<T = string> = (value: T) => boolean | string;
/**
 * Transform directive for value transformation
 */
export type TransformDirective<TInput = string, TOutput = string> = {
	toState?: (value: TInput) => TOutput;
	toDOM?: (value: TOutput) => TInput;
};
/**
 * Mask directive configuration
 */
export interface MaskDirective {
	pattern: string;
	placeholder?: string;
	definitions?: Record<string, RegExp>;
	showMaskOnFocus?: boolean;
	showMaskOnHover?: boolean;
	clearIncomplete?: boolean;
}
/**
 * Custom directive configuration
 */
export interface CustomDirective<T = unknown> {
	name: string;
	init: (element: HTMLElement, value: T, context: DirectiveContext) => void;
	destroy?: () => void;
	update?: (newValue: T) => void;
	options?: Record<string, unknown>;
}
/**
 * Directive execution context
 */
export interface DirectiveContext {
	element: HTMLElement;
	io: unknown;
	addCleanup: (fn: () => void) => void;
	getValue: () => unknown;
	setValue: (value: unknown) => void;
}
/**
 * Advanced directive options
 */
export interface AdvancedDirectiveOptions {
	debounceOptions?: {
		delay: number;
		leading?: boolean;
		maxWait?: number;
	};
	focusOptions?: {
		preserve: boolean;
		preserveCursor?: boolean;
		preserveSelection?: boolean;
	};
	validationOptions?: {
		validateOnChange?: boolean;
		validateOnBlur?: boolean;
		showErrorsRealtime?: boolean;
		cssClasses?: {
			valid?: string;
			invalid?: string;
			pending?: string;
		};
	};
}
/**
 * Full set of form directives
 */
export interface FormDirectives<T = string> extends AdvancedDirectiveOptions {
	model?: ModelDirective<T>;
	onSubmit?: SubmitDirective<T>;
	validate?: ValidateDirective<T>;
	transform?: TransformDirective<unknown, T>;
	mask?: MaskDirective;
	custom?: CustomDirective[];
	debounce?: number;
	preserveFocus?: boolean;
	clearOnSubmit?: boolean;
	autoTrim?: boolean;
	autoLowercase?: boolean;
	autoUppercase?: boolean;
	maxLength?: number;
	allowedChars?: RegExp;
	forbiddenChars?: RegExp;
}
/**
 * Factory for synchronous module
 */
export type ModuleFactory<T> = () => T;
/**
 * Factory for asynchronous module
 */
export type AsyncModuleFactory<T> = () => Promise<T>;
/**
 * Lazy module type
 */
export type LazyModule<T> = () => Promise<T>;
/**
 * Lazy load configuration
 */
export interface LazyLoadConfig {
	preload?: boolean;
	timeout?: number;
	retries?: number;
	fallback?: unknown;
	priority?: number;
}
/**
 * Cache entry for element cache
 */
export interface CacheEntry {
	element: Element;
	timestamp: number;
	ttl: number;
}
/**
 * Type that can be returned by component functions in the components array.
 * @template IOType - Main IO component type
 * @template IslandType - Island component type
 */
export type ComponentReturn<IOType = unknown, IslandType = unknown> = IOType | IslandType | null;
/**
 * Array of component-returning functions.
 * @template IOType - Main IO component type
 * @template IslandType - Island component type
 */
export type IOArray<IOType = unknown, IslandType = unknown> = (() => ComponentReturn<IOType, IslandType>)[];
/**
 * Type for components property (array of component-returning functions or a function returning such an array)
 * @template IOType - Main IO component type
 * @template IslandType - Island component type
 */
export type _components<IOType = unknown, IslandType = unknown> = IOArray<IOType, IslandType> | (() => IOArray<IOType, IslandType>);
/**
 * Hydration strategy for islands
 */
export type HydrationStrategy = {
	"client:load"?: boolean;
	"client:idle"?: boolean;
	"client:visible"?: boolean;
	"client:media"?: string;
};
/**
 * Island configuration interface
 */
export interface IslandConfig {
	classList?: unknown;
	id?: unknown;
	atr?: unknown;
	hydration: HydrationStrategy;
	fallback?: () => unknown;
	component: () => unknown | Promise<unknown>;
	props?: Record<string, unknown>;
}
/**
 * Stream message interface
 */
export interface iStreamMessage {
	id: string;
	data: unknown;
}
/**
 * Path type for route definitions
 */
export type path = `/${string}`;
/**
 * Route parameters interface
 */
export interface iRouteParams {
	isActive?: boolean;
	isPrivate?: boolean;
	redirectTo?: path;
	guards?: RouteGuard[];
	metadata?: RouteMetadata;
	cache?: boolean;
	preload?: boolean;
	layout?: layoutTemplate;
	useIOLayout?: boolean;
	layoutDepth?: number;
	animateLayoutLevel?: boolean;
}
/**
 * Route interface
 */
export interface iRoute {
	path: path;
	name?: string;
	template: routeIO;
	params?: iRouteParams;
	children?: iRoutes;
	includes?: iRoutes;
	guards?: RouteGuard[];
	metadata?: RouteMetadata;
}
/**
 * Array of routes
 */
export type iRoutes = iRoute[];
/**
 * Router map type
 */
export type routerMap = Map<string, Route>;
/**
 * Route IO function type
 */
export type routeIO = (data: string) => unknown | Promise<unknown>;
/**
 * Domain type
 */
export type domain = string;
/**
 * Middleware function type
 */
export type middleware = ((data: iMiddlewareData) => void) | undefined;
/**
 * Layout template function type
 */
export type layoutTemplate = ((children: (() => unknown)[]) => unknown) | undefined;
/**
 * Router instance interface
 */
export interface iIORouter {
	domain: domain;
	routes: Promise<iRoutes>;
	root?: HTMLElement;
	auth?: () => Promise<boolean>;
	middleware?: (data: iMiddlewareData) => void;
	layout?: layoutTemplate;
}
/**
 * Middleware data interface
 */
export interface iMiddlewareData {
	domain: string;
	routes: [
		string,
		Route
	][];
	href: path;
	state?: unknown;
}
/**
 * Router config interface
 */
export interface iConfig {
	root: HTMLElement;
	domain: domain;
	routes: Promise<iRoutes>;
	auth?: (() => Promise<boolean>) | undefined;
	middleware?: middleware;
	layout?: layoutTemplate;
}
/**
 * Query params interface
 */
export interface iQueryParams {
	[key: string]: string;
}
/**
 * Route guard interface
 */
export interface RouteGuard {
	canActivate(route: Route): Promise<boolean> | boolean;
	canDeactivate?(route: Route): Promise<boolean> | boolean;
	resolve?(route: Route): Promise<unknown> | unknown;
	onReject?(route: Route): void;
}
/**
 * Open Graph metadata interface
 */
export interface OpenGraphData {
	title?: string;
	description?: string;
	image?: string;
	url?: string;
	type?: string;
	siteName?: string;
}
/**
 * Twitter Card metadata interface
 */
export interface TwitterCardData {
	card?: "summary" | "summary_large_image" | "app" | "player";
	site?: string;
	creator?: string;
	title?: string;
	description?: string;
	image?: string;
}
/**
 * Route metadata interface
 */
export interface RouteMetadata {
	title?: string;
	description?: string;
	keywords?: string[];
	author?: string;
	canonical?: string;
	robots?: string;
	viewport?: string;
	charset?: string;
	openGraph?: OpenGraphData;
	twitterCard?: TwitterCardData;
	customMeta?: {
		[key: string]: string;
	};
	structuredData?: unknown;
}
/**
 * Route class stub for type references
 */
export declare class Route {
	path: path;
	name: string;
}
/**
 * Класс интерактивного островка
 */
export declare class IslandComponent {
	private _tag;
	private _config;
	private _isHydrated;
	private _element;
	private _hydratedComponent;
	private _observerCleanup;
	constructor(tag: _tag$1, config: IslandConfig$1);
	/**
	 * Рендерит островок (изначально fallback)
	 */
	render(): HTMLElement;
	/**
	 * Инициализирует гидратацию в зависимости от стратегии
	 */
	private _initHydration;
	/**
	 * Настройка Intersection Observer для 'client:visible'
	 */
	private _setupVisibilityObserver;
	/**
	 * Настройка медиа-запроса для 'client:media'
	 */
	private _setupMediaQuery;
	/**
	 * Выполняет гидратацию островка
	 */
	private _hydrate;
	/**
	 * Уничтожает островок и очищает ресурсы
	 */
	destroy(): void;
	/**
	 * Возвращает состояние гидратации
	 */
	isHydrated(): boolean;
	/**
	 * Возвращает гидратированный компонент (если есть)
	 */
	getHydratedComponent(): IO | null;
}
type ModelDirective$1<T = string> = [
	/** Получить текущее значение */
	getter: () => T,
	/** Установить новое значение */
	setter: (value: T) => void
];
type SubmitDirective$1<T = string> = (value: T) => void;
type ValidateDirective$1<T = string> = (value: T) => boolean | string;
type TransformDirective$1<TInput = string, TOutput = string> = {
	/** Преобразование из DOM в состояние */
	toState?: (value: TInput) => TOutput;
	/** Преобразование из состояния в DOM */
	toDOM?: (value: TOutput) => TInput;
};
interface MaskDirective$1 {
	/** Шаблон маски (например: "+7 (###) ###-##-##") */
	pattern: string;
	/** Символ-заполнитель (по умолчанию '_') */
	placeholder?: string;
	/** Разрешенные символы для замены */
	definitions?: Record<string, RegExp>;
	/** Показывать маску при фокусе */
	showMaskOnFocus?: boolean;
	/** Показывать маску при hover */
	showMaskOnHover?: boolean;
	/** Очищать неполные значения */
	clearIncomplete?: boolean;
}
interface CustomDirective$1<T = unknown> {
	/** Имя директивы */
	name: string;
	/** Инициализация директивы */
	init: (element: HTMLElement, value: T, context: DirectiveContext$1) => void;
	/** Очистка ресурсов */
	destroy?: () => void;
	/** Обновление значения */
	update?: (newValue: T) => void;
	/** Опции директивы */
	options?: Record<string, unknown>;
}
interface DirectiveContext$1 {
	/** Элемент, к которому применяется директива */
	element: HTMLElement;
	/** IO компонент */
	io: unknown;
	/** Функции для добавления cleanup */
	addCleanup: (fn: () => void) => void;
	/** Получить значение элемента */
	getValue: () => unknown;
	/** Установить значение элемента */
	setValue: (value: unknown) => void;
}
interface AdvancedDirectiveOptions$1 {
	/** Настройки debounce */
	debounceOptions?: {
		/** Задержка в миллисекундах */
		delay: number;
		/** Срабатывание на leading edge */
		leading?: boolean;
		/** Максимальное время ожидания */
		maxWait?: number;
	};
	/** Настройки сохранения фокуса */
	focusOptions?: {
		/** Сохранять фокус при обновлениях */
		preserve: boolean;
		/** Сохранять позицию курсора */
		preserveCursor?: boolean;
		/** Восстанавливать выделение */
		preserveSelection?: boolean;
	};
	/** Настройки валидации */
	validationOptions?: {
		/** Валидировать при каждом изменении */
		validateOnChange?: boolean;
		/** Валидировать при потере фокуса */
		validateOnBlur?: boolean;
		/** Показывать ошибки в реальном времени */
		showErrorsRealtime?: boolean;
		/** CSS классы для состояний */
		cssClasses?: {
			valid?: string;
			invalid?: string;
			pending?: string;
		};
	};
}
interface FormDirectives$1<T = string> extends AdvancedDirectiveOptions$1 {
	/** Двустороннее связывание данных */
	model?: ModelDirective$1<T>;
	/** Обработчик отправки формы */
	onSubmit?: SubmitDirective$1<T>;
	/** Функция валидации */
	validate?: ValidateDirective$1<T>;
	/** Преобразование значений */
	transform?: TransformDirective$1<unknown, T>;
	/** Маска ввода */
	mask?: MaskDirective$1;
	/** Пользовательские директивы */
	custom?: CustomDirective$1[];
	/** Задержка debounce (упрощенная версия) */
	debounce?: number;
	/** Сохранять фокус при обновлениях */
	preserveFocus?: boolean;
	/** Очищать поле после отправки */
	clearOnSubmit?: boolean;
	/** Автоматическое обрезание пробелов */
	autoTrim?: boolean;
	/** Автоматическое приведение к нижнему регистру */
	autoLowercase?: boolean;
	/** Автоматическое приведение к верхнему регистру */
	autoUppercase?: boolean;
	/** Максимальная длина ввода */
	maxLength?: number;
	/** Разрешенные символы (регулярное выражение) */
	allowedChars?: RegExp;
	/** Запрещенные символы (регулярное выражение) */
	forbiddenChars?: RegExp;
}
export type tSetState<T> = {
	(value: T): void;
	(updater: (value: T) => T): void;
};
declare enum tag$1 {
	DIV = "div",
	H1 = "h1",
	H2 = "h2",
	H3 = "h3",
	H4 = "h4",
	H5 = "h5",
	H6 = "h6",
	P = "p",
	SPAN = "span",
	A = "a",
	IMG = "img",
	UL = "ul",
	OL = "ol",
	LI = "li",
	NAV = "nav",
	HEADER = "header",
	FOOTER = "footer",
	SECTION = "section",
	ARTICLE = "article",
	ASIDE = "aside",
	MAIN = "main",
	FORM = "form",
	INPUT = "input",
	BUTTON = "button",
	LABEL = "label",
	TEXTAREA = "textarea",
	SELECT = "select",
	OPTION = "option",
	TABLE = "table",
	TR = "tr",
	TD = "td",
	TH = "th",
	THEAD = "thead",
	TBODY = "tbody",
	TFOOT = "tfoot",
	CAPTION = "caption",
	VIDEO = "video",
	AUDIO = "audio",
	IFRAME = "iframe",
	CANVAS = "canvas",
	SVG = "svg",
	PATH = "path"
}
type _components$1 = _components<IO, IslandComponent>;
type _tag$1 = tag$1 | string;
type _classList$1 = ((() => string) | string)[];
type _id$1 = (number | string) | (() => string | number);
type _events$1 = {
	[key: string]: (e?: Event | undefined) => void;
};
type _atr$1 = {
	[key: string]: (() => string) | string | undefined;
};
type _children$1 = IO[];
type _text$1 = (() => string | number) | (string | number);
type _inner$1 = string | null;
interface iIO$1 extends FormDirectives$1 {
	tag?: _tag$1;
	classList?: _classList$1;
	id?: _id$1;
	events?: _events$1;
	atr?: _atr$1;
	children?: _children$1;
	components?: _components$1;
	text?: _text$1;
	inner?: _inner$1;
	/**
	 * Специфичные свойства для input (placeholder, type, value и др.)
	 */
	inputProps?: {
		placeholder?: string;
		[key: string]: unknown;
	};
}
interface iStateQueryCallbacks$1<T> {
	ok?: (res: T) => void;
	error?: (err: Error) => void;
}
type HydrationStrategy$1 = {
	"client:load"?: boolean;
	"client:idle"?: boolean;
	"client:visible"?: boolean;
	"client:media"?: string;
};
interface IslandConfig$1 {
	classList?: _classList$1;
	id?: _id$1;
	atr?: _atr$1;
	hydration: HydrationStrategy$1;
	fallback?: () => IO;
	component: () => IO | Promise<IO>;
	props?: Record<string, unknown>;
}
declare class DirectiveManager {
	private element;
	private directives;
	private cleanup;
	private domCache;
	private lazyInit;
	private initialized;
	private stats;
	constructor(element: HTMLElement, directives: FormDirectives$1);
	/**
	 * Ленивая инициализация директив
	 * Директивы инициализируются только при первом использовании
	 */
	init(): void;
	/**
	 * Получает статистику производительности
	 */
	getPerformanceStats(): {
		cacheEfficiency: number;
		domOperationsPerEvent: number;
		domOperations: number;
		eventsFired: number;
		validationCalls: number;
		cacheHits: number;
		cacheMisses: number;
	};
	/** Очистка ресурсов с оптимизированной очисткой */
	destroy(): void;
	/**
	 * Строит кэш DOM операций для повышения производительности
	 */
	private buildDOMCache;
	/**
	 * Планирует ленивую инициализацию директив
	 */
	private scheduleDirectiveInit;
	/**
	 * Планирует инициализацию директив при первом взаимодействии
	 */
	private scheduleInteractionInit;
	private validateDirectives;
	/**
	 * Инициализация model директивы с оптимизированной синхронизацией
	 */
	private initModelDirective;
	/**
	 * Настройка умной синхронизации состояния без rAF polling
	 */
	private setupStateSync;
	/**
	 * Обновление с сохранением фокуса и позиции курсора
	 */
	private preserveFocusUpdate;
	/**
	 * Инициализация submit директивы
	 */
	private initSubmitDirective;
	/**
	 * Инициализация validate директивы
	 */
	private initValidateDirective;
	/**
	 * Оптимизированное получение значения элемента с кэшированием
	 */
	private getElementValueOptimized;
	/**
	 * Оптимизированная установка значения элемента
	 */
	private setElementValueOptimized;
	/**
	 * Fallback методы для совместимости
	 */
	private getElementValueFallback;
	private setElementValueFallback;
	private getRelevantEvents;
}
declare class Hydration {
	private tagSwitcher;
	private create;
	private createSVG;
	/**
	 * Устанавливает classList для элемента
	 * @param element - HTML элемент
	 * @param classList - список классов или реактивная ссылка
	 * @param batched - использовать батчинг
	 */
	private setClassList;
	/**
	 * Устанавливает id для элемента
	 * @param element - HTML элемент
	 * @param id - id или реактивная ссылка
	 */
	private setID;
	/**
	 * Устанавливает события для элемента
	 * @param element - HTML элемент
	 * @param events - объект событий или реактивная ссылка
	 */
	private setEvents;
	private setComponents;
	/**
	 * Устанавливает текстовое содержимое для элемента
	 * @param element - HTML элемент
	 * @param text - текст, функция или реактивная ссылка
	 * @param batched - использовать батчинг
	 */
	private setText;
	/**
	 * Метод для установки HTML содержимого (ВНИМАНИЕ: потенциально небезопасно!)
	 * Используйте только с доверенным контентом или предварительной санитизацией
	 * @param element - HTML элемент
	 * @param html - HTML содержимое (строка или функция)
	 * @param options - опции безопасности
	 */
	setHTML(element: HTMLElement, html: string | (() => string), options?: {
		trusted?: boolean;
		sanitize?: boolean;
		warnInDev?: boolean;
	}): void;
	/**
	 * Устанавливает атрибуты для элемента
	 * @param element - HTML элемент
	 * @param atr - объект атрибутов или реактивная ссылка
	 * @param batched - использовать батчинг
	 */
	private setAtr;
	private setComponentId;
	hydrate(_node: IO, renderStackOrBatching?: Set<IO> | boolean, useBatching?: boolean): HTMLElement;
	mutate(_node: IO, _element: HTMLElement): HTMLElement | undefined;
	/**
	 * Легаси метод mutate (старая версия для обратной совместимости)
	 * Рекомендуется использовать новый mutate с diff алгоритмом
	 */
	mutateLegacy(_node: IO, _element: HTMLElement): HTMLElement | undefined;
}
export declare class StateQueryModule {
	private readonly _node;
	private readonly _state;
	private _update;
	constructor(node: IO);
	stateQuery<stateType>(init: stateType | null, queryPromise: Promise<stateType>, callback?: iStateQueryCallbacks$1<stateType>): {
		data: () => stateType;
		refetch: () => void;
	};
}
export interface ReactiveRef<T> {
	value: T;
	subscribe: (callback: (value: T) => void) => void;
	unsubscribe: (callback: (value: T) => void) => void;
}
export declare function reactiveRef<T>(initialValue: T): ReactiveRef<T>;
export interface iSignal<T> {
	value: T;
	effect: null | ((data: T) => void);
}
export declare function signal<T>(value: T): iSignal<T>;
export interface stateInterface<stateType> {
	init: stateType;
	update?: boolean;
	callback?: (val: stateType) => void;
	forceRender?: boolean;
	debounce?: boolean | {
		wait?: number;
		maxWait?: number;
		immediate?: boolean;
	};
}
export declare class StateModule {
	private readonly _node;
	private readonly _state;
	private _update;
	private componentUpdateFunc;
	constructor(node: IO);
	private getComponentUpdateFunction;
	state<stateType>({ init, update, callback, forceRender }: stateInterface<stateType>): [
		ReactiveRef<stateType>,
		tSetState<stateType>
	];
}
export interface iSubscriber<T> {
	id: string;
	subscriber: StreamSubscriber<T>;
}
declare class Stream<T> {
	private subscribers;
	constructor();
	notify(message: T): void;
	subscribe(subscriber: iSubscriber<T>): void;
	unsubscribe(id: string): void;
	clearSubscribers(): void;
}
declare class StreamSubscriber<T> {
	private callback;
	private id;
	private stream;
	constructor(stream: Stream<T>, callback: (message: T) => void);
	effect(message: T): void;
	unsubscribe(): void;
}
interface iStreamMessage$1 {
	id: string;
	data: unknown;
}
export declare class StreamModule {
	protected readonly _$stream: Stream<iStreamMessage$1>;
	protected $subscriber: StreamSubscriber<iStreamMessage$1> | null;
	constructor();
	stream<T>(): {
		subscribe: (id: string, effect?: (data: T) => void) => StreamSubscriber<iStreamMessage$1>;
		notify: (id: string, data?: T) => void;
	};
}
/**
 * Главный класс UI-элемента IO.
 * Обеспечивает реактивность, управление DOM, поддержку директив, батчинг, оптимизации и интеграцию с островковой архитектурой.
 * Используйте для создания интерактивных и статических компонентов.
 */
export declare class IO {
	_hydration: Hydration;
	_testStateModule: StateModule | null;
	_testStateQueryModule: StateQueryModule | null;
	_stream: StreamModule | null;
	protected _tag: _tag$1;
	protected _classList?: _classList$1;
	protected _id?: _id$1;
	protected _events?: _events$1;
	protected _atr?: _atr$1;
	_elementID: string;
	protected _components?: _components$1;
	protected _text?: _text$1;
	protected _inputProps?: iIO$1["inputProps"];
	protected _directives?: FormDirectives$1;
	protected _directiveManager: DirectiveManager | null;
	onRender: ((io: IO) => void) | null;
	onMutate: ((io: IO) => void) | null;
	elementRef: HTMLElement | null;
	protected _reactiveUnsubscribers: Record<string, (() => void) | null>;
	constructor(tag: _tag$1, props?: iIO$1, children?: _components$1);
	/**
	 * Сеттер/геттер для tag
	 */
	set tag(value: _tag$1);
	get tag(): _tag$1;
	/**
	 * Сеттер/геттер для classList
	 */
	set classList(value: _classList$1 | ReactiveRef<_classList$1>);
	get classList(): _classList$1 | undefined;
	/**
	 * Сеттер/геттер для id
	 */
	set id(value: _id$1 | ReactiveRef<_id$1>);
	get id(): _id$1 | undefined;
	/**
	 * Сеттер/геттер для events
	 */
	set events(value: _events$1 | ReactiveRef<_events$1>);
	get events(): _events$1 | undefined;
	/**
	 * Сеттер/геттер для atr
	 */
	set atr(value: _atr$1 | ReactiveRef<_atr$1>);
	get atr(): _atr$1 | undefined;
	/**
	 * Сеттер/геттер для text
	 */
	set text(value: _text$1 | ReactiveRef<_text$1>);
	get text(): _text$1 | undefined;
	/**
	 * Сеттер/геттер для components
	 */
	set components(value: _components$1 | IO[]);
	get components(): _components$1 | undefined;
	state<T>(init: T, isUpdate?: boolean, forceRender?: boolean): [
		ReactiveRef<T>,
		tSetState<T>
	];
	stateQuery<T>(init: T | null, promise: Promise<T>, callback?: iStateQueryCallbacks<T>): Promise<{
		data: () => T;
		refetch: () => void;
	}>;
	stream<T>(): Promise<{
		subscribe: (id: string, effect?: ((data: T) => void) | undefined) => StreamSubscriber<iStreamMessage$1>;
		notify: (id: string, data?: T | undefined) => void;
	}>;
	render(renderStack?: Set<IO>): HTMLElement;
	forceUpdate(): void;
	/**
	 * Установить HTML содержимое
	 */
	setHTML(html: string | (() => string), options?: {
		trusted?: boolean;
		sanitize?: boolean;
		warnInDev?: boolean;
	}): void;
	/**
	 * Удаление компонента IO (destroy + очистка директив)
	 */
	destroy(): void;
	/**
	 * Алиас для destroy (unmount)
	 */
	unmount(): void;
	/**
	 * Получить ссылку на DOM элемент
	 */
	getRef(): HTMLElement | null;
	/**
	 * Оптимизированная установка текста
	 */
	setOptimizedText(text: string): void;
	/**
	 * Оптимизированный поиск элементов
	 */
	querySelector(selector: string, parent?: Element | Document): Element | null;
	/**
	 * Оптимизированный поиск всех элементов
	 */
	querySelectorAll(selector: string, parent?: Element | Document): NodeList;
	/**
	 * Делегированный обработчик событий
	 */
	delegateEvent(selector: string, eventType: string, handler: (event: Event, element: Element) => void): () => void;
	/**
	 * Автоматический выбор способа обработки событий
	 */
	autoEvent(selector: string | null, eventType: string, handler: EventListenerOrEventListenerObject | ((event: Event, element: Element) => void)): () => void;
	/**
	 * Принудительно выполнить все отложенные DOM операции
	 */
	flushDOMOperations(): void;
	/**
	 * Получить статистику DOM оптимизаций
	 */
	getDOMOptimizationStats(): Record<string, unknown>;
	/**
	 * Получить количество активных event listeners
	 */
	getListenerCount(): number;
	/**
	 * Настройка дебаунса состояния
	 */
	setStateDebouncing(enabled: boolean, options?: {
		delay?: number;
		leading?: boolean;
		maxWait?: number;
		strategyByProperty?: Record<string, {
			delay: number;
			leading?: boolean;
		}>;
		condition?: (oldValue: unknown, newValue: unknown) => boolean;
	}): void;
	/**
	 * Получить статистику дебаунса состояния
	 */
	getStateDebounceStats(): {
		activeDebounces: number;
		debouncers: Array<{
			key: string;
			lastUpdate: number;
			updateCount: number;
			timeSinceLastUpdate: number;
		}>;
		totalStateChanges?: number;
		debouncedUpdates?: number;
		preventedRenders?: number;
	};
	/**
	 * Принудительно выполнить все отложенные обновления состояния
	 */
	flushStateUpdates(): void;
	/**
	 * Принудительно обновить компонент с использованием diff-алгоритма
	 */
	forceUpdateWithDiff(): void;
	/**
	 * Принудительно обновить компонент с использованием legacy-алгоритма
	 */
	forceUpdateLegacy(): void;
	/**
	 * Умное обновление компонента (выбор diff/legacy)
	 */
	smartUpdate(): void;
	/**
	 * Глобальная настройка diff-алгоритма
	 */
	static configureDiff(config: {
		useKeys?: boolean;
		compareAttributes?: boolean;
		compareText?: boolean;
	}): void;
	/**
	 * Глобальный flush для всех обновлений
	 */
	static flushAllUpdates(): void;
	/**
	 * Создает статический компонент (для SSR/SSG)
	 * Не имеет JavaScript логики, быстро рендерится
	 * @param tag - HTML тег
	 * @param props - свойства компонента
	 * @param children - дочерние элементы
	 */
	static static(tag: _tag$1, props?: iIO$1, children?: _components$1): IO;
	/**
	 * Создает интерактивный островок с гидратацией
	 * @param tag - HTML тег
	 * @param config - конфигурация островка
	 * @returns Функция, создающая IslandComponent (из modules/islands/IslandComponent)
	 */
	static island(tag: _tag$1, config: IslandConfig$1): () => IslandComponent;
	/**
	 * Проверяет, является ли компонент статическим
	 */
	isStatic(): boolean;
	/**
	 * Включить или отключить глобальный батчинг DOM
	 */
	static setBatchingEnabled(enabled: boolean): void;
	/**
	 * Получить глобальную статистику DOM батчера
	 */
	static getDOMBatcherStats(): {
		queueLength: number;
		isScheduled: boolean;
		batchingEnabled: boolean;
		operations: string[];
	};
	/**
	 * Принудительно выполнить все DOM оптимизации глобально
	 */
	static flushDOMOptimizations(): void;
	/**
	 * Оптимизированный querySelector (глобальный)
	 */
	static optimizedQuerySelector(parent: Element | Document, selector: string): Element | null;
	/**
	 * Оптимизированная установка текста (глобальная)
	 */
	static optimizedSetText(element: HTMLElement, text: string): void;
	/**
	 * Планировщик чтения DOM
	 */
	static scheduleRead<T>(readFn: () => T): Promise<T>;
	/**
	 * Планировщик записи в DOM
	 */
	static scheduleWrite(writeFn: () => void): void;
	/**
	 * Получить глобальную статистику DOM-оптимизаций
	 */
	static getDOMOptimizationStats(): Record<string, unknown>;
	/**
	 * Зарегистрировать ленивый модуль
	 */
	static registerLazyModule<T>(name: string, factory: (() => T) | (() => Promise<T>), config?: {
		preload?: boolean;
		timeout?: number;
		retries?: number;
	}): void;
	/**
	 * Загрузить ленивый модуль
	 */
	static loadLazyModule<T>(name: string): Promise<T>;
	/**
	 * Получить ленивый модуль
	 */
	static getLazyModule<T>(name: string): T | null;
	/**
	 * Проверить, загружен ли ленивый модуль
	 */
	static isLazyModuleLoaded(name: string): boolean;
	/**
	 * Прелоад ленивого модуля
	 */
	static preloadLazyModule(name: string): void;
	/**
	 * Получить статистику ленивых модулей
	 */
	static getLazyModuleStats(): {
		registered: number;
		loaded: number;
		loading: number;
		cached: string[];
		loading_modules: string[];
		modulesLoaded?: number;
		modulesPreloaded?: number;
		loadingErrors?: number;
		modulesRegistered?: number;
		memoryEfficiency?: number;
		cacheHits?: number;
	};
}
/**
 * Инкрементальный генератор ID для компонентов IO
 * Более быстрый и предсказуемый, чем случайная генерация
 */
/**
 * Генерирует уникальный ID для компонента
 * Формат: io-{sessionPrefix}-{counter}
 * Пример: io-kx2m-1, io-kx2m-2, etc.
 * @returns уникальный ID
 */
export declare function getID(): string;
/**
 * Получает ссылку на элемент по ID компонента с кэшированием
 * @param id - ID компонента
 * @returns HTML элемент или null
 */
export declare function getRef(id: string): HTMLElement | null;
/**
 * @deprecated Используйте `new IO('input', { model, onSubmit, validate, … })`.
 * Класс оставлен для обратной совместимости. Будет удалён в следующем major релизе.
 */
export declare class IOInput extends IO {
	constructor(tag?: string, props?: iIO$1, children?: _components$1, callback?: (value: string) => void);
}
export declare const VERSION = "1.0.8";

export {};
