// Auto-generated MediaMonkey Addon API definitions

// === VARIABLES ===
/**
 * Main object containing all actions.
 */
declare var actions: Actions = ...

/**
 * List of all tracklist field types, their titles, and relevant attributes such as data-binding functions and editor parameters.
 * uitools
 */
declare var tracklistFieldDefs: {     actors: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     album: {         alias: string[];         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => any);         mask: string;         minWidth: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     albumArt: {         bindData: ((div, item, itemIndex) => void);         checked: boolean;         disabled: ((usedLV) => any);         notForAlbum: boolean;         setupCell: ((div, column) => void);         title: any;         width: number;     };     albumArtist: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     artist: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         minWidth: string;         notForAlbum: boolean;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     bitrate: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item, raw) => any);         isNumber: boolean;         mask: string;         notForAlbum: boolean;         title: any;         usesRaw: boolean;         width: number;     };     bpm: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     bps: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => any);         isNumber: boolean;         mask: string;         title: any;         width: number;     };     comment: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         getValueAsync: ((item) => any);         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     composer: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     conductor: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     copyright: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     custom1: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: (() => any);         width: number;     };     custom10: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: (() => any);         width: number;     };     custom2: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: (() => any);         width: number;     };     custom3: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: (() => any);         width: number;     };     custom4: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: (() => any);         width: number;     };     custom5: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: (() => any);         width: number;     };     custom6: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: (() => any);         width: number;     };     custom7: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: (() => any);         width: number;     };     custom8: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: (() => any);         width: number;     };     custom9: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: (() => any);         width: number;     };     date: {         align: string;         bindFunc: ((div, item) => void);         checked: boolean;         direction: string;         disabled: boolean;         editor: any;         getValue: ((item, raw) => any);         mask: string;         setValue: ((item, newValue, raw) => boolean);         title: any;         width: number;     };     dateAdded: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => string);         mask: string;         title: any;         width: number;     };     dimensions: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => any);         mask: string;         title: any;         width: number;     };     director: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     discNo: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         notForAlbum: boolean;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     encoder: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     episode: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         notForAlbum: boolean;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     extendedTags: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => string);         notForAlbum: boolean;         title: (() => any);         width: number;     };     fileType: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => any);         mask: string;         title: any;         width: number;     };     filename: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         notForAlbum: boolean;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     filesize: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => any);         isNumber: boolean;         mask: string;         notForAlbum: boolean;         title: any;         width: number;     };     folder: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => any);         mask: string;         title: any;         width: number;     };     framerate: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => any);         mask: string;         title: any;         width: number;     };     genre: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     grouping: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     initialKey: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     involvedPeople: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     isrc: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     lastPlayed: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         direction: string;         disabled: boolean;         getValue: ((item) => string);         mask: string;         notForAlbum: boolean;         title: any;         width: number;     };     lastSkipped: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         direction: string;         disabled: boolean;         getValue: ((item) => string);         notForAlbum: boolean;         title: any;         width: number;     };     length: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item, raw) => any);         mask: string;         notForAlbum: boolean;         title: any;         usesRaw: boolean;         width: number;     };     lyricist: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     lyrics: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         getValueAsync: ((item) => any);         notForAlbum: boolean;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     media: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => any);         mask: string;         title: any;         width: number;     };     mood: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     normalize: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         isNumber: boolean;         mask: string;         notForAlbum: boolean;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     normalizeAlbum: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     occasion: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     order: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         notForAlbum: boolean;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     organizedPath: {         bindData: ((div, item) => void);         checked: boolean;         disabled: ((usedLV) => boolean);         getValue: ((item) => any);         noExport: boolean;         notForAlbum: boolean;         title: any;         width: number;     };     origAlbumTitle: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     origArtist: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     origDate: {         align: string;         bindFunc: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item, raw) => any);         mask: string;         setValue: ((item, newValue, raw) => boolean);         title: any;         width: number;     };     origLyricist: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     parentalRating: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     path: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editable: ((item) => boolean);         editor: any;         getValue: ((item) => any);         notForAlbum: boolean;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     playCounter: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         direction: string;         disabled: boolean;         editor: any;         getValue: ((item) => any);         isNumber: boolean;         mask: string;         notForAlbum: boolean;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     playOrder: {         adaptableSize: boolean;         bindData: ((div, item) => void);         checked: (() => boolean);         disabled: ((usedLV) => boolean);         fixed: boolean;         notForAlbum: boolean;         title: string;         width: number;     };     podcast: {         alias: string[];         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     producer: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     publisher: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     quality: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     rating: {         adaptableSize: boolean;         bindData: ((div, item) => void);         checked: boolean;         direction: string;         disabled: boolean;         editor: any;         getValue: ((item) => any);         headerRenderer: ((div, column) => void);         isNumber: boolean;         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     sampleRate: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => any);         isNumber: boolean;         mask: string;         title: any;         width: number;     };     screenwriter: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     season: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     series: {         alias: string[];         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     skipped: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         notForAlbum: boolean;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     source: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => string);         mask: string;         minWidth: string;         setupCell: ((div, column) => void);         title: any;         width: number;     };     stereo: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => any);         isNumber: boolean;         mask: string;         title: any;         width: number;     };     summary: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => any);         mask: string;         notForAlbum: boolean;         title: any;         width: number;     };     tempo: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         editorParams: string;         getValue: ((item) => string);         mask: string;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     timeStamp: {         align: string;         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => string);         mask: string;         notForAlbum: boolean;         title: any;         width: number;     };     title: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         editor: any;         getValue: ((item) => any);         mask: string;         minWidth: string;         notForAlbum: boolean;         setValue: ((item, newValue) => boolean);         title: any;         width: number;     };     trackType: {         bindData: ((div, item) => void);         checked: boolean;         disabled: boolean;         getValue: ((item) => any);         mask: string;         title: any;         width: number;     }; } = ...

/**
 * Gets active state of the window
 */
declare var active: boolean

/**
 * Main MediaMonkey app. This is the entry point to most native objects/methods, such as app.listen() and app.playlists
 */
declare var app: App

/**
 * Gets/Sets window at top
 */
declare var atTop: boolean

/**
 * Gets/Sets window at most top (over all windows)
 */
declare var atTopMost: boolean

/**
 * Gets/Sets border of the window
 */
declare var bordered: boolean

/**
 * Get Bounds class of the window
 */
declare var bounds: Bounds

/**
 * Gets bool value whether menu can be built in window (Windows system) or
need to be created outside of window (OSX)
 */
declare var builtInMenu: boolean

/**
 * Window can be maximized
 */
declare var canMaximize: boolean

/**
 * Window can be minimized
 */
declare var canMinimize: boolean

/**
 * Gets/Sets window's client height
 */
declare var clientHeight: integer

/**
 * Gets/Sets window's client width
 */
declare var clientWidth: integer

/**
 * Gets align of the docked window.
Available values are 'begin', 'middle', 'end'.
 */
declare var dockAlign: string

/**
 * Gets position of the window where to dock by default.
Available values are 'top', 'bottom', 'left', 'right'.
 */
declare var dockPos: string

/**
 * Gets/Sets fade in-out time of the window in ms.
 */
declare var fadeTime: integer

/**
 * Gets/Sets window style to flat. This style is used for notifications dialogs or maximized video window.
 */
declare var flat: boolean

/**
 * Gets maximized state of the window
 */
declare var maximized: boolean

/**
 * Gets minimized state of the window
 */
declare var minimized: boolean

/**
 * Gets/Sets result of modal window (window will close automatically when value is set)
 */
declare var modalResult: integer

/**
 * Gets/Sets whether window can be moved
 */
declare var moveable: boolean

/**
 * Provides functionality common to all JavaScript objects.
 */
declare var Object: ObjectConstructor

/**
 * Gets/Sets opacity of the window in percentage (0=transparent to 100=opaque, default is 100)
 */
declare var opacity: byte

/**
 * Shape of the window used when semi-transparent window need to be shown.
if set to true. It's supposed to be a name of the PNG file with alpha.
 */
declare var popupMenuWindows: boolean

/**
 * Gets/Sets name for window's position and size save
 */
declare var posSaveName: string

/**
 * Gets/Sets whether window can resize
 */
declare var resizeable: boolean

/**
 * Gets/Sets title of the window (visible in the caption bar).
 */
declare var title: string

/**
 * Gets/Sets tool window style
 */
declare var toolWindow: boolean

/**
 * Get's URL of the window.
 */
declare var url: string

/**
 * Get window visibility
 */
declare var visible: boolean

/**
 * The exported instance of NavUtils.
 */
declare var navUtils: NavUtils

/**
 * Defines nodes and node structure of media tree (and other trees as well)
 * e.g. nodeHandlers.playlist defined how a playlist node will behave and which view will be shown
 * Example (see /sampleScripts/customNodes/viewHandlers_add.js for further examples, and/or the individual node handlers below):
 */
declare var nodeHandlers: Dictionary<NodeHandler> = {}

/**
 * nodeUtils are used with conjunction of nodeHandlers.
 */
declare var nodeUtils: NodeUtils = ...

/**
 * viewHandlers defines views (i.e. the view shown in the middle of main window, e.g. tracklist, albumlist, etc.)
Particular view handler for a node is defined by nodeHandler, e.g. nodeHandlers.genre.viewAs: ['genreView', 'albumlist', 'tracklist'] means that we can swith between 'genreView', 'albumlist' and 'tracklist' to view the genre content
 * Example (see /sampleScripts/customNodes/viewHandlers_add.js for more examples, or the individual handlers below):
 * 'tracklist' is defined by viewHandlers.tracklist below (aka viewHandlers['tracklist'] ):
 * **
 */
declare var viewHandlers: Dictionary<ViewHandler> = ...

/**
 * An object that represents a number of any kind. All JavaScript numbers are 64-bit floating-point numbers.
 */
declare var Number: NumberConstructor

/**
 * Get info whether user's using keyboard (can be used to show focus rectangle).
 * isUsingKeyboard
 * True when user's using keyboard.
 */
declare var usingKeyboard: boolean = false

/**
 * Return true when touch is using currently (method or event was thrown by touch).
 */
declare var usingTouch: boolean

// === FUNCTIONS ===
/**
 * NOTE: This is LEGACY in version 5.1, use ES6 class/extends and registerClass instead
 * Inherits a control to a new one. Such a newly created class also contains $super field.
This is because JavaScript does not include native inheritance. For a brief on inheritance, there are many helpful resources online about object-oriented programming. Here is one.
 * name of the new class
 * parent class to inherit from
 * List of all methods, use 'initialize' as a constructor
 * List of all properties
 * inheritClass
 * Window
 */
declare function inheritClass(className, parent, methods, properties?): void

/**
 * Makes window active.
 */
declare function activate(): void

/**
 * Send debug string to log
 */
declare function callODS(s): void

/**
 * Close window
 */
declare function closeWindow(): void

/**
 * Create child window with current window is set as parent
 * URL to open in new window
 * Parameters to create window (left, top, width, height)
 */
declare function createOwnWindow(URL, params): SharedWindow

/**
 * Executes the given JS code in the target HTML window.
 */
declare function executeCode(...params): any

/**
 * Exceutes the given JS script in the target HTML window.
 * URL of script to be executed
 */
declare function executeFile(URL): void

/**
 * Get async show token (to override default show mechanism). Call this token once dialog is prepared and can be shown.
 */
declare function getAsyncShowToken(): any

/**
 * Create/Update/Delete embedded window with custom content.
 */
declare function handleEmbeddedWindow(...params): Promise<any>

/**
 * Hide window
 */
declare function hide(): void

/**
 * Include script to current window
 * Name of script file
 */
declare function include(filename): void

/**
 * Maximize window
 */
declare function maximize(): void

/**
 * Shows standard message dialog.
 * Text of the message.
 * Message dialog type: 'warning', 'error', 'information', 'confirmation'  or 'help'
 * Array of buttons. Each button could be defined by its string ID or by object (Buttons.addBtn | for structure see parameter params of addBtn method)
Possible button id's: 'btnYes', 'btnNo', 'btnOK', 'btnCancel', 'btnAbort', 'btnRetry', 'btnIgnore', 'btnAll', 'btnNoToAll', 'btnYesToAll', 'btnHelp', 'btnClose' or some custom.
 * Object with other params. Possible attributes:
 title: window caption.
 defaultButton: id of default button.
 chbCaption: caption of checkbox.
 checked: initial state of checkbox.
 * Callback function, that receives the result value (object with buttonID and checked attributes).
 */
declare function messageDlg(msg, dlgType, buttons, params, cbk): void

/**
 * Minimize window
 */
declare function minimize(): void

/**
 * Create new SharedStringList.
 */
declare function newStringList(...params): StringList

/**
 * Send debug string to event list. 
See: https://learn.microsoft.com/en-us/sysinternals/downloads/debugview
 */
declare function ODS(s): void

/**
 * Restore window
 */
declare function restore(): void

/**
 * Set bounds of the window
 */
declare function setBounds(Aleft, Atop, Awidth, Aheight): void

/**
 * Sets window client size
 */
declare function setClientSize(Awidth, Aheight): void

/**
 * Sets window size
 */
declare function setSize(Awidth, Aheight): void

/**
 * Show window
 */
declare function show(): void

/**
 * Show window as modal dialog
 */
declare function showModal(): void

/**
 * Translates string to current language
 */
declare function _(...params): any

/**
 * Converts a string to a floating-point number.
 * A string that contains a floating-point number.
 */
declare function parseFloat(string): number

/**
 * Converts a string to an integer.
 * A string to convert into a number.
 * A value between 2 and 36 that specifies the base of the number in string.
If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal.
All other strings are considered decimal.
 */
declare function parseInt(string, radix?): number

/**
 * Activate layout
 * layout object
 * activateLayout
 */
declare function activateLayout(layout): void

/**
 * Activate skin
 * Skin object
 * activateSkin
 */
declare function activateSkin(skin): void

/**
 * Add artwork to a media item.
 * File path or URL of image.
 * Options
 * addNewArtwork
 */
declare function addNewArtwork(imageLink, params): Promise<AnyDict>

/**
 * Whether the user is currently allowed to delete items.
 * uitools
 * getCanDelete
 */
declare function getCanDelete(): any

/**
 * Whether the user is currently allowed to modify things like track properties. False when in Party Mode.
 * uitools
 * getCanEdit
 */
declare function getCanEdit(): any

/**
 * Get a "Find more from same" menu with given parameters.
 * Parameters
 * getFindMoreFromSameMenu
 */
declare function getFindMoreFromSameMenu(params): Promise<SubmenuItem[] | undefined>

/**
 * Get either the helpContext of a controlClass or the data-help attribute of an element.
 * uitools
 * getHelpContext
 */
declare function getHelpContext(el): any

/**
 * Get the currently selected Tracklist. Make sure to wait for the list to be loaded with the SharedList.whenLoaded promise.
 * getSelectedTracklist
 */
declare function getSelectedTracklist(LV?): Tracklist | undefined

/**
 * Get a list of all installed skins.
Properties: title (string), fullPath (string), checked (boolean) [whether the skin is active], radiogroup (string, 'skin'), execute (function)
 * getSkins
 */
declare function getSkins(includeHotlinkIcon): any[]

/**
 * Get the tracklist of the currently selected data source.
 * getTracklist
 */
declare function getTracklist(): Tracklist | undefined

/**
 * Returns whether the selected list is NOT a list of media.
 * See notListItemSelected in actions.js (Defaults to an array of media types, i.e. 'track', 'album', 'playlistentry', ...)
 * notMediaListSelected
 */
declare function notMediaListSelected(params?): any

/**
 * Open a dialog window.
 * Name of the dialog as defined by its filename (e.g. dlgOptions)
 * Options to be passed to the dialog window script.
 * Callback that executes after window closes, if params.modal is true.
 * openDialog
 */
declare function openDialog(dialogName, params?, callback?): SharedWindow

/**
 * 5.0.1
 */
declare function openHelpContent(): void

/**
 * Open a webpage.
 * URL to open
 * Whether to show in an internal dialog instead of a web browser.
 * Whether to show in a modal (subordinate) dialog window.
 * openWeb
 */
declare function openWeb(url, internal?, modal?): SharedWindow

/**
 * Performs a track search on any search engine, with a provided track object and field to query.
 * Search engine URL, with the search query being replaced by %s or %S. For example: https://www.youtube.com/results?search_query=%s
 * The property of the track to search for (e.g. artist, albumArtist, series, album, title)
 * The SongData/Track object to query on the web.
 * Whether to show in an internal dialog instead of a web browser. Default = false
 * Whether to show in a modal (subordinate) dialog window. Default = false
 * openWebSearch
 */
declare function openWebSearch(searchEngineURL, prop, item, internal?, modal?): void

/**
 * Window
 */
declare function addPassiveOption(capture): any

/**
 * Merges two objects into one, props of object2 overrides object1 props/methods, but arrays are merged
 * object1
 * object2
 * advancedMergeObjects
 */
declare function advancedMergeObjects(o1, o2): {}

/**
 * Asynchronously process each item in an array.
 * Array to process
 * Callback for each item. Parameter 2 is the callback function to process the next item. Parameter 3 is item index.
 * Final callback after everything has been done.
 * asyncForEach
 */
declare function asyncForEach(list, next_item_callback, final_callback?): void

/**
 * Uses generator function to be asynchronously called until completed (or canceled by canceling the promise).
 * Generator function to be called
 * asyncGenerator
 */
declare function asyncGenerator(fn): Promise<unknown>

/**
 * Call function repeatedly while not fully blocking the main JS thread. It's useful for execution of loops that can take some time process and we don't want to block the main thread completely (and don't want to start a new thread either).
 * Function to be called with counter as a first parameter and token as a second parameter starting from second parameter of this function. Returns true when all operations are complete or false when new loop is needed.
 * Starting counter value
 * Token. An object with cancel property to cancel loop
 * Function to be called when all operations are done (main function from first parameter returns true) with parameters - counter, token.
 * asyncLoop
 */
declare function asyncLoop(fn, valFrom?, token?, finishedCallback?): void

/**
 * Binds disabled state of given element to given checkbox, i.e. element gets disabled once checkbox is unchecked and vice versa
 * checkbox that should disable the element
 * bindDisabled2Checkbox
 */
declare function bindDisabled2Checkbox(elem, checkbox): void

/**
 * Cancels given promise (if not null and if can/need to be be canceled)
 * promise
 * cancelPromise
 */
declare function cancelPromise(pr): void

/**
 * Removes all children elements of the given element. Unlike cleanElement() function, it doesn't clean all inner controls and so it's an optimized version 
used when there aren't controls used (otherwise, it would leave memory leaks).
 * Element to clean
 * cleanBasicElement
 */
declare function cleanBasicElement(e): Element

/**
 * Removes all children elements of the given element. Note that it uses e.removeChild() method in a loop, which is much faster than e.innerHTML=''.
Also calls cleanElement for all descendant controls.
 * Element to clean
 * Default false, cleans only children of e if set to 'true'.
 * cleanElement
 */
declare function cleanElement(e, onlyChildren?): Element

/**
 * [ADDED IN VERSION 5.0.1] For screen reader support: Clears the element's unique ID.
 * The div which is no longer active
 * clearAriaID
 */
declare function clearAriaID(div): void

/**
 * Merges two objects into the first one, props of object2 overrides object1 props/methods
 * object1
 * object2
 * concatObjects
 */
declare function concatObjects(o1, o2): object

/**
 * Makes copy of object
 * copyObject
 */
declare function copyObject(obj): any

/**
 * Returns control inside which this element is contained.
 * Element to check
 * elementControl
 */
declare function elementControl(el?): Control

/**
 * Converts value in em to pixels, based on given parent control. If no parent control is set, document.body is used.
 * Source value in em.
 * Parent control. The default is body element.
 * emToPx
 */
declare function emToPx(emNum, parentEl?): number

/**
 * Execute a callback function for every item in a SharedList, using getFastObject. The same object reference is reused, so do not use this method if you need to store the list contents. 
In that case, use listForEach, :method or SharedList.forEach.
 * The list to iterate (e.g. songs, albums, etc.)
 * Callback (It is passed each item of the list and its index)
 * fastForEach
 */
declare function fastForEach(list, callback): void

/**
 * Filter an ArrayLike based on a condition. Useful on types like HTMLCollection which lack Array.prototype.filter
 * List of items to filter.
 * Callback to filter
 */
declare function filterCondition<T>(nodeList, callback): T[]

/**
 * Get value of @fontLineSize, in px.
 * fontLineSizePx
 */
declare function fontLineSizePx(): any

/**
 * Execute a callback function for every element in an array.
 * List to iterate through
 * Callback (It is passed each item of nodeList and its index)
 * forEach
 */
declare function forEach<T>(nodeList, callback): void

/**
 * Converts event keyCode to its name, e.g. 9 is converted to 'Tab'.
 * Source event.
 */
declare function friendlyKeyName(e): string

/**
 * Returns class with all named elements inside the specified rootElement (document is used when not defined) to direct access.
Script can then do not need to call qid for any named element.
 * element
 * getAllUIElements
 */
declare function getAllUIElements(rootElement?): {     [key: string]: HTMLElement; }

/**
 * Return parent of the element.
 * Element to get his parent
 * getParent
 */
declare function getParent(e): any

/**
 * Returns style value from the CSS for given selector
 * Name of the style
 * Selector in CSS
 * getStyleRuleValue
 */
declare function getStyleRuleValue(style, selector): string

/**
 * Computes width of the text in pixels, based on given parent control. If no parent control is set, document.body is used.
 * Source text.
 * Parent control. The default is body element.
 * getTextWidth
 */
declare function getTextWidth(txt, parentEl?): any

/**
 * Handle captured mouse/touch move action. Should be typically called from mousedown/touchstart handler.
It will add elX and elY atributes to the event object - pointer coordinates relative to the top left corner of the element el - and passes it to moveaction and endaction functions.
 * bounding element
 * pointermove handler
 * pointerup handler
 * handleCapture
 */
declare function handleCapture(el, moveaction, endaction): void

/**
 * Loads a HTML file and includes it in the given element. It also executes all the scripts of the HTML file. Note that a call to initializeControls 
 might be needed in order to initialize any custom UI control in the loaded HTML. 
For all the scripts within the included HTML there's window.rootElement set to the element where the HTML is being included, in order to be able to modify the correct part of DOM (if needed).
 * Element where to load HTML
 * Source file for the HTML
 * includeHTML
 */
declare function includeHTML(element, filename): void

/**
 * Initializes an HTML element to a ControlClass. (see Control)
 * Element to initialize
 * initializeControl
 */
declare function initializeControl(control): void

/**
 * Initializes all UI controls below a particular HTML element. This means loading a necessary JS and all the initialization code. This is normally done automatically on window load by mminit.js inclusion.
 * Element to process (and all its children)
 * initializeControls
 */
declare function initializeControls(element): void

/**
 * Returns true, when parameter is Array
 * Parameter to test
 */
declare function isArray(x): x is any[]

/**
 * handle disabled states
 * 5.0.1
 */
declare function isElementDisabled(el): any

/**
 * Tests object for its emptiness
 * isEmptyObject
 */
declare function isEmptyObject(obj): obj is Record<string, never>

/**
 * Returns true, when parameter is Function
 * Parameter to test
 * isFunction
 */
declare function isFunction(x): x is AnyCallback

/**
 * Returns true, when parameter is Object literal
 * Parameter to test
 */
declare function isObjectLiteral(x): x is Record<any, any>

/**
 * Returns true, when parameter is promise
 * Function to test
 */
declare function isPromise(obj): obj is Promise<any>

/**
 * Returns true, promise was canceled
 * Promise to test
 */
declare function isPromiseCanceled(promise): any

/**
 * Returns true, when promise is already finished (resolved, rejected or canceled)
 * Promise to test
 */
declare function isPromiseFinished(promise): any

/**
 * Returns true, when parameter is String
 * Parameter to test
 */
declare function isString(x): x is string

/**
 * Checks whether the target element is visible. Both visibility and display style properties are checked.
 * Also check all parents for visibility. Default = true
 * isVisible
 */
declare function isVisible(element, includeParents?): boolean

/**
 * Asynchronously process each item in a SharedList or ArrayDataSource.
 * Array to process
 * Callback for each item. Parameter 2 is the callback function to process the next item. Parameter 3 is item index.
 * Final callback after everything has been done.
 * listAsyncForEach
 */
declare function listAsyncForEach(list, next_item_callback, final_callback?): void

/**
 * Execute a callback function for every item in a SharedList, using getValue.
 * The list to iterate (e.g. songs, albums, etc.)
 * Callback (It is passed each item of the list and its index), return true to break the loop
 * Callback to be executed after all items have been gone through
 * listForEach
 */
declare function listForEach(list, callback, final_callback?): void

/**
 * Get a comma-separated list of IDs of a SharedList.
 * The list object
 * Max number of items (If there are more, it will be truncated with a ...)
 * listGetCommaIDs
 */
declare function listGetCommaIDs(list, maxCount?): string

/**
 * Loads file content (synchronously).
 * File name or path
 * Callback to fire
 */
declare function loadFile(fname, callback?, params?): string

/**
 * Loads a specific SVG file from 'skin/icon' folder. Handles duplicate requests and asynchronous loading. Returns the SVG code, not a live DOM element.
 * Doesn't need to be called directly as it's automatically used by HTML like
 * The loaded icon can be further styled by CSS, e.g.
 * Name of the icon to load, without extension, e.g. 'close'.
 * Function to call, when icon content is loaded.
 * loadIcon
 */
declare function loadIcon(iconName, callback?): any

/**
 * Loads a specific SVG file from 'skin/icon' folder. Handles duplicate requests and asynchronous loading. Instead of returning the SVG code, this method provides a live DOM element, which is faster.
 * Doesn't need to be called directly as it's automatically used by HTML like
 * The loaded icon can be further styled by CSS, e.g.
 * Name of the icon to load, without extension, e.g. 'close'.
 * Function to call, when icon content is loaded.
 * loadIconFast
 */
declare function loadIconFast(iconName, callback?): SVGElement | undefined

/**
 * Can be called to avoid any layoutchange event occurence during execution of some code.
 * Element where all the changes occur (its sub-tree is modified).
 * A function during which execution won't any layout procession occur (only on its end).
 * lockedLayout
 */
declare function lockedLayout(element, callback): void

/**
 * Merges two objects into one, props of object2 overrides object1 props/methods
 * object1
 * object2
 * mergeObjects
 */
declare function mergeObjects(o1, o2): {}

/**
 * 5.0.3
 */
declare function notifySplitterChange(): void

/**
 * Process our internal attributes to properly initialize the document
 * processIncludes
 */
declare function processIncludes(element): void

/**
 * Converts value in pixels to em, based on given parent control. If no parent control is set, document.body is used.
 * Source value in pixels.
 * Parent control. The default is body element.
 * pxToEm
 */
declare function pxToEm(pxNum, parentEl?): number

/**
 * Returns the first document element for the selector. It's recommended to use more specific functions when possible, e.g. qid, since its
faster than a generic selector usage.
 * Selector
 * q
 */
declare function q(s): any

/**
 * Returns all elements for the given class.
 * Class name of the requested elements
 * qclass
 */
declare function qclass(cls): HTMLCollectionOf<Element>

/**
 * Returns the first element matching the selector (that is subnode of the given element)
 * Element to search within
 * Query selector
 * qe
 */
declare function qe(e, s): any

/**
 * Returns all elements for the given class, starting from a particular element.
 * Element to search within
 * Class name of the requested elements
 * qeclass
 */
declare function qeclass(e, cls): any

/**
 * Returns the first descendant element of the given element matching the given data ID.
 * Element to search within
 * data-id of the requested element
 * qeid
 */
