import { Emitter } from "evtmitter"; //#region src/useComponentEvents.d.ts type SendEvent> = (event: T$1, ...args: E[T$1] extends undefined ? [] : [payload: E[T$1]]) => void; /** * Creates an event system for component communication. Returns an emitter for binding * and a type safe send function for emitting events. * * @example * ```tsx * type Events = { userAction: { id: string }; error: string }; * const { bind, send } = useSendComponentEvents(); * * // In child component * useComponentEvents(bind, { * userAction: (payload) => console.log(payload.id), * error: (message) => console.error(message) * }); * * // Emit events * send('userAction', { id: '123' }); * send('error', 'Something went wrong'); * ``` */ declare function useSendComponentEvents>(): { bind: Emitter; send: SendEvent; }; /** * Subscribes to events from an emitter and calls appropriate callbacks when events are emitted. * Automatically handles cleanup when the component unmounts. * * @param emitter - The event emitter to listen to, typically from useSendComponentEvents * @param callback - Object mapping event names to their callback functions */ declare function useComponentEvents>(emitter: Emitter | undefined, callback: { [T in keyof E]: (payload: E[T]) => void }): void; //#endregion export { useComponentEvents, useSendComponentEvents };