import { EventHandlers } from './EventHandlers'; export type Connector = (el: HTMLElement, ...args: any) => any; export type ConnectorsRecord = Record; export type ChainableConnector = T extends (element: infer E, ...args: infer P) => any ? (element: B, ...args: P) => B : never; export type ChainableConnectors = { [T in keyof H]: H[T] extends Connector ? ChainableConnector : never; }; export type CraftDOMEvent = T & { craft: { stopPropagation: () => void; blockedEvents: Record; }; }; export type CraftEventListener = (ev: CraftDOMEvent) => any; export type EventHandlerConnectors = ChainableConnectors, E>; export type ConnectorsUsage = { register: () => void; cleanup: () => void; connectors: EventHandlerConnectors; }; export declare enum EventHandlerUpdates { HandlerDisabled = 0, HandlerEnabled = 1 } export type ConnectorToRegister = { name: string; required: any; connector: Connector; options?: Record; }; export type RegisteredConnector = { id: string; required: any; enable: () => void; disable: () => void; remove: () => void; };