declare function qeid(e, id): any

/**
 * Returns all elements for the given selector that are subnodes of the given element.
 * Element to search within
 * Query selector
 * qes
 */
declare function qes(e, s): NodeListOf<HTMLElement>

/**
 * Returns all elements for the tag name that are descendants of the given element
 * Element to search within
 * Tag name
 * qetag
 */
declare function qetag<TagName>(e, tag): HCO<HTMLElementTagNameMap[TagName]>

/**
 * Returns the first document element for the given ID.
 * ID of the requested element
 * qid
 */
declare function qid(id): any

/**
 * Returns all document elements for the selector.
 * Selector
 * qs
 */
declare function qs(s): NodeListOf<HTMLElement>

/**
 * Returns all elements for a given tag name
 * Tag name
 * qtag
 */
declare function qtag(tg): HTMLCollectionOf<any>

/**
 * Removes an element from DOM in a safe way, cleaning all its controls (including descendants).
 * Element to remove
 * Whether to hide the element's parentNode if it contains no additional children.
 * removeElement
 */
declare function removeElement(e, hideParentWhenNoChild?): void

/**
 * Request an animation frame to run, with the same features as requestAnimationFrameMM but automatically stops if the user has closed the window.
The token returned may correspond to either an AnimationFrame or a Timeout, so to cancel it, you must use cancelFrame.
 * Callback to execute.
 * requestFrame
 */
declare function requestFrame(callback): number

/**
 * Includes a JS file. Uses window.eval(), so that the content is executed in the 'window' context and also immediatelly available for the following code. 
'.js' extension isn't necessary and is added if missing. Duplicates (including those from <script> tag) are automatically ignored.
 * File or a list of files to be included
 * Function to be called when the inclusion is complete
 * Indicates whether the script code should be loaded as isolated, so that its global variables don't interfere with other scripts (useful for custom scripts)
 * requirejs
 */
declare function requirejs(files, callback?, isolate?, local?, reload?): any

/**
 * Resolve anything to a defined value. If a function is provided, then the return of that function is returned.
 * Property to resolve.
 * Default value if undefined.
 * Parameters to apply, if property is a function.
 * Object to bind, if the "this" property needs to be accessible.
 */
declare function resolveToValue(property, whenUndefined?, params?, bindObj?): any

/**
 * [ADDED IN VERSION 5.0.1] For screen reader support: Sets a focused element's active descendant. Required for keyboard navigation to work properly with screen readers. 
Gives the div a unique ID and sets the parent's aria-activedescendant. Use in conjunction with ARIA roles: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques 
The parent element must have a role (for example: table) as well as the active element (for example: row)
 * The div which is active
 * The parent element which is focused
 * setAriaActiveDescendant
 */
declare function setAriaActiveDescendant(div, parent): void

/**
 * [ADDED IN VERSION 5.0.1]
For screen reader support: Sets the aria-label attribute of the icon within the provided element. Screen readers will then read the label when moused over.
 * The div which contains the icon.
 * The label for screen readers to read when moused over.
 * setIconAriaLabel
 */
declare function setIconAriaLabel(div, label): void

/**
 * Sets visibility of the target element. Some elements can have custom handling, others are hidden by setting display to none.
 * Whether the element should be visible.
 * Whether to force animation
 * Whether to call layoutchange event
 * calls function after animation with source element as first parameter
 */
declare function setVisibility(element, visible, params?): HTMLElement

/**
 * Sets visibility of the target element without calling layoutchange event.
 * Additional parameters. {animate: false} forbid animation, {onComplete: someFunction} calls function someFunction after animation with source element as first parameter
 * setVisibilityFast
 */
declare function setVisibilityFast(element, visible, params?): void

/**
 * Toggles visibility of the element using setVisibility.
 * visibility params
 * toggleVisibility
 */
declare function toggleVisibility(el, params?): HTMLElement

/**
 * Translate whole document. This function calls translateElement function with document element.
 */
declare function translateDocument(): void

/**
 * Translate element and all his subelements using these selectors:
    label, input, option, button, li, h1, h2, h3, h4, h5, p
Also you can let translate any other selector by adding attribute
    data-localize
You can prevent any selector to be translated by adding data-no-localize
attribute.
 * Root Element to be translated
 */
declare function translateElement(el): void

/**
 * Tries to evaluate content, returns the result or undefined (error)
 * Parameter to evaluate
 */
declare function tryEval(content): any

/**
 * Calls the specified function when all page scripts are loaded and processed. So it's processed after window.onLoad event, but before whenReady() event. 
If called after this event, the callback function is executed immediately.
 * Callback function to be executed when ready.
 * whenLoaded
 */
declare function whenLoaded(callback): void

/**
 * Calls the specified function when all scripts are loaded, the whole DOM is processed by our parser and all controls are initialized. I.e. at this point everything is ready to be used. So both window.onLoad and whenLoaded() events occur before this one.
If called after this event, the callback function is executed immediately.
 * Callback function to be called.
 * whenReady
 */
declare function whenReady(callback): void

/**
 * 5.0.3
 */
declare function applyStylingAfterFrame(callback): void

/**
 * [ADDED IN VERSION 5.0.3] Cancel a frame returned by window.requestFrame() or window.requestAnimationFrameMM(). 
Because the token type of requestAnimationFrameMM can either be that of a Timeout or an AnimationFrame, you must use this method instead of cancelAnimationFrame() to guarantee that it is cancelled.
 * cancelFrame
 */
declare function cancelFrame(token): void

/**
 * Execute an app/window reload.
 * Whether to store UI state during reload
 * Whether to JUST reload LESS styling
 * Whether LESS was changed
 * Custom caption to display in the reload prompt.
 * doReload
 */
declare function doReload(storeState?, softReload?, lessChanged?, customCaption?): void

/**
 * Only used when running in webApp mode
 */
declare function getPlayer(): Player

/**
 * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in window.cleanupDocument()
 * Object where to set listener
 * Event name of the listener
 * Method for callback dispatch
 * localListen
 */
declare function localListen(object, eventName, func, eventCapture?): void

/**
 * 5.0.3
 */
declare function queryLayoutAfterFrame(callback): void

/**
 * Reload LESS styling (Only allowed in main window).
 * reloadLess
 */
declare function reloadLess(): void

/**
 * Our version of requestAnimationFrame which respects window visibility and drops calling to 2 calls pers second when window is not visible
and reduce to 30FPS when window is not active.
 * Function to be called
 * requestAnimationFrameMM
 */
declare function requestAnimationFrameMM(callback?): number

/**
 * [ADDED IN VERSION 5.0.2]
Set runtime values for LESS variables, for skins, without destroying existing values.
 * Values, in key-value format. If the value is undefined (or null or empty string), the variable will be removed.
 * Optional: Addon ID of the skin. If specified, the LESS variables will only apply to the one skin.
 * Optional: Flush (reset) existing LESS variables
 * setLessValues
 */
declare function setLessValues(values, ext_id?, flush?): any

/**
 * 5.0.3
 */
declare function _applyLayoutQueryCallbacks(): void

/**
 * 5.0.3
 */
declare function _applyStylingCallbacks(): void

// === CLASSES ===
declare class JSHotkeys {
}

/**
 * UI element for presentation of installed addons
 */
declare class AddonListView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Cancels the current inline edit.
     * editCancel
     */
    editCancel(): void

        /**
     * Confirms the current inline edit.
     * editSave
     */
    editSave(continueEdit, newItemSelected): void

        /**
     * Starts inline editing of the focused item.
     * editStart
     */
    editStart(): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI Albumlist element
 */
declare class AlbumListView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI album tracklist element
 */
declare class AlbumTracklist {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Cancels the current inline edit.
     * editCancel
     */
    editCancel(): void

        /**
     * Confirms the current inline edit.
     * editSave
     */
    editSave(continueEdit, newItemSelected): void

        /**
     * Starts inline editing of the focused item.
     * editStart
     */
    editStart(): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI AlbumViewHeader element
 */
declare class AlbumViewHeader {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * AnimatedContainer - control for animating long label in limited space. Label control has to raise change event after content change to work properly.
 */
declare class AnimatedContainer {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI ArtistAlbums element
 */
declare class ArtistAlbums {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI ArtistGrid element
 */
declare class ArtistGrid {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

declare class ArtistTrackList {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets of the focused Column object.
     */
    get focusedColumn(): any

        /**
     * Gets/sets index of the focused column, based on all columns array
     */
    get focusedColumnIndex(): number

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the next visible column (to the right), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getNextVisibleColumn
     */
    getNextVisibleColumn(column, editable?): any

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the previous visible column (to the left), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getPrevVisibleColumn
     */
    getPrevVisibleColumn(column, editable?): any

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * Returns a visible column that's 'offset' columns to the right (if offset is positive).
     * Starting column
     * Distance of the column
     * Must be editable
     * getVisibleColumnOffset
     */
    getVisibleColumnOffset(column, offset, editable): any

        /**
     * Hides column
     * A column index to be removed. Order in visibleColumns array.
     * hideColumn
     */
    hideColumn(columnVIdx): void

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Change order of the column. Indexes are order in visibleColumns array.
     * Original index of the column to be moved
     * New index of the column
     * moveColumn
     */
    moveColumn(oldVIdx, newVIdx): void

        /**
     * Moves focus one column to the left.
     * Must be editable
     * moveFocusLeft
     */
    moveFocusLeft(editable?): boolean

        /**
     * Moves focus one column to the right.
     * Must be editable
     * moveFocusRight
     */
    moveFocusRight(editable?): boolean

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Sets list of columns as were shown (configured by user)
     * Ignore new columns and add just these defined in columns variable
     * restoreColumns
     */
    restoreColumns(columns, ignoreNewColumns?): void

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Shows/Hides column based on type
     * A column type to be shown/hidden.
     * show/hide.
     * setColumnVisibility
     */
    setColumnVisibility(columnType, value): void

        /**
     * Set new list of columns to be shown
     * setColums
     */
    setColumns(newColumns): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Make column visible
     * A column index to be visible
     * showColumn
     */
    showColumn(columnIdx): number

        /**
     * Gets list of columns as are actualy shown (configured by user)
     * List of columns to store. Default is this.columns array
     * storeColumns
     */
    storeColumns(defColumns?): any[]

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI ArtistTracks subview element
 */
declare class ArtistTracks {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI ArtistViewHeader element
 */
declare class ArtistViewHeader {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI Art & details window element
 */
declare class ArtWindow {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI ArtworkList element
 */
declare class ArtworkList {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Cancels the current inline edit.
     * editCancel
     */
    editCancel(): void

        /**
     * Confirms the current inline edit.
     * editSave
     */
    editSave(continueEdit, newItemSelected): void

