/* eslint @typescript-eslint/no-unused-vars: off */
declare namespace svelteNative.JSX {

    // Every namespace eligible for use needs to implement the following two functions
    function mapElementTag(
        tag: string
    ): any;

    function createElement<Elements extends IntrinsicElements, Key extends keyof Elements>(
        element: Key, attrs: Elements[Key]
    ): any;


    /* svelte specific */
    interface ElementClass {
        $$prop_def: any;
    }

    interface ElementAttributesProperty {
        $$prop_def: any; // specify the property name to use
    }

    // Add empty IntrinsicAttributes to prevent fallback to the one in the JSX namespace
    // eslint-disable-next-line @typescript-eslint/no-empty-interface
    interface IntrinsicAttributes {
    }

    interface IntrinsicElements {
        [name: string]: { [name: string]: any };
    }
}