locked
How can I identify the properties of $.ajax? RRS feed

  • Question

  • User-1350042179 posted

    Hi

    I want to identify if $.ajax is async=true or cache=true in the code:

    function (options) {
            var ajaxSettings = {};
            ajaxSettings.url = setAjaxUrl(options.url);
            ajaxSettings.type = "GET";
            ajaxSettings.contentType = "application/json; charset=utf-8";
            if (!(options.isJsonResponse !== undefined &&
                options.isJsonResponse !== null &&
                options.isJsonResponse == false)) {
                ajaxSettings.dataType = "json";
            }
            ajaxSettings.success = options.success;
            ajaxSettings.error = setAjaxError;
            if (options.data) {
                ajaxSettings.data = options.data;
            }
            $.ajax(ajaxSettings);
        }

    The function $.ajax calls the following code (ajax(settings?: JQuery.AjaxSettings): JQuery.jqXHR; ) which is in index.d.ts

    // Type definitions for jquery 3.2
    // Project: https://jquery.com
    // Definitions by: Leonard Thieu <https://github.com/leonard-thieu>
    //                 Boris Yankov <https://github.com/borisyankov>
    //                 Christian Hoffmeister <https://github.com/choffmeister>
    //                 Steve Fenton <https://github.com/Steve-Fenton>
    //                 Diullei Gomes <https://github.com/Diullei>
    //                 Tass Iliopoulos <https://github.com/tasoili>
    //                 Jason Swearingen <https://github.com/jasons-novaleaf>
    //                 Sean Hill <https://github.com/seanski>
    //                 Guus Goossens <https://github.com/Guuz>
    //                 Kelly Summerlin <https://github.com/ksummerlin>
    //                 Basarat Ali Syed <https://github.com/basarat>
    //                 Nicholas Wolverson <https://github.com/nwolverson>
    //                 Derek Cicerone <https://github.com/derekcicerone>
    //                 Andrew Gaspar <https://github.com/AndrewGaspar>
    //                 Seikichi Kondo <https://github.com/seikichi>
    //                 Benjamin Jackman <https://github.com/benjaminjackman>
    //                 Poul Sorensen <https://github.com/s093294>
    //                 Josh Strobl <https://github.com/JoshStrobl>
    //                 John Reilly <https://github.com/johnnyreilly>
    //                 Dick van den Brink <https://github.com/DickvdBrink>
    //                 Thomas Schulz <https://github.com/King2500>
    // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
    // TypeScript Version: 2.3
    
    declare module 'jquery' {
        export = jQuery;
    }
    
    declare module 'jquery/dist/jquery.slim' {
        export = jQuery;
    }
    
    declare const jQuery: JQueryStatic;
    declare const $: JQueryStatic;
    
    // Used by JQuery.Event
    type _Event = Event;
    // Used by JQuery.Promise3 and JQuery.Promise
    type _Promise<T> = Promise<T>;
    
    interface JQueryStatic<TElement extends Node = HTMLElement> {
        /**
         * @see {@link http://api.jquery.com/jquery.ajax/#jQuery-ajax1}
         * @deprecated Use jQuery.ajaxSetup(options)
         */
        ajaxSettings: JQuery.AjaxSettings;
        /**
         * A factory function that returns a chainable utility object with methods to register multiple
         * callbacks into callback queues, invoke callback queues, and relay the success or failure state of
         * any synchronous or asynchronous function.
         *
         * @param beforeStart A function that is called just before the constructor returns.
         * @see {@link https://api.jquery.com/jQuery.Deferred/}
         * @since 1.5
         */
        Deferred: JQuery.DeferredStatic;
        Event: JQuery.EventStatic<TElement>;
        /**
         * Hook directly into jQuery to override how particular CSS properties are retrieved or set, normalize
         * CSS property naming, or create custom properties.
         *
         * @see {@link https://api.jquery.com/jQuery.cssHooks/}
         * @since 1.4.3
         */
        cssHooks: JQuery.PlainObject<JQuery.CSSHook<TElement>>;
        /**
         * An object containing all CSS properties that may be used without a unit. The .css() method uses this
         * object to see if it may append px to unitless values.
         *
         * @see {@link https://api.jquery.com/jQuery.cssNumber/}
         * @since 1.4.3
         */
        cssNumber: JQuery.PlainObject<boolean>;
        readonly fn: JQuery<TElement>;
        fx: {
            /**
             * The rate (in milliseconds) at which animations fire.
             *
             * @see {@link https://api.jquery.com/jQuery.fx.interval/}
             * @since 1.4.3
             * @deprecated 3.0
             */
            interval: number;
            /**
             * Globally disable all animations.
             *
             * @see {@link https://api.jquery.com/jQuery.fx.off/}
             * @since 1.3
             */
            off: boolean;
            step: JQuery.PlainObject<JQuery.AnimationHook<Node>>;
        };
        /**
         * A Promise-like object (or "thenable") that resolves when the document is ready.
         *
         * @see {@link https://api.jquery.com/jQuery.ready/}
         * @since 1.8
         */
        ready: JQuery.Thenable<JQueryStatic<TElement>>;
        /**
         * A collection of properties that represent the presence of different browser features or bugs.
         * Intended for jQuery's internal use; specific properties may be removed when they are no longer
         * needed internally to improve page startup performance. For your own project's feature-detection
         * needs, we strongly recommend the use of an external library such as Modernizr instead of dependency
         * on properties in jQuery.support.
         *
         * @see {@link https://api.jquery.com/jQuery.support/}
         * @since 1.3
         * @deprecated 1.9
         */
        support: JQuery.PlainObject;
        valHooks: JQuery.PlainObject<JQuery.ValHook<TElement>>;
        /**
         * Creates DOM elements on the fly from the provided string of raw HTML.
         *
         * @param html A string of HTML to create on the fly. Note that this parses HTML, not XML.
         *             A string defining a single, standalone, HTML element (e.g. <div/> or <div></div>).
         * @param ownerDocument_attributes A document in which the new elements will be created.
         *                                 An object of attributes, events, and methods to call on the newly-created element.
         * @see {@link https://api.jquery.com/jQuery/}
         * @since 1.0
         * @since 1.4
         */
        (html: JQuery.htmlString, ownerDocument_attributes: Document | JQuery.PlainObject): JQuery<TElement>;
        /**
         * Accepts a string containing a CSS selector which is then used to match a set of elements.
         *
         * @param selector A string containing a selector expression
         * @param context A DOM Element, Document, or jQuery to use as context
         * @see {@link https://api.jquery.com/jQuery/}
         * @since 1.0
         */
        (selector: JQuery.Selector, context: Element | Document | JQuery | undefined): JQuery<TElement>;
        // HACK: This is the factory function returned when importing jQuery without a DOM. Declaring it separately breaks using the type parameter on JQueryStatic.
        // HACK: The discriminator parameter handles the edge case of passing a Window object to JQueryStatic. It doesn't actually exist on the factory function.
        <FElement extends Node = HTMLElement>(window: Window, discriminator: boolean): JQueryStatic<FElement>;
        /**
         * Creates DOM elements on the fly from the provided string of raw HTML.
         *
         * Binds a function to be executed when the DOM has finished loading.
         *
         * @param selector_object_callback A string containing a selector expression
         *                                 A DOM element to wrap in a jQuery object.
         *                                 An array containing a set of DOM elements to wrap in a jQuery object.
         *                                 A plain object to wrap in a jQuery object.
         *                                 An existing jQuery object to clone.
         *                                 The function to execute when the DOM is ready.
         * @see {@link https://api.jquery.com/jQuery/}
         * @since 1.0
         * @since 1.4
         */
        (selector_object_callback?: JQuery.Selector | JQuery.htmlString | JQuery.TypeOrArray<Element> | JQuery |
            JQuery.PlainObject |
            ((this: Document, $: JQueryStatic<TElement>) => void)): JQuery<TElement>;
        /**
         * A multi-purpose callbacks list object that provides a powerful way to manage callback lists.
         *
         * @param flags An optional list of space-separated flags that change how the callback list behaves.
         * @see {@link https://api.jquery.com/jQuery.Callbacks/}
         * @since 1.7
         */
        Callbacks<T extends Function>(flags?: string): JQuery.Callbacks<T>;
        /**
         * Perform an asynchronous HTTP (Ajax) request.
         *
         * @param url A string containing the URL to which the request is sent.
         * @param settings A set of key/value pairs that configure the Ajax request. All settings are optional. A default can
         *                 be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) below for a complete list of all settings.
         * @see {@link https://api.jquery.com/jQuery.ajax/}
         * @since 1.5
         */
        ajax(url: string, settings?: JQuery.AjaxSettings): JQuery.jqXHR;
        /**
         * Perform an asynchronous HTTP (Ajax) request.
         *
         * @param settings A set of key/value pairs that configure the Ajax request. All settings are optional. A default can
         *                 be set for any option with $.ajaxSetup().
         * @see {@link https://api.jquery.com/jQuery.ajax/}
         * @since 1.0
         */
        ajax(settings?: JQuery.AjaxSettings): JQuery.jqXHR;
        /**
         * Handle custom Ajax options or modify existing options before each request is sent and before they
         * are processed by $.ajax().
         *
         * @param dataTypes An optional string containing one or more space-separated dataTypes
         * @param handler A handler to set default values for future Ajax requests.
         * @see {@link https://api.jquery.com/jQuery.ajaxPrefilter/}
         * @since 1.5
         */
        ajaxPrefilter(dataTypes: string,
                      handler: (options: JQuery.AjaxSettings, originalOptions: JQuery.AjaxSettings, jqXHR: JQuery.jqXHR) => string | void): void;
        /**
         * Handle custom Ajax options or modify existing options before each request is sent and before they
         * are processed by $.ajax().
         *
         * @param handler A handler to set default values for future Ajax requests.
         * @see {@link https://api.jquery.com/jQuery.ajaxPrefilter/}
         * @since 1.5
         */
        ajaxPrefilter(handler: (options: JQuery.AjaxSettings, originalOptions: JQuery.AjaxSettings, jqXHR: JQuery.jqXHR) => string | void): void;
        /**
         * Set default values for future Ajax requests. Its use is not recommended.
         *
         * @param options A set of key/value pairs that configure the default Ajax request. All options are optional.
         * @see {@link https://api.jquery.com/jQuery.ajaxSetup/}
         * @since 1.1
         */
        ajaxSetup(options: JQuery.AjaxSettings): JQuery.AjaxSettings;
        /**
         * Creates an object that handles the actual transmission of Ajax data.
         *
         * @param dataType A string identifying the data type to use
         * @param handler A handler to return the new transport object to use with the data type provided in the first argument.
         * @see {@link https://api.jquery.com/jQuery.ajaxTransport/}
         * @since 1.5
         */
        ajaxTransport(dataType: string,
                      handler: (options: JQuery.AjaxSettings, originalOptions: JQuery.AjaxSettings, jqXHR: JQuery.jqXHR) => JQuery.Transport | void): void;
        /**
         * Check to see if a DOM element is a descendant of another DOM element.
         *
         * @param container The DOM element that may contain the other element.
         * @param contained The DOM element that may be contained by (a descendant of) the other element.
         * @see {@link https://api.jquery.com/jQuery.contains/}
         * @since 1.4
         */
        contains(container: Element, contained: Element): boolean;
        css(elem: Element, unknown: any): any;
        /**
         * Returns value at named data store for the element, as set by jQuery.data(element, name, value), or
         * the full data store for the element.
         *
         * @param element The DOM element to query for the data.
         * @param key Name of the data stored.
         * @see {@link https://api.jquery.com/jQuery.data/}
         * @since 1.2.3
         */
        data(element: Element, key: string, undefined: undefined): any// tslint:disable-line:unified-signatures
        /**
         * Store arbitrary data associated with the specified element. Returns the value that was set.
         *
         * @param element The DOM element to associate with the data.
         * @param key A string naming the piece of data to set.
         * @param value The new data value; this can be any Javascript type except undefined.
         * @see {@link https://api.jquery.com/jQuery.data/}
         * @since 1.2.3
         */
        data<T>(element: Element, key: string, value: T): T;
        /**
         * Returns value at named data store for the element, as set by jQuery.data(element, name, value), or
         * the full data store for the element.
         *
         * @param element The DOM element to query for the data.
         * @param key Name of the data stored.
         * @see {@link https://api.jquery.com/jQuery.data/}
         * @since 1.2.3
         * @since 1.4
         */
        data(element: Element, key?: string): any;
        /**
         * Execute the next function on the queue for the matched element.
         *
         * @param element A DOM element from which to remove and execute a queued function.
         * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue.
         * @see {@link https://api.jquery.com/jQuery.dequeue/}
         * @since 1.3
         */
        dequeue(element: Element, queueName?: string): void;
        /**
         * A generic iterator function, which can be used to seamlessly iterate over both objects and arrays.
         * Arrays and array-like objects with a length property (such as a function's arguments object) are
         * iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties.
         *
         * @param array The array to iterate over.
         * @param callback The function that will be executed on every object.
         * @see {@link https://api.jquery.com/jQuery.each/}
         * @since 1.0
         */
        each<T>(array: ArrayLike<T>, callback: (this: T, indexInArray: number, value: T) => false | any): ArrayLike<T>;
        /**
         * A generic iterator function, which can be used to seamlessly iterate over both objects and arrays.
         * Arrays and array-like objects with a length property (such as a function's arguments object) are
         * iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties.
         *
         * @param obj The object to iterate over.
         * @param callback The function that will be executed on every object.
         * @see {@link https://api.jquery.com/jQuery.each/}
         * @since 1.0
         */
        each<T, K extends keyof T>(obj: T, callback: (this: T[K], propertyName: K, valueOfProperty: T[K]) => false | any): T;
        /**
         * Takes a string and throws an exception containing it.
         *
         * @param message The message to send out.
         * @see {@link https://api.jquery.com/jQuery.error/}
         * @since 1.4.1
         */
        error(message: string): any;
        /**
         * Escapes any character that has a special meaning in a CSS selector.
         *
         * @param selector A string containing a selector expression to escape.
         * @see {@link https://api.jquery.com/jQuery.escapeSelector/}
         * @since 3.0
         */
        escapeSelector(selector: JQuery.Selector): JQuery.Selector;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported.
         * @param target The object to extend. It will receive the new properties.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.1.4
         */
        extend<T, U, V, W, X, Y, Z>(deep: true, target: T, object1: U, object2: V, object3: W, object4: X, object5: Y, object6: Z): T & U & V & W & X & Y & Z;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported.
         * @param target The object to extend. It will receive the new properties.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.1.4
         */
        extend<T, U, V, W, X, Y>(deep: true, target: T, object1: U, object2: V, object3: W, object4: X, object5: Y): T & U & V & W & X & Y;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported.
         * @param target The object to extend. It will receive the new properties.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.1.4
         */
        extend<T, U, V, W, X>(deep: true, target: T, object1: U, object2: V, object3: W, object4: X): T & U & V & W & X;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported.
         * @param target The object to extend. It will receive the new properties.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.1.4
         */
        extend<T, U, V, W>(deep: true, target: T, object1: U, object2: V, object3: W): T & U & V & W;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported.
         * @param target The object to extend. It will receive the new properties.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.1.4
         */
        extend<T, U, V>(deep: true, target: T, object1: U, object2: V): T & U & V;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported.
         * @param target The object to extend. It will receive the new properties.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.1.4
         */
        extend<T, U>(deep: true, target: T, object1: U): T & U;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported.
         * @param target The object to extend. It will receive the new properties.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.1.4
         */
        extend(deep: true, target: any, object1: any...objects: any[]): any;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param target An object that will receive the new properties if additional objects are passed in or that will
         *               extend the jQuery namespace if it is the sole argument.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.0
         */
        extend<T, U, V, W, X, Y, Z>(target: T, object1: U, object2: V, object3: W, object4: X, object5: Y, object6: Z): T & U & V & W & X & Y & Z;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param target An object that will receive the new properties if additional objects are passed in or that will
         *               extend the jQuery namespace if it is the sole argument.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.0
         */
        extend<T, U, V, W, X, Y>(target: T, object1: U, object2: V, object3: W, object4: X, object5: Y): T & U & V & W & X & Y;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param target An object that will receive the new properties if additional objects are passed in or that will
         *               extend the jQuery namespace if it is the sole argument.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.0
         */
        extend<T, U, V, W, X>(target: T, object1: U, object2: V, object3: W, object4: X): T & U & V & W & X;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param target An object that will receive the new properties if additional objects are passed in or that will
         *               extend the jQuery namespace if it is the sole argument.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.0
         */
        extend<T, U, V, W>(target: T, object1: U, object2: V, object3: W): T & U & V & W;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param target An object that will receive the new properties if additional objects are passed in or that will
         *               extend the jQuery namespace if it is the sole argument.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.0
         */
        extend<T, U, V>(target: T, object1: U, object2: V): T & U & V;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param target An object that will receive the new properties if additional objects are passed in or that will
         *               extend the jQuery namespace if it is the sole argument.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.0
         */
        extend<T, U>(target: T, object1: U): T & U;
        /**
         * Merge the contents of two or more objects together into the first object.
         *
         * @param target An object that will receive the new properties if additional objects are passed in or that will
         *               extend the jQuery namespace if it is the sole argument.
         * @see {@link https://api.jquery.com/jQuery.extend/}
         * @since 1.0
         */
        extend(target: any, object1: any...objects: any[]): any;
        /**
         * Load data from the server using a HTTP GET request.
         *
         * @param url A string containing the URL to which the request is sent.
         * @param data A plain object or string that is sent to the server with the request.
         * @param success A callback function that is executed if the request succeeds. Required if dataType is provided, but
         *                you can use null or jQuery.noop as a placeholder.
         * @param dataType The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).
         * @see {@link https://api.jquery.com/jQuery.get/}
         * @since 1.0
         */
        get(url: string,
            data: JQuery.PlainObject | string,
            success: JQuery.jqXHR.DoneCallback | null,
            dataType?: string): JQuery.jqXHR;
        /**
         * Load data from the server using a HTTP GET request.
         *
         * @param url A string containing the URL to which the request is sent.
         * @param success A callback function that is executed if the request succeeds. Required if dataType is provided, but
         *                you can use null or jQuery.noop as a placeholder.
         * @param dataType The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).
         * @see {@link https://api.jquery.com/jQuery.get/}
         * @since 1.0
         */
        get(url: string,
            success: JQuery.jqXHR.DoneCallback | null,
            dataType: string): JQuery.jqXHR;
        /**
         * Load data from the server using a HTTP GET request.
         *
         * @param url A string containing the URL to which the request is sent.
         * @param success_data A callback function that is executed if the request succeeds. Required if dataType is provided, but
         *                     you can use null or jQuery.noop as a placeholder.
         *                     A plain object or string that is sent to the server with the request.
         * @see {@link https://api.jquery.com/jQuery.get/}
         * @since 1.0
         */
        get(url: string,
            success_data: JQuery.jqXHR.DoneCallback | JQuery.PlainObject | string): JQuery.jqXHR;
        /**
         * Load data from the server using a HTTP GET request.
         *
         * @param url_settings A string containing the URL to which the request is sent.
         *                     A set of key/value pairs that configure the Ajax request. All properties except for url are
         *                     optional. A default can be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) for a
         *                     complete list of all settings. The type option will automatically be set to GET.
         * @see {@link https://api.jquery.com/jQuery.get/}
         * @since 1.0
         * @since 1.12
         * @since 2.2
         */
        get(url_settings?: string | JQuery.UrlAjaxSettings): JQuery.jqXHR;
        /**
         * Load JSON-encoded data from the server using a GET HTTP request.
         *
         * @param url A string containing the URL to which the request is sent.
         * @param data A plain object or string that is sent to the server with the request.
         * @param success A callback function that is executed if the request succeeds.
         * @see {@link https://api.jquery.com/jQuery.getJSON/}
         * @since 1.0
         */
        getJSON(url: string,
                data: JQuery.PlainObject | string,
                success: JQuery.jqXHR.DoneCallback): JQuery.jqXHR;
        /**
         * Load JSON-encoded data from the server using a GET HTTP request.
         *
         * @param url A string containing the URL to which the request is sent.
         * @param success_data A callback function that is executed if the request succeeds.
         *                     A plain object or string that is sent to the server with the request.
         * @see {@link https://api.jquery.com/jQuery.getJSON/}
         * @since 1.0
         */
        getJSON(url: string,
                success_data?: JQuery.jqXHR.DoneCallback | JQuery.PlainObject | string): JQuery.jqXHR;
        /**
         * Load a JavaScript file from the server using a GET HTTP request, then execute it.
         *
         * @param url A string containing the URL to which the request is sent.
         * @param success A callback function that is executed if the request succeeds.
         * @see {@link https://api.jquery.com/jQuery.getScript/}
         * @since 1.0
         */
        getScript(url: string,
                  success?: JQuery.jqXHR.DoneCallback<string | undefined>): JQuery.jqXHR<string | undefined>;
        /**
         * Execute some JavaScript code globally.
         *
         * @param code The JavaScript code to execute.
         * @see {@link https://api.jquery.com/jQuery.globalEval/}
         * @since 1.0.4
         */
        globalEval(code: string): void;
        /**
         * Finds the elements of an array which satisfy a filter function. The original array is not affected.
         *
         * @param array The array-like object to search through.
         * @param fn The function to process each item against. The first argument to the function is the item, and the
         *           second argument is the index. The function should return a Boolean value. this will be the global window object.
         * @param invert If "invert" is false, or not provided, then the function returns an array consisting of all elements
         *               for which "callback" returns true. If "invert" is true, then the function returns an array
         *               consisting of all elements for which "callback" returns false.
         * @see {@link https://api.jquery.com/jQuery.grep/}
         * @since 1.0
         */
        grep<T>(array: ArrayLike<T>,
                fn: (elementOfArray: T, indexInArray: number=> boolean,
                invert?: boolean): T[];
        /**
         * Determine whether an element has any jQuery data associated with it.
         *
         * @param element A DOM element to be checked for data.
         * @see {@link https://api.jquery.com/jQuery.hasData/}
         * @since 1.5
         */
        hasData(element: Element): boolean;
        /**
         * Holds or releases the execution of jQuery's ready event.
         *
         * @param hold Indicates whether the ready hold is being requested or released
         * @see {@link https://api.jquery.com/jQuery.holdReady/}
         * @since 1.6
         * @deprecated 3.2
         */
        holdReady(hold: boolean): void;
        /**
         * Modify and filter HTML strings passed through jQuery manipulation methods.
         *
         * @param html The HTML string on which to operate.
         * @see {@link https://api.jquery.com/jQuery.htmlPrefilter/}
         * @since 1.12/2.2
         */
        htmlPrefilter(html: JQuery.htmlString): JQuery.htmlString;
        /**
         * Search for a specified value within an array and return its index (or -1 if not found).
         *
         * @param value The value to search for.
         * @param array An array through which to search.
         * @param fromIndex The index of the array at which to begin the search. The default is 0, which will search the whole array.
         * @see {@link https://api.jquery.com/jQuery.inArray/}
         * @since 1.2
         */
        inArray<T>(value: T, array: T[], fromIndex?: number): number;
        /**
         * Determine whether the argument is an array.
         *
         * @param obj Object to test whether or not it is an array.
         * @see {@link https://api.jquery.com/jQuery.isArray/}
         * @since 1.3
         * @deprecated 3.2
         */
        isArray(obj: any): obj is any[];
        /**
         * Check to see if an object is empty (contains no enumerable properties).
         *
         * @param obj The object that will be checked to see if it's empty.
         * @see {@link https://api.jquery.com/jQuery.isEmptyObject/}
         * @since 1.4
         */
        isEmptyObject(obj: any): boolean;
        /**
         * Determine if the argument passed is a JavaScript function object.
         *
         * @param obj Object to test whether or not it is a function.
         * @see {@link https://api.jquery.com/jQuery.isFunction/}
         * @since 1.2
         */
        isFunction(obj: any): obj is Function;
        /**
         * Determines whether its argument represents a JavaScript number.
         *
         * @param value The value to be tested.
         * @see {@link https://api.jquery.com/jQuery.isNumeric/}
         * @since 1.7
         */
        isNumeric(value: any): value is number;
        /**
         * Check to see if an object is a plain object (created using "{}" or "new Object").
         *
         * @param obj The object that will be checked to see if it's a plain object.
         * @see {@link https://api.jquery.com/jQuery.isPlainObject/}
         * @since 1.4
         */
        isPlainObject(obj: any): obj is JQuery.PlainObject;
        /**
         * Determine whether the argument is a window.
         *
         * @param obj Object to test whether or not it is a window.
         * @see {@link https://api.jquery.com/jQuery.isWindow/}
         * @since 1.4.3
         */
        isWindow(obj: any): obj is Window;
        /**
         * Check to see if a DOM node is within an XML document (or is an XML document).
         *
         * @param node The DOM node that will be checked to see if it's in an XML document.
         * @see {@link https://api.jquery.com/jQuery.isXMLDoc/}
         * @since 1.1.4
         */
        isXMLDoc(node: Node): boolean;
        /**
         * Convert an array-like object into a true JavaScript array.
         *
         * @param obj Any object to turn into a native Array.
         * @see {@link https://api.jquery.com/jQuery.makeArray/}
         * @since 1.2
         */
        makeArray<T>(obj: ArrayLike<T>): T[];
        /**
         * Translate all items in an array or object to new array of items.
         *
         * @param array The Array to translate.
         * @param callback The function to process each item against. The first argument to the function is the array item, the
         *                 second argument is the index in array The function can return any value. A returned array will be
         *                 flattened into the resulting array. Within the function, this refers to the global (window) object.
         * @see {@link https://api.jquery.com/jQuery.map/}
         * @since 1.0
         */
        map<T, R>(array: T[], callback: (elementOfArray: T, indexInArray: number=> R): R[];
        /**
         * Translate all items in an array or object to new array of items.
         *
         * @param obj The Object to translate.
         * @param callback The function to process each item against. The first argument to the function is the value; the
         *                 second argument is the key of the object property. The function can return any value to add to the
         *                 array. A returned array will be flattened into the resulting array. Within the function, this refers
         *                 to the global (window) object.
         * @see {@link https://api.jquery.com/jQuery.map/}
         * @since 1.6
         */
        map<T, K extends keyof T, R>(obj: T, callback: (propertyOfObject: T[K], key: K) => R): R[];
        /**
         * Merge the contents of two arrays together into the first array.
         *
         * @param first The first array-like object to merge, the elements of second added.
         * @param second The second array-like object to merge into the first, unaltered.
         * @see {@link https://api.jquery.com/jQuery.merge/}
         * @since 1.0
         */
        merge<T, U>(first: ArrayLike<T>, second: ArrayLike<U>): Array<T | U>;
        /**
         * Relinquish jQuery's control of the $ variable.
         *
         * @param removeAll A Boolean indicating whether to remove all jQuery variables from the global scope (including jQuery itself).
         * @see {@link https://api.jquery.com/jQuery.noConflict/}
         * @since 1.0
         */
        noConflict(removeAll?: boolean): this;
        /**
         * An empty function.
         *
         * @see {@link https://api.jquery.com/jQuery.noop/}
         * @since 1.4
         */
        noop(): undefined;
        /**
         * Return a number representing the current time.
         *
         * @see {@link https://api.jquery.com/jQuery.now/}
         * @since 1.4.3
         */
        now(): number;
        /**
         * Create a serialized representation of an array, a plain object, or a jQuery object suitable for use
         * in a URL query string or Ajax request. In case a jQuery object is passed, it should contain input
         * elements with name/value properties.
         *
         * @param obj An array, a plain object, or a jQuery object to serialize.
         * @param traditional A Boolean indicating whether to perform a traditional "shallow" serialization.
         * @see {@link https://api.jquery.com/jQuery.param/}
         * @since 1.2
         * @since 1.4
         */
        param(obj: any[] | JQuery.PlainObject | JQuery, traditional?: boolean): string;
        /**
         * Parses a string into an array of DOM nodes.
         *
         * @param data HTML string to be parsed
         * @param context Document element to serve as the context in which the HTML fragment will be created
         * @param keepScripts A Boolean indicating whether to include scripts passed in the HTML string
         * @see {@link https://api.jquery.com/jQuery.parseHTML/}
         * @since 1.8
         */
        parseHTML(data: string, context: Document | null | undefined, keepScripts: boolean): JQuery.Node[];
        /**
         * Parses a string into an array of DOM nodes.
         *
         * @param data HTML string to be parsed
         * @param context_keepScripts Document element to serve as the context in which the HTML fragment will be created
         *                            A Boolean indicating whether to include scripts passed in the HTML string
         * @see {@link https://api.jquery.com/jQuery.parseHTML/}
         * @since 1.8
         */
        parseHTML(data: string, context_keepScripts?: Document | null | boolean): JQuery.Node[];
        /**
         * Takes a well-formed JSON string and returns the resulting JavaScript value.
         *
         * @param json The JSON string to parse.
         * @see {@link https://api.jquery.com/jQuery.parseJSON/}
         * @since 1.4.1
         * @deprecated 3.0
         */
        parseJSON(json: string): any;
        /**
         * Parses a string into an XML document.
         *
         * @param data a well-formed XML string to be parsed
         * @see {@link https://api.jquery.com/jQuery.parseXML/}
         * @since 1.5
         */
        parseXML(data: string): XMLDocument;
        /**
         * Load data from the server using a HTTP POST request.
         *
         * @param url A string containing the URL to which the request is sent.
         * @param data A plain object or string that is sent to the server with the request.
         * @param success A callback function that is executed if the request succeeds. Required if dataType is provided, but
         *                can be null in that case.
         * @param dataType The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).
         * @see {@link https://api.jquery.com/jQuery.post/}
         * @since 1.0
         */
        post(url: string,
             data: JQuery.PlainObject | string,
             success: JQuery.jqXHR.DoneCallback | null,
             dataType?: string): JQuery.jqXHR;
        /**
         * Load data from the server using a HTTP POST request.
         *
         * @param url A string containing the URL to which the request is sent.
         * @param success A callback function that is executed if the request succeeds. Required if dataType is provided, but
         *                can be null in that case.
         * @param dataType The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).
         * @see {@link https://api.jquery.com/jQuery.post/}
         * @since 1.0
         */
        post(url: string,
             success: JQuery.jqXHR.DoneCallback | null,
             dataType: string): JQuery.jqXHR;
        /**
         * Load data from the server using a HTTP POST request.
         *
         * @param url A string containing the URL to which the request is sent.
         * @param success_data A callback function that is executed if the request succeeds. Required if dataType is provided, but
         *                     can be null in that case.
         *                     A plain object or string that is sent to the server with the request.
         * @see {@link https://api.jquery.com/jQuery.post/}
         * @since 1.0
         */
        post(url: string,
             success_data: JQuery.jqXHR.DoneCallback | JQuery.PlainObject | string): JQuery.jqXHR;
        /**
         * Load data from the server using a HTTP POST request.
         *
         * @param url_settings A string containing the URL to which the request is sent.
         *                     A set of key/value pairs that configure the Ajax request. All properties except for url are
         *                     optional. A default can be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) for a
         *                     complete list of all settings. Type will automatically be set to POST.
         * @see {@link https://api.jquery.com/jQuery.post/}
         * @since 1.0
         * @since 1.12
         * @since 2.2
         */
        post(url_settings?: string | JQuery.UrlAjaxSettings): JQuery.jqXHR;
    
        // region proxy
    
        // region (fn, null | undefined)
    
        // region 0 to 7 arguments
    
        // region 0 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F, G>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G) => TReturn,
                                 context: null | undefined,
                                 a: A, b: B, c: C, d: D, e: E, f: F, g: G): () => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F>(fn: (a: A, b: B, c: C, d: D, e: E, f: F) => TReturn,
                              context: null | undefined,
                              a: A, b: B, c: C, d: D, e: E, f: F): () => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E>(fn: (a: A, b: B, c: C, d: D, e: E) => TReturn,
                           context: null | undefined,
                           a: A, b: B, c: C, d: D, e: E): () => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D>(fn: (a: A, b: B, c: C, d: D) => TReturn,
                        context: null | undefined,
                        a: A, b: B, c: C, d: D): () => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C>(fn: (a: A, b: B, c: C) => TReturn,
                     context: null | undefined,
                     a: A, b: B, c: C): () => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B>(fn: (a: A, b: B) => TReturn,
                  context: null | undefined,
                  a: A, b: B): () => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4`
         * @since 1.6
         */
        proxy<TReturn,
            A>(fn: (a: A) => TReturn,
               context: null | undefined,
               a: A): () => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn>(fn: () => TReturn,
                       context: null | undefined): () => TReturn;
    
        // endregion
    
        // region 1 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F, G,
            T>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                    t: T) => TReturn,
               context: null | undefined,
               a: A, b: B, c: C, d: D, e: E, f: F, g: G): (t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F,
            T>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                    t: T) => TReturn,
               context: null | undefined,
               a: A, b: B, c: C, d: D, e: E, f: F): (t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E,
            T>(fn: (a: A, b: B, c: C, d: D, e: E,
                    t: T) => TReturn,
               context: null | undefined,
               a: A, b: B, c: C, d: D, e: E): (t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D,
            T>(fn: (a: A, b: B, c: C, d: D,
                    t: T) => TReturn,
               context: null | undefined,
               a: A, b: B, c: C, d: D): (t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C,
            T>(fn: (a: A, b: B, c: C,
                    t: T) => TReturn,
               context: null | undefined,
               a: A, b: B, c: C): (t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B,
            T>(fn: (a: A, b: B,
                    t: T) => TReturn,
               context: null | undefined,
               a: A, b: B): (t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A,
            T>(fn: (a: A,
                    t: T) => TReturn,
               context: null | undefined,
               a: A): (t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            T>(fn: (t: T) => TReturn,
               context: null | undefined): (t: T) => TReturn;
    
        // endregion
    
        // region 2 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F, G,
            T, U>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                       t: T, u: U) => TReturn,
                  context: null | undefined,
                  a: A, b: B, c: C, d: D, e: E, f: F, g: G): (t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F,
            T, U>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                       t: T, u: U) => TReturn,
                  context: null | undefined,
                  a: A, b: B, c: C, d: D, e: E, f: F): (t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E,
            T, U>(fn: (a: A, b: B, c: C, d: D, e: E,
                       t: T, u: U) => TReturn,
                  context: null | undefined,
                  a: A, b: B, c: C, d: D, e: E): (t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D,
            T, U>(fn: (a: A, b: B, c: C, d: D,
                       t: T, u: U) => TReturn,
                  context: null | undefined,
                  a: A, b: B, c: C, d: D): (t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C,
            T, U>(fn: (a: A, b: B, c: C,
                       t: T, u: U) => TReturn,
                  context: null | undefined,
                  a: A, b: B, c: C): (t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B,
            T, U>(fn: (a: A, b: B,
                       t: T, u: U) => TReturn,
                  context: null | undefined,
                  a: A, b: B): (t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A,
            T, U>(fn: (a: A,
                       t: T, u: U) => TReturn,
                  context: null | undefined,
                  a: A): (t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            T, U>(fn: (t: T, u: U) => TReturn,
                  context: null | undefined): (t: T, u: U) => TReturn;
    
        // endregion
    
        // region 3 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F, G,
            T, U, V>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                          t: T, u: U, v: V) => TReturn,
                     context: null | undefined,
                     a: A, b: B, c: C, d: D, e: E, f: F, g: G): (t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F,
            T, U, V>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                          t: T, u: U, v: V) => TReturn,
                     context: null | undefined,
                     a: A, b: B, c: C, d: D, e: E, f: F): (t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E,
            T, U, V>(fn: (a: A, b: B, c: C, d: D, e: E,
                          t: T, u: U, v: V) => TReturn,
                     context: null | undefined,
                     a: A, b: B, c: C, d: D, e: E): (t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D,
            T, U, V>(fn: (a: A, b: B, c: C, d: D,
                          t: T, u: U, v: V) => TReturn,
                     context: null | undefined,
                     a: A, b: B, c: C, d: D): (t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C,
            T, U, V>(fn: (a: A, b: B, c: C,
                          t: T, u: U, v: V) => TReturn,
                     context: null | undefined,
                     a: A, b: B, c: C): (t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B,
            T, U, V>(fn: (a: A, b: B,
                          t: T, u: U, v: V) => TReturn,
                     context: null | undefined,
                     a: A, b: B): (t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A,
            T, U, V>(fn: (a: A,
                          t: T, u: U, v: V) => TReturn,
                     context: null | undefined,
                     a: A): (t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            T, U, V>(fn: (t: T, u: U, v: V) => TReturn,
                     context: null | undefined): (t: T, u: U, v: V) => TReturn;
    
        // endregion
    
        // region 4 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F, G,
            T, U, V, W>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: null | undefined,
                        a: A, b: B, c: C, d: D, e: E, f: F, g: G): (t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F,
            T, U, V, W>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: null | undefined,
                        a: A, b: B, c: C, d: D, e: E, f: F): (t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E,
            T, U, V, W>(fn: (a: A, b: B, c: C, d: D, e: E,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: null | undefined,
                        a: A, b: B, c: C, d: D, e: E): (t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D,
            T, U, V, W>(fn: (a: A, b: B, c: C, d: D,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: null | undefined,
                        a: A, b: B, c: C, d: D): (t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C,
            T, U, V, W>(fn: (a: A, b: B, c: C,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: null | undefined,
                        a: A, b: B, c: C): (t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B,
            T, U, V, W>(fn: (a: A, b: B,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: null | undefined,
                        a: A, b: B): (t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A,
            T, U, V, W>(fn: (a: A,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: null | undefined,
                        a: A): (t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            T, U, V, W>(fn: (t: T, u: U, v: V, w: W) => TReturn,
                        context: null | undefined): (t: T, u: U, v: V, w: W) => TReturn;
    
        // endregion
    
        // region 5 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F, G,
            T, U, V, W, X>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: null | undefined,
                           a: A, b: B, c: C, d: D, e: E, f: F, g: G): (t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F,
            T, U, V, W, X>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: null | undefined,
                           a: A, b: B, c: C, d: D, e: E, f: F): (t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E,
            T, U, V, W, X>(fn: (a: A, b: B, c: C, d: D, e: E,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: null | undefined,
                           a: A, b: B, c: C, d: D, e: E): (t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D,
            T, U, V, W, X>(fn: (a: A, b: B, c: C, d: D,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: null | undefined,
                           a: A, b: B, c: C, d: D): (t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C,
            T, U, V, W, X>(fn: (a: A, b: B, c: C,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: null | undefined,
                           a: A, b: B, c: C): (t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B,
            T, U, V, W, X>(fn: (a: A, b: B,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: null | undefined,
                           a: A, b: B): (t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A,
            T, U, V, W, X>(fn: (a: A,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: null | undefined,
                           a: A): (t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            T, U, V, W, X>(fn: (t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: null | undefined): (t: T, u: U, v: V, w: W, x: X) => TReturn;
    
        // endregion
    
        // region 6 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F, G,
            T, U, V, W, X, Y>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: null | undefined,
                              a: A, b: B, c: C, d: D, e: E, f: F, g: G): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F,
            T, U, V, W, X, Y>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: null | undefined,
                              a: A, b: B, c: C, d: D, e: E, f: F): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E,
            T, U, V, W, X, Y>(fn: (a: A, b: B, c: C, d: D, e: E,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: null | undefined,
                              a: A, b: B, c: C, d: D, e: E): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D,
            T, U, V, W, X, Y>(fn: (a: A, b: B, c: C, d: D,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: null | undefined,
                              a: A, b: B, c: C, d: D): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C,
            T, U, V, W, X, Y>(fn: (a: A, b: B, c: C,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: null | undefined,
                              a: A, b: B, c: C): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B,
            T, U, V, W, X, Y>(fn: (a: A, b: B,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: null | undefined,
                              a: A, b: B): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A,
            T, U, V, W, X, Y>(fn: (a: A,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: null | undefined,
                              a: A): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            T, U, V, W, X, Y>(fn: (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: null | undefined): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
    
        // endregion
    
        // region 7+ parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F, G,
            T, U, V, W, X, Y, Z>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: null | undefined,
                                 a: A, b: B, c: C, d: D, e: E, f: F, g: G): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E, F,
            T, U, V, W, X, Y, Z>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: null | undefined,
                                 a: A, b: B, c: C, d: D, e: E, f: F): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D, E,
            T, U, V, W, X, Y, Z>(fn: (a: A, b: B, c: C, d: D, e: E,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: null | undefined,
                                 a: A, b: B, c: C, d: D, e: E): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C, D,
            T, U, V, W, X, Y, Z>(fn: (a: A, b: B, c: C, d: D,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: null | undefined,
                                 a: A, b: B, c: C, d: D): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B, C,
            T, U, V, W, X, Y, Z>(fn: (a: A, b: B, c: C,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: null | undefined,
                                 a: A, b: B, c: C): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A, B,
            T, U, V, W, X, Y, Z>(fn: (a: A, b: B,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: null | undefined,
                                 a: A, b: B): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            A,
            T, U, V, W, X, Y, Z>(fn: (a: A,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: null | undefined,
                                 a: A): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn,
            T, U, V, W, X, Y, Z>(fn: (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: null | undefined): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
    
        // endregion
    
        // endregion
    
        // region 8+ arguments
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @param additionalArguments Any number of arguments to be passed to the function referenced in the function argument.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.9
         */
        proxy<TReturn>(fn: (...args: any[]) => TReturn,
                       context: null | undefined,
                       ...additionalArguments: any[]): (...args: any[]) => TReturn;
    
        // endregion
    
        // endregion
    
        // region (fn, context)
    
        // region 0 to 7 arguments
    
        // region 0 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F, G>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G) => TReturn,
                                 context: TContext,
                                 a: A, b: B, c: C, d: D, e: E, f: F, g: G): (this: TContext) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F>(fn: (a: A, b: B, c: C, d: D, e: E, f: F) => TReturn,
                              context: TContext,
                              a: A, b: B, c: C, d: D, e: E, f: F): (this: TContext) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E>(fn: (a: A, b: B, c: C, d: D, e: E) => TReturn,
                           context: TContext,
                           a: A, b: B, c: C, d: D, e: E): (this: TContext) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D>(fn: (a: A, b: B, c: C, d: D) => TReturn,
                        context: TContext,
                        a: A, b: B, c: C, d: D): (this: TContext) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C>(fn: (a: A, b: B, c: C) => TReturn,
                     context: TContext,
                     a: A, b: B, c: C): (this: TContext) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B>(fn: (a: A, b: B) => TReturn,
                  context: TContext,
                  a: A, b: B): (this: TContext) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4`
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A>(fn: (a: A) => TReturn,
               context: TContext,
               a: A): (this: TContext) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn>(fn: () => TReturn,
                     context: TContext): (this: TContext) => TReturn;
    
        // endregion
    
        // region 1 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F, G,
            T>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                    t: T) => TReturn,
               context: TContext,
               a: A, b: B, c: C, d: D, e: E, f: F, g: G): (this: TContext, t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F,
            T>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                    t: T) => TReturn,
               context: TContext,
               a: A, b: B, c: C, d: D, e: E, f: F): (this: TContext, t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E,
            T>(fn: (a: A, b: B, c: C, d: D, e: E,
                    t: T) => TReturn,
               context: TContext,
               a: A, b: B, c: C, d: D, e: E): (this: TContext, t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D,
            T>(fn: (a: A, b: B, c: C, d: D,
                    t: T) => TReturn,
               context: TContext,
               a: A, b: B, c: C, d: D): (this: TContext, t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C,
            T>(fn: (a: A, b: B, c: C,
                    t: T) => TReturn,
               context: TContext,
               a: A, b: B, c: C): (this: TContext, t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B,
            T>(fn: (a: A, b: B,
                    t: T) => TReturn,
               context: TContext,
               a: A, b: B): (this: TContext, t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A,
            T>(fn: (a: A,
                    t: T) => TReturn,
               context: TContext,
               a: A): (this: TContext, t: T) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            T>(fn: (t: T) => TReturn,
               context: TContext): (this: TContext, t: T) => TReturn;
    
        // endregion
    
        // region 2 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F, G,
            T, U>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                       t: T, u: U) => TReturn,
                  context: TContext,
                  a: A, b: B, c: C, d: D, e: E, f: F, g: G): (this: TContext, t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F,
            T, U>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                       t: T, u: U) => TReturn,
                  context: TContext,
                  a: A, b: B, c: C, d: D, e: E, f: F): (this: TContext, t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E,
            T, U>(fn: (a: A, b: B, c: C, d: D, e: E,
                       t: T, u: U) => TReturn,
                  context: TContext,
                  a: A, b: B, c: C, d: D, e: E): (this: TContext, t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D,
            T, U>(fn: (a: A, b: B, c: C, d: D,
                       t: T, u: U) => TReturn,
                  context: TContext,
                  a: A, b: B, c: C, d: D): (this: TContext, t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C,
            T, U>(fn: (a: A, b: B, c: C,
                       t: T, u: U) => TReturn,
                  context: TContext,
                  a: A, b: B, c: C): (this: TContext, t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B,
            T, U>(fn: (a: A, b: B,
                       t: T, u: U) => TReturn,
                  context: TContext,
                  a: A, b: B): (this: TContext, t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A,
            T, U>(fn: (a: A,
                       t: T, u: U) => TReturn,
                  context: TContext,
                  a: A): (this: TContext, t: T, u: U) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            T, U>(fn: (t: T, u: U) => TReturn,
                  context: TContext): (this: TContext, t: T, u: U) => TReturn;
    
        // endregion
    
        // region 3 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F, G,
            T, U, V>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                          t: T, u: U, v: V) => TReturn,
                     context: TContext,
                     a: A, b: B, c: C, d: D, e: E, f: F, g: G): (this: TContext, t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F,
            T, U, V>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                          t: T, u: U, v: V) => TReturn,
                     context: TContext,
                     a: A, b: B, c: C, d: D, e: E, f: F): (this: TContext, t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E,
            T, U, V>(fn: (a: A, b: B, c: C, d: D, e: E,
                          t: T, u: U, v: V) => TReturn,
                     context: TContext,
                     a: A, b: B, c: C, d: D, e: E): (this: TContext, t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D,
            T, U, V>(fn: (a: A, b: B, c: C, d: D,
                          t: T, u: U, v: V) => TReturn,
                     context: TContext,
                     a: A, b: B, c: C, d: D): (this: TContext, t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C,
            T, U, V>(fn: (a: A, b: B, c: C,
                          t: T, u: U, v: V) => TReturn,
                     context: TContext,
                     a: A, b: B, c: C): (this: TContext, t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B,
            T, U, V>(fn: (a: A, b: B,
                          t: T, u: U, v: V) => TReturn,
                     context: TContext,
                     a: A, b: B): (this: TContext, t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A,
            T, U, V>(fn: (a: A,
                          t: T, u: U, v: V) => TReturn,
                     context: TContext,
                     a: A): (this: TContext, t: T, u: U, v: V) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            T, U, V>(fn: (t: T, u: U, v: V) => TReturn,
                     context: TContext): (this: TContext, t: T, u: U, v: V) => TReturn;
    
        // endregion
    
        // region 4 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F, G,
            T, U, V, W>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: TContext,
                        a: A, b: B, c: C, d: D, e: E, f: F, g: G): (this: TContext, t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F,
            T, U, V, W>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: TContext,
                        a: A, b: B, c: C, d: D, e: E, f: F): (this: TContext, t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E,
            T, U, V, W>(fn: (a: A, b: B, c: C, d: D, e: E,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: TContext,
                        a: A, b: B, c: C, d: D, e: E): (this: TContext, t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D,
            T, U, V, W>(fn: (a: A, b: B, c: C, d: D,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: TContext,
                        a: A, b: B, c: C, d: D): (this: TContext, t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C,
            T, U, V, W>(fn: (a: A, b: B, c: C,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: TContext,
                        a: A, b: B, c: C): (this: TContext, t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B,
            T, U, V, W>(fn: (a: A, b: B,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: TContext,
                        a: A, b: B): (this: TContext, t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A,
            T, U, V, W>(fn: (a: A,
                             t: T, u: U, v: V, w: W) => TReturn,
                        context: TContext,
                        a: A): (this: TContext, t: T, u: U, v: V, w: W) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            T, U, V, W>(fn: (t: T, u: U, v: V, w: W) => TReturn,
                        context: TContext): (this: TContext, t: T, u: U, v: V, w: W) => TReturn;
    
        // endregion
    
        // region 5 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F, G,
            T, U, V, W, X>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: TContext,
                           a: A, b: B, c: C, d: D, e: E, f: F, g: G): (this: TContext, t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F,
            T, U, V, W, X>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: TContext,
                           a: A, b: B, c: C, d: D, e: E, f: F): (this: TContext, t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E,
            T, U, V, W, X>(fn: (a: A, b: B, c: C, d: D, e: E,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: TContext,
                           a: A, b: B, c: C, d: D, e: E): (this: TContext, t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D,
            T, U, V, W, X>(fn: (a: A, b: B, c: C, d: D,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: TContext,
                           a: A, b: B, c: C, d: D): (this: TContext, t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C,
            T, U, V, W, X>(fn: (a: A, b: B, c: C,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: TContext,
                           a: A, b: B, c: C): (this: TContext, t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B,
            T, U, V, W, X>(fn: (a: A, b: B,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: TContext,
                           a: A, b: B): (this: TContext, t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A,
            T, U, V, W, X>(fn: (a: A,
                                t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: TContext,
                           a: A): (this: TContext, t: T, u: U, v: V, w: W, x: X) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            T, U, V, W, X>(fn: (t: T, u: U, v: V, w: W, x: X) => TReturn,
                           context: TContext): (this: TContext, t: T, u: U, v: V, w: W, x: X) => TReturn;
    
        // endregion
    
        // region 6 parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F, G,
            T, U, V, W, X, Y>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: TContext,
                              a: A, b: B, c: C, d: D, e: E, f: F, g: G): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F,
            T, U, V, W, X, Y>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: TContext,
                              a: A, b: B, c: C, d: D, e: E, f: F): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E,
            T, U, V, W, X, Y>(fn: (a: A, b: B, c: C, d: D, e: E,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: TContext,
                              a: A, b: B, c: C, d: D, e: E): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D,
            T, U, V, W, X, Y>(fn: (a: A, b: B, c: C, d: D,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: TContext,
                              a: A, b: B, c: C, d: D): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C,
            T, U, V, W, X, Y>(fn: (a: A, b: B, c: C,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: TContext,
                              a: A, b: B, c: C): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B,
            T, U, V, W, X, Y>(fn: (a: A, b: B,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: TContext,
                              a: A, b: B): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A,
            T, U, V, W, X, Y>(fn: (a: A,
                                   t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: TContext,
                              a: A): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            T, U, V, W, X, Y>(fn: (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn,
                              context: TContext): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn;
    
        // endregion
    
        // region 7+ parameters
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F, G,
            T, U, V, W, X, Y, Z>(fn: (a: A, b: B, c: C, d: D, e: E, f: F, g: G,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: TContext,
                                 a: A, b: B, c: C, d: D, e: E, f: F, g: G): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E, F,
            T, U, V, W, X, Y, Z>(fn: (a: A, b: B, c: C, d: D, e: E, f: F,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: TContext,
                                 a: A, b: B, c: C, d: D, e: E, f: F): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D, E,
            T, U, V, W, X, Y, Z>(fn: (a: A, b: B, c: C, d: D, e: E,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: TContext,
                                 a: A, b: B, c: C, d: D, e: E): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C, D,
            T, U, V, W, X, Y, Z>(fn: (a: A, b: B, c: C, d: D,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: TContext,
                                 a: A, b: B, c: C, d: D): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B, C,
            T, U, V, W, X, Y, Z>(fn: (a: A, b: B, c: C,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: TContext,
                                 a: A, b: B, c: C): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A, B,
            T, U, V, W, X, Y, Z>(fn: (a: A, b: B,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: TContext,
                                 a: A, b: B): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            A,
            T, U, V, W, X, Y, Z>(fn: (a: A,
                                      t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: TContext,
                                 a: A): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn,
            T, U, V, W, X, Y, Z>(fn: (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn,
                                 context: TContext): (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn;
    
        // endregion
    
        // endregion
    
        // region 8+ arguments
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param fn The function whose context will be changed.
         * @param context The object to which the context (this) of the function should be set.
         * @param additionalArguments Any number of arguments to be passed to the function referenced in the function argument.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object,
            TReturn>(fn: (...args: any[]) => TReturn,
                     context: TContext,
                     ...additionalArguments: any[]): (this: TContext, ...args: any[]) => TReturn;
    
        // endregion
    
        // endregion
    
        // region (context, name)
    
        /**
         * Takes a function and returns a new one that will always have a particular context.
         *
         * @param context The object to which the context of the function should be set.
         * @param name The name of the function whose context will be changed (should be a property of the context object).
         * @param additionalArguments Any number of arguments to be passed to the function named in the name argument.
         * @see {@link https://api.jquery.com/jQuery.proxy/}
         * @since 1.4
         * @since 1.6
         */
        proxy<TContext extends object>(context: TContext,
                                       name: keyof TContext,
                                       ...additionalArguments: any[]): (this: TContext, ...args: any[]) => any;
    
        // endregion
    
        // endregion
    
        /**
         * Manipulate the queue of functions to be executed on the matched element.
         *
         * @param element A DOM element where the array of queued functions is attached.
         * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue.
         * @param newQueue The new function to add to the queue.
         *                 An array of functions to replace the current queue contents.
         * @see {@link https://api.jquery.com/jQuery.queue/}
         * @since 1.3
         */
        queue<T extends Element>(element: T, queueName?: string, newQueue?: JQuery.TypeOrArray<JQuery.QueueFunction<T>>): JQuery.Queue<T>;
        /**
         * Handles errors thrown synchronously in functions wrapped in jQuery().
         *
         * @param error An error thrown in the function wrapped in jQuery().
         * @see {@link https://api.jquery.com/jQuery.readyException/}
         * @since 3.1
         */
        readyException(error: Error): any;
        /**
         * Remove a previously-stored piece of data.
         *
         * @param element A DOM element from which to remove data.
         * @param name A string naming the piece of data to remove.
         * @see {@link https://api.jquery.com/jQuery.removeData/}
         * @since 1.2.3
         */
        removeData(element: Element, name?: string): void;
        /**
         * Creates an object containing a set of properties ready to be used in the definition of custom animations.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/jQuery.speed/}
         * @since 1.1
         */
        speed(duration: JQuery.Duration, easing: string, complete: (this: TElement) => void): JQuery.EffectsOptions<TElement>;
        /**
         * Creates an object containing a set of properties ready to be used in the definition of custom animations.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing_complete A string indicating which easing function to use for the transition.
         *                        A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/jQuery.speed/}
         * @since 1.0
         * @since 1.1
         */
        speed(duration: JQuery.Duration,
              easing_complete: string | ((this: TElement) => void)): JQuery.EffectsOptions<TElement>;
        /**
         * Creates an object containing a set of properties ready to be used in the definition of custom animations.
         *
         * @param duration_complete_settings A string or number determining how long the animation will run.
         *                                   A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/jQuery.speed/}
         * @since 1.0
         * @since 1.1
         */
        speed(duration_complete_settings?: JQuery.Duration | ((this: TElement) => void| JQuery.SpeedSettings<TElement>): JQuery.EffectsOptions<TElement>;
        /**
         * Remove the whitespace from the beginning and end of a string.
         *
         * @param str The string to trim.
         * @see {@link https://api.jquery.com/jQuery.trim/}
         * @since 1.0
         */
        trim(str: string): string;
        /**
         * Determine the internal JavaScript [[Class]] of an object.
         *
         * @param obj Object to get the internal JavaScript [[Class]] of.
         * @see {@link https://api.jquery.com/jQuery.type/}
         * @since 1.4.3
         */
        type(obj: any): 'array' | 'boolean' | 'date' | 'error' | 'function' | 'null' | 'number' | 'object' | 'regexp' | 'string' | 'symbol' | 'undefined';
        /**
         * Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on
         * arrays of DOM elements, not strings or numbers.
         *
         * @param array The Array of DOM elements.
         * @see {@link https://api.jquery.com/jQuery.unique/}
         * @since 1.1.3
         * @deprecated 3.0
         */
        unique<T extends Element>(array: T[]): T[];
        /**
         * Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on
         * arrays of DOM elements, not strings or numbers.
         *
         * @param array The Array of DOM elements.
         * @see {@link https://api.jquery.com/jQuery.uniqueSort/}
         * @since 1.12
         * @since 2.2
         */
        uniqueSort<T extends Element>(array: T[]): T[];
        /**
         * Provides a way to execute callback functions based on zero or more Thenable objects, usually
         * Deferred objects that represent asynchronous events.
         *
         * @see {@link https://api.jquery.com/jQuery.when/}
         * @since 1.5
         */
        when<TR1, UR1, VR1,
            TJ1 = any, UJ1 = any, VJ1 = any>
            (deferredT: JQuery.Promise<TR1, TJ1, any| JQuery.Thenable<TR1> | TR1,
             deferredU: JQuery.Promise<UR1, UJ1, any| JQuery.Thenable<UR1> | UR1,
             deferredV: JQuery.Promise<VR1, VJ1, any| JQuery.Thenable<VR1> | VR1): JQuery.Promise3<TR1, TJ1, never,
            UR1, UJ1, never,
            VR1, VJ1, never>;
        /**
         * Provides a way to execute callback functions based on zero or more Thenable objects, usually
         * Deferred objects that represent asynchronous events.
         *
         * @see {@link https://api.jquery.com/jQuery.when/}
         * @since 1.5
         */
        when<TR1, UR1,
            TJ1 = any, UJ1 = any>
            (deferredT: JQuery.Promise<TR1, TJ1, any| JQuery.Thenable<TR1> | TR1,
             deferredU: JQuery.Promise<UR1, UJ1, any| JQuery.Thenable<UR1> | UR1): JQuery.Promise2<TR1, TJ1, never,
            UR1, UJ1, never>;
        /**
         * Provides a way to execute callback functions based on zero or more Thenable objects, usually
         * Deferred objects that represent asynchronous events.
         *
         * @see {@link https://api.jquery.com/jQuery.when/}
         * @since 1.5
         */
        when<TR1, TJ1,
            TR2, TJ2,
            TR3 = never, TJ3 = never>
            (deferredT: JQuery.Promise3<TR1, TJ1, any, TR2, TJ2, any, TR3, TJ3, any|
                JQuery.Promise2<TR1, TJ1, any, TR2, TJ2, any>): JQuery.Promise3<TR1, TJ1, never, TR2, TJ2, never, TR3, TJ3, never>;
        /**
         * Provides a way to execute callback functions based on zero or more Thenable objects, usually
         * Deferred objects that represent asynchronous events.
         *
         * @see {@link https://api.jquery.com/jQuery.when/}
         * @since 1.5
         */
        when<TR1, TJ1 = any>(deferred: JQuery.Promise<TR1, TJ1, any| JQuery.Thenable<TR1> | TR1): JQuery.Promise<TR1, TJ1, never>;
        /**
         * Provides a way to execute callback functions based on zero or more Thenable objects, usually
         * Deferred objects that represent asynchronous events.
         *
         * @param deferreds Zero or more Thenable objects.
         * @see {@link https://api.jquery.com/jQuery.when/}
         * @since 1.5
         */
        when<TR1 = never, TJ1 = never>(...deferreds: Array<JQuery.Promise<TR1, TJ1, any| JQuery.Thenable<TR1> | TR1>): JQuery.Promise<TR1, TJ1, never>;
        /**
         * Provides a way to execute callback functions based on zero or more Thenable objects, usually
         * Deferred objects that represent asynchronous events.
         *
         * @param deferreds Zero or more Thenable objects.
         * @see {@link https://api.jquery.com/jQuery.when/}
         * @since 1.5
         */
        when(...deferreds: any[]): JQuery.Promise<anyanynever>;
    }
    
    interface JQuery<TElement extends Node = HTMLElement> extends Iterable<TElement> {
        /**
         * A string containing the jQuery version number.
         *
         * @see {@link https://api.jquery.com/jquery/}
         * @since 1.0
         */
        jquery: string;
        /**
         * The number of elements in the jQuery object.
         *
         * @see {@link https://api.jquery.com/length/}
         * @since 1.0
         */
        length: number;
        /**
         * Create a new jQuery object with elements added to the set of matched elements.
         *
         * @param selector A string representing a selector expression to find additional elements to add to the set of matched elements.
         * @param context The point in the document at which the selector should begin matching; similar to the context
         *                argument of the $(selector, context) method.
         * @see {@link https://api.jquery.com/add/}
         * @since 1.4
         */
        add(selector: JQuery.Selector, context: Element): this;
        /**
         * Create a new jQuery object with elements added to the set of matched elements.
         *
         * @param selector A string representing a selector expression to find additional elements to add to the set of matched elements.
         *                 One or more elements to add to the set of matched elements.
         *                 An HTML fragment to add to the set of matched elements.
         *                 An existing jQuery object to add to the set of matched elements.
         * @see {@link https://api.jquery.com/add/}
         * @since 1.0
         * @since 1.3.2
         */
        add(selector: JQuery.Selector | JQuery.TypeOrArray<Element> | JQuery.htmlString | JQuery): this;
        /**
         * Add the previous set of elements on the stack to the current set, optionally filtered by a selector.
         *
         * @param selector A string containing a selector expression to match the current set of elements against.
         * @see {@link https://api.jquery.com/addBack/}
         * @since 1.8
         */
        addBack(selector?: JQuery.Selector): this;
        /**
         * Adds the specified class(es) to each element in the set of matched elements.
         *
         * @param className One or more space-separated classes to be added to the class attribute of each matched element.
         *                  A function returning one or more space-separated class names to be added to the existing class
         *                  name(s). Receives the index position of the element in the set and the existing class name(s) as
         *                  arguments. Within the function, this refers to the current element in the set.
         * @see {@link https://api.jquery.com/addClass/}
         * @since 1.0
         * @since 1.4
         */
        addClass(className: string | ((this: TElement, index: number, currentClassName: string=> string)): this;
        /**
         * Insert content, specified by the parameter, after each element in the set of matched elements.
         *
         * @param contents One or more additional DOM elements, text nodes, arrays of elements and text nodes, HTML strings, or
         *                 jQuery objects to insert after each element in the set of matched elements.
         * @see {@link https://api.jquery.com/after/}
         * @since 1.0
         */
        after(...contents: Array<JQuery.htmlString | JQuery.TypeOrArray<JQuery.Node | JQuery<JQuery.Node>>>): this;
        /**
         * Insert content, specified by the parameter, after each element in the set of matched elements.
         *
         * @param fn A function that returns an HTML string, DOM element(s), text node(s), or jQuery object to insert
         *           after each element in the set of matched elements. Receives the index position of the element in the
         *           set and the old HTML value of the element as arguments. Within the function, this refers to the
         *           current element in the set.
         * @see {@link https://api.jquery.com/after/}
         * @since 1.4
         * @since 1.10
         */
        after(fn: (this: TElement, index: number, html: string=> JQuery.htmlString | JQuery.TypeOrArray<JQuery.Node | JQuery<JQuery.Node>>): this;
        /**
         * Register a handler to be called when Ajax requests complete. This is an AjaxEvent.
         *
         * @param handler The function to be invoked.
         * @see {@link https://api.jquery.com/ajaxComplete/}
         * @since 1.0
         */
        ajaxComplete(handler: (this: Document, event: JQuery.Event<Document>, jqXHR: JQuery.jqXHR, ajaxOptions: JQuery.AjaxSettings) => void | false): this;
        /**
         * Register a handler to be called when Ajax requests complete with an error. This is an Ajax Event.
         *
         * @param handler The function to be invoked.
         * @see {@link https://api.jquery.com/ajaxError/}
         * @since 1.0
         */
        ajaxError(handler: (this: Document, event: JQuery.Event<Document>, jqXHR: JQuery.jqXHR, ajaxSettings: JQuery.AjaxSettings, thrownError: string=> void | false): this;
        /**
         * Attach a function to be executed before an Ajax request is sent. This is an Ajax Event.
         *
         * @param handler The function to be invoked.
         * @see {@link https://api.jquery.com/ajaxSend/}
         * @since 1.0
         */
        ajaxSend(handler: (this: Document, event: JQuery.Event<Document>, jqXHR: JQuery.jqXHR, ajaxOptions: JQuery.AjaxSettings) => void | false): this;
        /**
         * Register a handler to be called when the first Ajax request begins. This is an Ajax Event.
         *
         * @param handler The function to be invoked.
         * @see {@link https://api.jquery.com/ajaxStart/}
         * @since 1.0
         */
        ajaxStart(handler: (this: Document) => void | false): this;
        /**
         * Register a handler to be called when all Ajax requests have completed. This is an Ajax Event.
         *
         * @param handler The function to be invoked.
         * @see {@link https://api.jquery.com/ajaxStop/}
         * @since 1.0
         */
        ajaxStop(handler: (this: Document) => void | false): this;
        /**
         * Attach a function to be executed whenever an Ajax request completes successfully. This is an Ajax Event.
         *
         * @param handler The function to be invoked.
         * @see {@link https://api.jquery.com/ajaxSuccess/}
         * @since 1.0
         */
        ajaxSuccess(handler: (this: Document, event: JQuery.Event<Document>, jqXHR: JQuery.jqXHR, ajaxOptions: JQuery.AjaxSettings, data: JQuery.PlainObject) => void | false): this;
        /**
         * Perform a custom animation of a set of CSS properties.
         *
         * @param properties An object of CSS properties and values that the animation will move toward.
         * @param duration A string or number determining how long the animation will run.
         * @param easing A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/animate/}
         * @since 1.0
         */
        animate(properties: JQuery.PlainObject,
                duration: JQuery.Duration,
                easing: string,
                complete?: (this: TElement) => void): this;
        /**
         * Perform a custom animation of a set of CSS properties.
         *
         * @param properties An object of CSS properties and values that the animation will move toward.
         * @param duration_easing A string or number determining how long the animation will run.
         *                        A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/animate/}
         * @since 1.0
         */
        animate(properties: JQuery.PlainObject,
                duration_easing: JQuery.Duration | string,
                complete?: (this: TElement) => void): this;
        /**
         * Perform a custom animation of a set of CSS properties.
         *
         * @param properties An object of CSS properties and values that the animation will move toward.
         * @param options A map of additional options to pass to the method.
         * @see {@link https://api.jquery.com/animate/}
         * @since 1.0
         */
        animate(properties: JQuery.PlainObject,
                options: JQuery.EffectsOptions<TElement>): this;
        /**
         * Perform a custom animation of a set of CSS properties.
         *
         * @param properties An object of CSS properties and values that the animation will move toward.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/animate/}
         * @since 1.0
         */
        animate(properties: JQuery.PlainObject,
                complete?: (this: TElement) => void): this;
        /**
         * Insert content, specified by the parameter, to the end of each element in the set of matched elements.
         *
         * @param contents One or more additional DOM elements, text nodes, arrays of elements and text nodes, HTML strings, or
         *                 jQuery objects to insert at the end of each element in the set of matched elements.
         * @see {@link https://api.jquery.com/append/}
         * @since 1.0
         */
        append(...contents: Array<JQuery.htmlString | JQuery.TypeOrArray<JQuery.Node | JQuery<JQuery.Node>>>): this;
        /**
         * Insert content, specified by the parameter, to the end of each element in the set of matched elements.
         *
         * @param fn A function that returns an HTML string, DOM element(s), text node(s), or jQuery object to insert at
         *           the end of each element in the set of matched elements. Receives the index position of the element
         *           in the set and the old HTML value of the element as arguments. Within the function, this refers to
         *           the current element in the set.
         * @see {@link https://api.jquery.com/append/}
         * @since 1.4
         */
        append(fn: (this: TElement, index: number, html: string=> JQuery.htmlString | JQuery.TypeOrArray<JQuery.Node | JQuery<JQuery.Node>>): this;
        /**
         * Insert every element in the set of matched elements to the end of the target.
         *
         * @param target A selector, element, HTML string, array of elements, or jQuery object; the matched set of elements
         *               will be inserted at the end of the element(s) specified by this parameter.
         * @see {@link https://api.jquery.com/appendTo/}
         * @since 1.0
         */
        appendTo(target: JQuery.Selector | JQuery.htmlString | JQuery.TypeOrArray<Element> | JQuery): this;
        /**
         * Set one or more attributes for the set of matched elements.
         *
         * @param attributeName The name of the attribute to set.
         * @param value A value to set for the attribute. If null, the specified attribute will be removed (as in .removeAttr()).
         *              A function returning the value to set. this is the current element. Receives the index position of
         *              the element in the set and the old attribute value as arguments.
         * @see {@link https://api.jquery.com/attr/}
         * @since 1.0
         * @since 1.1
         */
        attr(attributeName: string,
             value: string | number | null | ((this: TElement, index: number, attr: string=> string | number | void | undefined)): this;
        /**
         * Set one or more attributes for the set of matched elements.
         *
         * @param attributes An object of attribute-value pairs to set.
         * @see {@link https://api.jquery.com/attr/}
         * @since 1.0
         */
        attr(attributes: JQuery.PlainObject): this;
        /**
         * Get the value of an attribute for the first element in the set of matched elements.
         *
         * @param attributeName The name of the attribute to get.
         * @see {@link https://api.jquery.com/attr/}
         * @since 1.0
         */
        attr(attributeName: string): string | undefined;
        /**
         * Insert content, specified by the parameter, before each element in the set of matched elements.
         *
         * @param contents One or more additional DOM elements, text nodes, arrays of elements and text nodes, HTML strings, or
         *                 jQuery objects to insert before each element in the set of matched elements.
         * @see {@link https://api.jquery.com/before/}
         * @since 1.0
         */
        before(...contents: Array<JQuery.htmlString | JQuery.TypeOrArray<JQuery.Node | JQuery<JQuery.Node>>>): this;
        /**
         * Insert content, specified by the parameter, before each element in the set of matched elements.
         *
         * @param fn A function that returns an HTML string, DOM element(s), text node(s), or jQuery object to insert
         *           before each element in the set of matched elements. Receives the index position of the element in
         *           the set and the old HTML value of the element as arguments. Within the function, this refers to the
         *           current element in the set.
         * @see {@link https://api.jquery.com/before/}
         * @since 1.4
         * @since 1.10
         */
        before(fn: (this: TElement, index: number, html: string=> JQuery.htmlString | JQuery.TypeOrArray<JQuery.Node | JQuery<JQuery.Node>>): this;
        // [bind() overloads] https://github.com/jquery/api.jquery.com/issues/1048
        /**
         * Attach a handler to an event for the elements.
         *
         * @param eventType A string containing one or more DOM event types, such as "click" or "submit," or custom event names.
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/bind/}
         * @since 1.0
         * @since 1.4.3
         * @deprecated 3.0
         */
        bind<TData>(eventType: string,
                    eventData: TData,
                    handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Attach a handler to an event for the elements.
         *
         * @param eventType A string containing one or more DOM event types, such as "click" or "submit," or custom event names.
         * @param handler A function to execute each time the event is triggered.
         *                Setting the second argument to false will attach a function that prevents the default action from
         *                occurring and stops the event from bubbling.
         * @see {@link https://api.jquery.com/bind/}
         * @since 1.0
         * @since 1.4.3
         * @deprecated 3.0
         */
        bind(eventType: string,
             handler: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false | null | undefined): this;
        /**
         * Attach a handler to an event for the elements.
         *
         * @param events An object containing one or more DOM event types and functions to execute for them.
         * @see {@link https://api.jquery.com/bind/}
         * @since 1.4
         * @deprecated 3.0
         */
        bind(events: JQuery.PlainObject<JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false>): this;
        /**
         * Bind an event handler to the "blur" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/blur/}
         * @since 1.4.3
         */
        blur<TData>(eventData: TData,
                    handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "blur" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/blur/}
         * @since 1.0
         */
        blur(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Bind an event handler to the "change" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/change/}
         * @since 1.4.3
         */
        change<TData>(eventData: TData,
                      handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "change" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/change/}
         * @since 1.0
         */
        change(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Get the children of each element in the set of matched elements, optionally filtered by a selector.
         *
         * @param selector A string containing a selector expression to match elements against.
         * @see {@link https://api.jquery.com/children/}
         * @since 1.0
         */
        children(selector?: JQuery.Selector): this;
        /**
         * Remove from the queue all items that have not yet been run.
         *
         * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue.
         * @see {@link https://api.jquery.com/clearQueue/}
         * @since 1.4
         */
        clearQueue(queueName?: string): this;
        /**
         * Bind an event handler to the "click" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/click/}
         * @since 1.4.3
         */
        click<TData>(eventData: TData,
                     handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "click" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/click/}
         * @since 1.0
         */
        click(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Create a deep copy of the set of matched elements.
         *
         * @param withDataAndEvents A Boolean indicating whether event handlers and data should be copied along with the elements. The
         *                          default value is false. *In jQuery 1.5.0 the default value was incorrectly true; it was changed back
         *                          to false in 1.5.1 and up.
         * @param deepWithDataAndEvents A Boolean indicating whether event handlers and data for all children of the cloned element should
         *                              be copied. By default its value matches the first argument's value (which defaults to false).
         * @see {@link https://api.jquery.com/clone/}
         * @since 1.0
         * @since 1.5
         */
        clone(withDataAndEvents?: boolean, deepWithDataAndEvents?: boolean): this;
        /**
         * For each element in the set, get the first element that matches the selector by testing the element
         * itself and traversing up through its ancestors in the DOM tree.
         *
         * @param selector A string containing a selector expression to match elements against.
         * @param context A DOM element within which a matching element may be found.
         * @see {@link https://api.jquery.com/closest/}
         * @since 1.4
         */
        closest(selector: JQuery.Selector, context: Element): this;
        /**
         * For each element in the set, get the first element that matches the selector by testing the element
         * itself and traversing up through its ancestors in the DOM tree.
         *
         * @param selector A string containing a selector expression to match elements against.
         *                 A jQuery object to match elements against.
         *                 An element to match elements against.
         * @see {@link https://api.jquery.com/closest/}
         * @since 1.3
         * @since 1.6
         */
        closest(selector: JQuery.Selector | Element | JQuery): this;
        /**
         * Get the children of each element in the set of matched elements, including text and comment nodes.
         *
         * @see {@link https://api.jquery.com/contents/}
         * @since 1.2
         */
        contents(): JQuery<TElement | Text | Comment>;
        /**
         * Bind an event handler to the "contextmenu" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/contextmenu/}
         * @since 1.4.3
         */
        contextmenu<TData>(eventData: TData,
                           handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "contextmenu" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/contextmenu/}
         * @since 1.0
         */
        contextmenu(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Set one or more CSS properties for the set of matched elements.
         *
         * @param propertyName A CSS property name.
         * @param value A value to set for the property.
         *              A function returning the value to set. this is the current element. Receives the index position of
         *              the element in the set and the old value as arguments.
         * @see {@link https://api.jquery.com/css/}
         * @since 1.0
         * @since 1.4
         */
        css(propertyName: string,
            value: string | number | ((this: TElement, index: number, value: string=> string | number | void | undefined)): this;
        /**
         * Set one or more CSS properties for the set of matched elements.
         *
         * @param properties An object of property-value pairs to set.
         * @see {@link https://api.jquery.com/css/}
         * @since 1.0
         */
        css(properties: JQuery.PlainObject<string | number | ((this: TElement, index: number, value: string=> string | number | void | undefined)>): this;
        /**
         * Get the computed style properties for the first element in the set of matched elements.
         *
         * @param propertyName A CSS property.
         *                     An array of one or more CSS properties.
         * @see {@link https://api.jquery.com/css/}
         * @since 1.0
         */
        css(propertyName: string): string;
        /**
         * Get the computed style properties for the first element in the set of matched elements.
         *
         * @param propertyNames An array of one or more CSS properties.
         * @see {@link https://api.jquery.com/css/}
         * @since 1.9
         */
        css(propertyNames: string[]): JQuery.PlainObject<string>;
        /**
         * Return the value at the named data store for the first element in the jQuery collection, as set by
         * data(name, value) or by an HTML5 data-* attribute.
         *
         * @param key Name of the data stored.
         * @see {@link https://api.jquery.com/data/}
         * @since 1.2.3
         */
        data(key: string, undefined: undefined): any// tslint:disable-line:unified-signatures
        /**
         * Store arbitrary data associated with the matched elements.
         *
         * @param key A string naming the piece of data to set.
         * @param value The new data value; this can be any Javascript type except undefined.
         * @see {@link https://api.jquery.com/data/}
         * @since 1.2.3
         */
        data(key: string, value: any): this;
        /**
         * Store arbitrary data associated with the matched elements.
         *
         * @param obj An object of key-value pairs of data to update.
         * @see {@link https://api.jquery.com/data/}
         * @since 1.4.3
         */
        data(obj: JQuery.PlainObject): this;
        /**
         * Return the value at the named data store for the first element in the jQuery collection, as set by
         * data(name, value) or by an HTML5 data-* attribute.
         *
         * @param key Name of the data stored.
         * @see {@link https://api.jquery.com/data/}
         * @since 1.2.3
         */
        data(key: string): any;
        /**
         * Return the value at the named data store for the first element in the jQuery collection, as set by
         * data(name, value) or by an HTML5 data-* attribute.
         *
         * @see {@link https://api.jquery.com/data/}
         * @since 1.4
         */
        data(): JQuery.PlainObject;
        /**
         * Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/dblclick/}
         * @since 1.4.3
         */
        dblclick<TData>(eventData: TData,
                        handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/dblclick/}
         * @since 1.0
         */
        dblclick(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Set a timer to delay execution of subsequent items in the queue.
         *
         * @param duration An integer indicating the number of milliseconds to delay execution of the next item in the queue.
         * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue.
         * @see {@link https://api.jquery.com/delay/}
         * @since 1.4
         */
        delay(duration: JQuery.Duration, queueName?: string): this;
        /**
         * Attach a handler to one or more events for all elements that match the selector, now or in the
         * future, based on a specific set of root elements.
         *
         * @param selector A selector to filter the elements that trigger the event.
         * @param eventType A string containing one or more space-separated JavaScript event types, such as "click" or
         *                  "keydown," or custom event names.
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/delegate/}
         * @since 1.4.2
         * @deprecated 3.0
         */
        delegate<TData>(selector: JQuery.Selector,
                        eventType: string,
                        eventData: TData,
                        handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Attach a handler to one or more events for all elements that match the selector, now or in the
         * future, based on a specific set of root elements.
         *
         * @param selector A selector to filter the elements that trigger the event.
         * @param eventType A string containing one or more space-separated JavaScript event types, such as "click" or
         *                  "keydown," or custom event names.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/delegate/}
         * @since 1.4.2
         * @deprecated 3.0
         */
        delegate(selector: JQuery.Selector,
                 eventType: string,
                 handler: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Attach a handler to one or more events for all elements that match the selector, now or in the
         * future, based on a specific set of root elements.
         *
         * @param selector A selector to filter the elements that trigger the event.
         * @param events A plain object of one or more event types and functions to execute for them.
         * @see {@link https://api.jquery.com/delegate/}
         * @since 1.4.3
         * @deprecated 3.0
         */
        delegate(selector: JQuery.Selector,
                 events: JQuery.PlainObject<JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false>): this;
        /**
         * Execute the next function on the queue for the matched elements.
         *
         * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue.
         * @see {@link https://api.jquery.com/dequeue/}
         * @since 1.2
         */
        dequeue(queueName?: string): this;
        /**
         * Remove the set of matched elements from the DOM.
         *
         * @param selector A selector expression that filters the set of matched elements to be removed.
         * @see {@link https://api.jquery.com/detach/}
         * @since 1.4
         */
        detach(selector?: JQuery.Selector): this;
        /**
         * Iterate over a jQuery object, executing a function for each matched element.
         *
         * @param fn A function to execute for each matched element.
         * @see {@link https://api.jquery.com/each/}
         * @since 1.0
         */
        each(fn: (this: TElement, index: number, element: TElement) => void | false): this;
        /**
         * Remove all child nodes of the set of matched elements from the DOM.
         *
         * @see {@link https://api.jquery.com/empty/}
         * @since 1.0
         */
        empty(): this;
        /**
         * End the most recent filtering operation in the current chain and return the set of matched elements
         * to its previous state.
         *
         * @see {@link https://api.jquery.com/end/}
         * @since 1.0
         */
        end(): this;
        /**
         * Reduce the set of matched elements to the one at the specified index.
         *
         * @param index An integer indicating the 0-based position of the element.
         *              An integer indicating the position of the element, counting backwards from the last element in the set.
         * @see {@link https://api.jquery.com/eq/}
         * @since 1.1.2
         * @since 1.4
         */
        eq(index: number): this;
        /**
         * Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods.
         *
         * @param obj An object to merge onto the jQuery prototype.
         * @see {@link https://api.jquery.com/jQuery.fn.extend/}
         * @since 1.0
         */
        extend(obj: object): this;
        /**
         * Display the matched elements by fading them to opaque.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/fadeIn/}
         * @since 1.4.3
         */
        fadeIn(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this;
        /**
         * Display the matched elements by fading them to opaque.
         *
         * @param duration_easing A string or number determining how long the animation will run.
         *                        A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/fadeIn/}
         * @since 1.0
         * @since 1.4.3
         */
        fadeIn(duration_easing: JQuery.Duration | string, complete: (this: TElement) => void): this;
        /**
         * Display the matched elements by fading them to opaque.
         *
         * @param duration_easing_complete_options A string or number determining how long the animation will run.
         *                                         A string indicating which easing function to use for the transition.
         *                                         A function to call once the animation is complete, called once per matched element.
         *                                         A map of additional options to pass to the method.
         * @see {@link https://api.jquery.com/fadeIn/}
         * @since 1.0
         * @since 1.4.3
         */
        fadeIn(duration_easing_complete_options?: JQuery.Duration | string | ((this: TElement) => void| JQuery.EffectsOptions<TElement>): this;
        /**
         * Hide the matched elements by fading them to transparent.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/fadeOut/}
         * @since 1.4.3
         */
        fadeOut(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this;
        /**
         * Hide the matched elements by fading them to transparent.
         *
         * @param duration_easing A string or number determining how long the animation will run.
         *                        A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/fadeOut/}
         * @since 1.0
         * @since 1.4.3
         */
        fadeOut(duration_easing: JQuery.Duration | string, complete: (this: TElement) => void): this;
        /**
         * Hide the matched elements by fading them to transparent.
         *
         * @param duration_easing_complete_options A string or number determining how long the animation will run.
         *                                         A string indicating which easing function to use for the transition.
         *                                         A function to call once the animation is complete, called once per matched element.
         *                                         A map of additional options to pass to the method.
         * @see {@link https://api.jquery.com/fadeOut/}
         * @since 1.0
         * @since 1.4.3
         */
        fadeOut(duration_easing_complete_options?: JQuery.Duration | string | ((this: TElement) => void| JQuery.EffectsOptions<TElement>): this;
        /**
         * Adjust the opacity of the matched elements.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param opacity A number between 0 and 1 denoting the target opacity.
         * @param easing A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/fadeTo/}
         * @since 1.4.3
         */
        fadeTo(duration: JQuery.Duration, opacity: number, easing: string, complete?: (this: TElement) => void): this;
        /**
         * Adjust the opacity of the matched elements.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param opacity A number between 0 and 1 denoting the target opacity.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/fadeTo/}
         * @since 1.0
         */
        fadeTo(duration: JQuery.Duration, opacity: number, complete?: (this: TElement) => void): this;
        /**
         * Display or hide the matched elements by animating their opacity.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/fadeToggle/}
         * @since 1.4.4
         */
        fadeToggle(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this;
        /**
         * Display or hide the matched elements by animating their opacity.
         *
         * @param duration_easing A string or number determining how long the animation will run.
         *                        A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/fadeToggle/}
         * @since 1.0
         * @since 1.4.3
         */
        fadeToggle(duration_easing: JQuery.Duration | string, complete: (this: TElement) => void): this;
        /**
         * Display or hide the matched elements by animating their opacity.
         *
         * @param duration_easing_complete_options A string or number determining how long the animation will run.
         *                                         A string indicating which easing function to use for the transition.
         *                                         A function to call once the animation is complete, called once per matched element.
         *                                         A map of additional options to pass to the method.
         * @see {@link https://api.jquery.com/fadeToggle/}
         * @since 1.0
         * @since 1.4.3
         */
        fadeToggle(duration_easing_complete_options?: JQuery.Duration | string | ((this: TElement) => void| JQuery.EffectsOptions<TElement>): this;
        /**
         * Reduce the set of matched elements to those that match the selector or pass the function's test.
         *
         * @param selector A string containing a selector expression to match the current set of elements against.
         *                 One or more DOM elements to match the current set of elements against.
         *                 An existing jQuery object to match the current set of elements against.
         *                 A function used as a test for each element in the set. this is the current DOM element.
         * @see {@link https://api.jquery.com/filter/}
         * @since 1.0
         * @since 1.4
         */
        filter(selector: JQuery.Selector | JQuery.TypeOrArray<Element> | JQuery | ((this: TElement, index: number, element: TElement) => boolean)): this;
        /**
         * Get the descendants of each element in the current set of matched elements, filtered by a selector,
         * jQuery object, or element.
         *
         * @param selector A string containing a selector expression to match elements against.
         *                 An element or a jQuery object to match elements against.
         * @see {@link https://api.jquery.com/find/}
         * @since 1.0
         * @since 1.6
         */
        find(selector: JQuery.Selector | Element | JQuery): this;
        /**
         * Stop the currently-running animation, remove all queued animations, and complete all animations for
         * the matched elements.
         *
         * @param queue The name of the queue in which to stop animations.
         * @see {@link https://api.jquery.com/finish/}
         * @since 1.9
         */
        finish(queue?: string): this;
        /**
         * Reduce the set of matched elements to the first in the set.
         *
         * @see {@link https://api.jquery.com/first/}
         * @since 1.4
         */
        first(): this;
        /**
         * Bind an event handler to the "focus" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/focus/}
         * @since 1.4.3
         */
        focus<TData>(eventData: TData,
                     handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "focus" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/focus/}
         * @since 1.0
         */
        focus(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Bind an event handler to the "focusin" event.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/focusin/}
         * @since 1.4.3
         */
        focusin<TData>(eventData: TData,
                       handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "focusin" event.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/focusin/}
         * @since 1.4
         */
        focusin(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Bind an event handler to the "focusout" JavaScript event.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/focusout/}
         * @since 1.4.3
         */
        focusout<TData>(eventData: TData,
                        handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "focusout" JavaScript event.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/focusout/}
         * @since 1.4
         */
        focusout(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Retrieve one of the elements matched by the jQuery object.
         *
         * @param index A zero-based integer indicating which element to retrieve.
         * @see {@link https://api.jquery.com/get/}
         * @since 1.0
         */
        get(index: number): TElement;
        /**
         * Retrieve the elements matched by the jQuery object.
         *
         * @see {@link https://api.jquery.com/get/}
         * @since 1.0
         */
        get(): TElement[];
        /**
         * Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element.
         *
         * @param selector A string containing a selector expression to match elements against.
         *                 A DOM element to match elements against.
         * @see {@link https://api.jquery.com/has/}
         * @since 1.4
         */
        has(selector: string | Element): this;
        /**
         * Determine whether any of the matched elements are assigned the given class.
         *
         * @param className The class name to search for.
         * @see {@link https://api.jquery.com/hasClass/}
         * @since 1.2
         */
        hasClass(className: string): boolean;
        /**
         * Set the CSS height of every matched element.
         *
         * @param value An integer representing the number of pixels, or an integer with an optional unit of measure
         *              appended (as a string).
         *              A function returning the height to set. Receives the index position of the element in the set and
         *              the old height as arguments. Within the function, this refers to the current element in the set.
         * @see {@link https://api.jquery.com/height/}
         * @since 1.0
         * @since 1.4.1
         */
        height(value: string | number | ((this: TElement, index: number, height: number=> string | number)): this;
        /**
         * Get the current computed height for the first element in the set of matched elements.
         *
         * @see {@link https://api.jquery.com/height/}
         * @since 1.0
         */
        height(): number | undefined;
        /**
         * Hide the matched elements.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/hide/}
         * @since 1.4.3
         */
        hide(duration: JQuery.Duration, easing: string, complete: (this: TElement) => void): this;
        /**
         * Hide the matched elements.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing_complete A string indicating which easing function to use for the transition.
         *                        A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/hide/}
         * @since 1.0
         * @since 1.4.3
         */
        hide(duration: JQuery.Duration, easing_complete: string | ((this: TElement) => void)): this;
        /**
         * Hide the matched elements.
         *
         * @param duration_complete_options A string or number determining how long the animation will run.
         *                                  A function to call once the animation is complete, called once per matched element.
         *                                  A map of additional options to pass to the method.
         * @see {@link https://api.jquery.com/hide/}
         * @since 1.0
         */
        hide(duration_complete_options?: JQuery.Duration | ((this: TElement) => void| JQuery.EffectsOptions<TElement>): this;
        /**
         * Bind one or two handlers to the matched elements, to be executed when the mouse pointer enters and
         * leaves the elements.
         *
         * @param handlerInOut A function to execute when the mouse pointer enters or leaves the element.
         * @param handlerOut A function to execute when the mouse pointer leaves the element.
         * @see {@link https://api.jquery.com/hover/}
         * @since 1.0
         * @since 1.4
         */
        // HACK: The type parameter T is not used but ensures the 'event' callback parameter is typed correctly.
        hover<T>(handlerInOut: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false,
                 handlerOut?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Set the HTML contents of each element in the set of matched elements.
         *
         * @param htmlString A string of HTML to set as the content of each matched element.
         *                   A function returning the HTML content to set. Receives the index position of the element in the set
         *                   and the old HTML value as arguments. jQuery empties the element before calling the function; use the
         *                   oldhtml argument to reference the previous content. Within the function, this refers to the current element in the set.
         * @see {@link https://api.jquery.com/html/}
         * @since 1.0
         * @since 1.4
         */
        html(htmlString: JQuery.htmlString | ((this: TElement, index: number, oldhtml: JQuery.htmlString) => JQuery.htmlString)): this;
        /**
         * Get the HTML contents of the first element in the set of matched elements.
         *
         * @see {@link https://api.jquery.com/html/}
         * @since 1.0
         */
        html(): string;
        /**
         * Search for a given element from among the matched elements.
         *
         * @param element The DOM element or first element within the jQuery object to look for.
         *                A selector representing a jQuery collection in which to look for an element.
         * @see {@link https://api.jquery.com/index/}
         * @since 1.0
         * @since 1.4
         */
        index(element?: JQuery.Selector | Element | JQuery): number;
        /**
         * Set the CSS inner height of each element in the set of matched elements.
         *
         * @param value A number representing the number of pixels, or a number along with an optional unit of measure
         *              appended (as a string).
         *              A function returning the inner height (including padding but not border) to set. Receives the index
         *              position of the element in the set and the old inner height as arguments. Within the function, this
         *              refers to the current element in the set.
         * @see {@link https://api.jquery.com/innerHeight/}
         * @since 1.8.0
         */
        innerHeight(value: string | number | ((this: TElement, index: number, height: number=> string | number)): this;
        /**
         * Get the current computed height for the first element in the set of matched elements, including
         * padding but not border.
         *
         * @see {@link https://api.jquery.com/innerHeight/}
         * @since 1.2.6
         */
        innerHeight(): number | undefined;
        /**
         * Set the CSS inner width of each element in the set of matched elements.
         *
         * @param value A number representing the number of pixels, or a number along with an optional unit of measure
         *              appended (as a string).
         *              A function returning the inner width (including padding but not border) to set. Receives the index
         *              position of the element in the set and the old inner width as arguments. Within the function, this
         *              refers to the current element in the set.
         * @see {@link https://api.jquery.com/innerWidth/}
         * @since 1.8.0
         */
        innerWidth(value: string | number | ((this: TElement, index: number, width: number=> string | number)): this;
        /**
         * Get the current computed inner width for the first element in the set of matched elements, including
         * padding but not border.
         *
         * @see {@link https://api.jquery.com/innerWidth/}
         * @since 1.2.6
         */
        innerWidth(): number | undefined;
        /**
         * Insert every element in the set of matched elements after the target.
         *
         * @param target A selector, element, array of elements, HTML string, or jQuery object; the matched set of elements
         *               will be inserted after the element(s) specified by this parameter.
         * @see {@link https://api.jquery.com/insertAfter/}
         * @since 1.0
         */
        insertAfter(target: JQuery.Selector | JQuery.htmlString | JQuery.TypeOrArray<Element> | JQuery): this;
        /**
         * Insert every element in the set of matched elements before the target.
         *
         * @param target A selector, element, array of elements, HTML string, or jQuery object; the matched set of elements
         *               will be inserted before the element(s) specified by this parameter.
         * @see {@link https://api.jquery.com/insertBefore/}
         * @since 1.0
         */
        insertBefore(target: JQuery.Selector | JQuery.htmlString | JQuery.TypeOrArray<Element> | JQuery): this;
        /**
         * Check the current matched set of elements against a selector, element, or jQuery object and return
         * true if at least one of these elements matches the given arguments.
         *
         * @param selector A string containing a selector expression to match elements against.
         *                 A function used as a test for every element in the set. It accepts two arguments, index, which is
         *                 the element's index in the jQuery collection, and element, which is the DOM element. Within the
         *                 function, this refers to the current DOM element.
         *                 An existing jQuery object to match the current set of elements against.
         *                 One or more elements to match the current set of elements against.
         * @see {@link https://api.jquery.com/is/}
         * @since 1.0
         * @since 1.6
         */
        is(selector: JQuery.Selector | JQuery.TypeOrArray<Element> | JQuery | ((this: TElement, index: number, element: TElement) => boolean)): boolean;
        /**
         * Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/keydown/}
         * @since 1.4.3
         */
        keydown<TData>(eventData: TData,
                       handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/keydown/}
         * @since 1.0
         */
        keydown(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/keypress/}
         * @since 1.4.3
         */
        keypress<TData>(eventData: TData,
                        handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/keypress/}
         * @since 1.0
         */
        keypress(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/keyup/}
         * @since 1.4.3
         */
        keyup<TData>(eventData: TData,
                     handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/keyup/}
         * @since 1.0
         */
        keyup(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Reduce the set of matched elements to the final one in the set.
         *
         * @see {@link https://api.jquery.com/last/}
         * @since 1.4
         */
        last(): this;
        /**
         * Load data from the server and place the returned HTML into the matched element.
         *
         * @param url A string containing the URL to which the request is sent.
         * @param data A plain object or string that is sent to the server with the request.
         * @param complete A callback function that is executed when the request completes.
         * @see {@link https://api.jquery.com/load/}
         * @since 1.0
         */
        load(url: string,
             data: string | JQuery.PlainObject,
             complete: (this: TElement, responseText: string, textStatus: JQuery.Ajax.TextStatus, jqXHR: JQuery.jqXHR) => void): this;
        /**
         * Load data from the server and place the returned HTML into the matched element.
         *
         * @param url A string containing the URL to which the request is sent.
         * @param complete_data A callback function that is executed when the request completes.
         *                      A plain object or string that is sent to the server with the request.
         * @see {@link https://api.jquery.com/load/}
         * @since 1.0
         */
        load(url: string,
             complete_data?: ((this: TElement, responseText: string, textStatus: JQuery.Ajax.TextStatus, jqXHR: JQuery.jqXHR) => void| string | JQuery.PlainObject): this;
        /**
         * Pass each element in the current matched set through a function, producing a new jQuery object
         * containing the return values.
         *
         * @param callback A function object that will be invoked for each element in the current set.
         * @see {@link https://api.jquery.com/map/}
         * @since 1.2
         */
        map(callback: (this: TElement, index: number, domElement: TElement) => any | any[] | null | undefined): this;
        /**
         * Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mousedown/}
         * @since 1.4.3
         */
        mousedown<TData>(eventData: TData,
                         handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mousedown/}
         * @since 1.0
         */
        mousedown(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mouseenter/}
         * @since 1.4.3
         */
        mouseenter<TData>(eventData: TData,
                          handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mouseenter/}
         * @since 1.0
         */
        mouseenter(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mouseleave/}
         * @since 1.4.3
         */
        mouseleave<TData>(eventData: TData,
                          handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mouseleave/}
         * @since 1.0
         */
        mouseleave(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mousemove/}
         * @since 1.4.3
         */
        mousemove<TData>(eventData: TData,
                         handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mousemove/}
         * @since 1.0
         */
        mousemove(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mouseout/}
         * @since 1.4.3
         */
        mouseout<TData>(eventData: TData,
                        handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mouseout/}
         * @since 1.0
         */
        mouseout(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mouseover/}
         * @since 1.4.3
         */
        mouseover<TData>(eventData: TData,
                         handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mouseover/}
         * @since 1.0
         */
        mouseover(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mouseup/}
         * @since 1.4.3
         */
        mouseup<TData>(eventData: TData,
                       handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/mouseup/}
         * @since 1.0
         */
        mouseup(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Get the immediately following sibling of each element in the set of matched elements. If a selector
         * is provided, it retrieves the next sibling only if it matches that selector.
         *
         * @param selector A string containing a selector expression to match elements against.
         * @see {@link https://api.jquery.com/next/}
         * @since 1.0
         */
        next(selector?: JQuery.Selector): this;
        /**
         * Get all following siblings of each element in the set of matched elements, optionally filtered by a selector.
         *
         * @param selector A string containing a selector expression to match elements against.
         * @see {@link https://api.jquery.com/nextAll/}
         * @since 1.2
         */
        nextAll(selector?: string): this;
        /**
         * Get all following siblings of each element up to but not including the element matched by the
         * selector, DOM node, or jQuery object passed.
         *
         * @param selector A string containing a selector expression to indicate where to stop matching following sibling elements.
         *                 A DOM node or jQuery object indicating where to stop matching following sibling elements.
         * @param filter A string containing a selector expression to match elements against.
         * @see {@link https://api.jquery.com/nextUntil/}
         * @since 1.4
         * @since 1.6
         */
        nextUntil(selector?: JQuery.Selector | Element | JQuery, filter?: JQuery.Selector): this;
        /**
         * Remove elements from the set of matched elements.
         *
         * @param selector A string containing a selector expression, a DOM element, or an array of elements to match against the set.
         *                 A function used as a test for each element in the set. It accepts two arguments, index, which is the
         *                 element's index in the jQuery collection, and element, which is the DOM element. Within the
         *                 function, this refers to the current DOM element.
         *                 An existing jQuery object to match the current set of elements against.
         * @see {@link https://api.jquery.com/not/}
         * @since 1.0
         * @since 1.4
         */
        not(selector: JQuery.Selector | JQuery.TypeOrArray<Element> | JQuery | ((this: TElement, index: number, element: TElement) => boolean)): this;
        /**
         * Remove an event handler.
         *
         * @param events One or more space-separated event types and optional namespaces, or just namespaces, such as
         *               "click", "keydown.myPlugin", or ".myPlugin".
         * @param selector A selector which should match the one originally passed to .on() when attaching event handlers.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/off/}
         * @since 1.7
         */
        off(events: string, selector: JQuery.Selector, handler: JQuery.EventHandlerBase<anyJQuery.Event<TElement, any>> | false): this;
        /**
         * Remove an event handler.
         *
         * @param events One or more space-separated event types and optional namespaces, or just namespaces, such as
         *               "click", "keydown.myPlugin", or ".myPlugin".
         * @param selector_handler A selector which should match the one originally passed to .on() when attaching event handlers.
         *                         A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/off/}
         * @since 1.7
         */
        off(events: string, selector_handler?: JQuery.Selector | JQuery.EventHandlerBase<anyJQuery.Event<TElement, any>> | false): this;
        /**
         * Remove an event handler.
         *
         * @param events An object where the string keys represent one or more space-separated event types and optional
         *               namespaces, and the values represent handler functions previously attached for the event(s).
         * @param selector A selector which should match the one originally passed to .on() when attaching event handlers.
         * @see {@link https://api.jquery.com/off/}
         * @since 1.7
         */
        off(events: JQuery.PlainObject<JQuery.EventHandlerBase<anyJQuery.Event<TElement, any>> | false>, selector?: JQuery.Selector): this;
        /**
         * Remove an event handler.
         *
         * @param event A jQuery.Event object.
         * @see {@link https://api.jquery.com/off/}
         * @since 1.7
         */
        off(event?: JQuery.Event<TElement>): this;
        /**
         * Set the current coordinates of every element in the set of matched elements, relative to the document.
         *
         * @param coordinates An object containing the properties top and left, which are numbers indicating the new top and left
         *                    coordinates for the elements.
         *                    A function to return the coordinates to set. Receives the index of the element in the collection as
         *                    the first argument and the current coordinates as the second argument. The function should return an
         *                    object with the new top and left properties.
         * @see {@link https://api.jquery.com/offset/}
         * @since 1.4
         */
        offset(coordinates: JQuery.Coordinates | ((this: TElement, index: number, coords: JQuery.Coordinates) => JQuery.Coordinates)): this;
        /**
         * Get the current coordinates of the first element in the set of matched elements, relative to the document.
         *
         * @see {@link https://api.jquery.com/offset/}
         * @since 1.2
         */
        offset(): JQuery.Coordinates | undefined;
        /**
         * Get the closest ancestor element that is positioned.
         *
         * @see {@link https://api.jquery.com/offsetParent/}
         * @since 1.2.6
         */
        offsetParent(): this;
        /**
         * Attach an event handler function for one or more events to the selected elements.
         *
         * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".
         * @param selector A selector string to filter the descendants of the selected elements that trigger the event. If the
         *                 selector is null or omitted, the event is always triggered when it reaches the selected element.
         * @param data Data to be passed to the handler in event.data when an event is triggered.
         * @param handler A function to execute when the event is triggered.
         * @see {@link https://api.jquery.com/on/}
         * @since 1.7
         */
        on<TData>(events: string,
                  selector: JQuery.Selector | null,
                  data: TData,
                  handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Attach an event handler function for one or more events to the selected elements.
         *
         * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".
         * @param selector A selector string to filter the descendants of the selected elements that trigger the event. If the
         *                 selector is null or omitted, the event is always triggered when it reaches the selected element.
         * @param handler A function to execute when the event is triggered. The value false is also allowed as a shorthand
         *                for a function that simply does return false.
         * @see {@link https://api.jquery.com/on/}
         * @since 1.7
         */
        on(events: string,
           selector: JQuery.Selector,
           handler: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Attach an event handler function for one or more events to the selected elements.
         *
         * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".
         * @param data Data to be passed to the handler in event.data when an event is triggered.
         * @param handler A function to execute when the event is triggered.
         * @see {@link https://api.jquery.com/on/}
         * @since 1.7
         */
        on<TData>(events: string,
                  data: TData,
                  handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Attach an event handler function for one or more events to the selected elements.
         *
         * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".
         * @param handler A function to execute when the event is triggered. The value false is also allowed as a shorthand
         *                for a function that simply does return false.
         * @see {@link https://api.jquery.com/on/}
         * @since 1.7
         */
        on(events: string,
           handler: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Attach an event handler function for one or more events to the selected elements.
         *
         * @param events An object in which the string keys represent one or more space-separated event types and optional
         *               namespaces, and the values represent a handler function to be called for the event(s).
         * @param selector A selector string to filter the descendants of the selected elements that will call the handler. If
         *                 the selector is null or omitted, the handler is always called when it reaches the selected element.
         * @param data Data to be passed to the handler in event.data when an event occurs.
         * @see {@link https://api.jquery.com/on/}
         * @since 1.7
         */
        on<TData>(events: JQuery.PlainObject<JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>> | false>,
                  selector: JQuery.Selector | null,
                  data: TData): this;
        /**
         * Attach an event handler function for one or more events to the selected elements.
         *
         * @param events An object in which the string keys represent one or more space-separated event types and optional
         *               namespaces, and the values represent a handler function to be called for the event(s).
         * @param selector A selector string to filter the descendants of the selected elements that will call the handler. If
         *                 the selector is null or omitted, the handler is always called when it reaches the selected element.
         * @see {@link https://api.jquery.com/on/}
         * @since 1.7
         */
        on(events: JQuery.PlainObject<JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false>,
           selector: JQuery.Selector): this// tslint:disable-line:unified-signatures
        /**
         * Attach an event handler function for one or more events to the selected elements.
         *
         * @param events An object in which the string keys represent one or more space-separated event types and optional
         *               namespaces, and the values represent a handler function to be called for the event(s).
         * @param data Data to be passed to the handler in event.data when an event occurs.
         * @see {@link https://api.jquery.com/on/}
         * @since 1.7
         */
        on<TData>(events: JQuery.PlainObject<JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>> | false>,
                  data: TData): this;
        /**
         * Attach an event handler function for one or more events to the selected elements.
         *
         * @param events An object in which the string keys represent one or more space-separated event types and optional
         *               namespaces, and the values represent a handler function to be called for the event(s).
         * @see {@link https://api.jquery.com/on/}
         * @since 1.7
         */
        on(events: JQuery.PlainObject<JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false>): this;
        /**
         * Attach a handler to an event for the elements. The handler is executed at most once per element per event type.
         *
         * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".
         * @param selector A selector string to filter the descendants of the selected elements that trigger the event. If the
         *                 selector is null or omitted, the event is always triggered when it reaches the selected element.
         * @param data Data to be passed to the handler in event.data when an event is triggered.
         * @param handler A function to execute when the event is triggered.
         * @see {@link https://api.jquery.com/one/}
         * @since 1.7
         */
        one<TData>(events: string,
                   selector: JQuery.Selector | null,
                   data: TData,
                   handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Attach a handler to an event for the elements. The handler is executed at most once per element per event type.
         *
         * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".
         * @param selector A selector string to filter the descendants of the selected elements that trigger the event. If the
         *                 selector is null or omitted, the event is always triggered when it reaches the selected element.
         * @param handler A function to execute when the event is triggered. The value false is also allowed as a shorthand
         *                for a function that simply does return false.
         * @see {@link https://api.jquery.com/one/}
         * @since 1.7
         */
        one(events: string,
            selector: JQuery.Selector,
            handler: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Attach a handler to an event for the elements. The handler is executed at most once per element per event type.
         *
         * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".
         * @param data Data to be passed to the handler in event.data when an event is triggered.
         * @param handler A function to execute when the event is triggered.
         * @see {@link https://api.jquery.com/one/}
         * @since 1.7
         */
        one<TData>(events: string,
                   data: TData,
                   handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Attach a handler to an event for the elements. The handler is executed at most once per element per event type.
         *
         * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".
         * @param handler A function to execute when the event is triggered. The value false is also allowed as a shorthand
         *                for a function that simply does return false.
         * @see {@link https://api.jquery.com/one/}
         * @since 1.7
         */
        one(events: string,
            handler: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Attach a handler to an event for the elements. The handler is executed at most once per element per event type.
         *
         * @param events An object in which the string keys represent one or more space-separated event types and optional
         *               namespaces, and the values represent a handler function to be called for the event(s).
         * @param selector A selector string to filter the descendants of the selected elements that will call the handler. If
         *                 the selector is null or omitted, the handler is always called when it reaches the selected element.
         * @param data Data to be passed to the handler in event.data when an event occurs.
         * @see {@link https://api.jquery.com/one/}
         * @since 1.7
         */
        one<TData>(events: JQuery.PlainObject<JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>> | false>,
                   selector: JQuery.Selector | null,
                   data: TData): this;
        /**
         * Attach a handler to an event for the elements. The handler is executed at most once per element per event type.
         *
         * @param events An object in which the string keys represent one or more space-separated event types and optional
         *               namespaces, and the values represent a handler function to be called for the event(s).
         * @param selector A selector string to filter the descendants of the selected elements that will call the handler. If
         *                 the selector is null or omitted, the handler is always called when it reaches the selected element.
         * @see {@link https://api.jquery.com/one/}
         * @since 1.7
         */
        one(events: JQuery.PlainObject<JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false>,
            selector: JQuery.Selector): this// tslint:disable-line:unified-signatures
        /**
         * Attach a handler to an event for the elements. The handler is executed at most once per element per event type.
         *
         * @param events An object in which the string keys represent one or more space-separated event types and optional
         *               namespaces, and the values represent a handler function to be called for the event(s).
         * @param data Data to be passed to the handler in event.data when an event occurs.
         * @see {@link https://api.jquery.com/one/}
         * @since 1.7
         */
        one<TData>(events: JQuery.PlainObject<JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>> | false>,
                   data: TData): this;
        /**
         * Attach a handler to an event for the elements. The handler is executed at most once per element per event type.
         *
         * @param events An object in which the string keys represent one or more space-separated event types and optional
         *               namespaces, and the values represent a handler function to be called for the event(s).
         * @see {@link https://api.jquery.com/one/}
         * @since 1.7
         */
        one(events: JQuery.PlainObject<JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false>): this;
        /**
         * Set the CSS outer height of each element in the set of matched elements.
         *
         * @param value A number representing the number of pixels, or a number along with an optional unit of measure
         *              appended (as a string).
         * @see {@link https://api.jquery.com/outerHeight/}
         * @since 1.8.0
         */
        outerHeight(value: string | number | ((this: TElement, index: number, height: number=> string | number)): this;
        /**
         * Get the current computed outer height (including padding, border, and optionally margin) for the
         * first element in the set of matched elements.
         *
         * @param includeMargin A Boolean indicating whether to include the element's margin in the calculation.
         * @see {@link https://api.jquery.com/outerHeight/}
         * @since 1.2.6
         */
        outerHeight(includeMargin?: boolean): number | undefined;
        /**
         * Set the CSS outer width of each element in the set of matched elements.
         *
         * @param value A number representing the number of pixels, or a number along with an optional unit of measure
         *              appended (as a string).
         *              A function returning the outer width to set. Receives the index position of the element in the set
         *              and the old outer width as arguments. Within the function, this refers to the current element in the set.
         * @see {@link https://api.jquery.com/outerWidth/}
         * @since 1.8.0
         */
        outerWidth(value: string | number | ((this: TElement, index: number, width: number=> string | number)): this;
        /**
         * Get the current computed outer width (including padding, border, and optionally margin) for the
         * first element in the set of matched elements.
         *
         * @param includeMargin A Boolean indicating whether to include the element's margin in the calculation.
         * @see {@link https://api.jquery.com/outerWidth/}
         * @since 1.2.6
         */
        outerWidth(includeMargin?: boolean): number | undefined;
        /**
         * Get the parent of each element in the current set of matched elements, optionally filtered by a selector.
         *
         * @param selector A string containing a selector expression to match elements against.
         * @see {@link https://api.jquery.com/parent/}
         * @since 1.0
         */
        parent(selector?: JQuery.Selector): this;
        /**
         * Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector.
         *
         * @param selector A string containing a selector expression to match elements against.
         * @see {@link https://api.jquery.com/parents/}
         * @since 1.0
         */
        parents(selector?: JQuery.Selector): this;
        /**
         * Get the ancestors of each element in the current set of matched elements, up to but not including
         * the element matched by the selector, DOM node, or jQuery object.
         *
         * @param selector A string containing a selector expression to indicate where to stop matching ancestor elements.
         *                 A DOM node or jQuery object indicating where to stop matching ancestor elements.
         * @param filter A string containing a selector expression to match elements against.
         * @see {@link https://api.jquery.com/parentsUntil/}
         * @since 1.4
         * @since 1.6
         */
        parentsUntil(selector?: JQuery.Selector | Element | JQuery, filter?: JQuery.Selector): this;
        /**
         * Get the current coordinates of the first element in the set of matched elements, relative to the offset parent.
         *
         * @see {@link https://api.jquery.com/position/}
         * @since 1.2
         */
        position(): JQuery.Coordinates;
        /**
         * Insert content, specified by the parameter, to the beginning of each element in the set of matched elements.
         *
         * @param contents One or more additional DOM elements, text nodes, arrays of elements and text nodes, HTML strings, or
         *                 jQuery objects to insert at the beginning of each element in the set of matched elements.
         * @see {@link https://api.jquery.com/prepend/}
         * @since 1.0
         */
        prepend(...contents: Array<JQuery.htmlString | JQuery.TypeOrArray<JQuery.Node | JQuery<JQuery.Node>>>): this;
        /**
         * Insert content, specified by the parameter, to the beginning of each element in the set of matched elements.
         *
         * @param fn A function that returns an HTML string, DOM element(s), text node(s), or jQuery object to insert at
         *           the beginning of each element in the set of matched elements. Receives the index position of the
         *           element in the set and the old HTML value of the element as arguments. Within the function, this
         *           refers to the current element in the set.
         * @see {@link https://api.jquery.com/prepend/}
         * @since 1.4
         */
        prepend(fn: (this: TElement, index: number, html: string=> JQuery.htmlString | JQuery.TypeOrArray<JQuery.Node | JQuery<JQuery.Node>>): this;
        /**
         * Insert every element in the set of matched elements to the beginning of the target.
         *
         * @param target A selector, element, HTML string, array of elements, or jQuery object; the matched set of elements
         *               will be inserted at the beginning of the element(s) specified by this parameter.
         * @see {@link https://api.jquery.com/prependTo/}
         * @since 1.0
         */
        prependTo(target: JQuery.Selector | JQuery.htmlString | JQuery.TypeOrArray<Element> | JQuery): this;
        /**
         * Get the immediately preceding sibling of each element in the set of matched elements. If a selector
         * is provided, it retrieves the previous sibling only if it matches that selector.
         *
         * @param selector A string containing a selector expression to match elements against.
         * @see {@link https://api.jquery.com/prev/}
         * @since 1.0
         */
        prev(selector?: JQuery.Selector): this;
        /**
         * Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector.
         *
         * @param selector A string containing a selector expression to match elements against.
         * @see {@link https://api.jquery.com/prevAll/}
         * @since 1.2
         */
        prevAll(selector?: JQuery.Selector): this;
        /**
         * Get all preceding siblings of each element up to but not including the element matched by the
         * selector, DOM node, or jQuery object.
         *
         * @param selector A string containing a selector expression to indicate where to stop matching preceding sibling elements.
         *                 A DOM node or jQuery object indicating where to stop matching preceding sibling elements.
         * @param filter A string containing a selector expression to match elements against.
         * @see {@link https://api.jquery.com/prevUntil/}
         * @since 1.4
         * @since 1.6
         */
        prevUntil(selector?: JQuery.Selector | Element | JQuery, filter?: JQuery.Selector): this;
        /**
         * Return a Promise object to observe when all actions of a certain type bound to the collection,
         * queued or not, have finished.
         *
         * @param type The type of queue that needs to be observed.
         * @param target Object onto which the promise methods have to be attached
         * @see {@link https://api.jquery.com/promise/}
         * @since 1.6
         */
        promise<T extends object>(type: string, target: T): T & JQuery.Promise<this>;
        /**
         * Return a Promise object to observe when all actions of a certain type bound to the collection,
         * queued or not, have finished.
         *
         * @param target Object onto which the promise methods have to be attached
         * @see {@link https://api.jquery.com/promise/}
         * @since 1.6
         */
        promise<T extends object>(target: T): T & JQuery.Promise<this>;
        /**
         * Return a Promise object to observe when all actions of a certain type bound to the collection,
         * queued or not, have finished.
         *
         * @param type The type of queue that needs to be observed.
         * @see {@link https://api.jquery.com/promise/}
         * @since 1.6
         */
        promise(type?: string): JQuery.Promise<this>;
        /**
         * Set one or more properties for the set of matched elements.
         *
         * @param propertyName The name of the property to set.
         * @param value A function returning the value to set. Receives the index position of the element in the set and the
         *              old property value as arguments. Within the function, the keyword this refers to the current element.
         * @see {@link https://api.jquery.com/prop/}
         * @since 1.6
         */
        prop(propertyName: string, value: (this: TElement, index: number, oldPropertyValue: any=> any): this;
        /**
         * Set one or more properties for the set of matched elements.
         *
         * @param propertyName The name of the property to set.
         * @param value A value to set for the property.
         * @see {@link https://api.jquery.com/prop/}
         * @since 1.6
         */
        prop(propertyName: string, value: any): this// tslint:disable-line:unified-signatures
        /**
         * Set one or more properties for the set of matched elements.
         *
         * @param properties An object of property-value pairs to set.
         * @see {@link https://api.jquery.com/prop/}
         * @since 1.6
         */
        prop(properties: JQuery.PlainObject): this;
        /**
         * Get the value of a property for the first element in the set of matched elements.
         *
         * @param propertyName The name of the property to get.
         * @see {@link https://api.jquery.com/prop/}
         * @since 1.6
         */
        prop(propertyName: string): any | undefined;
        /**
         * Add a collection of DOM elements onto the jQuery stack.
         *
         * @param elements An array of elements to push onto the stack and make into a new jQuery object.
         * @param name The name of a jQuery method that generated the array of elements.
         * @param args The arguments that were passed in to the jQuery method (for serialization).
         * @see {@link https://api.jquery.com/pushStack/}
         * @since 1.3
         */
        pushStack(elements: ArrayLike<Element>, name: string, args: any[]): this;
        /**
         * Add a collection of DOM elements onto the jQuery stack.
         *
         * @param elements An array of elements to push onto the stack and make into a new jQuery object.
         * @see {@link https://api.jquery.com/pushStack/}
         * @since 1.0
         */
        pushStack(elements: ArrayLike<Element>): this;
        /**
         * Manipulate the queue of functions to be executed, once for each matched element.
         *
         * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue.
         * @param newQueue The new function to add to the queue, with a function to call that will dequeue the next item.
         *                 An array of functions to replace the current queue contents.
         * @see {@link https://api.jquery.com/queue/}
         * @since 1.2
         */
        queue(queueName: string, newQueue: JQuery.TypeOrArray<JQuery.QueueFunction<TElement>>): this;
        /**
         * Manipulate the queue of functions to be executed, once for each matched element.
         *
         * @param newQueue The new function to add to the queue, with a function to call that will dequeue the next item.
         *                 An array of functions to replace the current queue contents.
         * @see {@link https://api.jquery.com/queue/}
         * @since 1.2
         */
        queue(newQueue: JQuery.TypeOrArray<JQuery.QueueFunction<TElement>>): this;
        /**
         * Show the queue of functions to be executed on the matched elements.
         *
         * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue.
         * @see {@link https://api.jquery.com/queue/}
         * @since 1.2
         */
        queue(queueName?: string): JQuery.Queue<Node>;
        /**
         * Specify a function to execute when the DOM is fully loaded.
         *
         * @param handler A function to execute after the DOM is ready.
         * @see {@link https://api.jquery.com/ready/}
         * @since 1.0
         * @deprecated 3.0
         */
        ready(handler: ($: JQueryStatic<TElement>) => void): this;
        /**
         * Remove the set of matched elements from the DOM.
         *
         * @param selector A selector expression that filters the set of matched elements to be removed.
         * @see {@link https://api.jquery.com/remove/}
         * @since 1.0
         */
        remove(selector?: string): this;
        /**
         * Remove an attribute from each element in the set of matched elements.
         *
         * @param attributeName An attribute to remove; as of version 1.7, it can be a space-separated list of attributes.
         * @see {@link https://api.jquery.com/removeAttr/}
         * @since 1.0
         */
        removeAttr(attributeName: string): this;
        /**
         * Remove a single class, multiple classes, or all classes from each element in the set of matched elements.
         *
         * @param className One or more space-separated classes to be removed from the class attribute of each matched element.
         *                  A function returning one or more space-separated class names to be removed. Receives the index
         *                  position of the element in the set and the old class value as arguments.
         * @see {@link https://api.jquery.com/removeClass/}
         * @since 1.0
         * @since 1.4
         */
        removeClass(className?: string | ((this: TElement, index: number, className: string=> string)): this;
        /**
         * Remove a previously-stored piece of data.
         *
         * @param name A string naming the piece of data to delete.
         *             An array or space-separated string naming the pieces of data to delete.
         * @see {@link https://api.jquery.com/removeData/}
         * @since 1.2.3
         * @since 1.7
         */
        removeData(name?: JQuery.TypeOrArray<string>): this;
        /**
         * Remove a property for the set of matched elements.
         *
         * @param propertyName The name of the property to remove.
         * @see {@link https://api.jquery.com/removeProp/}
         * @since 1.6
         */
        removeProp(propertyName: string): this;
        /**
         * Replace each target element with the set of matched elements.
         *
         * @param target A selector string, jQuery object, DOM element, or array of elements indicating which element(s) to replace.
         * @see {@link https://api.jquery.com/replaceAll/}
         * @since 1.2
         */
        replaceAll(target: JQuery.Selector | JQuery | JQuery.TypeOrArray<Element>): this;
        /**
         * Replace each element in the set of matched elements with the provided new content and return the set
         * of elements that was removed.
         *
         * @param newContent The content to insert. May be an HTML string, DOM element, array of DOM elements, or jQuery object.
         *                   A function that returns content with which to replace the set of matched elements.
         * @see {@link https://api.jquery.com/replaceWith/}
         * @since 1.2
         * @since 1.4
         */
        replaceWith(newContent: JQuery.htmlString | JQuery | JQuery.TypeOrArray<Element> | ((this: TElement) => any)): this;
        /**
         * Bind an event handler to the "resize" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/resize/}
         * @since 1.4.3
         */
        resize<TData>(eventData: TData,
                      handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "resize" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/resize/}
         * @since 1.0
         */
        resize(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/scroll/}
         * @since 1.4.3
         */
        scroll<TData>(eventData: TData,
                      handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/scroll/}
         * @since 1.0
         */
        scroll(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Set the current horizontal position of the scroll bar for each of the set of matched elements.
         *
         * @param value An integer indicating the new position to set the scroll bar to.
         * @see {@link https://api.jquery.com/scrollLeft/}
         * @since 1.2.6
         */
        scrollLeft(value: number): this;
        /**
         * Get the current horizontal position of the scroll bar for the first element in the set of matched elements.
         *
         * @see {@link https://api.jquery.com/scrollLeft/}
         * @since 1.2.6
         */
        scrollLeft(): number | undefined;
        /**
         * Set the current vertical position of the scroll bar for each of the set of matched elements.
         *
         * @param value A number indicating the new position to set the scroll bar to.
         * @see {@link https://api.jquery.com/scrollTop/}
         * @since 1.2.6
         */
        scrollTop(value: number): this;
        /**
         * Get the current vertical position of the scroll bar for the first element in the set of matched
         * elements or set the vertical position of the scroll bar for every matched element.
         *
         * @see {@link https://api.jquery.com/scrollTop/}
         * @since 1.2.6
         */
        scrollTop(): number | undefined;
        /**
         * Bind an event handler to the "select" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/select/}
         * @since 1.4.3
         */
        select<TData>(eventData: TData,
                      handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "select" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/select/}
         * @since 1.0
         */
        select(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Encode a set of form elements as a string for submission.
         *
         * @see {@link https://api.jquery.com/serialize/}
         * @since 1.0
         */
        serialize(): string;
        /**
         * Encode a set of form elements as an array of names and values.
         *
         * @see {@link https://api.jquery.com/serializeArray/}
         * @since 1.2
         */
        serializeArray(): JQuery.NameValuePair[];
        /**
         * Display the matched elements.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/show/}
         * @since 1.4.3
         */
        show(duration: JQuery.Duration, easing: string, complete: (this: TElement) => void): this;
        /**
         * Display the matched elements.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing_complete A string indicating which easing function to use for the transition.
         *                        A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/show/}
         * @since 1.0
         * @since 1.4.3
         */
        show(duration: JQuery.Duration, easing_complete: string | ((this: TElement) => void)): this;
        /**
         * Display the matched elements.
         *
         * @param duration_complete_options A string or number determining how long the animation will run.
         *                                  A function to call once the animation is complete, called once per matched element.
         *                                  A map of additional options to pass to the method.
         * @see {@link https://api.jquery.com/show/}
         * @since 1.0
         */
        show(duration_complete_options?: JQuery.Duration | ((this: TElement) => void| JQuery.EffectsOptions<TElement>): this;
        /**
         * Get the siblings of each element in the set of matched elements, optionally filtered by a selector.
         *
         * @param selector A string containing a selector expression to match elements against.
         * @see {@link https://api.jquery.com/siblings/}
         * @since 1.0
         */
        siblings(selector?: JQuery.Selector): this;
        /**
         * Reduce the set of matched elements to a subset specified by a range of indices.
         *
         * @param start An integer indicating the 0-based position at which the elements begin to be selected. If negative,
         *              it indicates an offset from the end of the set.
         * @param end An integer indicating the 0-based position at which the elements stop being selected. If negative,
         *            it indicates an offset from the end of the set. If omitted, the range continues until the end of the set.
         * @see {@link https://api.jquery.com/slice/}
         * @since 1.1.4
         */
        slice(start: number, end?: number): this;
        /**
         * Display the matched elements with a sliding motion.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/slideDown/}
         * @since 1.4.3
         */
        slideDown(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this;
        /**
         * Display the matched elements with a sliding motion.
         *
         * @param duration_easing A string or number determining how long the animation will run.
         *                        A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/slideDown/}
         * @since 1.0
         * @since 1.4.3
         */
        slideDown(duration_easing: JQuery.Duration | string, complete: (this: TElement) => void): this;
        /**
         * Display the matched elements with a sliding motion.
         *
         * @param duration_easing_complete_options A string or number determining how long the animation will run.
         *                                         A string indicating which easing function to use for the transition.
         *                                         A function to call once the animation is complete, called once per matched element.
         *                                         A map of additional options to pass to the method.
         * @see {@link https://api.jquery.com/slideDown/}
         * @since 1.0
         * @since 1.4.3
         */
        slideDown(duration_easing_complete_options?: JQuery.Duration | string | ((this: TElement) => void| JQuery.EffectsOptions<TElement>): this;
        /**
         * Display or hide the matched elements with a sliding motion.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/slideToggle/}
         * @since 1.4.3
         */
        slideToggle(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this;
        /**
         * Display or hide the matched elements with a sliding motion.
         *
         * @param duration_easing A string or number determining how long the animation will run.
         *                        A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/slideToggle/}
         * @since 1.0
         * @since 1.4.3
         */
        slideToggle(duration_easing: JQuery.Duration | string, complete: (this: TElement) => void): this;
        /**
         * Display or hide the matched elements with a sliding motion.
         *
         * @param duration_easing_complete_options A string or number determining how long the animation will run.
         *                                         A string indicating which easing function to use for the transition.
         *                                         A function to call once the animation is complete, called once per matched element.
         *                                         A map of additional options to pass to the method.
         * @see {@link https://api.jquery.com/slideToggle/}
         * @since 1.0
         * @since 1.4.3
         */
        slideToggle(duration_easing_complete_options?: JQuery.Duration | string | ((this: TElement) => void| JQuery.EffectsOptions<TElement>): this;
        /**
         * Hide the matched elements with a sliding motion.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/slideUp/}
         * @since 1.4.3
         */
        slideUp(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this;
        /**
         * Hide the matched elements with a sliding motion.
         *
         * @param duration_easing A string or number determining how long the animation will run.
         *                        A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/slideUp/}
         * @since 1.0
         * @since 1.4.3
         */
        slideUp(duration_easing: JQuery.Duration | string, complete: (this: TElement) => void): this;
        /**
         * Hide the matched elements with a sliding motion.
         *
         * @param duration_easing_complete_options A string or number determining how long the animation will run.
         *                                         A string indicating which easing function to use for the transition.
         *                                         A function to call once the animation is complete, called once per matched element.
         *                                         A map of additional options to pass to the method.
         * @see {@link https://api.jquery.com/slideUp/}
         * @since 1.0
         * @since 1.4.3
         */
        slideUp(duration_easing_complete_options?: JQuery.Duration | string | ((this: TElement) => void| JQuery.EffectsOptions<TElement>): this;
        /**
         * Stop the currently-running animation on the matched elements.
         *
         * @param queue The name of the queue in which to stop animations.
         * @param clearQueue A Boolean indicating whether to remove queued animation as well. Defaults to false.
         * @param jumpToEnd A Boolean indicating whether to complete the current animation immediately. Defaults to false.
         * @see {@link https://api.jquery.com/stop/}
         * @since 1.7
         */
        stop(queue: string, clearQueue?: boolean, jumpToEnd?: boolean): this;
        /**
         * Stop the currently-running animation on the matched elements.
         *
         * @param clearQueue A Boolean indicating whether to remove queued animation as well. Defaults to false.
         * @param jumpToEnd A Boolean indicating whether to complete the current animation immediately. Defaults to false.
         * @see {@link https://api.jquery.com/stop/}
         * @since 1.2
         */
        stop(clearQueue?: boolean, jumpToEnd?: boolean): this;
        /**
         * Bind an event handler to the "submit" JavaScript event, or trigger that event on an element.
         *
         * @param eventData An object containing data that will be passed to the event handler.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/submit/}
         * @since 1.4.3
         */
        submit<TData>(eventData: TData,
                      handler: JQuery.EventHandler<TElement, TData> | JQuery.EventHandlerBase<anyJQuery.Event<TElement, TData>>): this;
        /**
         * Bind an event handler to the "submit" JavaScript event, or trigger that event on an element.
         *
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/submit/}
         * @since 1.0
         */
        submit(handler?: JQuery.EventHandler<TElement> | JQuery.EventHandlerBase<anyJQuery.Event<TElement>> | false): this;
        /**
         * Set the content of each element in the set of matched elements to the specified text.
         *
         * @param text The text to set as the content of each matched element. When Number or Boolean is supplied, it will
         *             be converted to a String representation.
         *             A function returning the text content to set. Receives the index position of the element in the set
         *             and the old text value as arguments.
         * @see {@link https://api.jquery.com/text/}
         * @since 1.0
         * @since 1.4
         */
        text(text: string | number | boolean | ((this: TElement, index: number, text: string=> string | number | boolean)): this;
        /**
         * Get the combined text contents of each element in the set of matched elements, including their descendants.
         *
         * @see {@link https://api.jquery.com/text/}
         * @since 1.0
         */
        text(): string;
        /**
         * Retrieve all the elements contained in the jQuery set, as an array.
         *
         * @see {@link https://api.jquery.com/toArray/}
         * @since 1.4
         */
        toArray(): TElement[];
        /**
         * Display or hide the matched elements.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param easing A string indicating which easing function to use for the transition.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/toggle/}
         * @since 1.4.3
         */
        toggle(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this;
        /**
         * Display or hide the matched elements.
         *
         * @param duration A string or number determining how long the animation will run.
         * @param complete A function to call once the animation is complete, called once per matched element.
         * @see {@link https://api.jquery.com/toggle/}
         * @since 1.0
         */
        toggle(duration: JQuery.Duration, complete: (this: TElement) => void): this;
        /**
         * Display or hide the matched elements.
         *
         * @param duration_complete_options_display A string or number determining how long the animation will run.
         *                                          A function to call once the animation is complete, called once per matched element.
         *                                          A map of additional options to pass to the method.
         *                                          Use true to show the element or false to hide it.
         * @see {@link https://api.jquery.com/toggle/}
         * @since 1.0
         * @since 1.3
         */
        toggle(duration_complete_options_display?: JQuery.Duration | ((this: TElement) => void| JQuery.EffectsOptions<TElement> | boolean): this;
        /**
         * Add or remove one or more classes from each element in the set of matched elements, depending on
         * either the class's presence or the value of the state argument.
         *
         * @param className One or more class names (separated by spaces) to be toggled for each element in the matched set.
         *                  A function that returns class names to be toggled in the class attribute of each element in the
         *                  matched set. Receives the index position of the element in the set, the old class value, and the state as arguments.
         * @param state A Boolean (not just truthy/falsy) value to determine whether the class should be added or removed.
         * @see {@link https://api.jquery.com/toggleClass/}
         * @since 1.0
         * @since 1.3
         * @since 1.4
         */
        toggleClass<TState extends boolean>(className: string | ((this: TElement, index: number, className: string, state: TState) => string),
                                            state?: TState): this;
        /**
         * Add or remove one or more classes from each element in the set of matched elements, depending on
         * either the class's presence or the value of the state argument.
         *
         * @param state A boolean value to determine whether the class should be added or removed.
         * @see {@link https://api.jquery.com/toggleClass/}
         * @since 1.4
         * @deprecated 3.0
         */
        toggleClass(state?: boolean): this;
        /**
         * Execute all handlers and behaviors attached to the matched elements for the given event type.
         *
         * @param eventType A string containing a JavaScript event type, such as click or submit.
         *                  A jQuery.Event object.
         * @param extraParameters Additional parameters to pass along to the event handler.
         * @see {@link https://api.jquery.com/trigger/}
         * @since 1.0
         * @since 1.3
         */
        trigger(eventType: string | JQuery.Event<TElement>, extraParameters?: any[] | JQuery.PlainObject | string | number): this;
        /**
         * Execute all handlers attached to an element for an event.
         *
         * @param eventType A string containing a JavaScript event type, such as click or submit.
         *                  A jQuery.Event object.
         * @param extraParameters Additional parameters to pass along to the event handler.
         * @see {@link https://api.jquery.com/triggerHandler/}
         * @since 1.2
         * @since 1.3
         */
        triggerHandler(eventType: string | JQuery.Event<TElement>, extraParameters?: any[] | JQuery.PlainObject | string | number): undefined | any;
        /**
         * Remove a previously-attached event handler from the elements.
         *
         * @param event A string containing one or more DOM event types, such as "click" or "submit," or custom event names.
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/unbind/}
         * @since 1.0
         * @since 1.4.3
         * @deprecated 3.0
         */
        unbind(event: string, handler: JQuery.EventHandlerBase<anyJQuery.Event<TElement, any>> | false): this;
        /**
         * Remove a previously-attached event handler from the elements.
         *
         * @param event A string containing one or more DOM event types, such as "click" or "submit," or custom event names.
         *              A jQuery.Event object.
         * @see {@link https://api.jquery.com/unbind/}
         * @since 1.0
         * @deprecated 3.0
         */
        unbind(event?: string | JQuery.Event<TElement>): this;
        /**
         * Remove a handler from the event for all elements which match the current selector, based upon a
         * specific set of root elements.
         *
         * @param selector A selector which will be used to filter the event results.
         * @param eventType A string containing a JavaScript event type, such as "click" or "keydown"
         * @param handler A function to execute each time the event is triggered.
         * @see {@link https://api.jquery.com/undelegate/}
         * @since 1.4.2
         * @deprecated 3.0
         */
        undelegate(selector: JQuery.Selector, eventType: string, handler: JQuery.EventHandlerBase<anyJQuery.Event<TElement, any>> | false): this;
        /**
         * Remove a handler from the event for all elements which match the current selector, based upon a
         * specific set of root elements.
         *
         * @param selector A selector which will be used to filter the event results.
         * @param eventTypes A string containing a JavaScript event type, such as "click" or "keydown"
         *                   An object of one or more event types and previously bound functions to unbind from them.
         * @see {@link https://api.jquery.com/undelegate/}
         * @since 1.4.2
         * @since 1.4.3
         * @deprecated 3.0
         */
        undelegate(selector: JQuery.Selector, eventTypes: string | JQuery.PlainObject<JQuery.EventHandlerBase<anyJQuery.Event<TElement, any>> | false>): this;
        /**
         * Remove a handler from the event for all elements which match the current selector, based upon a
         * specific set of root elements.
         *
         * @param namespace A selector which will be used to filter the event results.
         * @see {@link https://api.jquery.com/undelegate/}
         * @since 1.4.2
         * @since 1.6
         * @deprecated 3.0
         */
        undelegate(namespace?: string): this;
        /**
         * Remove the parents of the set of matched elements from the DOM, leaving the matched elements in their place.
         *
         * @param selector A selector to check the parent element against. If an element's parent does not match the selector,
         *                 the element won't be unwrapped.
         * @see {@link https://api.jquery.com/unwrap/}
         * @since 1.4
         * @since 3.0
         */
        unwrap(selector?: string): this;
        /**
         * Set the value of each element in the set of matched elements.
         *
         * @param value A string of text, a number, or an array of strings corresponding to the value of each matched
         *              element to set as selected/checked.
         *              A function returning the value to set. this is the current element. Receives the index position of
         *              the element in the set and the old value as arguments.
         * @see {@link https://api.jquery.com/val/}
         * @since 1.0
         * @since 1.4
         */
        val(value: string | number | string[] | ((this: TElement, index: number, value: string=> string)): this;
        /**
         * Get the current value of the first element in the set of matched elements.
         *
         * @see {@link https://api.jquery.com/val/}
         * @since 1.0
         */
        val(): string | number | string[] | undefined;
        /**
         * Set the CSS width of each element in the set of matched elements.
         *
         * @param value An integer representing the number of pixels, or an integer along with an optional unit of measure
         *              appended (as a string).
         *              A function returning the width to set. Receives the index position of the element in the set and the
         *              old width as arguments. Within the function, this refers to the current element in the set.
         * @see {@link https://api.jquery.com/width/}
         * @since 1.0
         * @since 1.4.1
         */
        width(value: string | number | ((this: TElement, index: number, value: number=> string | number)): this;
        /**
         * Get the current computed width for the first element in the set of matched elements.
         *
         * @see {@link https://api.jquery.com/width/}
         * @since 1.0
         */
        width(): number | undefined;
        /**
         * Wrap an HTML structure around each element in the set of matched elements.
         *
         * @param wrappingElement A selector, element, HTML string, or jQuery object specifying the structure to wrap around the
         *                        matched elements. When you pass a jQuery collection containing more than one element, or a selector
         *                        matching more than one element, the first element will be used.
         *                        A callback function returning the HTML content or jQuery object to wrap around the matched elements.
         *                        Receives the index position of the element in the set as an argument. Within the function, this
         *                        refers to the current element in the set.
         * @see {@link https://api.jquery.com/wrap/}
         * @since 1.0
         * @since 1.4
         */
        wrap(wrappingElement: JQuery.Selector | JQuery.htmlString | Element | JQuery | ((this: TElement, index: number=> string | JQuery)): this;
        /**
         * Wrap an HTML structure around all elements in the set of matched elements.
         *
         * @param wrappingElement A selector, element, HTML string, or jQuery object specifying the structure to wrap around the matched elements.
         *                        A callback function returning the HTML content or jQuery object to wrap around all the matched
         *                        elements. Within the function, this refers to the first element in the set. Prior to jQuery 3.0, the
         *                        callback was incorrectly called for every element in the set and received the index position of the
         *                        element in the set as an argument.
         * @see {@link https://api.jquery.com/wrapAll/}
         * @since 1.2
         * @since 1.4
         */
        wrapAll(wrappingElement: JQuery.Selector | JQuery.htmlString | Element | JQuery | ((this: TElement) => string | JQuery)): this;
        /**
         * Wrap an HTML structure around the content of each element in the set of matched elements.
         *
         * @param wrappingElement An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap
         *                        around the content of the matched elements.
         *                        A callback function which generates a structure to wrap around the content of the matched elements.
         *                        Receives the index position of the element in the set as an argument. Within the function, this
         *                        refers to the current element in the set.
         * @see {@link https://api.jquery.com/wrapInner/}
         * @since 1.2
         * @since 1.4
         */
        wrapInner(wrappingElement: JQuery.Selector | JQuery.htmlString | Element | JQuery | ((this: TElement, index: number=> string | JQuery | Element)): this;
    
        [n: number]: TElement;
    }
    
    declare namespace JQuery {
        type TypeOrArray<T> = T | T[];
        type Node = Element | Text | Comment;
    
        /**
         * A string is designated htmlString in jQuery documentation when it is used to represent one or more
         * DOM elements, typically to be created and inserted in the document. When passed as an argument of
         * the jQuery() function, the string is identified as HTML if it starts with <tag ... >) and is parsed
         * as such until the final > character. Prior to jQuery 1.9, a string was considered to be HTML if it
         * contained <tag ... > anywhere within the string.
         */
        type htmlString = string;
        /**
         * A selector is used in jQuery to select DOM elements from a DOM document. That document is, in most
         * cases, the DOM document present in all browsers, but can also be an XML document received via Ajax.
         */
        type Selector = string;
    
        /**
         * The PlainObject type is a JavaScript object containing zero or more key-value pairs. The plain
         * object is, in other words, an Object object. It is designated "plain" in jQuery documentation to
         * distinguish it from other kinds of JavaScript objects: for example, null, user-defined arrays, and
         * host objects such as document, all of which have a typeof value of "object."
         */
        interface PlainObject<T = any> {
            [key: string]: T;
        }
    
        // region Ajax
    
        interface AjaxSettings<TContext = anyextends Ajax.AjaxSettingsBase<TContext> {
            /**
             * A string containing the URL to which the request is sent.
             */
            url?: string;
            /**
             * A pre-request callback function that can be used to modify the jqXHR (in jQuery 1.4.x,
             * XMLHTTPRequest) object before it is sent. Use this to set custom headers, etc. The jqXHR and
             * settings objects are passed as arguments. This is an Ajax Event. Returning false in the beforeSend
             * function will cancel the request. As of jQuery 1.5, the beforeSend option will be called regardless
             * of the type of request.
             */
            beforeSend?(this: TContext, jqXHR: jqXHR, settings: AjaxSettings<TContext>): false | void;
        }
    
        interface UrlAjaxSettings<TContext = anyextends Ajax.AjaxSettingsBase<TContext> {
            /**
             * A string containing the URL to which the request is sent.
             */
            url: string;
            /**
             * A pre-request callback function that can be used to modify the jqXHR (in jQuery 1.4.x,
             * XMLHTTPRequest) object before it is sent. Use this to set custom headers, etc. The jqXHR and
             * settings objects are passed as arguments. This is an Ajax Event. Returning false in the beforeSend
             * function will cancel the request. As of jQuery 1.5, the beforeSend option will be called regardless
             * of the type of request.
             */
            beforeSend?(this: TContext, jqXHR: jqXHR, settings: UrlAjaxSettings<TContext>): false | void;
        }
    
        namespace Ajax {
            type SuccessTextStatus = 'success' | 'notmodified' | 'nocontent';
            type ErrorTextStatus = 'timeout' | 'error' | 'abort' | 'parsererror';
            type TextStatus = SuccessTextStatus | ErrorTextStatus;
    
            interface SuccessCallback<TContext> {
                (this: TContext, data: any, textStatus: SuccessTextStatus, jqXHR: JQuery.jqXHR): void;
            }
    
            interface ErrorCallback<TContext> {
                (this: TContext, jqXHR: jqXHR, textStatus: ErrorTextStatus, errorThrown: string): void;
            }
    
            interface CompleteCallback<TContext> {
                (this: TContext, jqXHR: jqXHR, textStatus: TextStatus): void;
            }
    
            /**
             * @see {@link http://api.jquery.com/jquery.ajax/#jQuery-ajax-settings}
             */
            interface AjaxSettingsBase<TContext> {
                /**
                 * A set of key/value pairs that map a given dataType to its MIME type, which gets sent in the Accept
                 * request header. This header tells the server what kind of response it will accept in return.
                 */
                accepts?: PlainObject<string>;
                /**
                 * By default, all requests are sent asynchronously (i.e. this is set to true by default). If you need
                 * synchronous requests, set this option to false. Cross-domain requests and dataType: "jsonp" requests
                 * do not support synchronous operation. Note that synchronous requests may temporarily lock the
                 * browser, disabling any actions while the request is active. As of jQuery 1.8, the use of async:
                 * false with jqXHR ($.Deferred) is deprecated; you must use the success/error/complete callback
                 * options instead of the corresponding methods of the jqXHR object such as jqXHR.done().
                 */
                async?: boolean;
                /**
                 * A pre-request callback function that can be used to modify the jqXHR (in jQuery 1.4.x,
                 * XMLHTTPRequest) object before it is sent. Use this to set custom headers, etc. The jqXHR and
                 * settings objects are passed as arguments. This is an Ajax Event. Returning false in the beforeSend
                 * function will cancel the request. As of jQuery 1.5, the beforeSend option will be called regardless
                 * of the type of request.
                 */
                beforeSend?(this: TContext, jqXHR: jqXHR, settings: AjaxSettingsBase<TContext>): false | void;
                /**
                 * If set to false, it will force requested pages not to be cached by the browser. Note: Setting cache
                 * to false will only work correctly with HEAD and GET requests. It works by appending "_={timestamp}"
                 * to the GET parameters. The parameter is not needed for other types of requests, except in IE8 when a
                 * POST is made to a URL that has already been requested by a GET.
                 */
                cache?: boolean;
                /**
                 * A function to be called when the request finishes (after success and error callbacks are executed).
                 * The function gets passed two arguments: The jqXHR (in jQuery 1.4.x, XMLHTTPRequest) object and a
                 * string categorizing the status of the request ("success", "notmodified", "nocontent", "error",
                 * "timeout", "abort", or "parsererror"). As of jQuery 1.5, the complete setting can accept an array of
                 * functions. Each function will be called in turn. This is an Ajax Event.
                 */
                complete?: TypeOrArray<Ajax.CompleteCallback<TContext>>;
                /**
                 * An object of string/regular-expression pairs that determine how jQuery will parse the response,
                 * given its content type.
                 */
                contents?: PlainObject<RegExp>;
                /**
                 * When sending data to the server, use this content type. Default is
                 * "application/x-www-form-urlencoded; charset=UTF-8", which is fine for most cases. If you explicitly
                 * pass in a content-type to $.ajax(), then it is always sent to the server (even if no data is sent).
                 * As of jQuery 1.6 you can pass false to tell jQuery to not set any content type header. Note: The W3C
                 * XMLHttpRequest specification dictates that the charset is always UTF-8; specifying another charset
                 * will not force the browser to change the encoding. Note: For cross-domain requests, setting the
                 * content type to anything other than application/x-www-form-urlencoded, multipart/form-data, or
                 * text/plain will trigger the browser to send a preflight OPTIONS request to the server.
                 */
                contentType?: string | false;
                /**
                 * This object will be the context of all Ajax-related callbacks. By default, the context is an object
                 * that represents the Ajax settings used in the call ($.ajaxSettings merged with the settings passed to $.ajax).
                 */
                context?: TContext;
                /**
                 * An object containing dataType-to-dataType converters. Each converter's value is a function that
                 * returns the transformed value of the response.
                 */
                converters?: PlainObject<((value: any=> any| true>;
                /**
                 * If you wish to force a crossDomain request (such as JSONP) on the same domain, set the value of
                 * crossDomain to true. This allows, for example, server-side redirection to another domain.
                 */
                crossDomain?: boolean;
                /**
                 * Data to be sent to the server. It is converted to a query string, if not already a string. It's
                 * appended to the url for GET-requests. See processData option to prevent this automatic processing.
                 * Object must be Key/Value pairs. If value is an Array, jQuery serializes multiple values with same
                 * key based on the value of the traditional setting (described below).
                 */
                data?: PlainObject | string;
                /**
                 * A function to be used to handle the raw response data of XMLHttpRequest. This is a pre-filtering
                 * function to sanitize the response. You should return the sanitized data. The function accepts two
                 * arguments: The raw data returned from the server and the 'dataType' parameter.
                 */
                dataFilter?(data: string, type: string): any;
                /**
                 * The type of data that you're expecting back from the server. If none is specified, jQuery will try
                 * to infer it based on the MIME type of the response (an XML MIME type will yield XML, in 1.4 JSON
                 * will yield a JavaScript object, in 1.4 script will execute the script, and anything else will be
                 * returned as a string). The available types (and the result passed as the first argument to your
                 * success callback) are:
                 *
                 * "xml": Returns a XML document that can be processed via jQuery.
                 *
                 * "html": Returns HTML as plain text; included script tags are evaluated when inserted in the DOM.
                 *
                 * "script": Evaluates the response as JavaScript and returns it as plain text. Disables caching by
                 * appending a query string parameter, _=[TIMESTAMP], to the URL unless the cache option is set to
                 * true. Note: This will turn POSTs into GETs for remote-domain requests.
                 *
                 * "json": Evaluates the response as JSON and returns a JavaScript object. Cross-domain "json" requests
                 * are converted to "jsonp" unless the request includes jsonp: false in its request options. The JSON
                 * data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. As of
                 * jQuery 1.9, an empty response is also rejected; the server should return a response of null or {}
                 * instead. (See json.org for more information on proper JSON formatting.)
                 *
                 * "jsonp": Loads in a JSON block using JSONP. Adds an extra "?callback=?" to the end of your URL to
                 * specify the callback. Disables caching by appending a query string parameter, "_=[TIMESTAMP]", to
                 * the URL unless the cache option is set to true.
                 *
                 * "text": A plain text string.
                 *
                 * multiple, space-separated values: As of jQuery 1.5, jQuery can convert a dataType from what it
                 * received in the Content-Type header to what you require. For example, if you want a text response to
                 * be treated as XML, use "text xml" for the dataType. You can also make a JSONP request, have it
                 * received as text, and interpreted by jQuery as XML: "jsonp text xml". Similarly, a shorthand string
                 * such as "jsonp xml" will first attempt to convert from jsonp to xml, and, failing that, convert from
                 * jsonp to text, and then from text to xml.
                 */
                dataType?: 'xml' | 'html' | 'script' | 'json' | 'jsonp' | 'text' | string;
                /**
                 * A function to be called if the request fails. The function receives three arguments: The jqXHR (in
                 * jQuery 1.4.x, XMLHttpRequest) object, a string describing the type of error that occurred and an
                 * optional exception object, if one occurred. Possible values for the second argument (besides null)
                 * are "timeout", "error", "abort", and "parsererror". When an HTTP error occurs, errorThrown receives
                 * the textual portion of the HTTP status, such as "Not Found" or "Internal Server Error." As of jQuery
                 * 1.5, the error setting can accept an array of functions. Each function will be called in turn. Note:
                 * This handler is not called for cross-domain script and cross-domain JSONP requests. This is an Ajax Event.
                 */
                error?: TypeOrArray<Ajax.ErrorCallback<TContext>>;
                /**
                 * Whether to trigger global Ajax event handlers for this request. The default is true. Set to false to
                 * prevent the global handlers like ajaxStart or ajaxStop from being triggered. This can be used to
                 * control various Ajax Events.
                 */
                global?: boolean;
                /**
                 * An object of additional header key/value pairs to send along with requests using the XMLHttpRequest
                 * transport. The header X-Requested-With: XMLHttpRequest is always added, but its default
                 * XMLHttpRequest value can be changed here. Values in the headers setting can also be overwritten from
                 * within the beforeSend function.
                 */
                headers?: PlainObject<string | null | undefined>;
                /**
                 * Allow the request to be successful only if the response has changed since the last request. This is
                 * done by checking the Last-Modified header. Default value is false, ignoring the header. In jQuery
                 * 1.4 this technique also checks the 'etag' specified by the server to catch unmodified data.
                 */
                ifModified?: boolean;
                /**
                 * Allow the current environment to be recognized as "local," (e.g. the filesystem), even if jQuery
                 * does not recognize it as such by default. The following protocols are currently recognized as local:
                 * file, *-extension, and widget. If the isLocal setting needs modification, it is recommended to do so
                 * once in the $.ajaxSetup() method.
                 */
                isLocal?: boolean;
                /**
                 * Override the callback function name in a JSONP request. This value will be used instead of
                 * 'callback' in the 'callback=?' part of the query string in the url. So {jsonp:'onJSONPLoad'} would
                 * result in 'onJSONPLoad=?' passed to the server. As of jQuery 1.5, setting the jsonp option to false
                 * prevents jQuery from adding the "?callback" string to the URL or attempting to use "=?" for
                 * transformation. In this case, you should also explicitly set the jsonpCallback setting. For example,
                 * { jsonp: false, jsonpCallback: "callbackName" }. If you don't trust the target of your Ajax
                 * requests, consider setting the jsonp property to false for security reasons.
                 */
                jsonp?: string | false;
                /**
                 * Specify the callback function name for a JSONP request. This value will be used instead of the
                 * random name automatically generated by jQuery. It is preferable to let jQuery generate a unique name
                 * as it'll make it easier to manage the requests and provide callbacks and error handling. You may
                 * want to specify the callback when you want to enable better browser caching of GET requests. As of
                 * jQuery 1.5, you can also use a function for this setting, in which case the value of jsonpCallback
                 * is set to the return value of that function.
                 */
                jsonpCallback?: string | ((this: TContext) => string);
                /**
                 * The HTTP method to use for the request (e.g. "POST", "GET", "PUT").
                 */
                method?: string;
                /**
                 * A mime type to override the XHR mime type.
                 */
                mimeType?: string;
                /**
                 * A password to be used with XMLHttpRequest in response to an HTTP access authentication request.
                 */
                password?: string;
                /**
                 * By default, data passed in to the data option as an object (technically, anything other than a
                 * string) will be processed and transformed into a query string, fitting to the default content-type
                 * "application/x-www-form-urlencoded". If you want to send a DOMDocument, or other non-processed data,
                 * set this option to false.
                 */
                processData?: boolean;
                /**
                 * Only applies when the "script" transport is used (e.g., cross-domain requests with "jsonp" or
                 * "script" dataType and "GET" type). Sets the charset attribute on the script tag used in the request.
                 * Used when the character set on the local page is not the same as the one on the remote script.
                 */
                scriptCharset?: string;
                /**
                 * An object of numeric HTTP codes and functions to be called when the response has the corresponding
                 * code.
                 *
                 * If the request is successful, the status code functions take the same parameters as the success
                 * callback; if it results in an error (including 3xx redirect), they take the same parameters as the error callback.
                 */
                statusCode?: StatusCodeCallbacks<TContext>;
                /**
                 * A function to be called if the request succeeds. The function gets passed three arguments: The data
                 * returned from the server, formatted according to the dataType parameter or the dataFilter callback
                 * function, if specified; a string describing the status; and the jqXHR (in jQuery 1.4.x,
                 * XMLHttpRequest) object. As of jQuery 1.5, the success setting can accept an array of functions. Each
                 * function will be called in turn. This is an Ajax Event.
                 */
                success?: TypeOrArray<Ajax.SuccessCallback<TContext>>;
                /**
                 * Set a timeout (in milliseconds) for the request. A value of 0 means there will be no timeout. This
                 * will override any global timeout set with $.ajaxSetup(). The timeout period starts at the point the
                 * $.ajax call is made; if several other requests are in progress and the browser has no connections
                 * available, it is possible for a request to time out before it can be sent. In jQuery 1.4.x and
                 * below, the XMLHttpRequest object will be in an invalid state if the request times out; accessing any
                 * object members may throw an exception. In Firefox 3.0+ only, script and JSONP requests cannot be
                 * cancelled by a timeout; the script will run even if it arrives after the timeout period.
                 */
                timeout?: number;
                /**
                 * Set this to true if you wish to use the traditional style of param serialization.
                 */
                traditional?: boolean;
                /**
                 * An alias for method. You should use type if you're using versions of jQuery prior to 1.9.0.
                 */
                type?: string;
                /**
                 * A username to be used with XMLHttpRequest in response to an HTTP access authentication request.
                 */
                username?: string;
                // ActiveXObject requires "lib": ["scripthost"] which consumers would also require
                /**
                 * Callback for creating the XMLHttpRequest object. Defaults to the ActiveXObject when available (IE),
                 * the XMLHttpRequest otherwise. Override to provide your own implementation for XMLHttpRequest or
                 * enhancements to the factory.
                 */
                xhr?(): XMLHttpRequest;
                /**
                 * An object of fieldName-fieldValue pairs to set on the native XHR object.
                 *
                 * In jQuery 1.5, the withCredentials property was not propagated to the native XHR and thus CORS
                 * requests requiring it would ignore this flag. For this reason, we recommend using jQuery 1.5.1+
                 * should you require the use of it.
                 */
                xhrFields?: XHRFields;
            }
    
            type StatusCodeCallbacks<TContext> = {
                // region Success Status Codes
    
                // jQuery treats 2xx and 304 status codes as a success
    
                200?: SuccessCallback<TContext>;
                201?: SuccessCallback<TContext>;
                202?: SuccessCallback<TContext>;
                203?: SuccessCallback<TContext>;
                204?: SuccessCallback<TContext>;
                205?: SuccessCallback<TContext>;
                206?: SuccessCallback<TContext>;
                207?: SuccessCallback<TContext>;
                208?: SuccessCallback<TContext>;
                209?: SuccessCallback<TContext>;
                210?: SuccessCallback<TContext>;
                211?: SuccessCallback<TContext>;
                212?: SuccessCallback<TContext>;
                213?: SuccessCallback<TContext>;
                214?: SuccessCallback<TContext>;
                215?: SuccessCallback<TContext>;
                216?: SuccessCallback<TContext>;
                217?: SuccessCallback<TContext>;
                218?: SuccessCallback<TContext>;
                219?: SuccessCallback<TContext>;
                220?: SuccessCallback<TContext>;
                221?: SuccessCallback<TContext>;
                222?: SuccessCallback<TContext>;
                223?: SuccessCallback<TContext>;
                224?: SuccessCallback<TContext>;
                225?: SuccessCallback<TContext>;
                226?: SuccessCallback<TContext>;
                227?: SuccessCallback<TContext>;
                228?: SuccessCallback<TContext>;
                229?: SuccessCallback<TContext>;
                230?: SuccessCallback<TContext>;
                231?: SuccessCallback<TContext>;
                232?: SuccessCallback<TContext>;
                233?: SuccessCallback<TContext>;
                234?: SuccessCallback<TContext>;
                235?: SuccessCallback<TContext>;
                236?: SuccessCallback<TContext>;
                237?: SuccessCallback<TContext>;
                238?: SuccessCallback<TContext>;
                239?: SuccessCallback<TContext>;
                240?: SuccessCallback<TContext>;
                241?: SuccessCallback<TContext>;
                242?: SuccessCallback<TContext>;
                243?: SuccessCallback<TContext>;
                244?: SuccessCallback<TContext>;
                245?: SuccessCallback<TContext>;
                246?: SuccessCallback<TContext>;
                247?: SuccessCallback<TContext>;
                248?: SuccessCallback<TContext>;
                249?: SuccessCallback<TContext>;
                250?: SuccessCallback<TContext>;
                251?: SuccessCallback<TContext>;
                252?: SuccessCallback<TContext>;
                253?: SuccessCallback<TContext>;
                254?: SuccessCallback<TContext>;
                255?: SuccessCallback<TContext>;
                256?: SuccessCallback<TContext>;
                257?: SuccessCallback<TContext>;
                258?: SuccessCallback<TContext>;
                259?: SuccessCallback<TContext>;
                260?: SuccessCallback<TContext>;
                261?: SuccessCallback<TContext>;
                262?: SuccessCallback<TContext>;
                263?: SuccessCallback<TContext>;
                264?: SuccessCallback<TContext>;
                265?: SuccessCallback<TContext>;
                266?: SuccessCallback<TContext>;
                267?: SuccessCallback<TContext>;
                268?: SuccessCallback<TContext>;
                269?: SuccessCallback<TContext>;
                270?: SuccessCallback<TContext>;
                271?: SuccessCallback<TContext>;
                272?: SuccessCallback<TContext>;
                273?: SuccessCallback<TContext>;
                274?: SuccessCallback<TContext>;
                275?: SuccessCallback<TContext>;
                276?: SuccessCallback<TContext>;
                277?: SuccessCallback<TContext>;
                278?: SuccessCallback<TContext>;
                279?: SuccessCallback<TContext>;
                280?: SuccessCallback<TContext>;
                281?: SuccessCallback<TContext>;
                282?: SuccessCallback<TContext>;
                283?: SuccessCallback<TContext>;
                284?: SuccessCallback<TContext>;
                285?: SuccessCallback<TContext>;
                286?: SuccessCallback<TContext>;
                287?: SuccessCallback<TContext>;
                288?: SuccessCallback<TContext>;
                289?: SuccessCallback<TContext>;
                290?: SuccessCallback<TContext>;
                291?: SuccessCallback<TContext>;
                292?: SuccessCallback<TContext>;
                293?: SuccessCallback<TContext>;
                294?: SuccessCallback<TContext>;
                295?: SuccessCallback<TContext>;
                296?: SuccessCallback<TContext>;
                297?: SuccessCallback<TContext>;
                298?: SuccessCallback<TContext>;
                299?: SuccessCallback<TContext>;
                304?: SuccessCallback<TContext>;
    
                // endregion
    
                // region Error Status Codes
    
                300?: ErrorCallback<TContext>;
                301?: ErrorCallback<TContext>;
                302?: ErrorCallback<TContext>;
                303?: ErrorCallback<TContext>;
                305?: ErrorCallback<TContext>;
                306?: ErrorCallback<TContext>;
                307?: ErrorCallback<TContext>;
                308?: ErrorCallback<TContext>;
                309?: ErrorCallback<TContext>;
                310?: ErrorCallback<TContext>;
                311?: ErrorCallback<TContext>;
                312?: ErrorCallback<TContext>;
                313?: ErrorCallback<TContext>;
                314?: ErrorCallback<TContext>;
                315?: ErrorCallback<TContext>;
                316?: ErrorCallback<TContext>;
                317?: ErrorCallback<TContext>;
                318?: ErrorCallback<TContext>;
                319?: ErrorCallback<TContext>;
                320?: ErrorCallback<TContext>;
                321?: ErrorCallback<TContext>;
                322?: ErrorCallback<TContext>;
                323?: ErrorCallback<TContext>;
                324?: ErrorCallback<TContext>;
                325?: ErrorCallback<TContext>;
                326?: ErrorCallback<TContext>;
                327?: ErrorCallback<TContext>;
                328?: ErrorCallback<TContext>;
                329?: ErrorCallback<TContext>;
                330?: ErrorCallback<TContext>;
                331?: ErrorCallback<TContext>;
                332?: ErrorCallback<TContext>;
                333?: ErrorCallback<TContext>;
                334?: ErrorCallback<TContext>;
                335?: ErrorCallback<TContext>;
                336?: ErrorCallback<TContext>;
                337?: ErrorCallback<TContext>;
                338?: ErrorCallback<TContext>;
                339?: ErrorCallback<TContext>;
                340?: ErrorCallback<TContext>;
                341?: ErrorCallback<TContext>;
                342?: ErrorCallback<TContext>;
                343?: ErrorCallback<TContext>;
                344?: ErrorCallback<TContext>;
                345?: ErrorCallback<TContext>;
                346?: ErrorCallback<TContext>;
                347?: ErrorCallback<TContext>;
                348?: ErrorCallback<TContext>;
                349?: ErrorCallback<TContext>;
                350?: ErrorCallback<TContext>;
                351?: ErrorCallback<TContext>;
                352?: ErrorCallback<TContext>;
                353?: ErrorCallback<TContext>;
                354?: ErrorCallback<TContext>;
                355?: ErrorCallback<TContext>;
                356?: ErrorCallback<TContext>;
                357?: ErrorCallback<TContext>;
                358?: ErrorCallback<TContext>;
                359?: ErrorCallback<TContext>;
                360?: ErrorCallback<TContext>;
                361?: ErrorCallback<TContext>;
                362?: ErrorCallback<TContext>;
                363?: ErrorCallback<TContext>;
                364?: ErrorCallback<TContext>;
                365?: ErrorCallback<TContext>;
                366?: ErrorCallback<TContext>;
                367?: ErrorCallback<TContext>;
                368?: ErrorCallback<TContext>;
                369?: ErrorCallback<TContext>;
                370?: ErrorCallback<TContext>;
                371?: ErrorCallback<TContext>;
                372?: ErrorCallback<TContext>;
                373?: ErrorCallback<TContext>;
                374?: ErrorCallback<TContext>;
                375?: ErrorCallback<TContext>;
                376?: ErrorCallback<TContext>;
                377?: ErrorCallback<TContext>;
                378?: ErrorCallback<TContext>;
                379?: ErrorCallback<TContext>;
                380?: ErrorCallback<TContext>;
                381?: ErrorCallback<TContext>;
                382?: ErrorCallback<TContext>;
                383?: ErrorCallback<TContext>;
                384?: ErrorCallback<TContext>;
                385?: ErrorCallback<TContext>;
                386?: ErrorCallback<TContext>;
                387?: ErrorCallback<TContext>;
                388?: ErrorCallback<TContext>;
                389?: ErrorCallback<TContext>;
                390?: ErrorCallback<TContext>;
                391?: ErrorCallback<TContext>;
                392?: ErrorCallback<TContext>;
                393?: ErrorCallback<TContext>;
                394?: ErrorCallback<TContext>;
                395?: ErrorCallback<TContext>;
                396?: ErrorCallback<TContext>;
                397?: ErrorCallback<TContext>;
                398?: ErrorCallback<TContext>;
                399?: ErrorCallback<TContext>;
                400?: ErrorCallback<TContext>;
                401?: ErrorCallback<TContext>;
                402?: ErrorCallback<TContext>;
                403?: ErrorCallback<TContext>;
                404?: ErrorCallback<TContext>;
                405?: ErrorCallback<TContext>;
                406?: ErrorCallback<TContext>;
                407?: ErrorCallback<TContext>;
                408?: ErrorCallback<TContext>;
                409?: ErrorCallback<TContext>;
                410?: ErrorCallback<TContext>;
                411?: ErrorCallback<TContext>;
                412?: ErrorCallback<TContext>;
                413?: ErrorCallback<TContext>;
                414?: ErrorCallback<TContext>;
                415?: ErrorCallback<TContext>;
                416?: ErrorCallback<TContext>;
                417?: ErrorCallback<TContext>;
                418?: ErrorCallback<TContext>;
                419?: ErrorCallback<TContext>;
                420?: ErrorCallback<TContext>;
                421?: ErrorCallback<TContext>;
                422?: ErrorCallback<TContext>;
                423?: ErrorCallback<TContext>;
                424?: ErrorCallback<TContext>;
                425?: ErrorCallback<TContext>;
                426?: ErrorCallback<TContext>;
                427?: ErrorCallback<TContext>;
                428?: ErrorCallback<TContext>;
                429?: ErrorCallback<TContext>;
                430?: ErrorCallback<TContext>;
                431?: ErrorCallback<TContext>;
                432?: ErrorCallback<TContext>;
                433?: ErrorCallback<TContext>;
                434?: ErrorCallback<TContext>;
                435?: ErrorCallback<TContext>;
                436?: ErrorCallback<TContext>;
                437?: ErrorCallback<TContext>;
                438?: ErrorCallback<TContext>;
                439?: ErrorCallback<TContext>;
                440?: ErrorCallback<TContext>;
                441?: ErrorCallback<TContext>;
                442?: ErrorCallback<TContext>;
                443?: ErrorCallback<TContext>;
                444?: ErrorCallback<TContext>;
                445?: ErrorCallback<TContext>;
                446?: ErrorCallback<TContext>;
                447?: ErrorCallback<TContext>;
                448?: ErrorCallback<TContext>;
                449?: ErrorCallback<TContext>;
                450?: ErrorCallback<TContext>;
                451?: ErrorCallback<TContext>;
                452?: ErrorCallback<TContext>;
                453?: ErrorCallback<TContext>;
                454?: ErrorCallback<TContext>;
                455?: ErrorCallback<TContext>;
                456?: ErrorCallback<TContext>;
                457?: ErrorCallback<TContext>;
                458?: ErrorCallback<TContext>;
                459?: ErrorCallback<TContext>;
                460?: ErrorCallback<TContext>;
                461?: ErrorCallback<TContext>;
                462?: ErrorCallback<TContext>;
                463?: ErrorCallback<TContext>;
                464?: ErrorCallback<TContext>;
                465?: ErrorCallback<TContext>;
                466?: ErrorCallback<TContext>;
                467?: ErrorCallback<TContext>;
                468?: ErrorCallback<TContext>;
                469?: ErrorCallback<TContext>;
                470?: ErrorCallback<TContext>;
                471?: ErrorCallback<TContext>;
                472?: ErrorCallback<TContext>;
                473?: ErrorCallback<TContext>;
                474?: ErrorCallback<TContext>;
                475?: ErrorCallback<TContext>;
                476?: ErrorCallback<TContext>;
                477?: ErrorCallback<TContext>;
                478?: ErrorCallback<TContext>;
                479?: ErrorCallback<TContext>;
                480?: ErrorCallback<TContext>;
                481?: ErrorCallback<TContext>;
                482?: ErrorCallback<TContext>;
                483?: ErrorCallback<TContext>;
                484?: ErrorCallback<TContext>;
                485?: ErrorCallback<TContext>;
                486?: ErrorCallback<TContext>;
                487?: ErrorCallback<TContext>;
                488?: ErrorCallback<TContext>;
                489?: ErrorCallback<TContext>;
                490?: ErrorCallback<TContext>;
                491?: ErrorCallback<TContext>;
                492?: ErrorCallback<TContext>;
                493?: ErrorCallback<TContext>;
                494?: ErrorCallback<TContext>;
                495?: ErrorCallback<TContext>;
                496?: ErrorCallback<TContext>;
                497?: ErrorCallback<TContext>;
                498?: ErrorCallback<TContext>;
                499?: ErrorCallback<TContext>;
                500?: ErrorCallback<TContext>;
                501?: ErrorCallback<TContext>;
                502?: ErrorCallback<TContext>;
                503?: ErrorCallback<TContext>;
                504?: ErrorCallback<TContext>;
                505?: ErrorCallback<TContext>;
                506?: ErrorCallback<TContext>;
                507?: ErrorCallback<TContext>;
                508?: ErrorCallback<TContext>;
                509?: ErrorCallback<TContext>;
                510?: ErrorCallback<TContext>;
                511?: ErrorCallback<TContext>;
                512?: ErrorCallback<TContext>;
                513?: ErrorCallback<TContext>;
                514?: ErrorCallback<TContext>;
                515?: ErrorCallback<TContext>;
                516?: ErrorCallback<TContext>;
                517?: ErrorCallback<TContext>;
                518?: ErrorCallback<TContext>;
                519?: ErrorCallback<TContext>;
                520?: ErrorCallback<TContext>;
                521?: ErrorCallback<TContext>;
                522?: ErrorCallback<TContext>;
                523?: ErrorCallback<TContext>;
                524?: ErrorCallback<TContext>;
                525?: ErrorCallback<TContext>;
                526?: ErrorCallback<TContext>;
                527?: ErrorCallback<TContext>;
                528?: ErrorCallback<TContext>;
                529?: ErrorCallback<TContext>;
                530?: ErrorCallback<TContext>;
                531?: ErrorCallback<TContext>;
                532?: ErrorCallback<TContext>;
                533?: ErrorCallback<TContext>;
                534?: ErrorCallback<TContext>;
                535?: ErrorCallback<TContext>;
                536?: ErrorCallback<TContext>;
                537?: ErrorCallback<TContext>;
                538?: ErrorCallback<TContext>;
                539?: ErrorCallback<TContext>;
                540?: ErrorCallback<TContext>;
                541?: ErrorCallback<TContext>;
                542?: ErrorCallback<TContext>;
                543?: ErrorCallback<TContext>;
                544?: ErrorCallback<TContext>;
                545?: ErrorCallback<TContext>;
                546?: ErrorCallback<TContext>;
                547?: ErrorCallback<TContext>;
                548?: ErrorCallback<TContext>;
                549?: ErrorCallback<TContext>;
                550?: ErrorCallback<TContext>;
                551?: ErrorCallback<TContext>;
                552?: ErrorCallback<TContext>;
                553?: ErrorCallback<TContext>;
                554?: ErrorCallback<TContext>;
                555?: ErrorCallback<TContext>;
                556?: ErrorCallback<TContext>;
                557?: ErrorCallback<TContext>;
                558?: ErrorCallback<TContext>;
                559?: ErrorCallback<TContext>;
                560?: ErrorCallback<TContext>;
                561?: ErrorCallback<TContext>;
                562?: ErrorCallback<TContext>;
                563?: ErrorCallback<TContext>;
                564?: ErrorCallback<TContext>;
                565?: ErrorCallback<TContext>;
                566?: ErrorCallback<TContext>;
                567?: ErrorCallback<TContext>;
                568?: ErrorCallback<TContext>;
                569?: ErrorCallback<TContext>;
                570?: ErrorCallback<TContext>;
                571?: ErrorCallback<TContext>;
                572?: ErrorCallback<TContext>;
                573?: ErrorCallback<TContext>;
                574?: ErrorCallback<TContext>;
                575?: ErrorCallback<TContext>;
                576?: ErrorCallback<TContext>;
                577?: ErrorCallback<TContext>;
                578?: ErrorCallback<TContext>;
                579?: ErrorCallback<TContext>;
                580?: ErrorCallback<TContext>;
                581?: ErrorCallback<TContext>;
                582?: ErrorCallback<TContext>;
                583?: ErrorCallback<TContext>;
                584?: ErrorCallback<TContext>;
                585?: ErrorCallback<TContext>;
                586?: ErrorCallback<TContext>;
                587?: ErrorCallback<TContext>;
                588?: ErrorCallback<TContext>;
                589?: ErrorCallback<TContext>;
                590?: ErrorCallback<TContext>;
                591?: ErrorCallback<TContext>;
                592?: ErrorCallback<TContext>;
                593?: ErrorCallback<TContext>;
                594?: ErrorCallback<TContext>;
                595?: ErrorCallback<TContext>;
                596?: ErrorCallback<TContext>;
                597?: ErrorCallback<TContext>;
                598?: ErrorCallback<TContext>;
                599?: ErrorCallback<TContext>;
    
                // endregion
            } & {
                // Status codes not listed require type annotations when defining the callback
                [index: number]: SuccessCallback<TContext> | ErrorCallback<TContext>;
            };
    
            // Writable properties on XMLHttpRequest
            interface XHRFields extends Partial<Pick<XMLHttpRequest, 'onreadystatechange' | 'responseType' | 'timeout' | 'withCredentials' | 'msCaching'>> { }
        }
    
        interface Transport {
            send(headers: PlainObject, completeCallback: Transport.SuccessCallback): void;
            abort(): void;
        }
    
        namespace Transport {
            interface SuccessCallback {
                (status: number, statusText: Ajax.TextStatus, responses?: PlainObject, headers?: string): void;
            }
        }
    
        /**
         * @see {@link http://api.jquery.com/jquery.ajax/#jqXHR}
         */
        interface jqXHR<TResolve = anyextends Promise3<TResolve, jqXHR<TResolve>, never,
            Ajax.SuccessTextStatus, Ajax.ErrorTextStatus, never,
            jqXHR<TResolve>, stringnever>,
            Pick<XMLHttpRequest, 'abort' | 'getAllResponseHeaders' | 'getResponseHeader' | 'overrideMimeType' | 'readyState' | 'responseText' |
                'setRequestHeader' | 'status' | 'statusText'>,
            Partial<Pick<XMLHttpRequest, 'responseXML'>> {
            responseJSON?: any;
    
            /**
             * Determine the current state of a Deferred object.
             *
             * @see {@link https://api.jquery.com/deferred.state/}
             * @since 1.7
             */
            state(): 'pending' | 'resolved' | 'rejected';
            statusCode(map: Ajax.StatusCodeCallbacks<any>): void;
        }
    
        namespace jqXHR {
            /**
             * @deprecated
             */
            interface DoneCallback<TResolve = any, TjqXHR = jqXHR<TResolve>> extends Deferred.Callback3<TResolve, Ajax.SuccessTextStatus, TjqXHR> { }
    
            /**
             * @deprecated
             */
            interface FailCallback<TjqXHR> extends Deferred.Callback3<TjqXHR, Ajax.ErrorTextStatus, string> { }
    
            /**
             * @deprecated
             */
            interface AlwaysCallback<TResolve = any, TjqXHR = jqXHR<TResolve>> extends Deferred.Callback3<TResolve | TjqXHR, Ajax.TextStatus, TjqXHR | string> { }
        }
    
        // endregion
    
        // region Callbacks
    
        interface Callbacks<T extends Function = Function> {
            /**
             * Add a callback or a collection of callbacks to a callback list.
             *
             * @param callback A function, or array of functions, that are to be added to the callback list.
             * @param callbacks A function, or array of functions, that are to be added to the callback list.
             * @see {@link https://api.jquery.com/callbacks.add/}
             * @since 1.7
             */
            add(callback: TypeOrArray<T>, ...callbacks: Array<TypeOrArray<T>>): this;
            /**
             * Disable a callback list from doing anything more.
             *
             * @see {@link https://api.jquery.com/callbacks.disable/}
             * @since 1.7
             */
            disable(): this;
            /**
             * Determine if the callbacks list has been disabled.
             *
             * @see {@link https://api.jquery.com/callbacks.disabled/}
             * @since 1.7
             */
            disabled(): boolean;
            /**
             * Remove all of the callbacks from a list.
             *
             * @see {@link https://api.jquery.com/callbacks.empty/}
             * @since 1.7
             */
            empty(): this;
            /**
             * Call all of the callbacks with the given arguments.
             *
             * @param args The argument or list of arguments to pass back to the callback list.
             * @see {@link https://api.jquery.com/callbacks.fire/}
             * @since 1.7
             */
            fire(...args: any[]): this;
            /**
             * Call all callbacks in a list with the given context and arguments.
             *
             * @param context A reference to the context in which the callbacks in the list should be fired.
             * @param args An argument, or array of arguments, to pass to the callbacks in the list.
             * @see {@link https://api.jquery.com/callbacks.fireWith/}
             * @since 1.7
             */
            fireWith(context: object, args?: ArrayLike<any>): this;
            /**
             * Determine if the callbacks have already been called at least once.
             *
             * @see {@link https://api.jquery.com/callbacks.fired/}
             * @since 1.7
             */
            fired(): boolean;
            /**
             * Determine whether or not the list has any callbacks attached. If a callback is provided as an
             * argument, determine whether it is in a list.
             *
             * @param callback The callback to search for.
             * @see {@link https://api.jquery.com/callbacks.has/}
             * @since 1.7
             */
            has(callback?: T): boolean;
            /**
             * Lock a callback list in its current state.
             *
             * @see {@link https://api.jquery.com/callbacks.lock/}
             * @since 1.7
             */
            lock(): this;
            /**
             * Determine if the callbacks list has been locked.
             *
             * @see {@link https://api.jquery.com/callbacks.locked/}
             * @since 1.7
             */
            locked(): boolean;
            /**
             * Remove a callback or a collection of callbacks from a callback list.
             *
             * @param callbacks A function, or array of functions, that are to be removed from the callback list.
             * @see {@link https://api.jquery.com/callbacks.remove/}
             * @since 1.7
             */
            remove(...callbacks: T[]): this;
        }
    
        // endregion
    
        // region CSS
    
        interface CSSHook<TElement> {
            get(this: this, elem: TElement, computed: any, extra: any): any;
            set(this: this, elem: TElement, value: any): void;
        }
    
        // endregion
    
        // region Deferred
    
        /**
         * Any object that has a then method.
         */
        interface Thenable<T> extends PromiseLike<T> { }
    
        // Type parameter guide
        // --------------------
        // Each type parameter represents a parameter in one of the three possible callbacks.
        //
        // The first letter indicates which position the parameter is in.
        //
        // T = A = 1st position
        // U = B = 2nd position
        // V = C = 3rd position
        // S = R = rest position
        //
        // The second letter indicates which whether it is a [R]esolve, Re[J]ect, or [N]otify value.
        //
        // The third letter indicates whether the value is returned in the [D]one filter, [F]ail filter, or [P]rogress filter.
    
        /**
         * This object provides a subset of the methods of the Deferred object (then, done, fail, always,
         * pipe, progress, state and promise) to prevent users from changing the state of the Deferred.
         *
         * @see {@link http://api.jquery.com/Types/#Promise}
         * @deprecated Experimental. Avoid referncing this type directly in your code.
         */
        interface PromiseBase<TR, TJ, TN,
            UR, UJ, UN,
            VR, VJ, VN,
            SR, SJ, SN> extends _Promise<TR>, PromiseLike<TR> {
            /**
             * Add handlers to be called when the Deferred object is either resolved or rejected.
             *
             * @param alwaysCallback A function, or array of functions, that is called when the Deferred is resolved or rejected.
             * @param alwaysCallbacks Optional additional functions, or arrays of functions, that are called when the Deferred is resolved or rejected.
             * @see {@link https://api.jquery.com/deferred.always/}
             * @since 1.6
             */
            always(alwaysCallback: TypeOrArray<Deferred.CallbackBase<TR | TJ, UR | UJ, VR | VJ, SR | SJ>>,
                   ...alwaysCallbacks: Array<TypeOrArray<Deferred.CallbackBase<TR | TJ, UR | UJ, VR | VJ, SR | SJ>>>): this;
            /**
             * Add handlers to be called when the Deferred object is resolved.
             *
             * @param doneCallback A function, or array of functions, that are called when the Deferred is resolved.
             * @param doneCallbacks Optional additional functions, or arrays of functions, that are called when the Deferred is resolved.
             * @see {@link https://api.jquery.com/deferred.done/}
             * @since 1.5
             */
            done(doneCallback: TypeOrArray<Deferred.CallbackBase<TR, UR, VR, SR>>,
                 ...doneCallbacks: Array<TypeOrArray<Deferred.CallbackBase<TR, UR, VR, SR>>>): this;
            /**
             * Add handlers to be called when the Deferred object is rejected.
             *
             * @param failCallback A function, or array of functions, that are called when the Deferred is rejected.
             * @param failCallbacks Optional additional functions, or arrays of functions, that are called when the Deferred is rejected.
             * @see {@link https://api.jquery.com/deferred.fail/}
             * @since 1.5
             */
            fail(failCallback: TypeOrArray<Deferred.CallbackBase<TJ, UJ, VJ, SJ>>,
                 ...failCallbacks: Array<TypeOrArray<Deferred.CallbackBase<TJ, UJ, VJ, SJ>>>): this;
            /**
             * Add handlers to be called when the Deferred object generates progress notifications.
             *
             * @param progressCallback A function, or array of functions, to be called when the Deferred generates progress notifications.
             * @param progressCallbacks Optional additional functions, or arrays of functions, to be called when the Deferred generates
             *                          progress notifications.
             * @see {@link https://api.jquery.com/deferred.progress/}
             * @since 1.7
             */
            progress(progressCallback: TypeOrArray<Deferred.CallbackBase<TN, UN, VN, SN>>,
                     ...progressCallbacks: Array<TypeOrArray<Deferred.CallbackBase<TN, UN, VN, SN>>>): this;
            /**
             * Return a Deferred's Promise object.
             *
             * @param target Object onto which the promise methods have to be attached
             * @see {@link https://api.jquery.com/deferred.promise/}
             * @since 1.5
             */
            promise<TTarget extends object>(target: TTarget): this & TTarget;
            /**
             * Return a Deferred's Promise object.
             *
             * @see {@link https://api.jquery.com/deferred.promise/}
             * @since 1.5
             */
            promise(): this;
            /**
             * Determine the current state of a Deferred object.
             *
             * @see {@link https://api.jquery.com/deferred.state/}
             * @since 1.7
             */
            state(): 'pending' | 'resolved' | 'rejected';
    
            // region pipe
    
            /**
             * Utility method to filter and/or chain Deferreds.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.pipe/}
             * @since 1.6
             * @since 1.7
             * @deprecated 1.8
             */
            pipe<ARD = never, AJD = never, AND = never,
                BRD = never, BJD = never, BND = never,
                CRD = never, CJD = never, CND = never,
                RRD = never, RJD = never, RND = never,
                ARF = never, AJF = never, ANF = never,
                BRF = never, BJF = never, BNF = never,
                CRF = never, CJF = never, CNF = never,
                RRF = never, RJF = never, RNF = never,
                ARP = never, AJP = never, ANP = never,
                BRP = never, BJP = never, BNP = never,
                CRP = never, CJP = never, CNP = never,
                RRP = never, RJP = never, RNP = never>
                (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase<ARD, AJD, AND,
                     BRD, BJD, BND,
                     CRD, CJD, CND,
                     RRD, RJD, RND> | Thenable<ARD> | ARD,
                 failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase<ARF, AJF, ANF,
                     BRF, BJF, BNF,
                     CRF, CJF, CNF,
                     RRF, RJF, RNF> | Thenable<AJF> | AJF,
                 progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase<ARP, AJP, ANP,
                     BRP, BJP, BNP,
                     CRP, CJP, CNP,
                     RRP, RJP, RNP> | Thenable<ANP> | ANP): PromiseBase<ARD | ARF | ARP, AJD | AJF | AJP, AND | ANF | ANP,
                BRD | BRF | BRP, BJD | BJF | BJP, BND | BNF | BNP,
                CRD | CRF | CRP, CJD | CJF | CJP, CND | CNF | CNP,
                RRD | RRF | RRP, RJD | RJF | RJP, RND | RNF | RNP>;
            /**
             * Utility method to filter and/or chain Deferreds.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.pipe/}
             * @since 1.6
             * @since 1.7
             * @deprecated 1.8
             */
            pipe<ARF = never, AJF = never, ANF = never,
                BRF = never, BJF = never, BNF = never,
                CRF = never, CJF = never, CNF = never,
                RRF = never, RJF = never, RNF = never,
                ARP = never, AJP = never, ANP = never,
                BRP = never, BJP = never, BNP = never,
                CRP = never, CJP = never, CNP = never,
                RRP = never, RJP = never, RNP = never>
                (doneFilter: null,
                 failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase<ARF, AJF, ANF,
                     BRF, BJF, BNF,
                     CRF, CJF, CNF,
                     RRF, RJF, RNF> | Thenable<AJF> | AJF,
                 progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase<ARP, AJP, ANP,
                     BRP, BJP, BNP,
                     CRP, CJP, CNP,
                     RRP, RJP, RNP> | Thenable<ANP> | ANP): PromiseBase<ARF | ARP, AJF | AJP, ANF | ANP,
                BRF | BRP, BJF | BJP, BNF | BNP,
                CRF | CRP, CJF | CJP, CNF | CNP,
                RRF | RRP, RJF | RJP, RNF | RNP>;
            /**
             * Utility method to filter and/or chain Deferreds.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.pipe/}
             * @since 1.6
             * @since 1.7
             * @deprecated 1.8
             */
            pipe<ARD = never, AJD = never, AND = never,
                BRD = never, BJD = never, BND = never,
                CRD = never, CJD = never, CND = never,
                RRD = never, RJD = never, RND = never,
                ARP = never, AJP = never, ANP = never,
                BRP = never, BJP = never, BNP = never,
                CRP = never, CJP = never, CNP = never,
                RRP = never, RJP = never, RNP = never>
                (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase<ARD, AJD, AND,
                     BRD, BJD, BND,
                     CRD, CJD, CND,
                     RRD, RJD, RND> | Thenable<ARD> | ARD,
                 failFilter: null,
                 progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase<ARP, AJP, ANP,
                     BRP, BJP, BNP,
                     CRP, CJP, CNP,
                     RRP, RJP, RNP> | Thenable<ANP> | ANP): PromiseBase<ARD | ARP, AJD | AJP, AND | ANP,
                BRD | BRP, BJD | BJP, BND | BNP,
                CRD | CRP, CJD | CJP, CND | CNP,
                RRD | RRP, RJD | RJP, RND | RNP>;
            /**
             * Utility method to filter and/or chain Deferreds.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.pipe/}
             * @since 1.6
             * @since 1.7
             * @deprecated 1.8
             */
            pipe<ARP = never, AJP = never, ANP = never,
                BRP = never, BJP = never, BNP = never,
                CRP = never, CJP = never, CNP = never,
                RRP = never, RJP = never, RNP = never>
                (doneFilter: null,
                 failFilter: null,
                 progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase<ARP, AJP, ANP,
                     BRP, BJP, BNP,
                     CRP, CJP, CNP,
                     RRP, RJP, RNP> | Thenable<ANP> | ANP): PromiseBase<ARP, AJP, ANP,
                BRP, BJP, BNP,
                CRP, CJP, CNP,
                RRP, RJP, RNP>;
            /**
             * Utility method to filter and/or chain Deferreds.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.pipe/}
             * @since 1.6
             * @since 1.7
             * @deprecated 1.8
             */
            pipe<ARD = never, AJD = never, AND = never,
                BRD = never, BJD = never, BND = never,
                CRD = never, CJD = never, CND = never,
                RRD = never, RJD = never, RND = never,
                ARF = never, AJF = never, ANF = never,
                BRF = never, BJF = never, BNF = never,
                CRF = never, CJF = never, CNF = never,
                RRF = never, RJF = never, RNF = never>
                (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase<ARD, AJD, AND,
                     BRD, BJD, BND,
                     CRD, CJD, CND,
                     RRD, RJD, RND> | Thenable<ARD> | ARD,
                 failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase<ARF, AJF, ANF,
                     BRF, BJF, BNF,
                     CRF, CJF, CNF,
                     RRF, RJF, RNF> | Thenable<AJF> | AJF,
                 progressFilter?: null): PromiseBase<ARD | ARF, AJD | AJF, AND | ANF,
                BRD | BRF, BJD | BJF, BND | BNF,
                CRD | CRF, CJD | CJF, CND | CNF,
                RRD | RRF, RJD | RJF, RND | RNF>;
            /**
             * Utility method to filter and/or chain Deferreds.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.pipe/}
             * @since 1.6
             * @since 1.7
             * @deprecated 1.8
             */
            pipe<ARF = never, AJF = never, ANF = never,
                BRF = never, BJF = never, BNF = never,
                CRF = never, CJF = never, CNF = never,
                RRF = never, RJF = never, RNF = never>
                (doneFilter: null,
                 failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase<ARF, AJF, ANF,
                     BRF, BJF, BNF,
                     CRF, CJF, CNF,
                     RRF, RJF, RNF> | Thenable<AJF> | AJF,
                 progressFilter?: null): PromiseBase<ARF, AJF, ANF,
                BRF, BJF, BNF,
                CRF, CJF, CNF,
                RRF, RJF, RNF>;
            /**
             * Utility method to filter and/or chain Deferreds.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.pipe/}
             * @since 1.6
             * @since 1.7
             * @deprecated 1.8
             */
            pipe<ARD = never, AJD = never, AND = never,
                BRD = never, BJD = never, BND = never,
                CRD = never, CJD = never, CND = never,
                RRD = never, RJD = never, RND = never>
                (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase<ARD, AJD, AND,
                     BRD, BJD, BND,
                     CRD, CJD, CND,
                     RRD, RJD, RND> | Thenable<ARD> | ARD,
                 failFilter?: null,
                 progressFilter?: null): PromiseBase<ARD, AJD, AND,
                BRD, BJD, BND,
                CRD, CJD, CND,
                RRD, RJD, RND>;
    
            // endregion
    
            // region then
    
            /**
             * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.then/}
             * @since 1.8
             */
            then<ARD = never, AJD = never, AND = never,
                BRD = never, BJD = never, BND = never,
                CRD = never, CJD = never, CND = never,
                RRD = never, RJD = never, RND = never,
                ARF = never, AJF = never, ANF = never,
                BRF = never, BJF = never, BNF = never,
                CRF = never, CJF = never, CNF = never,
                RRF = never, RJF = never, RNF = never,
                ARP = never, AJP = never, ANP = never,
                BRP = never, BJP = never, BNP = never,
                CRP = never, CJP = never, CNP = never,
                RRP = never, RJP = never, RNP = never>
                (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase<ARD, AJD, AND,
                     BRD, BJD, BND,
                     CRD, CJD, CND,
                     RRD, RJD, RND> | Thenable<ARD> | ARD,
                 failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase<ARF, AJF, ANF,
                     BRF, BJF, BNF,
                     CRF, CJF, CNF,
                     RRF, RJF, RNF> | Thenable<ARF> | ARF,
                 progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase<ARP, AJP, ANP,
                     BRP, BJP, BNP,
                     CRP, CJP, CNP,
                     RRP, RJP, RNP> | Thenable<ANP> | ANP): PromiseBase<ARD | ARF | ARP, AJD | AJF | AJP, AND | ANF | ANP,
                BRD | BRF | BRP, BJD | BJF | BJP, BND | BNF | BNP,
                CRD | CRF | CRP, CJD | CJF | CJP, CND | CNF | CNP,
                RRD | RRF | RRP, RJD | RJF | RJP, RND | RNF | RNP>;
            /**
             * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.then/}
             * @since 1.8
             */
            then<ARF = never, AJF = never, ANF = never,
                BRF = never, BJF = never, BNF = never,
                CRF = never, CJF = never, CNF = never,
                RRF = never, RJF = never, RNF = never,
                ARP = never, AJP = never, ANP = never,
                BRP = never, BJP = never, BNP = never,
                CRP = never, CJP = never, CNP = never,
                RRP = never, RJP = never, RNP = never>
                (doneFilter: null,
                 failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase<ARF, AJF, ANF,
                     BRF, BJF, BNF,
                     CRF, CJF, CNF,
                     RRF, RJF, RNF> | Thenable<ARF> | ARF,
                 progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase<ARP, AJP, ANP,
                     BRP, BJP, BNP,
                     CRP, CJP, CNP,
                     RRP, RJP, RNP> | Thenable<ANP> | ANP): PromiseBase<ARF | ARP, AJF | AJP, ANF | ANP,
                BRF | BRP, BJF | BJP, BNF | BNP,
                CRF | CRP, CJF | CJP, CNF | CNP,
                RRF | RRP, RJF | RJP, RNF | RNP>;
            /**
             * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.then/}
             * @since 1.8
             */
            then<ARD = never, AJD = never, AND = never,
                BRD = never, BJD = never, BND = never,
                CRD = never, CJD = never, CND = never,
                RRD = never, RJD = never, RND = never,
                ARP = never, AJP = never, ANP = never,
                BRP = never, BJP = never, BNP = never,
                CRP = never, CJP = never, CNP = never,
                RRP = never, RJP = never, RNP = never>
                (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase<ARD, AJD, AND,
                     BRD, BJD, BND,
                     CRD, CJD, CND,
                     RRD, RJD, RND> | Thenable<ARD> | ARD,
                 failFilter: null,
                 progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase<ARP, AJP, ANP,
                     BRP, BJP, BNP,
                     CRP, CJP, CNP,
                     RRP, RJP, RNP> | Thenable<ANP> | ANP): PromiseBase<ARD | ARP, AJD | AJP, AND | ANP,
                BRD | BRP, BJD | BJP, BND | BNP,
                CRD | CRP, CJD | CJP, CND | CNP,
                RRD | RRP, RJD | RJP, RND | RNP>;
            /**
             * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.then/}
             * @since 1.8
             */
            then<ARP = never, AJP = never, ANP = never,
                BRP = never, BJP = never, BNP = never,
                CRP = never, CJP = never, CNP = never,
                RRP = never, RJP = never, RNP = never>
                (doneFilter: null,
                 failFilter: null,
                 progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase<ARP, AJP, ANP,
                     BRP, BJP, BNP,
                     CRP, CJP, CNP,
                     RRP, RJP, RNP> | Thenable<ANP> | ANP): PromiseBase<ARP, AJP, ANP,
                BRP, BJP, BNP,
                CRP, CJP, CNP,
                RRP, RJP, RNP>;
            /**
             * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.then/}
             * @since 1.8
             */
            then<ARD = never, AJD = never, AND = never,
                BRD = never, BJD = never, BND = never,
                CRD = never, CJD = never, CND = never,
                RRD = never, RJD = never, RND = never,
                ARF = never, AJF = never, ANF = never,
                BRF = never, BJF = never, BNF = never,
                CRF = never, CJF = never, CNF = never,
                RRF = never, RJF = never, RNF = never>
                (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase<ARD, AJD, AND,
                     BRD, BJD, BND,
                     CRD, CJD, CND,
                     RRD, RJD, RND> | Thenable<ARD> | ARD,
                 failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase<ARF, AJF, ANF,
                     BRF, BJF, BNF,
                     CRF, CJF, CNF,
                     RRF, RJF, RNF> | Thenable<ARF> | ARF,
                 progressFilter?: null): PromiseBase<ARD | ARF, AJD | AJF, AND | ANF,
                BRD | BRF, BJD | BJF, BND | BNF,
                CRD | CRF, CJD | CJF, CND | CNF,
                RRD | RRF, RJD | RJF, RND | RNF>;
            /**
             * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.then/}
             * @since 1.8
             */
            then<ARF = never, AJF = never, ANF = never,
                BRF = never, BJF = never, BNF = never,
                CRF = never, CJF = never, CNF = never,
                RRF = never, RJF = never, RNF = never>
                (doneFilter: null,
                 failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase<ARF, AJF, ANF,
                     BRF, BJF, BNF,
                     CRF, CJF, CNF,
                     RRF, RJF, RNF> | Thenable<ARF> | ARF,
                 progressFilter?: null): PromiseBase<ARF, AJF, ANF,
                BRF, BJF, BNF,
                CRF, CJF, CNF,
                RRF, RJF, RNF>;
            /**
             * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.then/}
             * @since 1.8
             */
            then<ARD = never, AJD = never, AND = never,
                BRD = never, BJD = never, BND = never,
                CRD = never, CJD = never, CND = never,
                RRD = never, RJD = never, RND = never>
                (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase<ARD, AJD, AND,
                     BRD, BJD, BND,
                     CRD, CJD, CND,
                     RRD, RJD, RND> | Thenable<ARD> | ARD,
                 failFilter?: null,
                 progressFilter?: null): PromiseBase<ARD, AJD, AND,
                BRD, BJD, BND,
                CRD, CJD, CND,
                RRD, RJD, RND>;
    
            // endregion
    
            /**
             * Add handlers to be called when the Deferred object is rejected.
             *
             * @param failFilter A function that is called when the Deferred is rejected.
             * @see {@link https://api.jquery.com/deferred.catch/}
             * @since 3.0
             */
            catch<ARF = never, AJF = never, ANF = never,
                BRF = never, BJF = never, BNF = never,
                CRF = never, CJF = never, CNF = never,
                RRF = never, RJF = never, RNF = never>
                (failFilter?: ((t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase<ARF, AJF, ANF,
                    BRF, BJF, BNF,
                    CRF, CJF, CNF,
                    RRF, RJF, RNF> | Thenable<ARF> | ARF) | null): PromiseBase<ARF, AJF, ANF,
                BRF, BJF, BNF,
                CRF, CJF, CNF,
                RRF, RJF, RNF>;
        }
    
        /**
         * This object provides a subset of the methods of the Deferred object (then, done, fail, always,
         * pipe, progress, state and promise) to prevent users from changing the state of the Deferred.
         *
         * @see {@link http://api.jquery.com/Types/#Promise}
         */
        interface Promise3<TR, TJ, TN,
            UR, UJ, UN,
            VR, VJ, VN> extends PromiseBase<TR, TJ, TN,
            UR, UJ, UN,
            VR, VJ, VN,
            nevernevernever> { }
    
        /**
         * This object provides a subset of the methods of the Deferred object (then, done, fail, always,
         * pipe, progress, state and promise) to prevent users from changing the state of the Deferred.
         *
         * @see {@link http://api.jquery.com/Types/#Promise}
         */
        interface Promise2<TR, TJ, TN,
            UR, UJ, UN> extends PromiseBase<TR, TJ, TN,
            UR, UJ, UN,
            nevernevernever,
            nevernevernever> { }
    
        /**
         * This object provides a subset of the methods of the Deferred object (then, done, fail, always,
         * pipe, progress, state and promise) to prevent users from changing the state of the Deferred.
         *
         * @see {@link http://api.jquery.com/Types/#Promise}
         */
        interface Promise<TR, TJ = any, TN = anyextends PromiseBase<TR, TJ, TN,
            TR, TJ, TN,
            TR, TJ, TN,
            TR, TJ, TN> { }
    
        interface DeferredStatic {
            // https://jquery.com/upgrade-guide/3.0/#callback-exit
            exceptionHook: any;
            <TR = any, TJ = any, TN = any>(beforeStart?: (this: JQuery.Deferred<TR, TJ, TN>, deferred: JQuery.Deferred<TR, TJ, TN>) => void): JQuery.Deferred<TR, TJ, TN>;
        }
    
        interface Deferred<TR, TJ = any, TN = any> {
            /**
             * Call the progressCallbacks on a Deferred object with the given args.
             *
             * @param args Optional arguments that are passed to the progressCallbacks.
             * @see {@link https://api.jquery.com/deferred.notify/}
             * @since 1.7
             */
            notify(...args: TN[]): this;
            /**
             * Call the progressCallbacks on a Deferred object with the given context and args.
             *
             * @param context Context passed to the progressCallbacks as the this object.
             * @param args An optional array of arguments that are passed to the progressCallbacks.
             * @see {@link https://api.jquery.com/deferred.notifyWith/}
             * @since 1.7
             */
            notifyWith(context: object, args?: ArrayLike<TN>): this;
            /**
             * Reject a Deferred object and call any failCallbacks with the given args.
             *
             * @param args Optional arguments that are passed to the failCallbacks.
             * @see {@link https://api.jquery.com/deferred.reject/}
             * @since 1.5
             */
            reject(...args: TJ[]): this;
            /**
             * Reject a Deferred object and call any failCallbacks with the given context and args.
             *
             * @param context Context passed to the failCallbacks as the this object.
             * @param args An optional array of arguments that are passed to the failCallbacks.
             * @see {@link https://api.jquery.com/deferred.rejectWith/}
             * @since 1.5
             */
            rejectWith(context: object, args?: ArrayLike<TJ>): this;
            /**
             * Resolve a Deferred object and call any doneCallbacks with the given args.
             *
             * @param args Optional arguments that are passed to the doneCallbacks.
             * @see {@link https://api.jquery.com/deferred.resolve/}
             * @since 1.5
             */
            resolve(...args: TR[]): this;
            /**
             * Resolve a Deferred object and call any doneCallbacks with the given context and args.
             *
             * @param context Context passed to the doneCallbacks as the this object.
             * @param args An optional array of arguments that are passed to the doneCallbacks.
             * @see {@link https://api.jquery.com/deferred.resolveWith/}
             * @since 1.5
             */
            resolveWith(context: object, args?: ArrayLike<TR>): this;
    
            /**
             * Add handlers to be called when the Deferred object is either resolved or rejected.
             *
             * @param alwaysCallback A function, or array of functions, that is called when the Deferred is resolved or rejected.
             * @param alwaysCallbacks Optional additional functions, or arrays of functions, that are called when the Deferred is resolved or rejected.
             * @see {@link https://api.jquery.com/deferred.always/}
             * @since 1.6
             */
            always(alwaysCallback: TypeOrArray<Deferred.Callback<TR | TJ>>,
                   ...alwaysCallbacks: Array<TypeOrArray<Deferred.Callback<TR | TJ>>>): this;
            /**
             * Add handlers to be called when the Deferred object is resolved.
             *
             * @param doneCallback A function, or array of functions, that are called when the Deferred is resolved.
             * @param doneCallbacks Optional additional functions, or arrays of functions, that are called when the Deferred is resolved.
             * @see {@link https://api.jquery.com/deferred.done/}
             * @since 1.5
             */
            done(doneCallback: TypeOrArray<Deferred.Callback<TR>>,
                 ...doneCallbacks: Array<TypeOrArray<Deferred.Callback<TR>>>): this;
            /**
             * Add handlers to be called when the Deferred object is rejected.
             *
             * @param failCallback A function, or array of functions, that are called when the Deferred is rejected.
             * @param failCallbacks Optional additional functions, or arrays of functions, that are called when the Deferred is rejected.
             * @see {@link https://api.jquery.com/deferred.fail/}
             * @since 1.5
             */
            fail(failCallback: TypeOrArray<Deferred.Callback<TJ>>,
                 ...failCallbacks: Array<TypeOrArray<Deferred.Callback<TJ>>>): this;
            /**
             * Add handlers to be called when the Deferred object generates progress notifications.
             *
             * @param progressCallback A function, or array of functions, to be called when the Deferred generates progress notifications.
             * @param progressCallbacks Optional additional functions, or arrays of functions, to be called when the Deferred generates
             *                          progress notifications.
             * @see {@link https://api.jquery.com/deferred.progress/}
             * @since 1.7
             */
            progress(progressCallback: TypeOrArray<Deferred.Callback<TN>>,
                     ...progressCallbacks: Array<TypeOrArray<Deferred.Callback<TN>>>): this;
            /**
             * Return a Deferred's Promise object.
             *
             * @param target Object onto which the promise methods have to be attached
             * @see {@link https://api.jquery.com/deferred.promise/}
             * @since 1.5
             */
            promise<TTarget extends object>(target: TTarget): JQuery.Promise<TR, TJ, TN> & TTarget;
            /**
             * Return a Deferred's Promise object.
             *
             * @see {@link https://api.jquery.com/deferred.promise/}
             * @since 1.5
             */
            promise(): JQuery.Promise<TR, TJ, TN>;
            /**
             * Determine the current state of a Deferred object.
             *
             * @see {@link https://api.jquery.com/deferred.state/}
             * @since 1.7
             */
            state(): 'pending' | 'resolved' | 'rejected';
    
            // region pipe
    
            /**
             * Utility method to filter and/or chain Deferreds.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.pipe/}
             * @since 1.6
             * @since 1.7
             * @deprecated 1.8
             */
            pipe<ARD = never, AJD = never, AND = never,
                BRD = never, BJD = never, BND = never,
                CRD = never, CJD = never, CND = never,
                RRD = never, RJD = never, RND = never,
                ARF = never, AJF = never, ANF = never,
                BRF = never, BJF = never, BNF = never,
                CRF = never, CJF = never, CNF = never,
                RRF = never, RJF = never, RNF = never,
                ARP = never, AJP = never, ANP = never,
                BRP = never, BJP = never, BNP = never,
                CRP = never, CJP = never, CNP = never,
                RRP = never, RJP = never, RNP = never>
                (doneFilter: (...t: TR[]) => PromiseBase<ARD, AJD, AND,
                     BRD, BJD, BND,
                     CRD, CJD, CND,
                     RRD, RJD, RND> | Thenable<ARD> | ARD,
                 failFilter: (...t: TJ[]) => PromiseBase<ARF, AJF, ANF,
                     BRF, BJF, BNF,
                     CRF, CJF, CNF,
                     RRF, RJF, RNF> | Thenable<AJF> | AJF,
                 progressFilter: (...t: TN[]) => PromiseBase<ARP, AJP, ANP,
                     BRP, BJP, BNP,
                     CRP, CJP, CNP,
                     RRP, RJP, RNP> | Thenable<ANP> | ANP): PromiseBase<ARD | ARF | ARP, AJD | AJF | AJP, AND | ANF | ANP,
                BRD | BRF | BRP, BJD | BJF | BJP, BND | BNF | BNP,
                CRD | CRF | CRP, CJD | CJF | CJP, CND | CNF | CNP,
                RRD | RRF | RRP, RJD | RJF | RJP, RND | RNF | RNP>;
            /**
             * Utility method to filter and/or chain Deferreds.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.pipe/}
             * @since 1.6
             * @since 1.7
             * @deprecated 1.8
             */
            pipe<ARF = never, AJF = never, ANF = never,
                BRF = never, BJF = never, BNF = never,
                CRF = never, CJF = never, CNF = never,
                RRF = never, RJF = never, RNF = never,
                ARP = never, AJP = never, ANP = never,
                BRP = never, BJP = never, BNP = never,
                CRP = never, CJP = never, CNP = never,
                RRP = never, RJP = never, RNP = never>
                (doneFilter: null,
                 failFilter: (...t: TJ[]) => PromiseBase<ARF, AJF, ANF,
                     BRF, BJF, BNF,
                     CRF, CJF, CNF,
                     RRF, RJF, RNF> | Thenable<AJF> | AJF,
                 progressFilter: (...t: TN[]) => PromiseBase<ARP, AJP, ANP,
                     BRP, BJP, BNP,
                     CRP, CJP, CNP,
                     RRP, RJP, RNP> | Thenable<ANP> | ANP): PromiseBase<ARF | ARP, AJF | AJP, ANF | ANP,
                BRF | BRP, BJF | BJP, BNF | BNP,
                CRF | CRP, CJF | CJP, CNF | CNP,
                RRF | RRP, RJF | RJP, RNF | RNP>;
            /**
             * Utility method to filter and/or chain Deferreds.
             *
             * @param doneFilter An optional function that is called when the Deferred is resolved.
             * @param failFilter An optional function that is called when the Deferred is rejected.
             * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred.
             * @see {@link https://api.jquery.com/deferred.pipe/}
             * @since 1.6
             * @since 1.7
             * @deprecated 1.8
             */
            pipe<ARD = never, AJD = never, AND = never,
                BRD = never, BJD = never, BND = never,
                CRD = never, CJD = never, CND = never,
                RRD = never, RJD = never, RND = never,
                ARP = never, AJP = never, ANP = never,
                BRP = never, BJP = never, BNP = never,
                CRP = never, CJP = never, CNP = never,
                RRP = never, RJP = never, RNP = never>
                (doneFilter: (...t: TR[]) => PromiseBase<ARD, AJD, AND,
                     BRD, BJD, BND,
                     CRD, CJD, CND,
                     RRD, RJD, RND> | Thenable<ARD> | ARD,
                 failFilter: null,
                 progressFilter: (...t: TN[]) => PromiseBase<ARP, AJP, ANP,
                     BRP, BJP, BNP,
                     CRP, CJP, CNP,
                     RRP, RJP, RNP> | Thenable<ANP> | ANP): PromiseBase<ARD | ARP, AJD | AJP, AND | ANP,