        /**
     * Starts inline editing of the focused item.
     * editStart
     */
    editStart(): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI ArtworkRectangle element, control for displaying image or given icon, if no image is known
 */
declare class ArtworkRectangle {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Get/set dataObject. It is used for getting different sizes of image and have to implement standard getThumbAsync method (like album.getThumbAsync, artist.getThumbAsync, genre.getThumbAsync)
     */
    get dataObject(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Returns true, if this control does not have image/collage and displays only icon
     */
    get emptyArtwork(): boolean

        /**
     * Get/set id of icon used when no image is present
     */
    get icon(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Hides artwork and shows icon.
     * hideImage
     */
    hideImage(): void

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Loads artwork from given link and shows it instead of icon.
     * Link to artwork.
     * Link to full size artwork. Useful when showing artwork from cache/online, which could be saved.
     * showImage
     */
    showImage(imgLink, origImageLing?): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI AudiobookCollectionView element
 */
declare class AudiobookCollectionView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Control for configuration of auto-convert rules
 */
declare class AutoConvertConfig {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Background image control - mainly for showing hi-res Artist images.
 */
declare class BackgroundImage {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Base for all UI CollectionView elements.
 */
declare class BaseCollectionView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Base class for visualizer controls.
 */
declare class BaseVis {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Function called for possible drawing new track title and artist, after track change.
     * onPaintTitle
     */
    onPaintTitle(title, artist): void

        /**
     * Function called on every parent control size change
     * New width of visualization parent control, in pixels.
     * New height of visualization parent control, in pixels.
     * onResizeHandler
     */
    onResizeHandler(w, h): void

        /**
     * Function called when playback stopped or paused.
     * onStopHandler
     */
    onStopHandler(): void

        /**
     * Function called for visualization update. Make all vis. drawing actions here.
     * {{#crossLink "VisResult"}}VisResult object{{/crossLink}} with visualization data.
     * onUpdateHandler
     */
    onUpdateHandler(visData): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Base class for button in Buttons control.
 */
declare class Button {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-value attribute of the button element. Get returns null if not found.
     */
    get dataValue(): string

        /**
     * Gets/sets the button default (highlighted)
     */
    get default(): boolean

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets text content of the button
     */
    get textContent(): string

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Gets/sets width of the button
     */
    get width(): number

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI Buttons element.
 * Supported standard button ids: btnYes, btnNo, btnOK, btnCancel, btnAbort, btnRetry, btnIgnore, btnAll, btnNoToAll, btnYesToAll, btnHelp, btnClose.
 * Supported button's custom attributes:
 */
declare class Buttons {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add specified button to the control
     * addBtn
     */
    addBtn(params): ElementWith<Button>

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Animated checkbox/radio
 */
declare class Checkbox {
        /**
     * Gets/Sets check state
     */
    get checked(): boolean

        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Sets whether the checkbox can be focused
     */
    set focusable(val): void

        /**
     * Gets/Sets indeterminate third "half-checked" state
     */
    get indeterminate(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/Sets caption the checkbox
     */
    get text(): string

        /**
     * Gets/Sets whether three states are supported
     */
    get triStateSupport(): boolean

        /**
     * Gets/Sets type of the checkbox, default is 'text', set to 'radio' for radio buttons
     */
    get type(): string

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI tree element with support for checkbox handling
 */
declare class CheckboxTree {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns list of checked objects
     * getCheckedObjects
     */
    getCheckedObjects(): SharedList<SharedObject>

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns list of all objects for which check state was modified, check state is indicated via isChecked within the list
     * getObjectList
     */
    getObjectList(): any

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * Returns list of unchecked objects
     * getUncheckedObjects
     */
    getUncheckedObjects(): SharedList<SharedObject>

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets list of objects to be checked
     * setCheckedObjects
     */
    setCheckedObjects(list): Promise<unknown>

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Media server's client configuration element.
 */
declare class ClientConfig {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI CollectionView element.
 */
declare class CollectionView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * A column definition for GridView
 * Column
 */
declare class Column {
}

/**
 * UI Tracklist element - specialized control for showing a list of tracks with columns
 * ColumnTrackList
 */
declare class ColumnTrackList {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets of the focused Column object.
     */
    get focusedColumn(): any

        /**
     * Gets/sets index of the focused column, based on all columns array
     */
    get focusedColumnIndex(): number

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the next visible column (to the right), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getNextVisibleColumn
     */
    getNextVisibleColumn(column, editable?): any

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the previous visible column (to the left), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getPrevVisibleColumn
     */
    getPrevVisibleColumn(column, editable?): any

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * Returns a visible column that's 'offset' columns to the right (if offset is positive).
     * Starting column
     * Distance of the column
     * Must be editable
     * getVisibleColumnOffset
     */
    getVisibleColumnOffset(column, offset, editable): any

        /**
     * Hides column
     * A column index to be removed. Order in visibleColumns array.
     * hideColumn
     */
    hideColumn(columnVIdx): void

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Change order of the column. Indexes are order in visibleColumns array.
     * Original index of the column to be moved
     * New index of the column
     * moveColumn
     */
    moveColumn(oldVIdx, newVIdx): void

        /**
     * Moves focus one column to the left.
     * Must be editable
     * moveFocusLeft
     */
    moveFocusLeft(editable?): boolean

        /**
     * Moves focus one column to the right.
     * Must be editable
     * moveFocusRight
     */
    moveFocusRight(editable?): boolean

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Sets list of columns as were shown (configured by user)
     * Ignore new columns and add just these defined in columns variable
     * restoreColumns
     */
    restoreColumns(columns, ignoreNewColumns?): void

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Shows/Hides column based on type
     * A column type to be shown/hidden.
     * show/hide.
     * setColumnVisibility
     */
    setColumnVisibility(columnType, value): void

        /**
     * Set new list of columns to be shown
     * setColums
     */
    setColumns(newColumns): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Make column visible
     * A column index to be visible
     * showColumn
     */
    showColumn(columnIdx): number

        /**
     * Gets list of columns as are actualy shown (configured by user)
     * List of columns to store. Default is this.columns array
     * storeColumns
     */
    storeColumns(defColumns?): any[]

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Base class for all UI controls
 * Control
 */
declare class Control {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI element for presentation of available devices/storages to sync
 * DeviceListView
 */
declare class DeviceListView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Cancels the current inline edit.
     * editCancel
     */
    editCancel(): void

        /**
     * Confirms the current inline edit.
     * editSave
     */
    editSave(continueEdit, newItemSelected): void

        /**
     * Starts inline editing of the focused item.
     * editStart
     */
    editStart(): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI Dropdown element
 */
declare class Dropdown {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets dataSource attribute of the dropdown.
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets focusedIndex attribute of the dropdown. Supported only for dropdown list (readOnly = true).
     */
    get focusedIndex(): number

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets text value of the dropdown.
     */
    get value(): string

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Adds string value to the dropdown list. Valid only if readOnly is true and preload is true.
     * addValue
     */
    addValue(val): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Sets the focus on the control
     * focus
     */
    focus(): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Selects all text on the control
     * selectText
     */
    selectText(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Sets inital text value of the dropdown without calling change event.
     * Initial value of dropdown
     * setInitialValue
     */
    setInitialValue(val): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

        /**
     * Fires when the selected dropdown element is changed.
 change
     */
    setEditValue(val, newCaretPosition?, selectFromCaretToEnd?): void

}

/**
 * Base class for editable line control (default type 'text', optionally 'number').
 */
declare class Edit {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets whether the line should be read only
     */
    get readOnly(): any

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets value (text or number based on type)
     */
    get value(): string | number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Base class for content editable labels.
 * Editable
 */
declare class Editable {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI Podcast episode list element
 * EpisodeListView
 */
declare class EpisodeListView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Cancels the current inline edit.
     * editCancel
     */
    editCancel(): void

        /**
     * Confirms the current inline edit.
     * editSave
     */
    editSave(continueEdit, newItemSelected): void

        /**
     * Starts inline editing of the focused item.
     * editStart
     */
    editStart(): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI Podcast feed list element (unsubscribed podcasts in a podcast directory)
 * FeedListView
 */
declare class FeedListView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Cancels the current inline edit.
     * editCancel
     */
    editCancel(): void

        /**
     * Confirms the current inline edit.
     * editSave
     */
    editSave(continueEdit, newItemSelected): void

        /**
     * Starts inline editing of the focused item.
     * editStart
     */
    editStart(): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI file type tree element.
 * FileTypeTree
 */
declare class FileTypeTree {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets of the focused Column object.
     */
    get focusedColumn(): any

        /**
     * Gets/sets index of the focused column, based on all columns array
     */
    get focusedColumnIndex(): number

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the next visible column (to the right), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getNextVisibleColumn
     */
    getNextVisibleColumn(column, editable?): any

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the previous visible column (to the left), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getPrevVisibleColumn
     */
    getPrevVisibleColumn(column, editable?): any

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * Returns a visible column that's 'offset' columns to the right (if offset is positive).
     * Starting column
     * Distance of the column
     * Must be editable
     * getVisibleColumnOffset
     */
    getVisibleColumnOffset(column, offset, editable): any

        /**
     * Hides column
     * A column index to be removed. Order in visibleColumns array.
     * hideColumn
     */
    hideColumn(columnVIdx): void

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Change order of the column. Indexes are order in visibleColumns array.
     * Original index of the column to be moved
     * New index of the column
     * moveColumn
     */
    moveColumn(oldVIdx, newVIdx): void

        /**
     * Moves focus one column to the left.
     * Must be editable
     * moveFocusLeft
     */
    moveFocusLeft(editable?): boolean

        /**
     * Moves focus one column to the right.
     * Must be editable
     * moveFocusRight
     */
    moveFocusRight(editable?): boolean

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Sets list of columns as were shown (configured by user)
     * Ignore new columns and add just these defined in columns variable
     * restoreColumns
     */
    restoreColumns(columns, ignoreNewColumns?): void

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Shows/Hides column based on type
     * A column type to be shown/hidden.
     * show/hide.
     * setColumnVisibility
     */
    setColumnVisibility(columnType, value): void

        /**
     * Set new list of columns to be shown
     * setColums
     */
    setColumns(newColumns): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Make column visible
     * A column index to be visible
     * showColumn
     */
    showColumn(columnIdx): number

        /**
     * Gets list of columns as are actualy shown (configured by user)
     * List of columns to store. Default is this.columns array
     * storeColumns
     */
    storeColumns(defColumns?): any[]

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI element to represent view filter editor
 * FilterEditor
 */
declare class FilterEditor {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Sets whether to show collection dropdown
     */
    set showCollection(val): void

        /**
     * Sets whether to show search limits config
     */
    set showLimits(val): void

        /**
     * Sets whether to show sort orders config
     */
    set showSortOrders(val): void

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI folder tree element for selection of folders.
 * FolderTree
 */
declare class FolderTree {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Return checked folders as string list
     * if true then also subfolders of checked parent are returned
     * getCheckedFolders
     */
    getCheckedFolders(parent_independent): StringList

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI GenreGrid element
 * GenreGrid
 */
declare class GenreGrid {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI GenreViewHeader element
 * GenreViewHeader
 */
declare class GenreViewHeader {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI GridView element
 * GridView
 */
declare class GridView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets of the focused Column object.
     */
    get focusedColumn(): any

        /**
     * Gets/sets index of the focused column, based on all columns array
     */
    get focusedColumnIndex(): number

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the next visible column (to the right), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getNextVisibleColumn
     */
    getNextVisibleColumn(column, editable?): any

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the previous visible column (to the left), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getPrevVisibleColumn
     */
    getPrevVisibleColumn(column, editable?): any

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * Returns a visible column that's 'offset' columns to the right (if offset is positive).
     * Starting column
     * Distance of the column
     * Must be editable
     * getVisibleColumnOffset
     */
    getVisibleColumnOffset(column, offset, editable): any

        /**
     * Hides column
     * A column index to be removed. Order in visibleColumns array.
     * hideColumn
     */
    hideColumn(columnVIdx): void

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Change order of the column. Indexes are order in visibleColumns array.
     * Original index of the column to be moved
     * New index of the column
     * moveColumn
     */
    moveColumn(oldVIdx, newVIdx): void

        /**
     * Moves focus one column to the left.
     * Must be editable
     * moveFocusLeft
     */
    moveFocusLeft(editable?): boolean

        /**
     * Moves focus one column to the right.
     * Must be editable
     * moveFocusRight
     */
    moveFocusRight(editable?): boolean

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Sets list of columns as were shown (configured by user)
     * Ignore new columns and add just these defined in columns variable
     * restoreColumns
     */
    restoreColumns(columns, ignoreNewColumns?): void

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Shows/Hides column based on type
     * A column type to be shown/hidden.
     * show/hide.
     * setColumnVisibility
     */
    setColumnVisibility(columnType, value): void

        /**
     * Set new list of columns to be shown
     * setColums
     */
    setColumns(newColumns): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Make column visible
     * A column index to be visible
     * showColumn
     */
    showColumn(columnIdx): number

        /**
     * Gets list of columns as are actualy shown (configured by user)
     * List of columns to store. Default is this.columns array
     * storeColumns
     */
    storeColumns(defColumns?): any[]

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Tracklist grouped by albums
 * GroupedTrackList
 */
declare class GroupedTrackList {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets of the focused Column object.
     */
    get focusedColumn(): any

        /**
     * Gets/sets index of the focused column, based on all columns array
     */
    get focusedColumnIndex(): number

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the next visible column (to the right), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getNextVisibleColumn
     */
    getNextVisibleColumn(column, editable?): any

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the previous visible column (to the left), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getPrevVisibleColumn
     */
    getPrevVisibleColumn(column, editable?): any

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * Returns a visible column that's 'offset' columns to the right (if offset is positive).
     * Starting column
     * Distance of the column
     * Must be editable
     * getVisibleColumnOffset
     */
    getVisibleColumnOffset(column, offset, editable): any

        /**
     * Hides column
     * A column index to be removed. Order in visibleColumns array.
     * hideColumn
     */
    hideColumn(columnVIdx): void

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Change order of the column. Indexes are order in visibleColumns array.
     * Original index of the column to be moved
     * New index of the column
     * moveColumn
     */
    moveColumn(oldVIdx, newVIdx): void

        /**
     * Moves focus one column to the left.
     * Must be editable
     * moveFocusLeft
     */
    moveFocusLeft(editable?): boolean

        /**
     * Moves focus one column to the right.
     * Must be editable
     * moveFocusRight
     */
    moveFocusRight(editable?): boolean

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Sets list of columns as were shown (configured by user)
     * Ignore new columns and add just these defined in columns variable
     * restoreColumns
     */
    restoreColumns(columns, ignoreNewColumns?): void

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Shows/Hides column based on type
     * A column type to be shown/hidden.
     * show/hide.
     * setColumnVisibility
     */
    setColumnVisibility(columnType, value): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Make column visible
     * A column index to be visible
     * showColumn
     */
    showColumn(columnIdx): number

        /**
     * Gets list of columns as are actualy shown (configured by user)
     * List of columns to store. Default is this.columns array
     * storeColumns
     */
    storeColumns(defColumns?): any[]

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Base class for a generic icon button.
 * IconButton
 */
declare class IconButton {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI ImageGrid element
 * ImageGrid
 */
declare class ImageGrid {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Cancels the current inline edit.
     * editCancel
     */
    editCancel(): void

        /**
     * Confirms the current inline edit.
     * editSave
     */
    editSave(continueEdit, newItemSelected): void

        /**
     * Starts inline editing of the focused item.
     * editStart
     */
    editStart(): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI ItemListView element - a control for showing a list of items with D&D support for reordering, 'new' command and the end and 'edit', 'delete' functions.
 * ItemListView
 */
declare class ItemListView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Cancels the current inline edit.
     * editCancel
     */
    editCancel(): void

        /**
     * Confirms the current inline edit.
     * editSave
     */
    editSave(continueEdit, newItemSelected): void

        /**
     * Starts inline editing of the focused item.
     * editStart
     */
    editStart(): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI ListView element
 * ListView
 */
declare class ListView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Cancels the current inline edit.
     * editCancel
     */
    editCancel(): void

        /**
     * Confirms the current inline edit.
     * editSave
     */
    editSave(continueEdit, newItemSelected): void

        /**
     * Starts inline editing of the focused item.
     * editStart
     */
    editStart(): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Lyrics window element
 * LyricsWindow
 */
declare class LyricsWindow {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Content of the selected main window tab
 * MainTabContent
 */
declare class MainTabContent {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI main toolbar element.
 * MainToolbar
 */
declare class MainToolbar {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI MediaItemGrid element
 * MediaItemGrid
 */
declare class MediaItemGrid {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI media tree element.
 * MediaTree
 */
declare class MediaTree {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI menu button element.
 * MenuButton
 */
declare class MenuButton {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Multiview - control for displaying selected view.
 * Multiview
 */
declare class Multiview {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * NavigationHistory - control for manage navigation history
 * NavigationHistory
 */
declare class NavigationHistory {
}

/**
 * UI element to represent nodes as list view
 * NodeListView
 */
declare class NodeListView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI NowPlayingView element
 * NowPlayingTracklist
 */
declare class NowPlayingGroupedlist {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets of the focused Column object.
     */
    get focusedColumn(): any

        /**
     * Gets/sets index of the focused column, based on all columns array
     */
    get focusedColumnIndex(): number

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the next visible column (to the right), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getNextVisibleColumn
     */
    getNextVisibleColumn(column, editable?): any

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the previous visible column (to the left), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getPrevVisibleColumn
     */
    getPrevVisibleColumn(column, editable?): any

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * Returns a visible column that's 'offset' columns to the right (if offset is positive).
     * Starting column
     * Distance of the column
     * Must be editable
     * getVisibleColumnOffset
     */
    getVisibleColumnOffset(column, offset, editable): any

        /**
     * Hides column
     * A column index to be removed. Order in visibleColumns array.
     * hideColumn
     */
    hideColumn(columnVIdx): void

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Change order of the column. Indexes are order in visibleColumns array.
     * Original index of the column to be moved
     * New index of the column
     * moveColumn
     */
    moveColumn(oldVIdx, newVIdx): void

        /**
     * Moves focus one column to the left.
     * Must be editable
     * moveFocusLeft
     */
    moveFocusLeft(editable?): boolean

        /**
     * Moves focus one column to the right.
     * Must be editable
     * moveFocusRight
     */
    moveFocusRight(editable?): boolean

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Sets list of columns as were shown (configured by user)
     * Ignore new columns and add just these defined in columns variable
     * restoreColumns
     */
    restoreColumns(columns, ignoreNewColumns?): void

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Shows/Hides column based on type
     * A column type to be shown/hidden.
     * show/hide.
     * setColumnVisibility
     */
    setColumnVisibility(columnType, value): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Make column visible
     * A column index to be visible
     * showColumn
     */
    showColumn(columnIdx): number

        /**
     * Gets list of columns as are actualy shown (configured by user)
     * List of columns to store. Default is this.columns array
     * storeColumns
     */
    storeColumns(defColumns?): any[]

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI NowPlayingView element
 * NowPlayingTracklist
 */
declare class NowPlayingTracklist {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets of the focused Column object.
     */
    get focusedColumn(): any

        /**
     * Gets/sets index of the focused column, based on all columns array
     */
    get focusedColumnIndex(): number

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the next visible column (to the right), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getNextVisibleColumn
     */
    getNextVisibleColumn(column, editable?): any

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the previous visible column (to the left), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getPrevVisibleColumn
     */
    getPrevVisibleColumn(column, editable?): any

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * Returns a visible column that's 'offset' columns to the right (if offset is positive).
     * Starting column
     * Distance of the column
     * Must be editable
     * getVisibleColumnOffset
     */
    getVisibleColumnOffset(column, offset, editable): any

        /**
     * Hides column
     * A column index to be removed. Order in visibleColumns array.
     * hideColumn
     */
    hideColumn(columnVIdx): void

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Change order of the column. Indexes are order in visibleColumns array.
     * Original index of the column to be moved
     * New index of the column
     * moveColumn
     */
    moveColumn(oldVIdx, newVIdx): void

        /**
     * Moves focus one column to the left.
     * Must be editable
     * moveFocusLeft
     */
    moveFocusLeft(editable?): boolean

        /**
     * Moves focus one column to the right.
     * Must be editable
     * moveFocusRight
     */
    moveFocusRight(editable?): boolean

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Sets list of columns as were shown (configured by user)
     * Ignore new columns and add just these defined in columns variable
     * restoreColumns
     */
    restoreColumns(columns, ignoreNewColumns?): void

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Shows/Hides column based on type
     * A column type to be shown/hidden.
     * show/hide.
     * setColumnVisibility
     */
    setColumnVisibility(columnType, value): void

        /**
     * Set new list of columns to be shown
     * setColums
     */
    setColumns(newColumns): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Make column visible
     * A column index to be visible
     * showColumn
     */
    showColumn(columnIdx): number

        /**
     * Gets list of columns as are actualy shown (configured by user)
     * List of columns to store. Default is this.columns array
     * storeColumns
     */
    storeColumns(defColumns?): any[]

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

declare class NowPlayingView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Component for panels selection (e.g. in Options dialog)
 * PanelListView
 */
declare class PanelListView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Cancels the current inline edit.
     * editCancel
     */
    editCancel(): void

        /**
     * Confirms the current inline edit.
     * editSave
     */
    editSave(continueEdit, newItemSelected): void

        /**
     * Starts inline editing of the focused item.
     * editStart
     */
    editStart(): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI element to represent nodes as list view
 * PinnedListView
 */
declare class PinnedListView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Playlist Editor
 * PlaylistEditor
 */
declare class PlaylistEditor {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Playlist header
 * PlaylistHeader
 */
declare class PlaylistHeader {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI PodcastHeader element
 * PodcastHeader
 */
declare class PodcastHeader {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI progressBar element
 * progressBar
 */
declare class ProgressBar {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/Sets hint of the progress
     */
    get hint(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/Sets text of the progress
     */
    get text(): string

        /**
     * Gets/Sets value of the progress (in range 0..1)
     */
    get value(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI progress line element (e.g. bookmark indicator)
 * ProgressLine
 */
declare class ProgressLine {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/Sets value of the progress (in range 0..1)
     */
    get value(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI Rating element
 * Rating
 */
declare class Rating {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * If true, makes rating control readOnly
     */
    get readOnly(): any

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * If true, makes rating control tabbable
     */
    get tabbable(): boolean

        /**
     * Gets/sets value of the rating (-1 - 100). Value -1 is allowed only for rating with useUnknown property set to true.
     */
    get value(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Sets the focus on the control
     * focus
     */
    focus(): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI RatingListView element - a control for showing a list of ratings
 * RatingListView
 */
declare class RatingListView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Cancels the current inline edit.
     * editCancel
     */
    editCancel(): void

        /**
     * Confirms the current inline edit.
     * editSave
     */
    editSave(continueEdit, newItemSelected): void

        /**
     * Starts inline editing of the focused item.
     * editStart
     */
    editStart(): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI RelatedArtists subview element
 * RelatedArtists
 */
declare class RelatedArtists {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI RelatedGenres subview element
 * RelatedGenres
 */
declare class RelatedGenres {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI SearchBar element.
 * SearchBar
 */
declare class SearchBar {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Search rules and auto-playlist editor
 * SearchEditor
 */
declare class SearchEditor {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Sets whether to show collection dropdown
     */
    set showCollection(val): void

        /**
     * Sets whether to show search limits config
     */
    set showLimits(val): void

        /**
     * Sets whether to show sort orders config
     */
    set showSortOrders(val): void

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI Slider element
 * Slider
 */
declare class Slider {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * If true, show slider value with beginning in zero
     */
    get fromZero(): boolean

        /**
     * If true, reverse direction of the slider.
     */
    get invert(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Get/set maximal value of the slider.
     */
    get max(): number

        /**
     * Get/set minimal value of the slider.
     */
    get min(): number

        /**
     * Slider orientation. Possible values: 'vertical', 'horizontal'
     */
    get orientation(): string

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * For screen readers, is is the number of decimals that the screen reader outputs when reading the slider value.
     */
    get speechDecimals(): number

        /**
     * For screen readers, is is the name of the slider. (For example: "Volume")
     */
    get speechName(): string

        /**
     * For screen readers, this is the unit that the screen readers say when reading the slider value. (For example: "Percent")
     */
    get speechUnit(): string

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Get/set step of the slider. 0 means no discrete step.
     */
    get step(): number

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * If true, enables focusing control and controlling by arrow keys.
     */
    get tabbable(): boolean

        /**
     * Slider ticks interval.
     */
    get tickInterval(): number

        /**
     * Slider ticks placement. Possible values: 'none', 'both', 'bottomRight', 'topLeft', 'center'
     */
    get tickPlacement(): string

        /**
     * Array of slider ticks values. For regular ticks user should rather use tickInterval.
     */
    get ticks(): number[]

        /**
     * Get/set actual value of the slider.
     */
    get value(): any

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Get/set wheel step of the slider (step used by mouse wheel). Default is undefined = wheel uses "step" property.
     */
    get wheelStep(): number

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Base class for Sort By control.
 * SortBy
 */
declare class SortBy {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets sort ID
     */
    get id(): any

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets string for ORDER BY clause
     */
    get orderByString(): any

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets sort string for sorting
     */
    get sortString(): any

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Set listener control (where status messages are listening).
 * property listener
 */
declare class Statusbar {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI Tabs element
 * Tabs
 */
declare class Tabs {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Specifies whether all tabs have the same width (given by 'fixedWidth' css class).
     */
    get fixedWidth(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Array of all tab headers (HTML elements <li>)
     */
    get items(): TabElement[]

        /**
     * Returns the number of tabs.
     */
    get length(): number

        /**
     * Array of all tab panels (HTML elements <div>), i.e. all the content
     */
    get panels(): HCO<HTMLDivElement>

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets the currently selected tab (by its index).
     */
    get selectedIndex(): number

        /**
     * Gets/sets the currently selected tab (by its data-id).
     */
    get selectedTab(): string

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds a new tab to the last position.
     * Title of the new tab
     * The new panel
     * Icon name
     * addTab
     */
    addTab(title?, contentPanel?, icon?): any

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Closes given tab.
     * Tab header element to be closed
     * closeTab
     */
    closeTab(tab): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns index of the tab header element.
     * Tab header element
     * getTabIndex
     */
    getTabIndex(tab): number

        /**
     * Returns whether the tab has a close button.
     * Index of the tab. Optionally it could be the tab header element itself.
     * hasCloseButton
     */
    hasCloseButton(index): boolean

        /**
     * This method is called for each newly added panel.
     * Panel to be initialized
     * initializePanel
     */
    initializePanel(panel): any

        /**
     * This method is called for each newly added tab header.
     * Tab item to be initialized
     * initializeTab
     */
    initializeTab(tab): TabElement

        /**
     * Inserts a new tab at a specified position.
     * Index where to insert the new tab
     * Title of the new tab
     * The new panel
     * Icon name
     * insertTab
     */
    insertTab(index, title?, contentPanel?, icon?): any

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Moves a tab to a new location.
     * Index of the tab that will be moved.
     * Target index - where the tab will be moved.
     * moveTabTo
     */
    moveTabTo(tabIndex, newIndex): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Recalculates positions of individual sub-controls
     * render
     */
    render(): void

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Set given tab caption (title).
     * given tab or tab id
     * setTabTitle
     */
    setTabTitle(tab, title): void

        /**
     * Shows/hides given tab.
     * Tab header element to be hidden/shown
     * setTabVisibility
     */
    setTabVisibility(tab, value): void

        /**
     * Show/hide close button of a particular tab.
     * Index of the tab to close. Optionally it could be the tab header element itself.
     * Show/hide the close button
     * showCloseButton
     */
    showCloseButton(index, show?): Tabs

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Base class for button in Buttons control.
 * ToolButton
 */
declare class ToolButton {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Should clean up all the control stuff, i.e. mainly unlisten events.
     * cleanUp
     */
    cleanUp(): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Class for tooltips. Gets tooltip value from element's data-tip attribute or title attribute.
 * TooltipController
 */
declare class TooltipController {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Tooltip delay, in ms.
     */
    get delay(): number

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * Simple tracklist UI element
 * TracklistGrid
 */
declare class TracklistGrid {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets of the focused Column object.
     */
    get focusedColumn(): any

        /**
     * Gets/sets index of the focused column, based on all columns array
     */
    get focusedColumnIndex(): number

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the next visible column (to the right), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getNextVisibleColumn
     */
    getNextVisibleColumn(column, editable?): any

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the previous visible column (to the left), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getPrevVisibleColumn
     */
    getPrevVisibleColumn(column, editable?): any

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * Returns a visible column that's 'offset' columns to the right (if offset is positive).
     * Starting column
     * Distance of the column
     * Must be editable
     * getVisibleColumnOffset
     */
    getVisibleColumnOffset(column, offset, editable): any

        /**
     * Hides column
     * A column index to be removed. Order in visibleColumns array.
     * hideColumn
     */
    hideColumn(columnVIdx): void

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Change order of the column. Indexes are order in visibleColumns array.
     * Original index of the column to be moved
     * New index of the column
     * moveColumn
     */
    moveColumn(oldVIdx, newVIdx): void

        /**
     * Moves focus one column to the left.
     * Must be editable
     * moveFocusLeft
     */
    moveFocusLeft(editable?): boolean

        /**
     * Moves focus one column to the right.
     * Must be editable
     * moveFocusRight
     */
    moveFocusRight(editable?): boolean

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Sets list of columns as were shown (configured by user)
     * Ignore new columns and add just these defined in columns variable
     * restoreColumns
     */
    restoreColumns(columns, ignoreNewColumns?): void

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Shows/Hides column based on type
     * A column type to be shown/hidden.
     * show/hide.
     * setColumnVisibility
     */
    setColumnVisibility(columnType, value): void

        /**
     * Set new list of columns to be shown
     * setColums
     */
    setColumns(newColumns): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Make column visible
     * A column index to be visible
     * showColumn
     */
    showColumn(columnIdx): number

        /**
     * Gets list of columns as are actualy shown (configured by user)
     * List of columns to store. Default is this.columns array
     * storeColumns
     */
    storeColumns(defColumns?): any[]

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

declare class TrackListView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets of the focused Column object.
     */
    get focusedColumn(): any

        /**
     * Gets/sets index of the focused column, based on all columns array
     */
    get focusedColumnIndex(): number

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the next visible column (to the right), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getNextVisibleColumn
     */
    getNextVisibleColumn(column, editable?): any

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the previous visible column (to the left), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getPrevVisibleColumn
     */
    getPrevVisibleColumn(column, editable?): any

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * Returns a visible column that's 'offset' columns to the right (if offset is positive).
     * Starting column
     * Distance of the column
     * Must be editable
     * getVisibleColumnOffset
     */
    getVisibleColumnOffset(column, offset, editable): any

        /**
     * Hides column
     * A column index to be removed. Order in visibleColumns array.
     * hideColumn
     */
    hideColumn(columnVIdx): void

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Change order of the column. Indexes are order in visibleColumns array.
     * Original index of the column to be moved
     * New index of the column
     * moveColumn
     */
    moveColumn(oldVIdx, newVIdx): void

        /**
     * Moves focus one column to the left.
     * Must be editable
     * moveFocusLeft
     */
    moveFocusLeft(editable?): boolean

        /**
     * Moves focus one column to the right.
     * Must be editable
     * moveFocusRight
     */
    moveFocusRight(editable?): boolean

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Sets list of columns as were shown (configured by user)
     * Ignore new columns and add just these defined in columns variable
     * restoreColumns
     */
    restoreColumns(columns, ignoreNewColumns?): void

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Shows/Hides column based on type
     * A column type to be shown/hidden.
     * show/hide.
     * setColumnVisibility
     */
    setColumnVisibility(columnType, value): void

        /**
     * Set new list of columns to be shown
     * setColums
     */
    setColumns(newColumns): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Make column visible
     * A column index to be visible
     * showColumn
     */
    showColumn(columnIdx): number

        /**
     * Gets list of columns as are actualy shown (configured by user)
     * List of columns to store. Default is this.columns array
     * storeColumns
     */
    storeColumns(defColumns?): any[]

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI TreeView element.
 * TreeView
 */
declare class TreeView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI TVCollectionView element
 * TVCollectionView
 */
declare class TVCollectionView {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI VideoGrid element
 * VideoGrid
 */
declare class VideoGrid {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Cancels the current inline edit.
     * editCancel
     */
    editCancel(): void

        /**
     * Confirms the current inline edit.
     * editSave
     */
    editSave(continueEdit, newItemSelected): void

        /**
     * Starts inline editing of the focused item.
     * editStart
     */
    editStart(): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Sets list of columns as were shown (configured by user)
     * Ignore new columns and add just these defined in columns variable
     * restoreColumns
     */
    restoreColumns(columns, ignoreNewColumns?): void

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI ViewHeader element
 * ViewHeader
 */
declare class ViewHeader {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI YearAlbums subview element
 * YearAlbums
 */
declare class YearAlbums {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI YearArtists subview element
 * YearArtists
 */
declare class YearArtists {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI YearTracks subview element
 * YearTracks
 */
declare class YearTrackList {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets the datasource which is/will be shown
     */
    get dataSource(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets of the focused Column object.
     */
    get focusedColumn(): any

        /**
     * Gets/sets index of the focused column, based on all columns array
     */
    get focusedColumnIndex(): number

        /**
     * Gets/sets index of the focused item. In case there's a datasource, its focusedIndex property is modified.
     */
    get focusedIndex(): number

        /**
     * Gets the focused item/object according to the current focusedIndex
     */
    get focusedItem(): any

        /**
     * Gets/sets context menu of the header.
     */
    get headerContextMenu(): any

        /**
     * Header title to be shown (in case 'showHeader' property is set).
     */
    get headerTitle(): string

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Whether to show header.
     */
    get showHeader(): boolean

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Returns the div at the corresponding item index, or null if no div contains the item.
     * getDiv
     */
    getDiv(itemIndex): HTMLDivElement

        /**
     * Returns the next visible column (to the right), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getNextVisibleColumn
     */
    getNextVisibleColumn(column, editable?): any

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * Returns the previous visible column (to the left), or undefined if there isn't any.
     * Starting column
     * Must be editable
     * getPrevVisibleColumn
     */
    getPrevVisibleColumn(column, editable?): any

        /**
     * Returns the top scrolled item information/offset, so that it can be restored in case LV formatting/size is changed (and thus scroll offset of the canvas wouldn't match).
     * getRealScrollOffset
     */
    getRealScrollOffset(): { origScroll: any; topItem: number; }

        /**
     * Returns a visible column that's 'offset' columns to the right (if offset is positive).
     * Starting column
     * Distance of the column
     * Must be editable
     * getVisibleColumnOffset
     */
    getVisibleColumnOffset(column, offset, editable): any

        /**
     * Hides column
     * A column index to be removed. Order in visibleColumns array.
     * hideColumn
     */
    hideColumn(columnVIdx): void

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Change order of the column. Indexes are order in visibleColumns array.
     * Original index of the column to be moved
     * New index of the column
     * moveColumn
     */
    moveColumn(oldVIdx, newVIdx): void

        /**
     * Moves focus one column to the left.
     * Must be editable
     * moveFocusLeft
     */
    moveFocusLeft(editable?): boolean

        /**
     * Moves focus one column to the right.
     * Must be editable
     * moveFocusRight
     */
    moveFocusRight(editable?): boolean

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Sets list of columns as were shown (configured by user)
     * Ignore new columns and add just these defined in columns variable
     * restoreColumns
     */
    restoreColumns(columns, ignoreNewColumns?): void

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Shows/Hides column based on type
     * A column type to be shown/hidden.
     * show/hide.
     * setColumnVisibility
     */
    setColumnVisibility(columnType, value): void

        /**
     * Set new list of columns to be shown
     * setColums
     */
    setColumns(newColumns): void

        /**
     * Sets the datasource and persist parameters of the previous view (i.e. the same selection, focused item, etc.)
     * If false, does not force re-setting focusedIndex after copying selection. Default true.
     * setDataSourceSameView
     */
    setDataSourceSameView(ds, forceRestoreFocus?): any

        /**
     * Restores the top scrolled item according to the saved position.
     * setRealScrollOffset
     */
    setRealScrollOffset(position): void

        /**
     * Make column visible
     * A column index to be visible
     * showColumn
     */
    showColumn(columnIdx): number

        /**
     * Gets list of columns as are actualy shown (configured by user)
     * List of columns to store. Default is this.columns array
     * storeColumns
     */
    storeColumns(defColumns?): any[]

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

declare class YearTracks {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * UI YearViewHeader element
 * YearViewHeader
 */
declare class YearViewHeader {
        /**
     * Gets/sets context menu of the control. It could be also a function returning Menu object.
     */
    get contextMenu(): any

        /**
     * Gets/sets data-disabled attribute of the control and his childs
     */
    get disabled(): boolean

        /**
     * Gets/sets dock menu of the control. It could be also a function returning Menu object.
     */
    get dockMenuItems(): any

        /**
     * Gets/sets dock title.
     */
    get dockTitle(): string

        /**
     * Gets/sets dockable status of the control.
     */
    get dockable(): boolean

        /**
     * Gets/sets isDock status of the control.
     */
    get isDock(): boolean

        /**
     * Get/set whether this control is searchable (e.g. via search bar)
     */
    get isSearchable(): boolean

        /**
     * Gets/sets view data.
     */
    get parentView(): ViewData

        /**
     * Gets/sets params for statusbar.
     */
    get statusParams(): AnyDict

        /**
     * Gets/sets tabIndex property. Use instead of tabIndex in HTMLElement for correct handling of disabled state.
     */
    get tabIndex(): number

        /**
     * Gets/sets visibility state of the control.
     */
    get visible(): boolean

        /**
     * Add function to be called once during Control cleanUp
     * Function to add
     * addCleanFunc
     */
    addCleanFunc(func): void

        /**
     * Creates a new sub-control.
     * Class of the new control.
     * Initialization parameters.
     * addControl
     */
    addControl(controlClass, initParams?): HTMLDivElement

        /**
     * Adds item(s) to control context menu.
     * addToContextMenu
     */
    addToContextMenu(items): void

        /**
     * Control is allow drop objects.
     * canDrop
     */
    canDrop(e): boolean

        /**
     * Handle drag enter operation
     * dragEnter
     */
    dragEnter(e): void

        /**
     * Handle drag leave operation
     * dragLeave
     */
    dragLeave(e): void

        /**
     * Handle drag over operation
     * dragOver
     */
    dragOver(e): void

        /**
     * Handle drop operation
     * drop
     */
    drop(e, isSameControl?): void

        /**
     * Filters dataSource based on given criteria (used when searching/filtering items within, e.g. via search bar)
     * string phrase to filter
     * filterSource
     */
    filterSource(phrase): void

        /**
     * Format status text in this callback, when using object with detailed data.
     * formatStatus
     */
    formatStatus(data): string

        /**
     * Gets new drop mode
     * getDropMode
     */
    getDropMode(e): DropMode

        /**
     * Returns the first ancestor in the HTML DOM tree, that has controlClass and data-id. Searching is stopped on topParentCtrl, if defined.
     * ControlClass of the top parent, where to stop searching.
     * getParentControl
     */
    getParentControl(topParentCtrl): Control

        /**
     * Returns control to decide which subcontrols should be stored
e.g. Multiview component overrides this as it stores states only for the active control/view
     * getPersistentStateRootControl
     */
    getPersistentStateRootControl(): HTMLElement

        /**
     * Returns root key string under which the values are stored in persistent.JSON file on the disk.
     * getPersistentStateRootKey
     */
    getPersistentStateRootKey(): string

        /**
     * This method is pretty similar as app.listen(), but app.unlisten() is called automatically in Control.cleanUp()
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * localListen
     */
    localListen(object, event, func, capture?): ((...args) => any)

        /**
     * This method is supposed to automatically cancel running promises when component is going to destroy.
     * localPromise
     */
    localPromise(promise): any

        /**
     * Control is allow drag object
     * makeDraggable
     */
    makeDraggable(element, canBeDragged?): void

        /**
     * Raise the event on the Control
     * Name of the event
     * Custom parameters to be sent with the event
     * Whether the event can be canceled.
     * Whether the event can bubble.
     * of the event. Container by default.
     */
    raiseEvent(eventName, details?, isCancelable?, canBubble?, sender?): boolean

        /**
     * Request an animation frame in the control context. If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     */
    requestFrame(callback, callbackID?): void

        /**
     * Request an animation frame in the control context, with the same features as requestAnimationFrameMM(). If the control has been cleaned up, then the callback will not execute.
     * Callback to run.
     * Optional ID for callback, so that multiple instances of the callback do not execute at the same time.
     * requestFrameMM
     */
    requestFrameMM(callback, callbackID?): void

        /**
     * Calls requestIdleCallback, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called when idle
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestIdle
     */
    requestIdle(callback, callbackID?, useFirst?): number

        /**
     * Calls setTimeout, cancels the previous sheduled callback on cleanup or multiple calls
     * Callback, which should be called after timeout
     * Timeout, in ms
     * String name, which identifies the callback. If present, it cancels the previous sheduled callback
     * Valid only if callbackID is present, if true, previous unfinished timer is finished and the last is revoked
     * requestTimeout
     */
    requestTimeout(callback, timeMS, callbackID?, useFirst?): number

        /**
     * Restores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * restorePersistentStates
     */
    restorePersistentStates(): void

        /**
     * Restores state of the control and all its subcontrols having data-id specified.
     * hierarchical object including states of the control and the subcontrols
     * restoreState
     */
    restoreState(fromObject, isJustViewModeChange?): void

        /**
     * Set details for dragged element
     * setDragElementData
     */
    setDragElementData(element, e): void

        /**
     * Set status text. Can be simple string or object with data formatted later in formatStatus method.
     * setStatus
     */
    setStatus(data): void

        /**
     * Stores persistent (class) states for the control class and all subcontrols, this stores global (class) state (is same for all instances of the control)
     * storePersistentStates
     */
    storePersistentStates(): void

        /**
     * Stores state of the control and all its subcontrols having data-id specified.
     * storeState
     */
    storeState(): ControlState

        /**
     * Method for handling Promise with delayed progress.
     * Passed promise
     * Object with possible parameters:
     * thenWithProgress
     */
    thenWithProgress(pPromise, params?): void

}

/**
 * AlbumDataSource object, for use in album views
 * AlbumDataSource
 */
declare class AlbumDataSource {
}

/**
 * Base class for wrapper, which wraps JS array, so it can be used as dataSource of LV's.
 * ArrayDataSource
 */
declare class ArrayDataSource<T> {
}

/**
 * ArtistDataSource object, for use in artist views
 * ArtistDataSource
 */
declare class ArtistDataSource {
}

/**
 * DataSourceObject object, parent for data sources used in views
 * DataSourceObject
 */
declare class DataSourceObject {
}

/**
 * Object for initiating media sync to/from a device or storage
 * MediaSync
 */
declare class MediaSync {
        /**
     * Removes tracks from the device
     * removeFromDevice
     */
    removeFromDevice(tracklist): void

        /**
     * Initiates auto sync with this device
     * runAutoSync
     */
    runAutoSync(runLibraryScan?): Promise<void>

        /**
     * Scans remote (cloud/device) content into library
     * scanToLibrary
     */
    scanToLibrary(): Promise<void>

        /**
     * Sends tracks into device
     * to send
     * sendToDevice
     */
    sendToDevice(tracks, playlist): Promise<void>

}

/**
 * MetadataStorage
 * MetadataStorage
 */
declare class MetadataStorage {
}

/**
 * Base class for observable objects - objects supporting events
 * ObservableObject
 */
declare class ObservableObject {
}

/**
 * SeriesDataSource object, for use in series views
 * SeriesDataSource
 */
declare class SeriesDataSource {
}

declare class ValueLink<T> {
}

declare class Addon {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class AddonList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Addon

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Addon

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<Addon>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<Addon>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<Addon>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<Addon>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Addon>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<Addon>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Addon>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Addon>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Addon>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Addon

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Addon>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<AddonList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Album item
 * Album
 */
declare class Album {
        /**
     * Gets/sets album artist.
     */
    albumArtist: string

        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets/sets album description.
     */
    description: string

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets/sets MusicBrainz GID - link to release in MB database.
     */
    mbgid: string

        /**
     * Gets/sets MusicBrainz release group GID - link to release-group in MB database.
     */
    mbrggid: string

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets/sets title.
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Add tracks into album, asynchronously. If tracks are already in different album, they are moved.
     * to add
     */
    addTracksAsync(Tracks): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Returns link to cached image thumbnail of the nearest specified size
     */
    getThumbAsync(...params): number

        /**
     * Gets all tracks of this album
     */
    getTracklist(...params): Tracklist

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class AlbumList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Album

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Album

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<Album>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<Album>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<Album>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<Album>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Album>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<Album>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Album>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Album>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Album>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Album

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Album>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<AlbumList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Albums group item
 * AlbumsGroup
 */
declare class AlbumsGroup {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets all albums of this artist/genre
     */
    getAlbumList(...params): AlbumList

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Returns link to cached image thumbnail of the nearest specified size
     */
    getThumbAsync(...params): number

        /**
     * Gets all tracks of this album
     */
    getTracklist(...params): Tracklist

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class AlbumsGroupParent {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Main app support classes and functions
 * App
 */
declare class App {
        /**
     * Gets background tasks manager
     */
    backgroundTasks: BackgroundTasks

        /**
     * Gets Database support class
     */
    db: DB

        /**
     * Gets portable devices manager class
     */
    devices: Devices

        /**
     * Gets dialogs class
     */
    dialogs: Dialogs

        /**
     * Download manager class
     */
    downloader: Downloader

        /**
     * Gets class for operating file formats
     */
    fileFormats: FileFormats

        /**
     * Gets class for filesystem operations
     */
    filesystem: Filesystem

        /**
     * Gets hotkeys class
     */
    hotkeys: Hotkeys

        /**
     * Gets class for importer operations
     */
    importer: Importer

        /**
     * Gets class for masks operations
     */
    masks: Masks

        /**
     * Gets application platform, possible values are 'win', 'mac'
     */
    platform: string

        /**
     * Gets Player object
     */
    player: Player

        /**
     * Gets playlists manager class
     */
    playlists: Playlists

        /**
     * Gets podcasts manager class
     */
    podcasts: Podcasts

        /**
     * Gets settings class
     */
    settings: Settings

        /**
     * Gets media sharing (UPnP/DLNA) manager class
     */
    sharing: Sharing

        /**
     * Sleep timer class
     */
    sleeper: Shutdowner

        /**
     * Testing functionality for internal builds.
     */
    tests?: any

        /**
     * Gets Track operations class
     */
    trackOperation: TrackOperation

        /**
     * Gets class for tray icon operations
     */
    trayIcon: TrayIcon

        /**
     * Gets utils class
     */
    utils: Utils

        /**
     * Gets application version build
     */
    versionBuild: number

        /**
     * Gets application version major
     */
    versionHi: number

        /**
     * Gets application version minor
     */
    versionLo: number

        /**
     * Gets application version release
     */
    versionRelease: number

        /**
     * Gets application version string
     */
    versionString: string

        /**
     * Send debug string to event list.
     */
    ODS(s): void

        /**
     * Allow app to collect garbage.
     */
    allowCollect(): void

        /**
     * Close application.
     */
    closeApp(...params): void

        /**
     * Creates new window with URL. Currently these parameters are supported:
left, top, width, height - position and size of the window
posSaveName - save/restore name of the window
isPopup (true/false) - is popup window
     * Parameters (optional)
     */
    createWindow(...params): SharedWindow

        /**
     * Get current layout name.
     */
    currentLayout(): Skin

        /**
     * Get current skin.
     */
    currentSkin(): Skin

        /**
     * Download and install language pack
     * id of a language to download
     */
    downloadAndInstallLanguage(langID): Promise<any>

        /**
     * Finds whether updates are available for the addon list
     */
    findUpdatesAsync(list): Promise<any>

        /**
     * Stores all persistent values to hard drive
     */
    flushState(): void

        /**
     * 5.0.2
     */
    focusAssistIsOn(): boolean

        /**
     * Get list of addons. As archiveType parameter script can set type of addons to retrieve or 'all' for all addons.
     * Type of the addon
     * List of allowed addon IDs to include in the list
     */
    getAddonList(archiveType, ids?): AddonList

        /**
     * Gets collections manager class
     */
    getCollections(): Collections

        /**
     * Get's current player type. Possible values:
  0 - main player
  1 - micro player
  2 - mini player
     */
    getCurrentPlayer(): number

        /**
     * Creates new SharedIniFile interface to be used for reading and writing values from/to MediaMonkey.ini
     */
    getIniFile(): IniFileAccess

        /**
     * Get SkinList of available layouts. Selected item in this list is current layout.
     */
    getLayouts(): SkinList

        /**
     * Gets object by its type and additional info. Can return nil only if passed JS object contains parameter canReturnEmpty: true
     * like 'album', 'genre'
     * JS object with specifying info in its properties, like id, name, mbgid
     */
    getObject(objectType, info): Promise<any>

        /**
     * Get SkinList of available skins. Selected item in this list is current skin.
     */
    getSkins(): SkinList

        /**
     * Gets JS value/object previously stored by setValue,
     * unique id of the stored value
     * object to pass (default value)
     */
    getValue(id, defaultValue): any

        /**
     * Return true when app is on safe mode where scripts are not loaded and default skin/layout is set.
     */
    inSafeMode(): boolean

        /**
     * Install new addon or update existing addon.
     * Filename of the addon to install (or download URL)
     * Addon to update
     */
    installAddonAsync(path, addon?): Promise<any>

        /**
     * Sets event listener for given object.
     * NOTE: In this documentation, classes and interfaces' events are labeled event_(eventKey), e.g. event_mousestatechanged. Do not include event_ in the eventKey.
     * Object where to set listener
     * Event of the listener
     * Method for callback dispatch
     * Capture mode
     */
    listen(object, eventKey, callback, capture?): Function

        /**
     * Load defined layout.
     * Name of the layout to load
     */
    loadLayout(name): void

        /**
     * Fire the customLessChange event.
     */
    notifyCustomLessChange(): void

        /**
     * Fire the lessChange event (Notify all windows when LESS is recompiled in the main window)
NOTE: Added in 5.0.2
     * 5.0.2
     */
    notifyLessChange(): void

        /**
     * Fire the settingsChange event.
     */
    notifySettingsChange(): void

        /**
     * Prevent app to collect garbage (must be in pair with allowCollect).
     */
    preventCollect(): void

        /**
     * Remove JS value/object
     * unique id of the stored value
     */
    removeValue(id): void

        /**
     * Restart app. Using first optional parameter can restart in safe mode.
     * True to restart in safe mode
     */
    restart(safeMode?): void

        /**
     * Load defined skin.
     * File path of skin, OR Skin object i.e. from app.currentSkin()
     * Whether to do a soft reload of JUST the window (HTML and JS) rather than a full app restart.
     */
    selectSkin(skin, soft?): void

        /**
     * Stores JS value/object to be persistent
     * unique id of the stored value
     */
    setValue(id, value): void

        /**
     * Gets/Sets whether app is in party mode
     */
    set_inPartyMode(value): void

        /**
     * Switch to player in main window.
     */
    switchToMainPlayer(): void

        /**
     * Switch to player in tray bar.
     */
    switchToMicroPlayer(): void

        /**
     * Switch to player in separate mini window.
     */
    switchToMiniPlayer(): void

        /**
     * Uninstall addon.
     * Addon to uninstall
     */
    uninstallAddonAsync(addon): Promise<any>

        /**
     * Removes event listeners of the object. If event/method are not provided, 
then all matching listeners are removed.
     * Object of the listener
     * Event name of the listener
     * Callback to be removed from the list of listeners
     * capture mode
     */
    unlisten(object, eventKey?, callback?, capture?): void

        /**
     * Event is called when app reload is done.
     * See App.listen
     */
    event_afterReload: (() => void)

        /**
     * Event is called just before app reload (like when skin is changed).
     * See App.listen
     */
    event_beforeReload: (() => void)

        /**
     * Event is called when app is going to close.
     * See App.listen
     */
    event_close: (() => void)

        /**
     * Event is called when collection is changed.
     * changed Collection
     */
    event_collectionChange: ((collection) => void)

        /**
     * Event is called when something is changed (like artist were changed, new genre is added to DB etc.). Parameters of this event can be various based on change notification.
     * See App.listen
     */
    event_commonChange: ((...args) => void)

        /**
     * Event is called when custom LESS values are modified (see window.setLessValues()).
     * See App.listen
     */
    event_customLessChange: (() => void)

        /**
     * Event is called when taskbar MM dock orientation changed.
     * See App.listen
     * new taskbar dock is in horizontal orientation
     */
    event_dockChange: ((horizontal) => void)

        /**
     * Event is called when hotkey is received.
     * received hotkey
     */
    event_hotkey: ((hotkey) => void)

        /**
     * Event is called when app is idle.
     * See App.listen
     */
    event_idle: (() => void)

        /**
     * Event is called when LESS is modified (e.g. skin options are changed).
     * See App.listen
     */
    event_lessChange: (() => void)

        /**
     * Event is called when app menu is closed.
     * See App.listen
     */
    event_menuClosed: (() => void)

        /**
     * Event is called any object is pinned to / unpinned from the media tree.
     * See App.listen
     */
    event_objectPinChange: (() => void)

        /**
     * Event is called when playlist is changed in some way, additional params can detect the change type and new/old values 
Note: Introduced in 5.0.3
     * changed Playlist
     * (possible values 'title', 'new_child', 'child_removed', 'parent' or undefined)
     * possible values are playlist object, string or undefined
     * possible values are playlist object, string or undefined
     */
    event_playlistChange: ((playlist, changeType, newValue, oldValue) => void)

        /**
     * Event is called when a custom http request is received to our MediaServer
     * received request
     */
    event_remoteRequest: ((request) => void)

        /**
     * Event is called when settings were changed
     * See App.listen
     */
    event_settingsChange: (() => void)

        /**
     * Event is called when new track is added to DB
     * See App.listen
     * added track
     */
    event_trackAdded: ((track) => void)

        /**
     * Event is called when any track is changed
     * See App.listen
     * changed track
     */
    event_trackChange: ((track) => void)

        /**
     * Event is called when a track is modified and changes are commited.
     * See App.listen
     * modified track
     */
    event_trackModified: ((track) => void)

        /**
     * Event is called when app is received any command from taskbar icon.
Possible event names are 'click', 'dblclick', 'mousedown', 'mouseup', 'mousemove',
  'mouseenter', 'mouseexit', 'hintshow', 'hinthide', 'hinttimeout', 'hintclick'.
     * See App.listen
     * name of the event
     * button index
     * x mouse position
     * y mouse position
     */
    event_trayIconEvent: ((eventName, button, x, y) => void)

}

/**
 * Artist item
 * Artist
 */
declare class Artist {
        /**
     * Gets album count from this artist
     */
    albumCount: number

        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets/sets comment
     */
    comment: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets/sets MusicBrainz GID - link to MB database
     */
    mbgid: string

        /**
     * Gets/sets name
     */
    name: string

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets title (same as name)
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Commits this artist into database
     */
    commit(): void

        /**
     * Commits this artist into database
     */
    commitAsync(): Promise<any>

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Returns link to cached image thumbnail of the nearest specified size
     */
    getThumbAsync(...params): number

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class ArtistList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Artist

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Artist

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<Artist>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<Artist>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<Artist>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<Artist>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Artist>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<Artist>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Artist>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Artist>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Artist>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Artist

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Artist>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<ArtistList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class AuthReceiver {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class AutoConvertRule {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class AutoConvertSettings {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class AutoDJSettings {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

/**
 * Auto organization machine.
 * AutoOrganizeMgr
 */
declare class AutoOrganizeMgr {
        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

/**
 * Rule for auto organization machine.
 * AutoOrganizeRule
 */
declare class AutoOrganizeRule {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Background task and progress class.
 * BackgroundTask
 */
declare class BackgroundTask {
        /**
     * Gets ID of the task
     */
    id: number

        /**
     * Leading text to appear before the task's main text.
     */
    leadingText: string

        /**
     * Type of task progress
     */
    taskType: string

        /**
     * Whether this task has been already terminated
     */
    terminated: boolean

        /**
     * Text of the progress
     */
    text: string

        /**
     * Current position of progress
     */
    value: number

        /**
     * Terminate background task
     */
    terminate(): void

}

/**
 * Background task and progress class manager. Access via the global app.backgroundTasks.
 * BackgroundTasks
 */
declare class BackgroundTasks {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets total count of background progresses
     */
    count: number

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Creates new task
     */
    createNew(): BackgroundTask

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets background task in given index
     * Index of the task in list
     */
    getValue(index): BackgroundTask

        /**
     * Gets count of tasks with visible progresses
     */
    getVisibleCount(): number

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Terminate all background tasks
     */
    terminateAll(): void

        /**
     * Change event is called every time something is changed in any background task.
Available operations:
     * See App.listen
     * Operation performed to task.
     * task related do operation. When operation is 'unregistered', ID is returned instead of task
     */
    event_changed: ((op, task) => void)

}

/**
 * Base for all native objects.
 */
declare class Base {
}

declare class BasePlugin {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class BaseSharedWindow {
        /**
     * Get Bounds class of the window
     */
    bounds: Bounds

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Event is called when any mouse event is raised (move, down, up...)
     * See App.listen
     */
    event_mousestatechanged: (() => void)

        /**
     * Event is called when DCOM is finished
     * See App.listen
     */
    event_ready: (() => void)

}

/**
 * Bounds functions of the SharedWindow.
 * Bounds
 */
declare class Bounds {
        /**
     * Gets/Sets window's client height
     */
    clientHeight: number

        /**
     * Gets client rectangle, in screen coordinates.
     */
    clientRect: any

        /**
     * Gets/Sets window's client width
     */
    clientWidth: number

        /**
     * Gets/Sets height (including frames) of the window
     */
    height: number

        /**
     * Gets/Sets left position of the window
     */
    left: number

        /**
     * Gets/Sets top position of the window
     */
    top: number

        /**
     * Gets/Sets width (including frames) of the window.
     */
    width: number

        /**
     * Gets window rectangle.
     */
    windowRect: any

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Set bounds of the window
     */
    setBounds(aleft, atop, awidth, aheight): void

        /**
     * Sets window client size
     */
    setClientSize(awidth, aheight): void

        /**
     * Sets window position
     */
    setPosition(aLeft, aTop): void

        /**
     * Sets window size
     */
    setSize(awidth, aheight): void

}

declare class CloseToken {
        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

/**
 * Collection
 */
declare class Collection {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets/Sets collection query condition in the old INI format
     */
    collectionCond: string

        /**
     * Gets/Sets collection query condition in the new JSON portable and human readable format
     */
    criteriaJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets/Sets description of the collection.
     */
    description: string

        /**
     * Icon name of the collection.
     */
    icon: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets/Sets name of the collection.
     */
    name: string

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets/Sets position order of the collection node in media tree.
     */
    pos: number

        /**
     * Gets queryData of the collection.
     */
    queryData: QueryData

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets/Sets visibility of the collection in media tree. It can be one of the value:
  0 - invisible (false)
  1 - visible (true)
  2 - visible if not empty
     */
    visibleInMainTree: number

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Assign internal data from collection.
     */
    assignFrom(data): void

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Save collection to database.
     */
    commitAsync(): Promise<any>

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets list of collections sharing same view.
     */
    fillSharedViewList(): CollectionList

        /**
     * Get ArtistList based on collection filter. Returns album artists only.
     */
    getAlbumArtistList(): ArtistList

        /**
     * Get AlbumList based on collection filter.
     */
    getAlbumList(...params): AlbumList

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Get ArtistList based on collection filter.
     */
    getArtistList(): ArtistList

        /**
     * Get ArtistList based on collection filter. Returns artists only (contributing artists).
     */
    getArtistOnlyList(): ArtistList

        /**
     * Get cached empty of the collection.
     */
    getCachedIsEmpty(): boolean

        /**
     * Get cached visible status of the collection.
     */
    getCachedIsVisible(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get copy of the collection.
     */
    getCopy(): Collection

        /**
     * Get decade list.
     */
    getDecades(...params): DecadeList

        /**
     * Get GenreList based on collection filter.
     */
    getGenreList(): GenreList

        /**
     * Get visible status of the collection.
     */
    getIsVisibleAsync(): Promise<any>

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Get PersonList (ArtistList) based on collection filter and person type.
     */
    getPersonList(...params): ArtistList

        /**
     * Get Rating | rating class based on collection filter and specified rating.
Rating should be a value between 0 and 100 where 0 is unknown and 100 is 5 stars.
     * Rating value
     */
    getRating(rating): RatingItem

        /**
     * Get tracklist based on collection filter.
     */
    getTracklist(...params): Tracklist

        /**
     * Get type of a collection. Known types are:
  music, podcast, videopodcast, audiobook, classicalmusic, musicvideo, video, tv, mixed
     */
    getType(): string

        /**
     * Collection has video content.
     */
    hasVideoContent(): boolean

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Mark collection as to be deleted.
     */
    setDeleteFlag(): void

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * List of Collections.
 * CollectionList
 */
declare class CollectionList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Collection

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Collection

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<Collection>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<Collection>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<Collection>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<Collection>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Collection>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<Collection>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Collection>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Collection>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Collection>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Collection

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Collection>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<CollectionList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Collections
 */
declare class Collections {
        /**
     * Apply list of collections (update them in DB).
     * List of collections to apply
     */
    applyCollections(list): void

        /**
     * Assign data from another collections manager.
     * Source collections manager
     */
    assign(collections): void

        /**
     * Check collection with specified ID exists.
     * ID of the collection
     */
    collectionExists(id): boolean

        /**
     * Delete Collection.
     */
    deleteCollection(flt): void

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get collection by its ID.
     * ID of the collection to get
     */
    getCollection(id): Collection

        /**
     * Gets collection by its content type.
     */
    getCollectionByType(colType): Collection

        /**
     * Gets collection to which a given object belongs (e.g. track, artist, composer, genre, ...).
     */
    getCollectionForObjectAsync(obj): Promise<any>

        /**
     * Get ID of a collection by given name.
     */
    getCollectionID(Name): number

        /**
     * Get list of all collections.
     */
    getCollectionListAsync(params?): Promise<CollectionList>

        /**
     * Get name of a collection with specified name
     * ID of the collection
     */
    getCollectionName(id): string

        /**
     * Gets copy of a collections manager.
     */
    getCopy(): Collections

        /**
     * Gets 'Entire Library' collection
     */
    getEntireLibrary(): Collection

        /**
     * Get ID of a collection with type 'music'.
     */
    getMusicCollectionID(): number

        /**
     * Create new, empty collection.
     */
    getNewCollection(): Collection

        /**
     * Check collection is a type 'podcast'.
     * ID of a collection
     */
    isPodcastCollection(id): boolean

        /**
     * Check collection is a type 'video'.
     * ID of a collection
     */
    isVideoCollection(id): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Refresh all collections.
     */
    refreshAll(): void

        /**
     * Save all collections to database.
     * List of collections to apply
     */
    saveAllCollectionsAsync(list): Promise<any>

        /**
     * See App.listen
     */
    event_change: (() => void)

}

/**
 * Cover item (artwork item)
Accessible e.g. via Track.coverList, Track.loadCoverListAsync() etc.
 * Cover
 */
declare class Cover {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets storage type (0 - tag, 1 - file, 2 - not saved "auto-looked" up image)
     */
    coverStorage: CoverStorage

        /**
     * Gets cover type (e.g. 'Cover (front)')
     */
    coverTypeDesc: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets description
     */
    description: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets loaded state (whether picture data are loaded in memory / available)
     */
    loaded: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets path to the image (if not stored in the file tag)
     */
    picturePath: string

        /**
     * Gets picture type (e.g. 'image/jpeg')
     */
    pictureType: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of this item
     */
    getCopy(): Cover

        /**
     * Gets info about this cover item (resolution, storage etc.)
     */
    getInfoAsync(): Promise<any>

        /**
     * Returns link to cached image thumbnail of the nearest specified size
     */
    getThumbAsync(...params): number

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Moves the image file to file tag (if supported by the file format)
     */
    move2TagAsync(): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Saves picture data to a file
     */
    saveToFile(fname): void

        /**
     * Saves picture data to file folder
     */
    saveToFileFolder(trackPath, useFilename, checkExistence): Promise<any>

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Cover list (artwork list)
Accessible e.g. via Track.coverList, Track.loadCoverListAsync() etc.
 * CoverList
 */
declare class CoverList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Cover

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Cover

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Property whether the cover list was modified (used when saving the list)
     */
    modified: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new item to the list.
     * Object to be added in list
     */
    add(data): number

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Cover>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Cover>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Cover>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Cover>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Cover

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Cover>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<CoverList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Database support. Access via the global app.db
 */
declare class DB {
        /**
     * Do database backup.
     * File name
     */
    backupDatabase(fileName): Promise<boolean>

        /**
     * Start DB transaction.
Note: From version 5.0.4 is async and returns Promise
     */
    beginTransaction(): Promise<void>

        /**
     * Clears cache of data already read from DB. 
It's useful when changing the DB externally or using executeQueryAsync 
After calling app.db.clearCache() the MM5 internal cache is cleared and the data is reloaded from DB (e.g. when F5 is pressed or a view refreshed) 
Note: Introduced in version 5.0.4
     */
    clearCache(): Promise<void>

        /**
     * Clears given tables in the database.
     */
    clearDatabase(): Promise<any>

        /**
     * Commit DB transaction
Note: From version 5.0.4 is async and returns Promise
     */
    commitTransaction(): Promise<void>

        /**
     * Optimize database for faster access.
     */
    compactDatabase(): Promise<any>

        /**
     * Executes SQL query.
     * SQL query to execute
     */
    executeQueryAsync(sql): Promise<string>

        /**
     * Returns album for given album title, artist and year. Creates new, if not exists yet.
     * Album title
     * Album artist
     * Release year
     */
    getAlbumAsync(album, artist, year?): Promise<Album>

        /**
     * Gets album list by given SQL query
     * SQL like 'SELECT     * FROM Albums WHERE ...'
     */
    getAlbumList(sql, idColl?): AlbumList

        /**
     * Gets artist list by given SQL query
     * SQL like 'SELECT     * FROM Artists WHERE ...'
     */
    getArtistList(sql, idColl?): ArtistList

        /**
     * Gets SQL of given auto-playlist ID 
NOTE: Added in version 5.0.4
     * auto-playlist's id
     * 5.0.4
     */
    getAutoPlaylistQueryAsync(id): Promise<string>

        /**
     * Gets artist list from given JS array with artist names and MusicBrainz GID. JS array contains objects, with "name" and "mbgid" properties.
It returns only artists, which are in Library.
     * JS array with artist names and MusicBrainz GIDs
     */
    getExistingArtistList(arr): ArtistList

        /**
     * Returns true if the database is locked (e.g. when doing DB optimizations, db rebuild, db backup etc.)
     */
    getIsLocked(): boolean

        /**
     * Get list of mood values.
     */
    getMoodList(idColl?): ListItemList

        /**
     * Get list of occasion values.
     */
    getOccasionList(idColl?): ListItemList

        /**
     * Returns location of the current database file
     */
    getPath(): string

        /**
     * Get list of "people", according to a specified category. Usage: app.db.getPeople({category: '<categoryname>'})
     */
    getPeople(params): PersonList

        /**
     * Get list pinned objects (tracks, artists, albums etc.).
     * ID of collection (default all collections)
     */
    getPinnedObjects(collectionID?): PinnedObjectsList

        /**
     * Get list of quality values.
     */
    getQualityList(idColl?): ListItemList

        /**
     * Opens specified SQL query and returns promise with QueryResults class.
     * Select query to open
     */
    getQueryResultAsync(sql): Promise<QueryResults>

        /**
     * Get a list of strings, according to a specified category. Usage: app.db.getStringList({category: '<categoryname>'})
     */
    getStringList(params): StringList

        /**
     * Get list of tempo values.
     */
    getTempoList(idColl?): ListItemList

        /**
     * Gets tracks based on given SQL and collection ID
     * collection id
     */
    getTracklist(SQL, collID): Tracklist

        /**
     * Executes SQL insert query and return promise with ID of a new record.
     * SQL insert query to execute
     */
    insertQueryAsync(sql): Promise<number>

        /**
     * Reindex database.
     */
    reCreateFullTextIndex(): Promise<void>

        /**
     * Rebuilds database (copies and re-constructs tables), can fix malformed and databses
     */
    rebuildDatabase(): Promise<boolean>

        /**
     * Do database restore.
     * File name
     */
    restoreDatabase(fileName): Promise<boolean>

        /**
     * Rollbacks DB transaction.
Note: From version 5.0.4 is async and returns Promise
     */
    rollbackTransaction(): Promise<void>

}

declare class DBFolder {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class DBFolderList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: DBFolder

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: DBFolder

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<DBFolder>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<DBFolder>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<DBFolder>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<DBFolder>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<DBFolder>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<DBFolder>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<DBFolder>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<DBFolder>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<DBFolder>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): DBFolder

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<DBFolder>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<DBFolderList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Helper functions for debugging. Access via the global app.debug.
 * Debug
 */
declare class Debug {
}

declare class Decade {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets all albums of this artist/genre
     */
    getAlbumList(...params): AlbumList

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Returns link to cached image thumbnail of the nearest specified size
     */
    getThumbAsync(...params): number

        /**
     * Gets all tracks of this album
     */
    getTracklist(...params): Tracklist

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class DecadeList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Decade

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Decade

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<Decade>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<Decade>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<Decade>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<Decade>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Decade>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<Decade>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Decade>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Decade>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Decade>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Decade

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Decade>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<DecadeList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Device class representing media sync profile
 * Device
 */
declare class Device {
        /**
     * Indicates whether remote sync is granted for this device sync profile
     */
    allowWifiSync: boolean

        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Auto-convert rules config
     */
    autoConvertConfig: AutoConvertSettings

        /**
     * Indicates whether files to be copied from the device to the PC needs user confirmation during sync
     */
    biDirConfirm: boolean

        /**
     * Indicates whether content should by synced bidirectionally, i.e. also from the device to the PC
     */
    biDirSync: boolean

        /**
     * Indicates whether file metadata changes should be synced from the device to the PC
     */
    biDirSyncMetadata: boolean

        /**
     * Indicates whether this device is USB connected
     */
    connected: boolean

        /**
     * Whether artwork should be converted
     */
    convertArtwork: boolean

        /**
     * Type to which the artwork should be converted
     */
    convertArtworkType: string

        /**
     * Local folder representing where should be copied files from the device
     */
    copyToPCFolder: string

        /**
     * Optional, sync handlers stores custom service data here
     */
    customJSON: string

        /**
     * Indicates whether files deletion should be confirmed by user during auto sync
     */
    deleteConfirm: boolean

        /**
     * Indicates whether all device files that are no longer on the sync list should be deleted during auto sync
     */
    deleteUnknown: boolean

        /**
     * Indicates whether library files that are no longer on the sync list should be deleted during auto sync
     */
    deleteUnsync: boolean

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets/Sets sync handler used for media sync, e.g. 'cloud', 'usb' etc. 
See mediaSyncHandlers in mediaSync.js
     */
    handlerID: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Path to the image representing this device profile
     */
    imagePath: string

        /**
     * Indicates whether auto-sync process is currently running
     */
    isAutoSyncRunning: boolean

        /**
     * Indicates whether this profile is folder based, default is TRUE, but e.g. 'Google Play Music' utilizes this to FALSE
     */
    isFolderBased: boolean

        /**
     * Indicates whether this device profiles is newly created (on first connect or first registration)
     */
    isNewlyCreated: boolean

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Returns last sync time
     * timestamp in UTC form 'YYYY-MM-DD HH:MM:SS'
     */
    lastSyncTime: string

        /**
     * Gets/Sets name of this device sync profile
     */
    name: string

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Treshold (in bytes) for removeAAFromTag
     */
    removeAAByteRate: number

        /**
     * Indicates whether artwork should by removed from file tags when it is larger than removeAAByteRate treshold
     */
    removeAAFromTag: boolean

        /**
     * Whether artwork should be resized
     */
    resizeArtwork: boolean

        /**
     * Max. resultion to which the artwork should be resized
     */
    resizeArtworkMaxRes: number

        /**
     * Indicates whether files should be re-uploaded to new locations once their target locations are changed by sync mask config 
If false then MediaMonkey leave them in its original locations
     */
    resyncOnMaskChange: boolean

        /**
     * Indicates whether artwork should by copied to the file folders on the device
     */
    saveAAToFolder: boolean

        /**
     * Indicates whether artwork should by copied to the file tags on the device
     */
    saveAAToTag: boolean

        /**
     * Indicates whether device content should be scanned ASAP or once needed
     */
    scanOnConnect: boolean

        /**
     * Indicates whether content of this device is being scanned
     */
    scanning: boolean

        /**
     * Mask representing target filename for artwork files
     */
    syncAAMask: string

        /**
     * Indicates whether only first artist should be synced when multiple artists exists
     */
    syncOnlyFirstArtist: boolean

        /**
     * Indicates whether only first genre should be synced when multiple genres exists
     */
    syncOnlyFirstGenre: boolean

        /**
     * Indicates whether playlists should be synced to the device
     */
    syncPlaylists: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Adds device/cloud track into library (currently used for cloud content scanning into user library)
     * to be added
     * Overwrite existing library metadata (if exists)
     * Checks whether the track is downloaded and returns as second parameter in the promise
     */
    addTrack2Library(track, updateMetadata, checkDownloadStatus): Promise<any>

        /**
     * Adds device/cloud tracks into library (currently used for cloud content scanning into user library)
     * to be added
     * Overwrite existing library metadata (if exists)
     * Indicates whether the unpaired tracks should be downloaded locally
     * Indicates whether the tracks is full scan (to auto-remove no longer existing tracks from library)
     */
    addTracks2Library(tracks, updateMetadata, downloadMissing, taskProgress, isFullScan): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Commits device profile modifications into database
     */
    commitAsync(): Promise<any>

        /**
     * Creates sync process for manipulating media sync 
see MediaSync class implementation in helpers/mediaSync.js for examples
     * can be either 'send' (manual sync) or 'auto' (auto sync)
     */
    createSyncProcess(mode): SharedObject

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets collection settings object 
see /controls/deviceConfig/syncToDevice.js for examples
     */
    getCollectionSettings(idCollection): DeviceCollection

        /**
     * Gets folder list  
folderType param can be either 'content' (for actual content listing) 
or 'scanFromDevice' and 'syncFromDevice' for device folder configs (see /controls/deviceConfig/syncFromDevice.js for examples)
     */
    getFolderList(aFolderType): SharedList<SharedFolder>

        /**
     * Folders are supported
     */
    getHasFolderSupport(): boolean

        /**
     * Playlists are supported
     */
    getHasPlaylistSupport(): boolean

        /**
     * Gets JSON representing playlist sync config, see /controls/deviceConfig/options/pnl_Playlists.js for possible values
     */
    getPlaylistSettingsJSON(): string

        /**
     * Gets device playlists
     */
    getPlaylists(): SharedList<DevicePlaylist>

        /**
     * Gets list of supported playlist formats
     */
    getSupportedPlaylistFormats(): StringList

        /**
     * Gets destination target mask for desired content type
     */
    getTargetMask(maskType): string

        /**
     * Returns link to cached image thumbnail of the nearest specified size
     */
    getThumbAsync(...params): number

        /**
     * Gets device track by its path
     */
    getTrackByPath(DevicePath): Track

        /**
     * Gets device content
     */
    getTracklist(...params): Tracklist

        /**
     * Loads all profile values from MMDC (MediaMonkey device configuration) file
     * to the MMDC file
     */
    loadFromProfileAsync(path): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Removes this device profile
     */
    removeAsync(): Promise<any>

        /**
     * Removes device/cloud tracks from library (currently used for cloud content scanning into user library)
     */
    removeTracksFromLibrary(...params): Promise<any>

        /**
     * Restores all profile values to the defaults
     */
    resetProfileAsync(): Promise<any>

        /**
     * Saves all profile values to MMDC (MediaMonkey device configuration) file
     * to the MMDC file
     */
    saveToProfileAsync(path): Promise<any>

        /**
     * Inititates scanning of device content, is done automatically when getTracklist() is called and the content hasn't been scanned yet
     * whether content should be rescanned for already scanned content
     */
    scanContent(rescan): void

        /**
     * Re-scans device content, is done automatically when getTracklist() is called and the content hasn't been scanned yet
     * whether content should be rescanned for already scanned content
     */
    scanContentAsync(rescan): Promise<any>

        /**
     * Sets folder list as configured, see /controls/deviceConfig/syncFromDevice.js for examples 
folderType param can be either 'scanFromDevice' or 'syncFromDevice'
     */
    setFolderList(folderType, list): void

        /**
     * Sets JSON representing playlist sync config, see /controls/deviceConfig/options/pnl_Playlists.js for possible values
     */
    setPlaylistSettingsJSON(JSON): void

        /**
     * Sets destination target mask for desired content type
     */
    setTargetMask(maskType, value): void

        /**
     * Adds or updates device playlist into local user library (currently used for cloud content scanning into user library)
     * playlist guid (use empty string to created new one)
     * parent playlist guid (use empty string to insert under root)
     * last modified timestamp
     * auto-playlist's criteria JSON
     * if TRUE then creates playlist even if not all tracks are matched/found
     */
    updatePlaylist2Library(aTitle, guid, parent_guid, last_modified, criteria, aTracks, canUsePartialPlaylists): Promise<any>

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class DeviceCalculator {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class DeviceCollection {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class DevicePlaylist {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Media sync devices class. Access via the global app.devices.
 * Devices
 */
declare class Devices {
        /**
     * Gets list of all devices (sync profiles)
     */
    getAll(): SharedUIList<Device>

        /**
     * Gets device profile
     * unique id string or guid (if the id doesn't exist in database yet, then new profile is created with this id and returned)
     * device profile name, used when the profile doesn't exist yet
     */
    getDeviceAsync(id, name): Promise<any>

        /**
     * Gets list of all devices (sync profiles) where the library track resides
     */
    getForTrackId(track_id): SharedUIList<Device>

}

/**
 * Dialog operations. Access via the global app.dialogs.
 * Dialogs
 */
declare class Dialogs {
        /**
     * Opens specified dialog normally or modal, based on parameters.
Parameters are same as in createWindow, including:
modal (true/false) - should be opened as modal. default is false
show (true/false) - should show (otherwise need to call show/showModal manually). default it true.
     * Name of the dialog. For available list of names see Wiki.
     * Parameters of the window.
     */
    openDialog(name, params): SharedWindow

}

/**
 * Download manager class to handle pending/current downloads. Access via  the global app.downloader.
 * Downloader
 */
declare class Downloader {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets all download items as list
     */
    itemList: DownloadItemList

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Returns whether any download item is currently in download progress
     */
    anyDownloadInProgress(): boolean

        /**
     * Returns whether any download item is currently paused
     */
    anyDownloadIsPaused(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Cancels all downloads (include paused downloads)
     */
    cancelAllDownloads(): void

        /**
     * Cancels download item
     */
    cancelDownload(DI): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Commits into database
     */
    commitAsync(): Promise<any>

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets download item based on given URL
     */
    getDownloadItem(URL): DownloadItem

        /**
     * Gets downloads count (include paused downloads)
     */
    getDownloadsCount(): number

        /**
     * Returns whether the given download item is currently in download progress
     */
    inProgressDownload(DI): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Pauses all pending downloads
     */
    pauseAllDownloads(): void

        /**
     * Pauses download item
     */
    pauseDownload(DI): void

        /**
     * Resumes paused downloads
     */
    resumeAllDownloads(): void

        /**
     * Resumes the paused download item
     */
    resumeDownload(DI, startImmediatelly): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Download item as used by download manager (accessible via app.downloader methods)
 * DownloadItem
 */
declare class DownloadItem {
        /**
     * Whether the download item should be added to database after the download
     */
    addToLib: boolean

        /**
     * album of the download item
     */
    album: string

        /**
     * Artist of the download item
     */
    artist: string

        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * How many bytes has been already downloaded
     */
    bytesDownloaded: number

        /**
     * Total size in bytes
     */
    bytesTotal: number

        /**
     * Whether the download item is completed
     */
    completed: boolean

        /**
     * Destination file path (where the data is being downloaded)
     */
    destination: string

        /**
     * Do not show download errors for this item
     */
    dontShowErrors: boolean

        /**
     * genre of the download item
     */
    genre: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Whether pause is possible for this item
     */
    pauseIsPossible: boolean

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether the download item is paused (queued)
     */
    queued: boolean

        /**
     * Request body (in case of HTTP POST method)
     */
    requestBody: string

        /**
     * URL of the download item
     */
    source: string

        /**
     * title of the download item
     */
    title: string

        /**
     * Current transfer rate in KB//s
     */
    transferRateKBs: number

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class DownloadItemList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: DownloadItem

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: DownloadItem

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new item to the list.
     * Object to be added in list
     */
    add(data): number

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<DownloadItem>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<DownloadItem>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<DownloadItem>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<DownloadItem>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<DownloadItem>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): DownloadItem

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<DownloadItem>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<DownloadItemList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Equalizer class
 * Equalizer
 */
declare class EqualizerSettings {
        /**
     * Gets JSON of equalizer settings to view/change
     */
    getJSON(): string

        /**
     * Loads Equalizer preset from     *.esp file
     */
    loadPreset(filename): Promise<any>

        /**
     * Saves Equalizer preset to     *.esp file
     */
    savePreset(filename): void

        /**
     * Sets JSON and applies this Equalizer settings, so MediaMonkey behaves according to the new settings immediatelly
     */
    setJSON(JSON): Promise<any>

}

declare class ExternalLink {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class ExternalLinksList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: ExternalLink

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: ExternalLink

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<ExternalLink>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<ExternalLink>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<ExternalLink>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<ExternalLink>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<ExternalLink>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<ExternalLink>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<ExternalLink>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<ExternalLink>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<ExternalLink>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): ExternalLink

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<ExternalLink>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<ExternalLinksList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Query result row field
 * Field
 */
declare class Field {
        /**
     * Gets value as a floating point value.
     */
    asFloat(): number

        /**
     * Gets value as 64bit integer.
     */
    asInt64(): number

        /**
     * Gets value as a integer.
     */
    asInteger(): number

        /**
     * Gets value as string.
     */
    asString(): string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class FileBuffer {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class FileFormats {
}

/**
 * Filesystem operations. Access via the global app.filesystem.
 * Filesystem
 */
declare class Filesystem {
        /**
     * Adds network resource
     * Path of the resource to add
     */
    addNetworkResourceAsync(path): Promise<any>

        /**
     * Copy file.
     * Source filename
     * New filename
     */
    copyFileAsync(src, dst): Promise<any>

        /**
     * Copy files. 
NOTE: Starting from version 5.0.4 accepts also StringList as first param
     * Source file list
     * Destination folder
     * Tracks will be added to database
     * Prompt to overwrite won't be shown
     * Error log won't be shown
     */
    copyFilesAsync(srcList, destFolder, addToDB?, dontShowOverwritePrompt?, dontShowErrors?): Promise<any>

        /**
     * Copy/Move folder.
     * Folder to copy/move
     * Target folder where to copy/move
     * Copy/Move parameters
     */
    copyFolderAsync(path, destination, params?): Promise<any>

        /**
     * Modifies string so that can be used as filename. i.e. Removes illegal filename chars.
     * Path to convert
     */
    correctFilename(filename): string

        /**
     * Creates folder and returns as SharedFolder in Promise fullfillment
     * Path of the folder to create
     */
    createFolderAsync(path): Promise<any>

        /**
     * Deletes a file.
It's LEGACY, use deleteFileAsync instead!
     */
    deleteFile(src): boolean

        /**
     * Delete file.
     * Path of file to delete
     */
    deleteFileAsync(fileName): Promise<any>

        /**
     * Delete folder.
     * Folder to delete
     * To recycle bin
     * Only if the folder has no other non-media content
     * Deletes the content, but not from the MM database (leaving deadlinks there) -- Aadded in 5.0.4
     */
    deleteFolderAsync(path, recycle, onlyEmpty?, dontDeleteFromDB?): Promise<any>

        /**
     * Removes network resource
     */
    deleteNetworkResourceAsync(res): Promise<any>

        /**
     * Returns true, if directory exists.
Note: It's LEGACY, was replaced by dirExistsAsync
     * Path to the directory.
     */
    dirExists(path): boolean

        /**
     * Returns true as first promise param (if directory exists).
     * Path to the directory.
     */
    dirExistsAsync(path): Promise<boolean>

        /**
     * Returns true as first promise param (if directory exists).
     * Path to the file.
     */
    fileExistsAsync(path): Promise<any>

        /**
     * Gets tracklist from filenames list
     * List of filenames
     */
    fileNamesToSongList(list): Tracklist

        /**
     * Gets application path to executable
     */
    getApplicationPath(): string

        /**
     * Gets list of all supported audio extensions.
     */
    getAudioExtensions(): StringList

        /**
     * Gets list of track's folders.
     * Parent Folder ID
     * Collection ID
     */
    getDBFolderListAsync(parentID, collectionID): DBFolderList

        /**
     * Gets MediaMonkey data folder
     */
    getDataFolder(): string

        /**
     * Returns free/total space in bytes
     * Path to the directory.
     */
    getDiskSpaceAsync(path): Promise<{ spaceFree: number; spaceTotal: number; }>

        /**
     * Gets list of drives (instances of SharedDrive) 
NOTE: In version 5.0.3 and lower it returns Promise, in 5.0.4+ it is the list directly
     */
    getDriveList(): SharedList<SharedDrive>

        /**
     * Gets file content or a specified portion
     * File path of the file
     * from position in bytes
     * to position in bytes
     */
    getFileContentAsync(fileName, from?, to?): Promise<FileBuffer>

        /**
     * Gets file info like dateCreated, dateModified, dateAccessed, size as JSON 
date values are in the ISO format, see app.filesystem.timestamp2DateTime and app.utils.dateTime2Timestamp for the conversion
     * File path of the file
     */
    getFileInfoAsync(fileName): Promise<any>

        /**
     * Gets file size in bytes
     * File path of the file
     */
    getFileSizeAsync(fileName): Promise<number>

        /**
     * Returns the folder as SharedFolder object
     * Path of the folder to get
     */
    getFolderFromString(path, isTemporary?): SharedFolder

        /**
     * Gets folder of path
     */
    getFolderOfPathAsync(path): Promise<any>

        /**
     * Gets list folders for given path as StringList
     */
    getFoldersList(path): Promise<any>

        /**
     * Gets folder containing icons
     */
    getIconsFolder(): string

        /**
     * Gets list of inserted medias (e.g. inserted CDs) as instances of SharedDrive
     */
    getInsertedMediaList(): SharedList<SharedDrive>

        /**
     * Gets last scanned folders
     */
    getLastScannedFolders(): StringList

        /**
     * Gets monitored folders
     */
    getMonitoredFolders(): SharedUIList<SharedFolder>

        /**
     * Gets list of network resources (list of SharedFolder  instances)
     */
    getNetworkResourceList(): SharedList<NetworkResource>

        /**
     * Returns path separator for the current OS
     */
    getPathSeparator(): string

        /**
     * Gets list of all supported playlist extensions.
     */
    getPlaylistExtensions(): StringList

        /**
     * Gets system folder for music
     */
    getSystemFolderMyMusic(): string

        /**
     * Gets system folder for video
     */
    getSystemFolderMyVideo(): string

        /**
     * Gets user personal folder
     */
    getUserFolder(): string

        /**
     * Gets list of all supported video extensions.
     */
    getVideoExtensions(): StringList

        /**
     * Returns whether this file type (extensions) is associated with MediaMonkey
     */
    isKnownFiletype(ext): boolean

        /**
     * Load text from file.
     * full path to the file to load
     * Object containing additional parameters.
     */
    loadTextFromFileAsync(fileName, params?): Promise<string>

        /**
     * Returns the resource as SharedFolder object
     * Path of the resource to get
     */
    networkResourceFromPath(path): NetworkResource

        /**
     * Process located files and update them in database.
     * List of located files
     */
    processLocatedFiles(list): Promise<any>

        /**
     * Renames file.
It's LEGACY, use renameFileAsync instead!
     */
    renameFile(src, dst): boolean

        /**
     * Rename file.
     * Source filename
     * New filename
     * Overwrites with prompting
     */
    renameFileAsync(src, dst, OverwritePrompt): Promise<any>

        /**
     * Alias of renameFilesAsync.
     */
    renameFiles(...params): Promise<any>

        /**
     * Move or copy list of files. 
Starting from version 5.0.4 moves also non-media files and accepts also StringList as first param 
Prior to version 5.0.4 the function was named just renameFiles
     * Source file list
     * Destination folder or dest. filename
     * Object containing additional parameters. Possible properties are:
     */
    renameFilesAsync(srcList, destFolder, params?): Promise<any>

        /**
     * Save text to file.
     * full path to the file to save
     * text to save
     * Object containing additional parameters. Possible properties are:
     */
    saveTextToFileAsync(fileName, text, params?): Promise<void>

        /**
     * Scan selected path for media files.
     * Paths to scan
     * Server containers to scan
     * Extensions to scan (comma separated).
     * Additional parameters
     */
    scanForMedia(pathsToScan, containers, exts, params): Promise<any>

        /**
     * Scan selected tracks for their new location.
     * List of missing tracks
     */
    scanForMovedFiles(sl, paths): Promise<any>

        /**
     * Sets file content for a specified portion of data
     * buffer data to write
     * File path of the file
     * from position in bytes (0 by default)
     */
    setFileContentAsync(content, fileName, from?): Promise<Promise<void>>

        /**
     * Sets file info like dateModified, readOnly
date values are in the ISO format, see app.filesystem.timestamp2DateTime and app.utils.dateTime2Timestamp for the conversion 
NOTE: Introduced in 5.0.4
     * File path of the file
     * Params to be set in JSON format
     */
    setFileInfoAsync(fileName, params): Promise<any>

        /**
     * Sets last scanned folders
     */
    setLastScannedFolders(paths): void

        /**
     * Scan selected path for media files.
     * Path to scan
     */
    simpleScanForMedia(path): Promise<any>

        /**
     * Starts auto scanner
     */
    startAutoScanner(): void

        /**
     * On Windows returns the short path version used by programs that require the earlier 8.3 file naming convention 
NOTE: Introduced in 5.0.4
     */
    toShortPath(filename): string

}

declare class FormatSettings {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class FormatSettingsList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: GenFormatSettings

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: GenFormatSettings

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<GenFormatSettings>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<GenFormatSettings>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<GenFormatSettings>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<GenFormatSettings>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<GenFormatSettings>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<GenFormatSettings>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<GenFormatSettings>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<GenFormatSettings>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<GenFormatSettings>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): GenFormatSettings

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<GenFormatSettings>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<FormatSettingsList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class GenFormatSettings {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Genre item
 * Genre
 */
declare class Genre {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets name
     */
    name: string

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Returns link to cached image thumbnail of the nearest specified size
     */
    getThumbAsync(...params): number

        /**
     * Gets all tracks of this album
     */
    getTracklist(...params): Tracklist

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Gets title (same as name)
     */
    toString(): string

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class GenreCategory {
}

/**
 * List of genres.
 * GenreList
 */
declare class GenreList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Genre

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Genre

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<Genre>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<Genre>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<Genre>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<Genre>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Genre>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<Genre>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Genre>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Genre>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Genre>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Genre

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Genre>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<GenreList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class HotkeyData {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class HotkeyList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: HotkeyData

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: HotkeyData

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new item to the list.
     * Object to be added in list
     */
    add(data): number

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<HotkeyData>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<HotkeyData>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<HotkeyData>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<HotkeyData>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<HotkeyData>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): HotkeyData

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<HotkeyData>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<HotkeyList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class Hotkeys {
}

declare class HTMLPlaybackState {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class Importer {
}

declare class ImportParent {
}

/**
 * Class for working with ini file.
 * IniFileAccess
 */
declare class IniFileAccess {
        /**
     * Applies all changes made to the ini file. This way you can change internal MediaMonkey variables and thus change its behaviour on-the-fly without a need to restart MediaMonkey.
     */
    apply(): void

        /**
     * Deletes the given key in a given section.
     * A section where to find the key to delete.
     * A key to delete.
     */
    deleteKey(Section, Key): void

        /**
     * Deletes an entire section in ini file.
     * Section to be deleted.
     */
    deleteSection(Section): void

        /**
     * Saves all changes made to the ini file to disk.
     */
    flush(): void

        /**
     * Reads boolean value from ini file.
     * Section to be accessed.
     * Identifier in the given section.
     */
    getBoolValue(Section, Key): boolean

        /**
     * Reads integer value from ini file.
     * Section to be accessed.
     * Identifier in the given section.
     */
    getIntValue(Section, Key): number

        /**
     * Reads string value from ini file.
     * Section to be accessed.
     * Identifier in the given section.
     */
    getStringValue(Section, Key): string

        /**
     * Writes boolean value to ini file.
     * Section to be accessed.
     * Identifier in the given section.
     * Value to be written.
     */
    setBoolValue(Section, Key, Value): void

        /**
     * Writes integer value to ini file.
     * Section to be accessed.
     * Identifier in the given section.
     * Value to be written.
     */
    setIntValue(Section, Key, Value): void

        /**
     * Writes string value to ini file.
     * Section to be accessed.
     * Identifier in the given section.
     * Value to be written.
     */
    setStringValue(Section, Key, Value): void

        /**
     * Checks existence of the key in the ini file.
     * Section to be accessed.
     * Identifier in the given section.
     */
    valueExists(Section, Key): boolean

}

declare class JSCallback {
}

declare class JSCallbacks {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: JSCallback

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: JSCallback

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new item to the list.
     * Object to be added in list
     */
    add(data): number

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<JSCallback>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<JSCallback>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<JSCallback>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<JSCallback>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<JSCallback>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): JSCallback

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<JSCallback>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<JSCallbacks>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class ListItem {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class ListItemList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: ListItem

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: ListItem

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<ListItem>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<ListItem>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<ListItem>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<ListItem>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<ListItem>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<ListItem>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<ListItem>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<ListItem>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<ListItem>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): ListItem

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<ListItem>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<ListItemList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class LocationInfo {
}

/**
 * Mask related utilities to be used in scripts
 * Masks
 */
declare class Masks {
        /**
     * Gets default set of masks for track organization (incl. path and filename masks).
     */
    getDefaultFileMasks(): StringList

        /**
     * Gets list of default masks combinations for filename (used by mask edity wizard).
     */
    getDefaultWizardFileMasks(): StringList

        /**
     * Gets list of default masks conbinations for path definition (used by mask edit wizard).
     */
    getDefaultWizardPathMasks(): StringList

        /**
     * Gets description of the mask
     * Mask
     */
    getDescription(mask): string

        /**
     * Gets only mask part of the mask
     * Mask
     */
    getMaskPart(mask): string

        /**
     * Gets list of mask folder by folder. Last item in list is file name mask.
     * Mask
     */
    getMaskPathAndFileName(mask): StringList

        /**
     * Get new title/path of the track based on mask. See wiki for available masks.
     * Mask to be used
     * Guess complete path when relative mask is used
     */
    getMaskResultForItem(SD, mask, forfilename, NotUseUnknown, concatPath): string

        /**
     * Get new title/path of the track based on mask. See wiki for available masks.
     * Mask to be used
     * Guess complete path when relative mask is used
     * Target extension, for use for  mask
     */
    getMaskResultForList(SL, mask, forfilename, NotUseUnknown, concatPath, targetExt): StringList

        /**
     * Gets path part of the mask
     * Mask
     */
    getPathPart(mask): string

        /**
     * Gets list of mask parts of the filename.
     */
    getTrackPathParts(SD, trackmask): StringList

        /**
     * Gets name of the mask
     */
    getVisName(...params): string

        /**
     * Convert simple mask to visual mask (like %A to ).
     * Mask
     */
    mask2VisMask(mask): string

        /**
     * Covert visual mask to simple mask (like  to %A)
     * Mask
     */
    visMask2Mask(mask): string

}

declare class MediaConnection {
}

/**
 * Media server (UPnP/DLNA)
Accessible e.g. via app.sharing.getServers()
 * MediaServer
 */
declare class MediaServer {
        /**
     * Whether to accept connections coming outside of LAN
     */
    acceptExternalIP: boolean

        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Auto-convert rules config
     */
    autoConvertConfig: AutoConvertSettings

        /**
     * Whether auto share with all new devices without prompt
     */
    autoShare: boolean

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Whether play counter should be updated when a track is streamed / downloaded via the server
     */
    enablePlayCount: boolean

        /**
     * Whether this server is enabled to auto-run
     */
    enabled: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * IP of this server (as configured)
     */
    ip: string

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Name of this server
     */
    name: string

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * IP port
     */
    port: number

        /**
     * Whether this server runs
     */
    running: boolean

        /**
     * IP of this server (when server runs)
     */
    runningIP: string

        /**
     * Scrobble to last.fm if Scrobbling is enabled
     */
    scrobble: boolean

        /**
     * Whether to show letter indexes for categories when serving large content lists
     */
    showLetterIndex: boolean

        /**
     * Amount of items in the list to hit letter indexes for categories (when serving large content lists)
     */
    showLetterIndexLimit: number

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Commits into database
     */
    commitAsync(): Promise<any>

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets list of devices that has connected to this server so far
     */
    getClientList(): RemoteDeviceList

        /**
     * Gets list of possible IP addresses on which this server can run
     */
    getIPAddressesList(): StringList

        /**
     * Gets list of 400 most recent connections to this server
     */
    getMediaConnectionList(): SharedList<MediaConnection>

        /**
     * Gets list of objects to be shared (collections, playlists)
     */
    getSharedObjects(): SharedList<SharedObject>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Removes from database
     */
    removeAsync(): Promise<any>

        /**
     * Restarts the server
     */
    restartAsync(): Promise<any>

        /**
     * Runs the server
     */
    runAsync(): Promise<any>

        /**
     * Sets list of objects to be shared (collections, playlists)
     * of shared objects
     */
    setSharedObjects(list): void

        /**
     * Stops the server
     */
    stopAsync(): Promise<any>

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class MetadataStorageHandler {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class MovedSongData {
}

declare class NetworkResource {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets/sets media type of the folder
     */
    folderMediaType: number

        /**
     * Gets/sets whether the folder has subfolders
     */
    hasSubfolders: boolean

        /**
     * Gets/Sets icon of this folder.
     */
    icon: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Gets whether the folder is actually M3U/PLA playlist
     */
    isPlaylist: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets/sets the folder to be monitored for changes
     */
    monitorChanges: boolean

        /**
     * Gets/sets the folder to be monitored continuously
     */
    monitorContinous: boolean

        /**
     * Gets/sets the folder to be monitored on startup
     */
    monitorStartup: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets/Sets path of this folder.
     */
    path: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Temporary JS objects can be attached here
     */
    tag: any

        /**
     * Gets/Sets title of this folder.
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Creates sub-folder of this folder
     */
    createFolder(folderName): SharedFolder

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets list of individual files as string list
NOTE: Introduced in version 5.0.4
     * If true then lists files contained even within sub-folders
     */
    getFileList(recursive): StringList

        /**
     * Gets sub-folders of this folder
     */
    getFolderList(): SharedList<SharedFolder>

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Gets path of this folder asynchronously
     */
    getPathAsync(): Promise<any>

        /**
     * Gets folder from path
     * string
     */
    getSharedFolder(path): SharedFolder

        /**
     * Gets tracks of this folder
     */
    getTracklist(...params): Tracklist

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Updates hasSubfolders value based on current file system state 
NOTE: Added in 5.0.4
     * 5.0.4
     */
    updateHasSubfoldersAsync(): Promise<any>

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class Person {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class PersonList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Person

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Person

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<Person>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<Person>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<Person>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<Person>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Person>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<Person>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Person>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Person>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Person>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Person

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Person>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<PersonList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * PinableObject
 * Object that can be pinned as favorites (Pinned node)
 * PinableObject
 */
declare class PinableObject {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class PinnedObjectsList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: PinableObject

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: PinableObject

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<PinableObject>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<PinableObject>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<PinableObject>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<PinableObject>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<PinableObject>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<PinableObject>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<PinableObject>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<PinableObject>

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<PinableObject>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): PinableObject

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<PinableObject>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<PinnedObjectsList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Class for working with player. Access via the global app.player.
 * Player
 */
declare class Player {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * If disabled, stop after current track flag persists for next tracks.
     */
    autoResetStopAfterCurrent: boolean

        /**
     * Returns bitrate of current track, in kbps.
     */
    bitrate: number

        /**
     * Returns number of channels of current track
     */
    channels: number

        /**
     * Gets/Sets whether crossfading is enabled.
     */
    crossfade: boolean

        /**
     * Returns number of entries in nowplaying list.
     */
    entriesCount: number

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Returns true, if player is currently playing.
     */
    isPlaying: boolean

        /**
     * Mutes/unmutes volume, gets if volume is muted
     */
    mute: boolean

        /**
     * Gets/Sets leveling of playback volume (normalization)
     */
    normalize: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets/Sets sound panning(balance), -1 = left, 0 - middle, 1 = right
     */
    panning: number

        /**
     * Returns true, if player is currently paused
     */
    paused: boolean

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets nowplaying list position, -1 = undefined, 0...n current track order. For setting use setPlaylistPosAsync or setPlaylistPosByEntryAsync.
     */
    playlistPos: number

        /**
     * Gets/Sets repeating current file in nowplaying list.
     */
    repeatOne: boolean

        /**
     * Gets/Sets repeating nowplaying list.
     */
    repeatPlaylist: boolean

        /**
     * Returns sample rate of current track, in Hz.
     */
    sampleRate: number

        /**
     * Gets/Sets shuffling nowplaying list.
     */
    shufflePlaylist: boolean

        /**
     * Gets/Sets stop after current track flag.
     */
    stopAfterCurrentTrack: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets current track length, in ms.
     */
    trackLengthMS: number

        /**
     * Gets current track playback position, in ms. For setting position use seekMSAsync.
     */
    trackPositionMS: number

        /**
     * Gets object for managing visualization.
     */
    visualization: Visualization

        /**
     * Gets/Sets volume, 0 = silent, 1 = maximum volume.
     */
    volume: number

        /**
     * Asynchronously adds given tracks to nowplaying list.
     * Promise is fulfilled when action is completed.
     * if true, it places new tracks just after the currently playing track, default = false
     * if true, it uses shuffle by album, relevant only if shuffle=true, default = false
     * focused position in tracklist adding to the playing list, usable when adding whole list, but starting playback from the doubleclicked track, default = -1
     * if true, it plays only preview of added tracks, default = false
     * if true, it merges randomly given tracks with tracks in playlist, default = false
     * position in nowplaying list, where to place new tracks (0 = begin of the list, -1 = end of the list). Valid only if afterCurrent=false and withClear=false, default = -1
     * if true, it adds this action to nowplaying history, default = true
     * if true, it shuffles given tracklist before it is added, default = false
     * if true, it starts playback just after the tracks are added, default = false
     * if true, it clears nowplaying list before adding tracks, default = false
     */
    addTracksAsync(tracks, params?): Promise<void>

        /**
     * Runs analyze waveform on specified tracks.
     * Tracks to be analyzed
     */
    analyzeWaveform(tracks): void

        /**
     * Removes all tracks from nowplaying list
     * True, if this action should be saved to nowplaying history
Promise is fulfilled when action is completed.
     */
    clearPlaylistAsync(saveHistory?): Promise<void>

        /**
     * Clears the playing history list.
     */
    clearUndoList(): void

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets number of nowplaying entries, which where already played.
     */
    getCountOfPlayedEntries(): number

        /**
     * Gets current track
     */
    getCurrentTrack(): Track

        /**
     * Gets current track - fast version
     * JS object, to be filled by current track
     */
    getFastCurrentTrack(val): Track

        /**
     * Returns PluginList, with currently selected plugin checked.
     */
    getInputPlugins(): PluginList

        /**
     * Gets track which would currently play next or nil, e.g. if shuffled playback
     */
    getNextTrack(): Track

        /**
     * Returns PluginList, with currently active plugin checked.
     */
    getOutputPlugins(): PluginList

        /**
     * Returns stringlist with short descriptions of possible redo actions.
     * Force to return only first redo action, if exists.
     */
    getRedoList(onlyFirst): StringList

        /**
     * Gets current nowplaying list.
Note that it returns PlaylistEntries class, to get Tracklist use getTracklist method instead
     */
    getSongList(): PlaylistEntries

        /**
     * Gets current playing list as Tracklist 
Introduced in 5.0.4
     */
    getTracklist(): Tracklist

        /**
     * Returns stringlist with short descriptions of possible undo actions.
     * Force to return only first undo action, if exists.
     */
    getUndoList(onlyFirst): StringList

        /**
     * Returns Waveform data for given SD
     * If true, recomputes waveform
     */
    getWaveform(SD, forceUpdate): Promise<any>

        /**
     * Asynchronously opens config dialog of active input plugin.
     */
    inputPluginConfig(): void

        /**
     * Returns true, if song SD is currently playing.
     */
    isPlayingTrack(SD): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Play next file in nowplaying list.
     * If true, then the track's last skipped and skip count will be updated.
     * Set true if there was an error playing the current track.
     */
    nextAsync(checkSkip?, cannotPlayCurrent?): Promise<any>

        /**
     * Asynchronously opens config dialog of active output plugin.
     */
    outputPluginConfig(): void

        /**
     * Pauses playback, asynchronously.
     */
    pauseAsync(): Promise<any>

        /**
     * Starts playback, asynchronously.
     */
    playAsync(): Promise<any>

        /**
     * Starts to play paused playback, or pause, if already playing, asynchronously.
     */
    playPauseAsync(): Promise<any>

        /**
     * Play previous file in nowplaying list.
     */
    prevAsync(): Promise<any>

        /**
     * Randomize nowplaying list, asynchronously. Currently playing track will be the first.
     */
    randomizePlaylistAsync(...params): Promise<any>

        /**
     * Redo last count actions with nowplaying list, asynchronously.
     * Number of actions
     */
    redoAsync(count): Promise<any>

        /**
     * Removes duplicate items from nowplaying list, asynchronously.
     */
    removeDuplicatesAsync(): Promise<any>

        /**
     * Removes not accessible items from nowplaying list, asynchronously.
     */
    removeNotAccessibleAsync(): Promise<any>

        /**
     * Removes all selected tracks from nowplaying list, asynchronously.
     */
    removeSelectedTracksAsync(selTracks): Promise<void>

        /**
     * Reverses nowplaying list, asynchronously.
     */
    reversePlaylistAsync(): Promise<any>

        /**
     * Seek to the given time, asynchronously.
     * Requested track time, in ms.
     */
    seekMSAsync(Value): Promise<any>

        /**
     * Sets given output plugin as active.
     */
    setOutputPlugin(plugin): void

        /**
     * Changes playlistPos in nowplaying list by index, asynchronously.
     * Index from 0.
     */
    setPlaylistPosAsync(idx): Promise<any>

        /**
     * Changes playlistPos in nowplaying list to entry pe, asynchronously.
     */
    setPlaylistPosByEntryAsync(pe): Promise<any>

        /**
     * Stops playback, asynchronously.
     */
    stopAsync(): Promise<any>

        /**
     * Undo last count actions with nowplaying list, asynchronously.
     * Number of actions
     */
    undoAsync(count): Promise<any>

        /**
     * Event is called when state of the HTML player is changed ... like playback is started etc.
Possible states are 'unpause', 'play', 'stop', 'pause', 'trackChanged', 'listReordered'.
     * See App.listen
     * new playback state
     * position in miliseconds
     */
    event_htmlPlaybackState: ((newState, positionMS) => void)

        /**
     * Event is called when player layout is somehow modified.
     * See App.listen
     */
    event_layoutModified: (() => void)

        /**
     * Event is called when now playing list is somehow modified.
     * See App.listen
     */
    event_nowPlayingModified: (() => void)

        /**
     * Event is called when playback ends.
     * See App.listen
     */
    event_playbackEnd: (() => void)

        /**
     * Event is called when state of the player is changed ... like playback is started etc.
Possible states are 'unpause', 'play', 'stop', 'pause', 'trackChanged', 'listReordered'.
     * See App.listen
     * new playback state
     */
    event_playbackState: ((newState) => void)

        /**
     * Event is called when repeat is enabled/disabled.
     * See App.listen
     * new value for repeat
     */
    event_repeatChange: ((value) => void)

        /**
     * Event is called when playback position changed by user interaction.
     * See App.listen
     * new position
     */
    event_seekChange: ((value) => void)

        /**
     * Event is called when shuffle is enabled/disabled.
     * See App.listen
     * new value for shuffle
     */
    event_shuffleChange: ((value) => void)

        /**
     * Event is called when stopAfterCurrentTrack is enabled/disabled.
     * See App.listen
     * new value for stopAfterCurrentTrack
     */
    event_stopAfterCurrentChange: ((value) => void)

        /**
     * Event is called when now user is manually skipped track.
     * See App.listen
     */
    event_trackSkipped: (() => void)

}

/**
 * Playlist class
 * Playlist
 */
declare class Playlist {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets count of child playlists
     */
    childrenCount: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets playlist id
     */
    id: number

        /**
     * Gets/Sets whether the playlist is auto-playlist
     */
    isAutoPlaylist: boolean

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets/Sets title of this playlist.
     */
    name: string

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets playlist parent
     */
    parent: Playlist

        /**
     * Gets id of parent playlist
     */
    parentID: number

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Add track into playlist
     * to add
     */
    addTrackAsync(Track): Promise<any>

        /**
     * Add track into playlist
     */
    addTrackByIdAsync(Track): Promise<any>

        /**
     * Add tracks into playlist
     * to add
     */
    addTracksAsync(Tracks): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clears this playlist's tracks
     */
    clearTracksAsync(): Promise<any>

        /**
     * Commits this playlist
     */
    commitAsync(): Promise<any>

        /**
     * Creates copy (clone) of this playlist
     */
    createCopyAsync(): Promise<any>

        /**
     * Deletes this playlist
     */
    deleteAsync(): Promise<any>

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets children playlists (sub-playlists)
     */
    getChildren(...params): PlaylistList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets playlist last modified timestamp
     */
    getLastModifiedAsync(): Promise<any>

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Gets tracks of this playlist
     */
    getTracklist(...params): Tracklist

        /**
     * Inserts track into playlist
     * Track to insert
     */
    insertTrackAsync(Index, Track): Promise<any>

        /**
     * Inserts tracks into playlist
     * Tracks to insert
     */
    insertTracksAsync(Index, Tracks): Promise<any>

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Moves a track in the playlist
     */
    moveTrackAsync(Track, BeforeTrack): Promise<any>

        /**
     * Creates new sub-playlist of this playlist
     */
    newPlaylist(): Playlist

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Removes selected tracks from playlist
     */
    removeSelectedTracksAsync(list): Promise<void>

        /**
     * Removes track from playlist
     * Track to remove
     */
    removeTrackAsync(Track): Promise<any>

        /**
     * Saves re-ordered playlist's tracks into DB.
     * Does not function with Auto-Playlists. Auto-Playlists use QueryData for their sorting. 
See searchEditor.js and playlistHeader.js for an example on how to manipulate QueryData for sorting.
     */
    reorderAsync(dataSource): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Add tracks into playlist, but clears the existing tracks at first. 
NOTE: Introduced in version 5.0.4
     * to add
     */
    setTracksAsync(Tracks): Promise<any>

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when a child playlist is created. Most useful with app.playlists.root.
     * See App.listen
     * ID of created playlist. (pre version 5.0.4. use app.playlists.getByIDAsync(playlistID) to get the Playlist object).
     */
    event_playlistAdded: ((playlistID, playlist) => void)

        /**
     * Event is called when a child playlist is modified. Most useful with app.playlists.root.
     * See App.listen
     * ID of changed playlist (pre version 5.0.4. use app.playlists.getByIDAsync(playlistID) to get the Playlist object).
     */
    event_playlistChanged: ((playlistID, playlist) => void)

        /**
     * Event is called when a child playlist is removed. Most useful with app.playlists.root.
     * See App.listen
     * Object containing info of the playlist that was removed.
     */
    event_playlistRemoved: ((playlist) => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Entries in playlists or the Playing list. Use PlaylistEntries.getTracklist to "convert" it into a Tracklist.
 * PlaylistEntries
 */
declare class PlaylistEntries {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: PlaylistEntry

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: PlaylistEntry

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<PlaylistEntry>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<PlaylistEntry>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<PlaylistEntry>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<PlaylistEntry>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<PlaylistEntry>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<PlaylistEntry>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<PlaylistEntry>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<PlaylistEntry>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Returns a Tracklist equivalent of the PlaylistEntries list.
     */
    getTracklist(...params): Tracklist

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): PlaylistEntry

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<PlaylistEntry>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Saves re-ordered playing list into playing list.
     */
    reorderAsync(dataSource): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * ASYNCHRONOUSLY sorts the list with the given sorting rule and updates the auto-sort rule.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setAutoSortAsync(Value): Promise<any>

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<PlaylistEntries>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class PlaylistEntry {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class PlaylistList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Playlist

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Playlist

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<Playlist>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<Playlist>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<Playlist>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<Playlist>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Playlist>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<Playlist>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Playlist>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Playlist>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Playlist>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Playlist

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Playlist>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<PlaylistList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Playlists manager class. Access via the global app.playlists.
 * Playlists
 */
declare class Playlists {
        /**
     * Returns the 'root' playlist, which is considered to be a virtual playlist whose children are all the first level playlists.
     */
    root: Playlist

        /**
     * Returns a playlist based on its ID.
     * ID of the playlist
     */
    getByIDAsync(id): Promise<any>

        /**
     * Returns a playlist based on its title.
     * title of the playlist
     */
    getByTitleAsync(id): Promise<any>

        /**
     * Returns list of playlists to which the track belongs
     */
    getPlaylistsForTrackAsync(SD): SharedList<Playlist>

        /**
     * Save list of tracks to playlist file
     * default filename (if it is absolute path with file extension then dialog for selecting a location isn't shown and file is saved directly)
     */
    saveToPlaylistFile(SL, fname, title): Promise<any>

}

declare class PluginList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: BasePlugin

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: BasePlugin

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new item to the list.
     * Object to be added in list
     */
    add(data): number

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<BasePlugin>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<BasePlugin>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<BasePlugin>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<BasePlugin>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<BasePlugin>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): BasePlugin

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<BasePlugin>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<PluginList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Podcast subscription class
 * Podcast
 */
declare class Podcast {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * State of '[x] Customize subscription rules' checkbox to override global podcast settings
     */
    customizeRules: boolean

        /**
     * State of '[x] Delete episodes older than' checkbox
     */
    delEpisodes: boolean

        /**
     * State of '[x] Only if they have been listened to' checkbox
     */
    delOnlyListened: boolean

        /**
     * State of '[x] Only if rating less than' checkbox
     */
    delRating: boolean

        /**
     * Gets/Sets rating value corresponding to '[x] Only if rating less than' checkbox
     */
    delRatingValue: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets/Sets description of this podcast subscription
     */
    description: string

        /**
     * Value correposning to '[x] On update, download [xxx][yyy]' dropdowns
     * DOWNLOAD_ALL       = 0;
DOWNLOAD_RECENT_1  = 1;
DOWNLOAD_RECENT_2  = 2;
DOWNLOAD_RECENT_5  = 3;
DOWNLOAD_RECENT_10 = 4;
DOWNLOAD_RECENT_20 = 5;
DOWNLOAD_NOTHING   = 6;
DOWNLOAD_RECENT_1_DAY  = 7;
DOWNLOAD_RECENT_2_DAYS = 8;
DOWNLOAD_RECENT_3_DAYS = 9;
DOWNLOAD_RECENT_WEEK   = 10;
DOWNLOAD_RECENT_2_WEEK = 11;
DOWNLOAD_RECENT_MONTH  = 12;
DOWNLOAD_OLDEST_1      = 13;
DOWNLOAD_OLDEST_2      = 14;
DOWNLOAD_OLDEST_5      = 15;
DOWNLOAD_OLDEST_10     = 16;
DOWNLOAD_OLDEST_20     = 17;
     */
    downloadType: number

        /**
     * Value correposning to '[x] Delete episodes older than [xxx]' dropdown
     */
    episodeAge: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets/Sets login in case podcast feed is password protected
     */
    login: string

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Value correposning to '[x] On download, tag episodes based on data from podcast feed' checkbox
     */
    overwriteTags: boolean

        /**
     * Gets/Sets password in case podcast feed is password protected
     */
    password: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets/Sets subscription feed URL link (link to RSS/XML podcast feed)
     */
    podcastURL: string

        /**
     * Value correposning to '[x] Always retain the [xxx]' checkbox
     */
    retainEpisodes: boolean

        /**
     * Gets/Sets number of episodes to be kept
     */
    retainNumber: number

        /**
     * Whether to show links to already removed episodes
     */
    showRemovedEpisodes: boolean

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets/Sets title of the podcast subscription.
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Commits this podcast
     */
    commitAsync(): Promise<any>

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets episodes of this podcast subscription, similar to getTracklist(), but can specify other params
     */
    getEpisodeList(onlyDownloaded, onlyUnplayed): Tracklist

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Returns link to cached image thumbnail of the nearest specified size
     */
    getThumbAsync(...params): number

        /**
     * Gets all tracks (episodes) of this podcast subscription
     */
    getTracklist(...params): Tracklist

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Runs update of this podcast
     */
    runUpdate(): void

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Unsubscribes this podcast
     * If true, also downloaded tracks will be deleted
     */
    unsubscribeAsync(deleteTracks): Promise<any>

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class PodcastDirectory {
}

declare class PodcastList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Podcast

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Podcast

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<Podcast>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<Podcast>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<Podcast>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<Podcast>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Podcast>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<Podcast>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Podcast>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Podcast>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Podcast>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Podcast

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Podcast>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<PodcastList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Podcasts manager class. Access via the global app.podcasts.
 * Podcasts
 */
declare class Podcasts {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Adds OPML directory
     * link to the OPML directory
     */
    addDirectory(url): void

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets default podcast subscription settings as Podcast object.
     */
    getDefaultPodcastData(): Podcast

        /**
     * Gets podcast object based on URL
     */
    getPodcastByURLAsync(URL): Promise<any>

        /**
     * Gets list of podcast OPML directories
     */
    getPodcastDirectories(): SharedList<PodcastDirectory>

        /**
     * Gets list of all podcasts
     */
    getPodcastList(): PodcastList

        /**
     * Gets list of all podcast given by SQL
     * defining the DB query
     */
    getPodcastListBySQL(SQL): PodcastList

        /**
     * Runs update of all subscribed podcasts on background
     */
    isAnyPodcastSubscribed(): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class ProgressToken {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Database query handler.
 * Query
 */
declare class Query {
        /**
     * Closes database query.
     */
    close(): void

        /**
     * Executes SQL statement.
     */
    execSQL(): void

        /**
     * Moves to first record in select result.
     */
    first(): void

        /**
     * Executes SQL insert query and returns ID of a new record.
     */
    insertSQL(): number

        /**
     * Moves to the next row in select result.
     */
    next(): void

        /**
     * Opens specified database query.
     */
    open(): void

}

/**
 * Base for Query class.
 * QueryBase
 */
declare class QueryBase {
        /**
     * Gets total count of columns in current result set.
     */
    colCount: number

        /**
     * Gets indicator whether query is prepared or not.
     */
    isPrepared: boolean

        /**
     * Gets row number in current result set.
     */
    row: number

        /**
     * Gets total count of rows in current result set.
     */
    rowCount: number

        /**
     * Gets SQL query in list of strings
     */
    sql: StringList

        /**
     * Gets EOF (end of file) status. True when no more records are prepared.
     */
    GetEOF(): boolean

        /**
     * Gets one field of Field class based on his name.
     */
    fieldByName(fld): Field

        /**
     * Gets field names of returning result.
     */
    fieldNames(): StringList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets one field of Field class based on index.
     */
    getFields(I): Field

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Prepares query for an execution.
     */
    prepare(): void

        /**
     * Adds double value and increase internal index.
     */
    setAddDouble(Value): void

        /**
     * Adds integer value and increase internal index.
     */
    setAddInteger(Value): void

        /**
     * Adds 64bit integer value and increase internal index.
     */
    setAddInteger64(Value): void

        /**
     * Adds string value and increase internal index.
     */
    setAddString(Value): void

        /**
     * Bind floating point value in specified index.
     */
    setBindDouble(ind, Value): void

        /**
     * Bind integer value in specified index.
     */
    setBindInteger(ind, Value): void

        /**
     * Bind 64bit integer value in specified index.
     * setBindInteger64
     */
    setBindInteger64(ind, Value): void

        /**
     * Bind string value in specified index;
     */
    setBindString(ind, Value): void

}

/**
 * Corresponds to a single rule row like 'Rating >= 4 stars' in dlgSearch
 * QueryCondition
 */
declare class QueryCondition {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets/Sets field to be searched (e.g. 'Album', 'Rating', 'Played #')
     */
    fieldName: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets/Sets operator to be used (e.g. '>=', 'equals', 'is known')
Use getOperatorsList() to get list of available operators for the currently selected FieldName
     */
    operatorName: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets view type for selected Operatorname
     */
    getOperatorViewType(): string

        /**
     * Gets/Sets list of available operators for the currently selected FieldName
     */
    getOperatorsList(): StringList

        /**
     * Gets text represantion of set values (e.g. 'Played # >= 5', 'Rating equals 4 stars')
It is read only property, to set the values use setValuesAsync method
     */
    getValueTextAsync(): Promise<any>

        /**
     * Gets currently selected values
     */
    getValuesAsync(): Promise<any>

        /**
     * Gets all possible values if the selected operator is 'equals'
     */
    getValuesList(): StringList

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Sets values to be used
     * value to be set, varies based on selected OperatorName
     * this value is used only as the higher value in case of 'between' operator
     */
    setValuesAsync(Value1, Value2): Promise<any>

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class QueryConditionList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: QueryCondition

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: QueryCondition

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new item to the list.
     * Object to be added in list
     */
    add(data): number

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<QueryCondition>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<QueryCondition>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<QueryCondition>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<QueryCondition>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<QueryCondition>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): QueryCondition

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<QueryCondition>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<QueryConditionList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Defines set of search rules (e.g. auto-playlist is defined by QueryData), see dlgSearch for example
 * QueryData
 */
declare class QueryData {
        /**
     * Gets all possible fields that can be used ('Album','Rating',...)
     */
    allFieldsList: StringList

        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets/Sets collection to be searched ('Entire Library', 'Music', 'Video',...)
     */
    collection: string

        /**
     * Gets list of QueryCondition objects defining search rules, see dlgSearch for example
     */
    conditions: QueryConditionList

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets/Sets phrase to be searched (e.g. when searching via search bar)
     */
    searchPhrase: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets all albums fullfilling this query params
     */
    getAlbumList(...params): AlbumList

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets all genres fullfilling this query params
     */
    getGenreList(...params): GenreList

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Gets persons fullfilling this query params
     */
    getPersonList(...params): ArtistList

        /**
     * Gets all playlists fullfilling this query params
     */
    getPlaylists(...params): PlaylistList

        /**
     * Gets all podcasts fullfilling this query params
     */
    getPodcastList(...params): PodcastList

        /**
     * Gets list of files that fullfills this search criteria
     * content optional param to specify content e.g. {contentType: 'audio', fillPlayOrder: true}
     */
    getTracklist(...params): Tracklist

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Sets sort orders, it is JS array (see dlgSearch.js for examples)
     */
    setSortOrders(Value): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class QueryPlusT {
}

/**
 * Database query row.
 * QueryResultRow
 */
declare class QueryResultRow {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Get number of columns.
     */
    count: number

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get cell value of a row.
     * Column index
     */
    getValue(idx): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

/**
 * Database query row.
 * QueryResults
 */
declare class QueryResults {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total number of rows.
     */
    count: number

        /**
     * Whether row indicator is at end.
     */
    eof: boolean

        /**
     * Get current row class.
     */
    fields: QueryResultRow

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets/Sets current row index.
     */
    row: number

        /**
     * Gets the object title
     */
    title: string

        /**
     * Get cell value.
     * Name of a column
     */
    fieldByName(name): any

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Move to the next row.
     */
    next(): void

        /**
     * Move to the previous row.
     */
    prev(): void

}

/**
 * Rating
 */
declare class RatingItem {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Parent collection of this class.
     */
    collection: Collection

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Rating value (0-100).
     */
    rating: number

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Set rating to defined list of tracks.
     */
    assignTracks(tracks): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Get list of tracks.
     */
    getTracklist(...params): Tracklist

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class RegistryAccess {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

/**
 * Rmote client device (UPnP/DLNA)
Accessible e.g. via MediaServer.getClientList()
 * RemoteClient
 */
declare class RemoteClient {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Auto-convert rules config
     */
    autoConvertConfig: AutoConvertSettings

        /**
     * Whether this client customizes the shared content
     */
    customizeContent: boolean

        /**
     * Whether this client customizes the auto-convert settings
     */
    customizeConversion: boolean

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Whether this client is enabled to share with
     */
    enabled: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * IP of this client (as configured)
     */
    ip: string

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * The last access time of the client
     */
    lastAccess: string

        /**
     * IP of this client
     */
    mac: string

        /**
     * Name of this client
     */
    name: string

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Commits into database
     */
    commitAsync(): Promise<any>

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets list of objects to be shared (collections, playlists)
     */
    getSharedObjects(): SharedList<SharedObject>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Removes from database
     */
    removeAsync(): Promise<any>

        /**
     * Sets list of objects to be shared (collections, playlists)
     * of shared objects
     */
    setSharedObjects(list): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class RemoteDeviceList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: RemoteClient

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: RemoteClient

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<RemoteClient>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<RemoteClient>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<RemoteClient>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<RemoteClient>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<RemoteClient>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<RemoteClient>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<RemoteClient>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<RemoteClient>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<RemoteClient>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): RemoteClient

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<RemoteClient>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<RemoteDeviceList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Remote Player (UPnP/DLNA)
Accessible e.g. via app.sharing.getAvailablePlayers() or app.sharing.getActivePlayer()
 * RemotePlayer
 */
declare class RemotePlayer {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Whether player is paused
     */
    isPaused: boolean

        /**
     * Whether player is playing
     */
    isPlaying: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Length (in milliseconds) of the seekbar (current track)
     */
    lengthMS: number

        /**
     * Name of the player/renderer
     */
    name: string

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Position (in milliseconds) of the seekbar
     */
    positionMS: number

        /**
     * Gets the object title
     */
    title: string

        /**
     * Guid of the player/renderer
     */
    uuid: string

        /**
     * Volume of player/renderer (between 0 and 1)
     */
    volume: number

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Perform Next on the player
     */
    next(): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Perform Pause on the player
     */
    pause(): void

        /**
     * Perform Play on the player (e.g. to resume playback)
     */
    play(): void

        /**
     * Perform Play on the player (e.g. to resume playback)
     */
    playURI(aURI, SD, StartPos): number

        /**
     * Perform Previous on the player
     */
    previous(): void

        /**
     * Perform Stop on the player
     */
    stop(): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Media server (UPnP/DLNA) on the network
Accessible e.g. via app.sharing.getRemoteServers()
 * RemoteServer
 */
declare class RemoteServer {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Base URL of the server
     */
    baseUrl: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * URL link to device description
     */
    descriptionUrl: string

        /**
     * URL link to device icon
     */
    iconUrl: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * IP address of this device
     */
    ip: string

        /**
     * Whether this server was added manually (isCustom = true) or SSDP auto-discovered (isCustom = false)
     */
    isCustom: boolean

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Manufacturer of this server
     */
    manufacturer: string

        /**
     * Model description of this server
     */
    modelDescription: string

        /**
     * Model name of this server
     */
    modelName: string

        /**
     * Model number of this server
     */
    modelNumber: string

        /**
     * Name of this server
     */
    name: string

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * IP port of this device
     */
    port: number

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Gets all properties as single string
     */
    getProperties(): string

        /**
     * Returns link to cached image thumbnail of the nearest specified size
     */
    getThumbAsync(...params): number

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Creates public access (to be accessible outside of LAN)
     */
    makePublicAsync(): Promise<any>

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Removes the server (can be only when isCustom = true)
     */
    removeAsync(): Promise<any>

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class RulesList {
}

declare class ServerContainer {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class ServerList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: MediaServer

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: MediaServer

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<MediaServer>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<MediaServer>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<MediaServer>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<MediaServer>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<MediaServer>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<MediaServer>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<MediaServer>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<MediaServer>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<MediaServer>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): MediaServer

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<MediaServer>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<ServerList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Access to various MediaMonkey settings. Access via the global app.settings.
 * Settings
 */
declare class Settings {
        /**
     * Gets equalizer class
     */
    equalizer: EqualizerSettings

        /**
     * Adds mask to history (to be re-used in mask dropdowns)
     * to store
     * Specifies the masks list
     */
    addMask2History(Mask, ListType): void

        /**
     * Gets JSON of MediaMonkey settings to view/change
     * comma separated list of sections to get (or leave empty string for all)
     */
    getJSON(Sections): string

        /**
     * This function returns list of masks used in history / predefined masks for mask dropdown
     * Specifies the masks list
     */
    getMaskList(ListType): StringList

        /**
     * Sets JSON and applies to MediaMonkey settings, so MediaMonkey behaves according to the new settings immediatelly
     * comma separated list of sections to apply settings for (or leave empty to set all)
     */
    setJSON(JSON, Sections): string

}

declare class SettingsUtils {
}

/**
 * Base class for shared objects
 * SharedBase
 */
declare class SharedBase {
        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class SharedCommonObject {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * SharedDrive class
 * SharedDrive
 */
declare class SharedDrive {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Drive letter
     */
    driveLetter: string

        /**
     * Drive type string property ('optical_drive', 'drive')
     */
    driveType: string

        /**
     * Gets/sets media type of the folder
     */
    folderMediaType: number

        /**
     * Gets/sets whether the folder has subfolders
     */
    hasSubfolders: boolean

        /**
     * Gets/Sets icon of this folder.
     */
    icon: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Returns true if media isn't inserted (e.g. for optical CD drives) 
NOTE: Introduced in 5.0.4
     */
    isEmpty: boolean

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Gets whether the folder is actually M3U/PLA playlist
     */
    isPlaylist: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Media type integer property (returning integer values from https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea ) 
e.g. DRIVE_FIXED = 3 
NOTE: Added in version 5.0.4
     */
    mediaType: number

        /**
     * Gets/sets the folder to be monitored for changes
     */
    monitorChanges: boolean

        /**
     * Gets/sets the folder to be monitored continuously
     */
    monitorContinous: boolean

        /**
     * Gets/sets the folder to be monitored on startup
     */
    monitorStartup: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets/Sets path of this folder.
     */
    path: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Serial numbrer
     */
    serialNumber: number

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Temporary JS objects can be attached here
     */
    tag: any

        /**
     * Gets/Sets title of this folder.
     */
    title: string

        /**
     * Drive label
     */
    volumeLabel: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Creates sub-folder of this folder
     */
    createFolder(folderName): SharedFolder

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets list of individual files as string list
NOTE: Introduced in version 5.0.4
     * If true then lists files contained even within sub-folders
     */
    getFileList(recursive): StringList

        /**
     * Gets sub-folders of this folder
     */
    getFolderList(): SharedList<SharedFolder>

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Gets path of this folder asynchronously
     */
    getPathAsync(): Promise<any>

        /**
     * Gets folder from path
     * string
     */
    getSharedFolder(path): SharedFolder

        /**
     * Gets tracks of this folder
     */
    getTracklist(...params): Tracklist

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Updates hasSubfolders value based on current file system state 
NOTE: Added in 5.0.4
     * 5.0.4
     */
    updateHasSubfoldersAsync(): Promise<any>

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * SharedFolder class
 * SharedFolder
 */
declare class SharedFolder {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets/sets media type of the folder
     */
    folderMediaType: number

        /**
     * Gets/sets whether the folder has subfolders
     */
    hasSubfolders: boolean

        /**
     * Gets/Sets icon of this folder.
     */
    icon: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Gets whether the folder is actually M3U/PLA playlist
     */
    isPlaylist: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets/sets the folder to be monitored for changes
     */
    monitorChanges: boolean

        /**
     * Gets/sets the folder to be monitored continuously
     */
    monitorContinous: boolean

        /**
     * Gets/sets the folder to be monitored on startup
     */
    monitorStartup: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets/Sets path of this folder.
     */
    path: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Temporary JS objects can be attached here
     */
    tag: any

        /**
     * Gets/Sets title of this folder.
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Creates sub-folder of this folder
     */
    createFolder(folderName): SharedFolder

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets list of individual files as string list
NOTE: Introduced in version 5.0.4
     * If true then lists files contained even within sub-folders
     */
    getFileList(recursive): StringList

        /**
     * Gets sub-folders of this folder
     */
    getFolderList(): SharedList<SharedFolder>

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Gets path of this folder asynchronously
     */
    getPathAsync(): Promise<any>

        /**
     * Gets folder from path
     * string
     */
    getSharedFolder(path): SharedFolder

        /**
     * Gets tracks of this folder
     */
    getTracklist(...params): Tracklist

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Updates hasSubfolders value based on current file system state 
NOTE: Added in 5.0.4
     * 5.0.4
     */
    updateHasSubfoldersAsync(): Promise<any>

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class SharedList<T> {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: T

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: T

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new item to the list.
     * Object to be added in list
     */
    add(data): number

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<T>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<T>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<T>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<T>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<T>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): T

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<T>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<SharedList<T>>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class SharedMediaObject {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class SharedNode {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Node list
 * SharedNodeList
 */
declare class SharedNodeList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: SharedNode

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: SharedNode

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<SharedNode>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<SharedNode>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<SharedNode>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<SharedNode>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<SharedNode>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<SharedNode>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<SharedNode>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): SharedNode

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<SharedNode>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Sets all nodes to checked/unchecked state
     */
    setAllChecked(value): void

        /**
     * Sets all nodes to (un)modified state
     */
    setAllModified(value): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets list of objects to be checked
Nodes that includes same objects (dataSource) as are in the input list will be checked (objectType and id is matched)
     * of objects
     */
    setCheckedObjects(list): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<SharedNodeList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Common object class
 * SharedObject
 */
declare class SharedObject {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class SharedObjectLink {
        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class SharedObservable {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class SharedProgressObject {
}

declare class SharedResponse {
        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class SharedTree {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: SharedNode

        /**
     * Gets focused item in the list.
     */
    focusedItem: SharedNode

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<SharedNode>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<SharedNode>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<SharedNode>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<SharedNode>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<SharedNode>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<SharedNode>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<SharedNode>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<SharedNode>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<SharedNode>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<SharedNode>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<SharedTree>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class SharedUICommonList<T> {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: T

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: T

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<T>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<T>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<T>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<T>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<T>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<T>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<T>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<T>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<T>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): T

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<T>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<SharedUICommonList<T>>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * DataSource
 */
declare class SharedUIList<T> {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: T

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: T

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<T>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<T>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<T>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<T>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<T>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<T>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<T>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<T>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<T>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): T

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<T>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<SharedUIList<T>>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Window handling management and an extension of the DOM 'window' object.
 * SharedWindow
 */
declare class SharedWindow {
        /**
     * Gets active state of the window
     */
    active: boolean

        /**
     * Gets/Sets window at top
     */
    atTop: boolean

        /**
     * Gets/Sets window at most top (over all windows)
     */
    atTopMost: boolean

        /**
     * Gets/Sets border of the window
     */
    bordered: boolean

        /**
     * Get Bounds class of the window
     */
    bounds: Bounds

        /**
     * Gets bool value whether menu can be built in window (Windows system) or
need to be created outside of window (OSX)
     */
    builtInMenu: boolean

        /**
     * Window can be maximized
     */
    canMaximize: boolean

        /**
     * Window can be minimized
     */
    canMinimize: boolean

        /**
     * Gets/Sets window's client height
     */
    clientHeight: number

        /**
     * Gets/Sets window's client width
     */
    clientWidth: number

        /**
     * Gets align of the docked window.
Available values are 'begin', 'middle', 'end'.
     */
    dockAlign: string

        /**
     * Gets position of the window where to dock by default.
Available values are 'top', 'bottom', 'left', 'right'.
     */
    dockPos: string

        /**
     * Gets/Sets fade in-out time of the window in ms.
     */
    fadeTime: number

        /**
     * Gets/Sets window style to flat. This style is used for notifications dialogs or maximized video window.
     */
    flat: boolean

        /**
     * Gets maximized state of the window
     */
    maximized: boolean

        /**
     * Gets minimized state of the window
     */
    minimized: boolean

        /**
     * Gets/Sets result of modal window (window will close automatically when value is set)
     */
    modalResult: number

        /**
     * Gets/Sets whether window can be moved
     */
    moveable: boolean

        /**
     * Gets/Sets opacity of the window in percentage (0=transparent to 100=opaque, default is 100)
     */
    opacity: number

        /**
     * Shape of the window used when semi-transparent window need to be shown.
if set to true. It's supposed to be a name of the PNG file with alpha.
     */
    popupMenuWindows: boolean

        /**
     * Gets/Sets name for window's position and size save
     */
    posSaveName: string

        /**
     * Gets/Sets whether window can resize
     */
    resizeable: boolean

        /**
     * Gets/Sets title of the window (visible in the caption bar).
     */
    title: string

        /**
     * Gets/Sets tool window style
     */
    toolWindow: boolean

        /**
     * Get's URL of the window.
     */
    url: string

        /**
     * Get window visibility
     */
    visible: boolean

        /**
     * Translates string to current language
     */
    _(...params): any

        /**
     * Makes window active.
     */
    activate(): void

        /**
     * Send debug string to log
     */
    callODS(s): void

        /**
     * Close window
     */
    closeWindow(): void

        /**
     * Create child window with current window is set as parent
     * URL to open in new window
     * Parameters to create window (left, top, width, height)
     */
    createOwnWindow(URL, params): SharedWindow

        /**
     * Executes the given JS code in the target HTML window.
     */
    executeCode(...params): any

        /**
     * Exceutes the given JS script in the target HTML window.
     * URL of script to be executed
     */
    executeFile(URL): void

        /**
     * Get async show token (to override default show mechanism). Call this token once dialog is prepared and can be shown.
     */
    getAsyncShowToken(): any

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Create/Update/Delete embedded window with custom content.
     */
    handleEmbeddedWindow(...params): Promise<any>

        /**
     * Hide window
     */
    hide(): void

        /**
     * Include script to current window
     * Name of script file
     */
    include(filename): void

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Maximize window
     */
    maximize(): void

        /**
     * Shows standard message dialog.
     * Text of the message.
     * Message dialog type: 'warning', 'error', 'information', 'confirmation'  or 'help'
     * Array of buttons. Each button could be defined by its string ID or by object (Buttons.addBtn | for structure see parameter params of addBtn method)
Possible button id's: 'btnYes', 'btnNo', 'btnOK', 'btnCancel', 'btnAbort', 'btnRetry', 'btnIgnore', 'btnAll', 'btnNoToAll', 'btnYesToAll', 'btnHelp', 'btnClose' or some custom.
     * Object with other params. Possible attributes:
 title: window caption.
 defaultButton: id of default button.
 chbCaption: caption of checkbox.
 checked: initial state of checkbox.
     * Callback function, that receives the result value (object with buttonID and checked attributes).
     */
    messageDlg(msg, dlgType, buttons, params, cbk): void

        /**
     * Minimize window
     */
    minimize(): void

        /**
     * Create new SharedStringList.
     */
    newStringList(...params): StringList

        /**
     * Restore window
     */
    restore(): void

        /**
     * Set bounds of the window
     */
    setBounds(Aleft, Atop, Awidth, Aheight): void

        /**
     * Sets window client size
     */
    setClientSize(Awidth, Aheight): void

        /**
     * Sets window size
     */
    setSize(Awidth, Aheight): void

        /**
     * Show window
     */
    show(): void

        /**
     * Show window as modal dialog
     */
    showModal(): void

        /**
     * Event is called when window become active
     * See App.listen
     */
    event_activated: ((isActivated, ncArea) => void)

        /**
     * Event is called after the dialog's init function is called
     * See App.listen
     */
    event_afterInit: (() => void)

        /**
     * Event is called when browser is going to close
     * See App.listen
     */
    event_closeQuery: ((token) => void)

        /**
     * Event is called when browser is closed
     * See App.listen
     */
    event_closed: (() => void)

        /**
     * Event is called when embedded window is created
     * See App.listen
     */
    event_embeddedWindowCreate: (() => void)

        /**
     * Event is called when window is initialized and ready to use context
     * See App.listen
     */
    event_initialized: (() => void)

        /**
     * Event is called when page is loaded into memory
     * See App.listen
     */
    event_load: (() => void)

        /**
     * Event is called when any mouse event is raised (move, down, up...)
     * See App.listen
     */
    event_mousestatechanged: (() => void)

        /**
     * Event is called when window is moved to new location
     * See App.listen
     */
    event_moved: (() => void)

        /**
     * Event is called when DCOM is finished
     * See App.listen
     */
    event_ready: (() => void)

        /**
     * Event is called when all scripts are loaded
     * See App.listen
     */
    event_scriptsLoaded: (() => void)

        /**
     * Event is called when window is shown
     * See App.listen
     */
    event_show: (() => void)

        /**
     * Event is called when window's visibility was changed (e.g. window gets hidden or minimized)
     * See App.listen
     * new window state is 'minimized'
     * window is going to hide
     * window state
     */
    event_visibilityChanged: ((isMinimized, hidden, state) => void)

}

/**
 * Class to handle/manage media sharing (UPnP/DLNA)
Accessible via app.sharing
 * Sharing
 */
declare class Sharing {
        /**
     * Adds manually a remote server to browse/play content from,
is useful when the server cannot be auto-discovered (e.g. is located outside of LAN)
     */
    addRemoteServerAsync(DescriptionURL): Promise<any>

        /**
     * Creates new server with default values
     */
    createNewServer(): MediaServer

        /**
     * Gets active remote player (to be controlled by MediaMonkey player)
     */
    getActivePlayer(): RemotePlayer

        /**
     * Gets the list of available players on the LAN (list of RemotePlayer class)
     */
    getAvailablePlayers(): SharedList<RemotePlayer>

        /**
     * Gets the list of available players that are configured for multi zone playback
     */
    getMultiZonePlayers(): SharedList<RemotePlayer>

        /**
     * Gets the list of available servers on the LAN (list of  RemoteServer class)
plus those manually added via app.sharing.addRemoteServerAsync()
     */
    getRemoteServers(...params): SharedUIList<RemoteServer>

        /**
     * Gets the configured MediaMonkey server list (list of MediaServer class)
     */
    getServers(): ServerList

        /**
     * Returns whether service for MediaMonkey is installed
     */
    getServieIsInstalled(): Promise<any>

        /**
     * Installs service for MediaMonkey allowing to browse media server even if MediaMonkey is not running (and not logged into the user account).
     */
    installService(username, password): Promise<any>

        /**
     * Sets active remote player (to be controlled by MediaMonkey player) by its UUID, empty value sets to 'local' player
     */
    setActivePlayerUUID(uuid): Promise<any>

        /**
     * Allows/disallows remote control of MediaMonkey player via UPnP/DLNA
     */
    setPlayerControlAllowed(value): void

        /**
     * Starts sharing (runs configured media servers)
     */
    start(): void

        /**
     * Uninstalls service for MediaMonkey
     */
    uninstallService(): Promise<any>

}

/**
 * Sleep timer class for controlling sleeper/shutdowner
 * Shutdowner
 */
declare class Shutdowner {
        /**
     * Desired action at the end, possible values are 'shutdown', 'hibernate', 'sleep', 'logoff', 'close', 'none'
     */
    action: string

        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Start fade after (in minutes)
     */
    fadeAfter: number

        /**
     * Whether to fade volume
     */
    fadeVolume: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Perform the selected action after (in minutes)
     */
    shutdownAfter: number

        /**
     * Gets the object title
     */
    title: string

        /**
     * To which volume level fade out
     */
    volumePercent: number

        /**
     * Stops sleep timer previously started by startSleep
     */
    cancelSleep(): void

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Starts sleep timer
     */
    startSleep(): void

}

declare class SizeInfo {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

/**
 * Class represents Skin or Layout
 * Skin
 */
declare class Skin {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Get skin/layout author
     */
    author: string

        /**
     * Get skin/layout description
     */
    description: string

        /**
     * Get skin/layout icon (typically svg file name)
     */
    icon: string

        /**
     * Get skin/layout ID
     */
    id: string

        /**
     * Get skin/layout is currently loaded
     */
    isCurrent: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Get skin/layout path
     */
    path: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Get JSON-formatted skin options. See: https://www.mediamonkey.com/wiki/Skinning_Guide#Adding_configurable_settings_to_your_skin
     */
    skinOptions: string

        /**
     * Get skin/layout title
     */
    title: string

        /**
     * Get skin/layout version like '1.0.0'
     */
    version: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class SkinList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Skin

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Skin

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new item to the list.
     * Object to be added in list
     */
    add(data): number

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Skin>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<Skin>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Skin>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Skin>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Skin>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Skin

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Skin>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<SkinList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * String list class
 * StringList
 */
declare class StringList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets/sets comma separated string represented by all items in list.
     */
    commaText: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: string

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets/sets separator text used for Text property, default is Line Break
     */
    separator: string

        /**
     * Gets/sets text value represented by all items in list.
     */
    text: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns whether given string is contained within the list
     */
    exists(value): boolean

        /**
     * Case insensitive version of exist method
     */
    existsCI(value): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<string>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<string>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<string>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<string>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<string>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<string>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<string>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<string>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets string value at specified index. Read lock required.
     */
    getValue(index): string

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<string>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Removes duplicates
     */
    removeDuplicates(): void

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets string value at specified index. Write lock required.
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<StringList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class SuppType {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class SyncFile {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class SynchSong {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

declare class SyncPlaylist {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

/**
 * Media item class
 * Track
 */
declare class Track {
        /**
     * Gets/sets actors.
     */
    actors: string

        /**
     * Gets/sets album.
     */
    album: string

        /**
     * Gets/sets albumArtist.
     */
    albumArtist: string

        /**
     * Gets/sets artist.
     */
    artist: string

        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets/sets author aka composer.
     */
    author: string

        /**
     * Gets/sets bitrate.
     */
    bitrate: number

        /**
     * Gets/sets BPM (beats per minute).
     */
    bpm: number

        /**
     * Gets shortened version of the track comment, max 200 characters, shortened with ellipses. Read-only. To get/set the full comment, use getCommentAsync and setCommentAsync.
     */
    commentShort: string

        /**
     * Gets/sets author aka composer.
     */
    composer: string

        /**
     * Gets/sets conductor.
     */
    conductor: string

        /**
     * Gets/sets custom1 field.
     */
    custom1: string

        /**
     * Gets/sets custom10 field.
     */
    custom10: string

        /**
     * Gets/sets custom2 field.
     */
    custom2: string

        /**
     * Gets/sets custom3 field.
     */
    custom3: string

        /**
     * Gets/sets custom4 field.
     */
    custom4: string

        /**
     * Gets/sets custom5 field.
     */
    custom5: string

        /**
     * Gets/sets custom6 field.
     */
    custom6: string

        /**
     * Gets/sets custom7 field.
     */
    custom7: string

        /**
     * Gets/sets custom8 field.
     */
    custom8: string

        /**
     * Gets/sets custom9 field.
     */
    custom9: string

        /**
     * Gets/sets date.
     * Setting date automatically updates year, month, and day.
     */
    date: number

        /**
     * Gets/sets dateAdded DateTime property (when the file has been added to library).
     * Use e.g.
     * or
     * or
     */
    dateAdded: number

        /**
     * Gets/sets dateAdded DateTime property (when the file has been added to library).
     * Use e.g.
     * or
     * or
     */
    dateAdded_UTC: number

        /**
     * Gets/sets day. Automatically updated by date.
     */
    day: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets/sets discNumber.
     */
    discNumber: string

        /**
     * Gets/sets episode number.
     */
    episodeNumber: string

        /**
     * Read-only shortened version of extendedTags, as JSON. To get the full tags, use getExtendedTagsAsync()
     */
    extendedTagsShort: string

        /**
     * Gets/sets fileLength in bytes.
     */
    fileLength: number

        /**
     * Gets/sets fileModified DateTime property.
     * Use e.g.
     * or
     */
    fileModified: number

        /**
     * Gets/sets fileModified DateTime property.
     * Use e.g.
     * or
     */
    fileModified_UTC: number

        /**
     * Gets/sets frequency/Sample rate in hz.
     */
    frequency: number

        /**
     * Gets/sets genre.
     */
    genre: string

        /**
     * Gets/sets grouping.
     */
    groupDesc: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets/sets ID as is in database (Songs.ID).
     */
    idsong: number

        /**
     * Gets/sets involvedPeople.
     */
    involvedPeople: string

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Gets whether this media is currently playing
     */
    isPlaying: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets whether this media item is video
     */
    isVideo: boolean

        /**
     * Gets/sets lastTimePlayed DateTime property (when the file has been last time played).
     * Use e.g.
     * or
     */
    lastTimePlayed: number

        /**
     * Gets/sets lastTimePlayed DateTime property (when the file has been last time played).
     * Use e.g.
     * or
     */
    lastTimePlayed_UTC: number

        /**
     * Gets/sets lastTimeSkipped DateTime property (when the file has been last time skipped).
     * Use e.g.
     * or
     */
    lastTimeSkipped: number

        /**
     * Gets/sets lastTimePlayed DateTime property (when the file has been last time played).
     * Use e.g.
     * or
     */
    lastTimeSkipped_UTC: number

        /**
     * Gets/sets lyricist.
     */
    lyricist: string

        /**
     * Gets/sets month. Automatically updated by date.
     */
    month: number

        /**
     * Gets/sets mood.
     */
    mood: string

        /**
     * Set to true once some changes in DB were made externally (to refresh the data)
     */
    needsDBReload: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets/sets occasion.
     */
    occasion: string

        /**
     * Gets/sets original artist.
     */
    origArtist: string

        /**
     * Gets/sets original date.
     * Setting origDate automatically updates origYear, origMonth, and origDay.
     */
    origDate: number

        /**
     * Gets/sets original day. Automatically updated by origDate.
     */
    origDay: number

        /**
     * Gets/sets original month. Automatically updated by origDate.
     */
    origMonth: number

        /**
     * Gets/sets original album title.
     */
    origTitle: string

        /**
     * Gets/sets original year. Automatically updated by origDate.
     */
    origYear: number

        /**
     * Gets/sets file path.
     */
    path: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets/sets played #.
     */
    playCounter: number

        /**
     * gets true playLength in milliseconds (startTime / stopTime taken into account)
     */
    playLength: number

        /**
     * Gets/sets producer.
     */
    producer: string

        /**
     * Gets/sets publisher.
     */
    publisher: string

        /**
     * Gets/sets quality.
     */
    quality: string

        /**
     * Gets/sets rating.
     */
    rating: number

        /**
     * Gets/sets season number.
     */
    seasonNumber: string

        /**
     * Gets/sets skipped #.
     */
    skipCount: number

        /**
     * Gets/sets songLength in milliseconds.
     */
    songLength: number

        /**
     * Gets/sets startTime in milliseconds.
     */
    startTime: number

        /**
     * Gets/sets stopTime in milliseconds.
     */
    stopTime: number

        /**
     * Gets/sets summary.
     */
    summary: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets/sets tempo.
     */
    tempo: string

        /**
     * Gets/sets title of this media item.
     */
    title: string

        /**
     * Gets/sets track number.
     */
    trackNumber: string

        /**
     * Gets/sets year. Automatically updated by date.
     */
    year: number

        /**
     * Adds new cover for this track
     * full path to the image file
     */
    addCoverAsync(filename): Promise<any>

        /**
     * Adds metadata from another track.
Does not override values, i.e. assigns only fields that are currently empty
     */
    addData(o): void

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Assigns metadata from another track
     */
    assign(assignFromSD): void

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Saves this track into database (and tag -- based on user's settings)
     * Promise is fulfilled when action is completed.
     * if true, then also the new files (not in db yet) are saved, default = false
     * if false, the metadata is not written to the file tag, default = true
     */
    commitAsync(params?): Promise<void>

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Get track additional informations (like webArtist, webCopyright etc)
     */
    getAddonsAsync(): Promise<any>

        /**
     * Returns album class
     */
    getAlbumAsync(): Promise<any>

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets full comment field asynchronously. The full lyrics, comment, and extendedTags are not loaded in memory until needed to improve memory usage and performance.
     * commentShort is synchronous but only returns up to the first 200 characters.
     */
    getCommentAsync(): Promise<string>

        /**
     * Use getCommentAsync instead.
     */
    getCommentSync(): string

        /**
     * Gets full extendedTags field asynchronously. The full lyrics, comment, and extendedTags are not loaded in memory until needed to improve memory usage and performance.
     * extendedTagsShort is synchronous but only returns up to the first 200 characters.
     */
    getExtendedTagsAsync(): Promise<string>

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Gets full lyrics field asynchronously. The full lyrics, comment, and extendedTags are not loaded in memory until needed to improve memory usage and performance.
     * lyricsShort is synchronous but only returns up to the first 200 characters.
     */
    getLyricsAsync(): Promise<string>

        /**
     * Use getLyricsAsync instead.
     */
    getLyricsSync(): string

        /**
     * Returns list of person by specified type
     */
    getPersonListAsync(personType): SharedList<SharedObject>

        /**
     * Gets temporary copy of this track (track has same data, but isn't updated across UI or in DB etc.).
     */
    getTemporaryCopy(...params): Track

        /**
     * Returns link to cached image thumbnail of the nearest specified size
     */
    getThumbAsync(...params): number

        /**
     * Adds new cover for this track
     * full path to the image file
     */
    insertCoverAsync(filename, position): Promise<any>

        /**
     * To check whether the file is accessible
     */
    isAccessibleAsync(): Promise<any>

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Loads cover list for this track
     */
    loadCoverListAsync(...params): CoverList

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Sets the comment field asynchronously.
     */
    setCommentAsync(value): Promise<void>

        /**
     * Sets the extendedTags field asynchronously. Must be in a JSON-formatted string.
     */
    setExtendedTagsAsync(value): Promise<void>

        /**
     * Sets the lyrics field asynchronously.
     */
    setLyricsAsync(...params): Promise<void>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Tracklist class (list of Tracks). In most cases, when you request a new Tracklist (for example, with uitools.getSelectedTracklist() or playlist.getTracklist()), the list will be returned before it has been populated with its contents. 
To resolve this, you must asynchronously wait for it to be loaded. You can do this either with Promise.then() or with async/await:
 * Tracklist
 * TrackDataSource
 */
declare class Tracklist {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Track

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Track

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Commits all tracks into database and tag
Optional params:
     */
    commitAsync(...params): Promise<any>

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<Track>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<Track>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<Track>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Track>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<Track>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Track>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Track>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Track>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Track

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Track>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Randomizes the list
     */
    randomize(): void

        /**
     * Randomizes the list by album
     */
    randomizeByAlbum(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * ASYNCHRONOUSLY sorts the list with the given sorting rule and updates the auto-sort rule.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setAutoSortAsync(Value): Promise<any>

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * 5.0.2
     */
    splitToBatches(): Promise<any>

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<Tracklist>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class TrackListBase<T> {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: T

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: T

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<T>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<T>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<T>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<T>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<T>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<T>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<T>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<T>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<T>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): T

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<T>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * ASYNCHRONOUSLY sorts the list with the given sorting rule and updates the auto-sort rule.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setAutoSortAsync(Value): Promise<any>

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<TrackListBase<T>>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Track operations. Access via the global app.trackOperation.
 * TrackOperation
 */
declare class TrackOperation {
        /**
     * Runs analyze volume on specified tracks.
     * Tracks to be analyzed
     */
    analyzeVolume(tracks): void

        /**
     * Applies coverList of given track to whole album (to which the track belongs)
     * Track to be applied
     */
    applyCovers2AlbumAsync(track): Promise<any>

        /**
     * Runs track volume leveling on specified tracks.
     * Tracks to be leveled
     */
    applyMP3Gain(tracks): void

        /**
     * Constructs track metadata from mask and string value
     * Mask to be used for the data extraction (e.g.  for Track.artist)
     * Track
     * value to be assigned to the field specified by the mask
     */
    assignFieldByMask(mask, SD, value): void

        /**
     * Assigns metadata of tracks from one tracklist to another as bulk action (used e.g. in Auto-tag from filename)
The action also auto-commits the metadata into DB and tags
     * Tracks to assign the metadata
     * Tracks to be assigned metadata from
     * Assign only empty fields
     * Assign only checked items in the fromTracks list
     */
    assignMetadata(toTracks, fromTracks, onlyEmpty, onlyChecked): void

        /**
     * Runs auto organize process on specified tracks (rename tracks).
     * Tracks to be organized
     * New file names of the tracks
     * Files will be moved instead of copied
     * Add new files to Library (when doMove is false)
     * Remove empty folders after tracks were moved (when doMove is true)
     */
    autoOrganize(tracks, names, doMove, addToLib, removeEmptyFolders): void

        /**
     * Gets Auto Organizer class. This class is used to store rules to automatically organize
tracks after editing.
     */
    autoOrganizer(): AutoOrganizeMgr

        /**
     * Deletes track
     * Track to be deleted
     */
    deleteFile(track): void

        /**
     * Deletes all tracks from given tracklist
     * List of tracks to be deleted
     * whether to remove permanently (or to recycle bin)
     */
    deleteFilesAsync(tracks, toRecycle): Promise<boolean>

        /**
     * Downloads track
     * Track to be download
     * download mask -- if not defined then the default download mask (defined in Options|Downloads) is used
     */
    downloadFile(track, destination?): void

        /**
     * Downloads tracks
     * Tracks to be download
     * download mask -- if not defined then the default download mask (defined in Options|Downloads) is used
     */
    downloadFiles(tracks, destination?): void

        /**
     * Constructs track metadata from filename / path
     * Mask to be used for the data extraction
     * Track
     * remove underscores from track properties
     */
    filename2TrackInfo(mask, SD, removeUnderscores): void

        /**
     * Generates thumbnail for video track
     * Given video track
     * If true, generate thumb from current video frame. Default: false
     */
    generateThumbnailAsync(track, fromCurrentFrame?): Promise<any>

        /**
     * Parses file and fill values to Track
     */
    reloadTagsFromFile(track): Promise<any>

        /**
     * Removes track from library.
     * Track to be removed
     */
    removeFileFromDB(track): void

        /**
     * Removes tracks from library.
     * Tracks to be removed
     */
    removeFilesFromDBAsync(tracks): Promise<void>

        /**
     * Clean ID3 tags on specified tracks.
     * Selected tracks
     * Identification, which tags to clean - 'ID3v1', 'ID3v2' or 'ID3v1 and v2'
     */
    stripID3TagsFromFiles(SongList, operType): void

        /**
     * Updates tags on the specified track, in the background.
     * Track to be tagged
     * Whether open errors should be shown default: false
     */
    updateTag(track, showOpenErrors?): void

        /**
     * Updates tags on specified tracks, in the background.
     * List of tracks to be tagged
     * Whether open errors should be shown default: false
     */
    updateTags(list, showOpenErrors?): void

}

/**
 * Methods to manage tray icon. Access via the global app.trayIcon.
 * TrayIcon
 */
declare class TrayIcon {
        /**
     * Hide tray icon.
     */
    hide(): void

        /**
     * Set tray icon hint.
     * Hint for tray icon
     */
    setHint(hint): void

        /**
     * Show tray icon.
     */
    show(): void

}

/**
 * Utilities to be used in scripts. Access via the global app.utils.
 * Utils
 */
declare class Utils {
        /**
     * Returns web utils class
     */
    web: Web

        /**
     * Copy objects to clipboard.
     * Objects to copy, typically SongList.
     * Object with additional static (serializable) data
     */
    copyToClipboard(data, params?): Promise<any>

        /**
     * Creates new AlbumList interface to be used as list of albums.
     * set as loaded
     */
    createAlbumlist(loaded?): AlbumList

        /**
     * Creates new ArtistList interface to be used as list of albums.
     */
    createArtistlist(loaded?): ArtistList

        /**
     * Creates empty album data, useful for storing temporary data etc.
     */
    createEmptyAlbum(): Album

        /**
     * Creates empty artist data, useful for storing temporary data etc.
     */
    createEmptyArtist(): Artist

        /**
     * Creates empty genre data, useful for storing temporary data etc.
     */
    createEmptyGenre(): Genre

        /**
     * Creates empty object list.
Unlike createSharedList it supports searching/filtering.
isLoaded needs to be properly set to true (once the list is filled) so that searching/filtering works!
     */
    createEmptyList(): SharedUIList<SharedObservable>

        /**
     * Creates empty track data, useful for storing temporary data etc.
     */
    createEmptyTrack(): Track

        /**
     * Creates empty shared object list, is similar to createEmptyList, but does not support auto-update and searching/filtering
     */
    createSharedList(): SharedList<SharedObject>

        /**
     * Creates new Tracklist interface to be used as list of tracks.
     * set as loaded
     */
    createTracklist(loaded?): Tracklist

        /**
     * Converts dateTime to timestamp format 'YYYY-MM-DD HH:MM:SS'
     */
    dateTime2Timestamp(val): string

        /**
     * Opens system's open file dialog
     */
    dialogOpenFile(initialDir, defaultExt, filter, title, allowMultiSelect?): Promise<any>

        /**
     * Opens system's save file dialog
     */
    dialogSaveFile(initialDir, defaultExt, filter, title, defaultFilename?): Promise<any>

        /**
     * Ejects media of the removable drive 
Introduced in version 5.0.4
     * drive letter of the drive to eject media
     */
    ejectDriveAsync(Letter): Promise<any>

        /**
     * This function auto-resolves duplicate and overly long filenames, adds numbered suffix for dups and shortened long paths
     * List of finenames to fix
     * List with check states (only checked item will be taken into account)
     * Whether the paths should be shortened to 260 chars
     */
    fixFilenames(namesToFix, checkedState, cutLongPath): void

        /**
     * Returns pretty print local date time
     * in UTC form 'YYYY-MM-DD HH:MM:SS'
     */
    formatTimestamp(timestamp): string

        /**
     * Get the application version, with the specified level of detail.
     * Level of detail, i.e. return major.minor, major.minor.release, etc. Accepts integers 1 through 4.
     */
    getApplicationVersion(levels): string

        /**
     * Gets audio CD album/tracks information from Freedb
     * drive letter of the CD drive (use empty string to search all audio CD/DVD/BD drives)
     */
    getAudioCDInfoAsync(Letter): Promise<any>

        /**
     * Gets tracks from audio CD
     * Drive letter of the CD drive (use empty string to search all audio CD/DVD/BD drives)
     */
    getAudioCDTracksAsync(Letter): Promise<any>

        /**
     * Returns object with data from clipboard.
     * Since bitmaps take a long time to retrieve from the clipboard, if true, the data will just be "bitmap" in the case where an image was copied to the clipboard.
     */
    getDataFromClipboard(justTest?): ClipboardDataReturn

        /**
     * This function compares strings in list and return new list with duplicated strings (each duplicate is represented once in returned list).
     * List of strings to detect duplicity
     * case sensitive
     */
    getDuplicates(list, checkStates, caseSensitive): StringList

        /**
     * Get lingual base of the string field (useful when comparing/matching song metadata)
Examples:
  'I am Believer - 2006 Remaster' ==> 'I am Believer'
  'More of The Monkees (Deluxe Edition)' ==> 'More of The Monkees'
  'A New Machine (Pt. 1) - 2019' ==> 'New Machine'
  'I Want You Back - Radio Edit') ==> 'I Want You Back'
  'Rock with You - Single Version' ==> 'Rock with You'
     * text string to process
     */
    getLingBase(str): string

        /**
     * Retrieve true when app is in portable mode.
     */
    getPortableMode(): boolean

        /**
     * Gets Windows registry value for given key and value
     * Registry path
     * value to get under given path
     */
    getRegistryValue(key, value): string

        /**
     * Gets a random track fullfilling the given type
     * (can be: music, video, musicvideo, classical, audiobook, podcast, videopodcast, tv)
     */
    getSampleTrackAsync(trackType): Promise<any>

        /**
     * Gets temporary file path in the temp directory and returns as param of the promise's resolve func
     */
    getTempFilePathAsync(): Promise<any>

        /**
     * Checks whether path is absolute (e.g.  C:\...)
     */
    isAbsolutePath(path): boolean

        /**
     * Return true if app is licensed.
     */
    isRegistered(): boolean

        /**
     * Linguist compare of two strings
e.g. 'a-ha' matches ' aha'
'Vague / E La Nave Va' matches 'Vàgue/E la Nave Va'
     * string 1 to compare
     * string 2 to compare
     * if TRUE then ignores the appendixes in brackets -- like ...(remastered)
     */
    lingCompare(str1, str2, ignoreBrackets): boolean

        /**
     * Returns 32-character hexadecimal md5 hash of given string. String is converted to UTF8 before hashing
     * string to hash
     * secret key id, which is appended before hash
     */
    md5HexaHash(s, secretId?): string

        /**
     * Converts text date representation to integer.
     * String date value
     */
    myDecodeDate(text): number

        /**
     * Converts integer date representation to string.
     * Integer date value
     */
    myEncodeDate(val): string

        /**
     * Returns difference between the default target level (89 db) and configured target level
     */
    normalizationDiff(): number

        /**
     * Gets DateTime value corresponding to now() -- used e.g. for track.lastTimePlayed
     */
    now(): number

        /**
     * Opens folder in file explorer (e.g. Windows explorer on Windows)
     * Path to open
     */
    openExplorerFolder(path): Promise<any>

        /**
     * shellExecute ( see: https://docs.microsoft.com/cs-cz/windows/win32/api/shellapi/nf-shellapi-shellexecutea?redirectedfrom=MSDN)
     * path to file (lpFile)
     */
    shellExecute(fname, URL): number

        /**
     * Show/hide system taskbar (Windows only). Used mainly for fullscreen video.
     * Boolean value to show (true) or hide (false) system taskbar.
     */
    showTaskBar(showIt): void

        /**
     * Converts timestamp format 'YYYY-MM-DD HH:MM:SS' to dateTime
accepts also ISO 8601 form YYYY-MM-DDTHH:mm:ss.sssZ
     * Timestamp in UTC form 'YYYY-MM-DD HH:MM:SS'
     */
    timestamp2DateTime(val): number

}

/**
 * Class for working with visualization data - record for one time, defined by timestamp.
 * VisResult
 */
declare class VisResult {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets/Sets signal level of the left channel of the data, range 0 - 32768.
     */
    maxLeft: number

        /**
     * Gets/Sets signal level of the right channel of the data, range 0 - 32768.
     */
    maxRight: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets/Sets timestamp of the data.
     */
    timestamp: number

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Returns array with spectrum values copmputed by FFT, raw values without scaling and adjusting, normalized to <0, 1>.
     * object with the last result or empty JS variable, used for faster access
     */
    getNormalizedFFTValues(obj): any

        /**
     * Returns array with oscilloscop values (waveform data), normalized to <-1, 1>, maximum length 512.
     * object with the last result or empty JS variable, used for faster access
     */
    getNormalizedOscValues(obj): any

        /**
     * Returns array with oscilloscop values (waveform data), maximum length 512.
     * object with the last result or empty JS variable, used for faster access
     */
    getOscValues(obj): any

        /**
     * Returns array with spectrum values, maximum length 20.
     * object with the last result or empty JS variable, used for faster access
     */
    getSpectrumValues(obj): any

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Class for visualization managing.
 * Visualization
 */
declare class Visualization {
        /**
     * Switch visualization engine on/off.
     */
    active: boolean

        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets/Sets number of computed spectrum sections. Max 20.
     */
    spectrumSections: number

        /**
     * Gets the object title
     */
    title: string

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clears computed visualization data.
     */
    clear(): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Returns VisResult object representing visualization data for the given time.
     * requested time, in ms
     * object with the last result or empty JS variable, used for faster access
     */
    getNextResult(fromtime, obj): any

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Register visualization types, that actual visualization needs to compute. Possible values: 'spectrum', 'vumeter', 'oscilloscope', 'fft'
     * List of needed types.
     */
    registerVisTypes(types): void

        /**
     * Unregister visualization types, that actual visualization has registered and already does not need. Possible values: 'spectrum', 'vumeter', 'oscilloscope', 'fft'
     * List of needed types.
     */
    unregisterVisTypes(types): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class WAOutputPlugin {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

}

/**
 * Web related utilities to be used in scripts
Accessible via app.utils.web
 * Web
 */
declare class Web {
        /**
     * Gets physical ethernet MAC address
     */
    getMACAddress(): Promise<string>

        /**
     * Gets content of given URL as string (asynchronously). URL need to be encoded using encodeURI
  when any special or unicode character is used.
     * Additional parameters. Possible properties:
 headers: SharedStringList with custom HTTP headers.
 requestBody: Body to be posted by HTTP POST, if empty or not included, then HTTP GET is used
 cacheTimeout: If >0, caches reponse and uses saved responses from DB not older than cacheTimeout seconds
 filePath: If present, then the content is saved to the file and the path is returned as resolved param
 taskProgress: optional progress token, to create one use app.backgroundTasks.createNew()
     */
    getURLContentAsync(...params?): Promise<any>

        /**
     * Gets whether the PC is connected to the internet
     */
    isConnectedToInternetAsync(): Promise<any>

        /**
     * Opens given URL in the default internet browser
     * URL to open
     */
    openURL(url): void

        /**
     * Performs HTTP(S) request using Indy (can be used as XMLHttpRequest replacement)
     * Content to send (see App.filesystem.getFileContentAsync)
     * custom HTTP headers
     * HTTP method
     * return !terminated, i.e. return true to continue or false to terminate
     * full locator including URL params, i.e. ?foo=bar
     */
    requestAsync(params): void

        /**
     * Transforms http:// path to uuid://
     */
    transformPathURL2UUID(path): Promise<any>

        /**
     * Transforms uuid:// path to http://
     */
    transformPathUUID2URL(path): Promise<any>

}

declare class WebNodesList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: ListItem

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: ListItem

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<ListItem>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<ListItem>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<ListItem>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<ListItem>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<ListItem>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<ListItem>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<ListItem>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<ListItem>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<ListItem>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): ListItem

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<ListItem>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<WebNodesList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

/**
 * Group of albums from a specific year.
 * Year
 */
declare class Year {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Whether object support pin to pinned list
     */
    supportPin: boolean

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add new external list associated with object.
     * Type of a link
     * Link information (like release or releaseGroup for musicbrainz link)
     * Link string
     */
    addLink(linkType, linkInfo, link): Promise<any>

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Gets all albums of this artist/genre
     */
    getAlbumList(...params): AlbumList

        /**
     * Get all external object links (acoustID, musicbrainz, wikipedia etc.)
     */
    getAllLinksList(): ExternalLinksList

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Get external link associated with the object.
All link identifiers are (updated list is available in consts.js) :
  var LINK_MUSICBRAINZ = 'musicbrainz',
      LINK_ACOUSTID = 'acoustid',
      LINK_TVDB = 'tvdb',
      LINK_MAZE = 'maze',
      LINK_IMDB = 'imdb',
      LINK_WIKI = 'wiki',
      LINK_ECHOPRINT = 'echoprint',
      LINK_MOVIEDB = 'moviedb',
      LINK_DISCOGS = 'discogs';
     */
    getLinksList(...params): ExternalLinksList

        /**
     * Returns link to cached image thumbnail of the nearest specified size
     */
    getThumbAsync(...params): number

        /**
     * Gets all tracks of this album
     */
    getTracklist(...params): Tracklist

        /**
     * Object is pinned in pinned list
     */
    isPinned(): Promise<any>

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Call defined method with the item locked for modifications.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Remove external link from object.
     */
    removeLink(...params): Promise<any>

        /**
     * Set object is pinned in pinned list.
     * Object is pinned
     * ID of collection where object is pinned
     */
    setPinned(pinned, collID): void

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class YearList {
        /**
     * Gets the object as serialized JSON string.
Or sets serialized JSON (to fill this object's metadata by the metadata included within the JSON)
     */
    asJSON: string

        /**
     * Total count of items in list.
     */
    count: number

        /**
     * Set to true after deletion so that 'change' event is called and item is removed from UI lists.
     */
    deleted: boolean

        /**
     * Returns first selected item (if any item is selected).
Added in 5.0.4
     */
    firstSelected: Year

        /**
     * Index of focused item in the list.
     */
    focusedIndex: number

        /**
     * Gets focused item in the list.
     */
    focusedItem: Year

        /**
     * Gets integer id of the object
     */
    id: number

        /**
     * Whether this object can be listened (e.g. for 'change' event)
     */
    isObservable: boolean

        /**
     * Is source for status bar informations.
     */
    isStatusBarSource: boolean

        /**
     * Gets the object type as string
     */
    objectType: string

        /**
     * Gets persistent id of the object
     */
    persistentID: string

        /**
     * Gets the object title
     */
    title: string

        /**
     * Add list of items to the list.
     * List to be added
     */
    addList(list): void

        /**
     * Add list of items to the list and preserve flags from the source list.
     * List to be added
     */
    addListPreserveFlags(list): void

        /**
     * Return true when any item is checked
     */
    anyChecked(): boolean

        /**
     * Asynchronous copy of JS objects to list items. As example check musicBrainz script.
     * to fill one item (with parameters: int, item)
     */
    asyncFill(totalCount, callback): Promise<any>

        /**
     * Return status of the updates. True when auto-updates are suspended by suspendUpdates method.
     */
    autoUpdatesSuspended(): boolean

        /**
     * Lock object to update state. Events are not called when in update state.
     */
    beginUpdate(): void

        /**
     * Updates the object every X ms when called periodically. Useful e.g. when filling lists.
Can be used only in the update lock! (i.e. between beginUpdate/endUpdate)
     */
    checkUpdate(interval): void

        /**
     * Clear list (remove all items).
     */
    clear(): void

        /**
     * Clears selection.
     */
    clearSelection(): void

        /**
     * Copies selection from one list to another. Returns a promise which is fulfilled with the index of the first selected item when it's all done.
     * Source list to copy selection from.
     */
    copySelectionAsync(fromList): Promise<any>

        /**
     * Delete item at specified index.
     * Index of a item to be removed
     */
    delete(index): void

        /**
     * Removes selected items from the list
     */
    deleteSelected(): number

        /**
     * Unlock object from update state. beginUpdate and endUpdate must be in pair.
When endUpdate is called, change event is called.
     */
    endUpdate(): boolean

        /**
     * Returns list with items including the string value.
Space is used as OR operator (if not in quotes)
     * Infix to check
     */
    filterByInfix(value): SharedList<Year>

        /**
     * Returns list with items starting with specified string value.
Space is used as OR operator (if not in quotes)
     * Prefix to check
     */
    filterByPrefix(value): SharedList<Year>

        /**
     * Returns list with items matching the specified search phrase (according to Options -> Search conf.).
     * Phrase to search
     */
    filterBySearchPhrase(value): SharedList<Year>

        /**
     * Returns list with items starting with specified string value (within any word).
Space is used as OR operator (if not in quotes)
     * Word prefix to check
     */
    filterByWordPrefix(value): SharedList<Year>

        /**
     * Browse all items and send them one by one in defined callback. Note that the items for the callback method are prepared using
SharedList.getFastObject, i.e. the performance is good, but you should only use them in the callback method and don't preserve them for later use.
     */
    forEach(cbk): void

        /**
     * Return true when all items are checked
     */
    getAllChecked(): boolean

        /**
     * Gets an array of all values of the specified property key. This is faster than getFastObject if you need to retrieve only one or two property values (instead of the entire object). [ADDED IN VERSION 5.0.2]
     */
    getAllValues(...params): any

        /**
     * Returns a list of all checked items.
     */
    getCheckedList(): SharedList<Year>

        /**
     * Gets class name of the object.
     */
    getClassName(): string

        /**
     * Gets copy of the list.
     */
    getCopy(): SharedList<Year>

        /**
     * Gets copy of the list, preserves flags (selection).
     */
    getCopyPreserveFlags(): SharedList<Year>

        /**
     * Returns empty list.
     */
    getEmptyList(): SharedList<Year>

        /**
     * Gets fast access to item at specified index. Note that this call always returns the same JS object, just modifies the internals so that properties/methods work on different data.
It means, that you shouldn't preserve this object for later use, because it would be modified and the result would be unexpected.
     * Index of the item
     */
    getFastObject(index, obj): any

        /**
     * 5.0.1
     */
    getGroupIdx(groupid): number

        /**
     * Gets copy of the list with specified range indexes.
     * Starting index
     * Ending index
     */
    getRange(fromIndex, toIndex): SharedList<Year>

        /**
     * Returns a list of all selected items.
     */
    getSelectedList(): this

        /**
     * Gets object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValue(index): Year

        /**
     * Gets link to a object from specified index. List needs to be locked before use (see SharedBase.locked).
     * Index of item
     */
    getValueLink(index): SharedObjectLink

        /**
     * Returns true, if all is selected in the list.
     */
    hasAllSelected(): boolean

        /**
     * Returns true, if something is selected in the list.
     */
    hasItemSelected(): boolean

        /**
     * Compares two lists for the same content
     */
    hasSameItems(anotherList): boolean

        /**
     * Gets index of a item in list.
     * Object to be found
     */
    indexOf(data): number

        /**
     * Get position of the item identified by persistent ID.
     */
    indexOfPersistentIDAsync(persistentID): Promise<any>

        /**
     * Inserts a new item to a specified position in the list.
     * The desired position in the list
     * Object to be added in list
     */
    insert(position, data): number

        /**
     * Inserts list of items to the list at specified position.
     * List to be added
     */
    insertList(Index, list): void

        /**
     * Gets item at specified index is checked.
     * Index of the item
     */
    isChecked(index): boolean

        /**
     * Gets item at specified index is selected.
     * Index of the item
     */
    isSelected(index): boolean

        /**
     * Call defined method with locked data so user can access them.
     * Method to call
     */
    locked(func): void

        /**
     * Merges this list with list in parameter and returns new merged list
     * to merge
     */
    merge(list, mergeMethod): SharedList<Year>

        /**
     * Call defined method with the list locked for modifications. It tries to perform the callback immediatelly, but in case there's already a write lock on the list,
it performs the callback later.
     */
    modifyAsync(...params): Promise<any>

        /**
     * Move selected items to new position.
     * New index where to move selected items
     */
    moveSelectionTo(newIndex): void

        /**
     * Notifies that the object was changed (e.g. to force visual update etc.)
     */
    notifyChanged(...params): void

        /**
     * Notifies list was loaded and whenLoaded promise can be fulfilled.
     */
    notifyLoaded(): void

        /**
     * Delete item from list.
     * Object to be removed from list
     */
    remove(data): number

        /**
     * Delete item from list asynchronously.
     * Object to be removed from list
     */
    removeAsync(data): Promise<any>

        /**
     * Resume auto updates and run auto update immediatelly when any update is pending.
     */
    resumeAutoUpdates(): boolean

        /**
     * Select items in range.
     * Start index
     * End index
     * Whether to select or unselect
     */
    selectRange(fromIndex, toIndex, select): void

        /**
     * Select items in range, asynchronously.
     */
    selectRangeAsync(...params): Promise<any>

        /**
     * Set all items to (un)checked state
     * Check state
     */
    setAllChecked(state): void

        /**
     * Sets checked flag to item in specified index.
     * Index of the item
     * True when checked
     */
    setChecked(index, value): void

        /**
     * Sets selected flag to item in specified index.
     * Index of the item
     * True when selected
     */
    setSelected(index, value): void

        /**
     * SYNCHRONOUSLY sorts the list with the given sorting rule and disables auto-sort.
     * To specify sort direction, append ' ASC' or ' DESC' to the tag name and separate them by semicolons.
     * Fields are NOT case sensitive (e.g. 'artist', 'Artist', and 'ArTiSt') are all valid, but sort direction IS case sensitive ('ASC' and 'DESC' are valid; 'asc' and 'desc' are not)
     * Valid examples:
     * Invalid examples:
     */
    setSortRule(Value): boolean

        /**
     * Sets object at specified index in the list. List needs to be locked before use (see SharedBase.locked).
     * Index where to be added
     * Object to be added
     */
    setValue(index, value): void

        /**
     * Suspend auto updates.
     */
    suspendAutoUpdates(): void

        /**
     * Add list of items to the list, but clears the old values.
i.e. is the same as calling clear+addList
     * List to be used
     */
    useList(list): void

        /**
     * Returns a promise which is called when loading is finished. Returns a copy of the list.
Loading is finished by calling SharedList.notifyLoaded method.
     */
    whenLoaded(): Promise<YearList>

        /**
     * Event is called before list sort begins
     * See App.listen
     */
    event_beforeSort: (() => void)

        /**
     * Event is called when object is somehow changed
     * See App.listen
     * additional change type (can have values like 'tracklist', 'deleted', 'title' or undefined)
     */
    event_change: ((changeType, ...additionalArgs) => void)

        /**
     * Event is called when object is going to destroy
     * See App.listen
     */
    event_destroying: (() => void)

        /**
     * Event is called when focused item is changed
     * See App.listen
     * new focused item index
     * old focused index
     */
    event_focuschange: ((newIdx, oldIdx) => void)

        /**
     * Event is called when list is notified as loaded
     * See App.listen
     */
    event_loaded: (() => void)

        /**
     * Event is called when list sort is finished
     * See App.listen
     */
    event_sorted: (() => void)

        /**
     * Event is called when status info of the object is changed
     * See App.listen
     */
    event_statuschange: (() => void)

}

declare class WindowSettings {
}

