declare namespace java {
    namespace awt {
        namespace dnd {
            /**
             * The DragGestureRecognizer is an
             * abstract base class for the specification
             * of a platform-dependent listener that can be associated with a particular
             * Component in order to
             * identify platform-dependent drag initiating gestures.
             * 
             * The appropriate DragGestureRecognizer
             * subclass instance is obtained from the
             * {@link DragSource} associated with
             * a particular Component, or from the Toolkit object via its
             * {@link java.awt.Toolkit#createDragGestureRecognizer createDragGestureRecognizer()}
             * method.
             * 
             * Once the DragGestureRecognizer
             * is associated with a particular Component
             * it will register the appropriate listener interfaces on that
             * Component
             * in order to track the input events delivered to the Component.
             * 
             * Once the DragGestureRecognizer identifies a sequence of events
             * on the Component as a drag initiating gesture, it will notify
             * its unicast DragGestureListener by
             * invoking its
             * {@link java.awt.dnd.DragGestureListener#dragGestureRecognized gestureRecognized()}
             * method.
             * 
             * When a concrete DragGestureRecognizer
             * instance detects a drag initiating
             * gesture on the Component it is associated with,
             * it fires a {@link DragGestureEvent} to
             * the DragGestureListener registered on
             * its unicast event source for DragGestureListener
             * events. This DragGestureListener is responsible
             * for causing the associated
             * DragSource to start the Drag and Drop operation (if
             * appropriate).
             * 
             * @author Laurence P. G. Cable
             * @see java.awt.dnd.DragGestureListener
             * @see java.awt.dnd.DragGestureEvent
             * @see java.awt.dnd.DragSource
             */
            // @ts-ignore
            abstract class DragGestureRecognizer extends java.lang.Object implements java.io.Serializable {
                /**
                 * Construct a new DragGestureRecognizer
                 * given the DragSource to be used
                 * in this Drag and Drop operation, the Component
                 * this DragGestureRecognizer should "observe"
                 * for drag initiating gestures, the action(s) supported
                 * for this Drag and Drop operation, and the
                 * DragGestureListener to notify
                 * once a drag initiating gesture has been detected.
                 * 
                 * @param ds  the DragSource this
                 *  DragGestureRecognizer
                 *  will use to process the Drag and Drop operation
                 * @param c the Component
                 *  this DragGestureRecognizer
                 *  should "observe" the event stream to,
                 *  in order to detect a drag initiating gesture.
                 *  If this value is null, the
                 *  DragGestureRecognizer
                 *  is not associated with any Component.
                 * @param sa  the set (logical OR) of the
                 *  DnDConstants
                 *  that this Drag and Drop operation will support
                 * @param dgl the DragGestureRecognizer
                 *  to notify when a drag gesture is detected
                 *  
                 * @throws IllegalArgumentException
                 *  if ds is null.
                 */
                // @ts-ignore
                constructor(ds: java.awt.dnd.DragSource, c: java.awt.Component, sa: number /*int*/, dgl: java.awt.dnd.DragGestureListener)
                /**
                 * Construct a new DragGestureRecognizer
                 * given the DragSource to be used in this
                 * Drag and Drop
                 * operation, the Component this
                 * DragGestureRecognizer should "observe"
                 * for drag initiating gestures, and the action(s)
                 * supported for this Drag and Drop operation.
                 * 
                 * @param ds  the DragSource this
                 *  DragGestureRecognizer will use to
                 *  process the Drag and Drop operation
                 * @param c   the Component this
                 *  DragGestureRecognizer should "observe" the event
                 *  stream to, in order to detect a drag initiating gesture.
                 *  If this value is null, the
                 *  DragGestureRecognizer
                 *  is not associated with any Component.
                 * @param sa the set (logical OR) of the DnDConstants
                 *  that this Drag and Drop operation will support
                 *  
                 * @throws IllegalArgumentException
                 *  if ds is null.
                 */
                // @ts-ignore
                constructor(ds: java.awt.dnd.DragSource, c: java.awt.Component, sa: number /*int*/)
                /**
                 * Construct a new DragGestureRecognizer
                 * given the DragSource to be used
                 * in this Drag and Drop operation, and
                 * the Component this
                 * DragGestureRecognizer
                 * should "observe" for drag initiating gestures.
                 * 
                 * @param ds the DragSource this
                 *  DragGestureRecognizer
                 *  will use to process the Drag and Drop operation
                 * @param c the Component
                 *  this DragGestureRecognizer
                 *  should "observe" the event stream to,
                 *  in order to detect a drag initiating gesture.
                 *  If this value is null,
                 *  the DragGestureRecognizer
                 *  is not associated with any Component.
                 *  
                 * @throws IllegalArgumentException
                 *  if ds is null.
                 */
                // @ts-ignore
                constructor(ds: java.awt.dnd.DragSource, c: java.awt.Component)
                /**
                 * Construct a new DragGestureRecognizer
                 * given the DragSource to be used in this
                 * Drag and Drop operation.
                 * 
                 * @param ds the DragSource this
                 *  DragGestureRecognizer will
                 *  use to process the Drag and Drop operation
                 *  
                 * @throws IllegalArgumentException
                 *  if ds is  
                 * @return the DragSource
                 */
                // @ts-ignore
                public getDragSource(): java.awt.dnd.DragSource
                /**
                 * This method returns the  
                 * @return The Component this DragGestureRecognizer
                 *  is associated with
                 */
                // @ts-ignore
                public getComponent(): java.awt.Component
                /**
                 * set the Component that the DragGestureRecognizer is associated with
                 * registerListeners() and unregisterListeners() are called as a side
                 * effect as appropriate.
                 *  
                 * @param c The  
                 * @return the currently permitted source action(s)
                 */
                // @ts-ignore
                public getSourceActions(): number /*int*/
                /**
                 * This method sets the permitted source drag action(s)
                 * for this Drag and Drop operation.
                 *  
                 * @param actions the permitted source drag action(s)
                 */
                // @ts-ignore
                public setSourceActions(actions: number /*int*/): void
                /**
                 * This method returns the first event in the
                 * series of events that initiated
                 * the Drag and Drop operation.
                 *  
                 * @return the initial event that triggered the drag gesture
                 */
                // @ts-ignore
                public getTriggerEvent(): java.awt.event.InputEvent
                /**
                 * Reset the Recognizer, if its currently recognizing a gesture, ignore
                 * it.
                 */
                // @ts-ignore
                public resetRecognizer(): void
                /**
                 * Register a new  
                 * @param dgl the  
                 * @throws java.util.TooManyListenersException if a
                 *   
                 * @param dgl the  
                 * @throws IllegalArgumentException if
                 *  dgl is not (equal to) the currently registered  
                 * @param dragAction The action initially selected by the users gesture
                 * @param p          The point (in Component coords) where the gesture originated
                 */
                // @ts-ignore
                fireDragGestureRecognized(dragAction: number /*int*/, p: java.awt.Point): void
                /**
                 * Listeners registered on the Component by this Recognizer shall record
                 * all Events that are recognized as part of the series of Events that go
                 * to comprise a Drag and Drop initiating gesture via this API.
                 *  
                 * This method is used by a  
                 * @param awtie the null.
                 */
                // @ts-ignore
                constructor(ds: java.awt.dnd.DragSource)
                /**
                 * The DragSource
                 * associated with this
                 * DragGestureRecognizer.
                 * @serial 
                 */
                // @ts-ignore
                dragSource: java.awt.dnd.DragSource
                /**
                 * The Component
                 * associated with this DragGestureRecognizer.
                 * @serial 
                 */
                // @ts-ignore
                component: java.awt.Component
                /**
                 * The DragGestureListener
                 * associated with this DragGestureRecognizer.
                 */
                // @ts-ignore
                dragGestureListener: java.awt.dnd.DragGestureListener
                /**
                 * An int representing
                 * the type(s) of action(s) used
                 * in this Drag and Drop operation.
                 * @serial 
                 */
                // @ts-ignore
                sourceActions: number /*int*/
                /**
                 * The list of events (in order) that
                 * the DragGestureRecognizer
                 * "recognized" as a "gesture" that triggers a drag.
                 * @serial 
                 */
                // @ts-ignore
                events: java.util.ArrayListDragSource
                 * this DragGestureRecognizer
                 * will use in order to process the Drag and Drop
                 * operation.
                 * Component
                 * that is to be "observed" by the
                 * DragGestureRecognizer
                 * for drag initiating gestures.
                 * Component or null
                 */
                // @ts-ignore
                public setComponent(c: java.awt.Component): void
                /**
                 * This method returns an int representing the
                 * type of action(s) this Drag and Drop
                 * operation will support.
                 * DragGestureListener.
                 * DragGestureListener to register
                 *  with this DragGestureRecognizer.
                 *  DragGestureListener has already been added.
                 */
                // @ts-ignore
                public addDragGestureListener(dgl: java.awt.dnd.DragGestureListener): void
                /**
                 * unregister the current DragGestureListener
                 * DragGestureListener to unregister
                 *  from this DragGestureRecognizer
                 *  DragGestureListener.
                 */
                // @ts-ignore
                public removeDragGestureListener(dgl: java.awt.dnd.DragGestureListener): void
                /**
                 * Notify the DragGestureListener that a Drag and Drop initiating
                 * gesture has occurred. Then reset the state of the Recognizer.
                 * DragGestureRecognizer
                 * implementation to add an InputEvent
                 * subclass (that it believes is one in a series
                 * of events that comprise a Drag and Drop operation)
                 * to the array of events that this
                 * DragGestureRecognizer maintains internally.
                 * InputEvent
                 *  to add to this DragGestureRecognizer's
                 *  internal array of events. Note that null
                 *  is not a valid value, and will be ignored.
                 */
                // @ts-ignore
                appendEvent(awtie: java.awt.event.InputEvent): void
            }
        }
    }
}