import { StringEnum } from '@techmely/types';

declare const $: <K extends keyof HTMLElementTagNameMap>(tag: StringEnum<K>) => HTMLElementTagNameMap[K] | null;
declare const $$: <K extends keyof HTMLElementTagNameMap>(tag: StringEnum<K>) => NodeListOf<HTMLElementTagNameMap[K]> | null;
declare global {
    interface GlobalEventHandlers {
        on<K extends keyof GlobalEventHandlersEventMap>(type: StringEnum<K>, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
        of<K extends keyof GlobalEventHandlersEventMap>(type: StringEnum<K>, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
        $<K extends keyof HTMLElementTagNameMap>(selector: StringEnum<K>): HTMLElementTagNameMap[K] | null;
        $$<K extends keyof HTMLElementTagNameMap>(selector: StringEnum<K>): NodeListOf<HTMLElementTagNameMap[K]> | null;
    }
}

export { $, $$ };
