/** Instances of the SafariActivateEvent class are used to notify listeners when a tab or window is activated.
 * @returns SafariActivateEvent */
function SafariActivateEvent() {};
SafariActivateEvent.prototype = {

}


/** The SafariApplication class allows a Safari extension to interact with the Safari application.
 * @returns SafariApplication */
function SafariApplication() {};
SafariApplication.prototype = {

  /** @type SafariBrowserWindow readonly The active browser window. */
  'activeBrowserWindow': null,

  /** @type Array readonly The current browser windows, in order from front to back. */
  'browserWindows': null,

  /** Opens a new browser window in front of all other windows.
   * @returns SafariBrowserWindow
   */
  'openBrowserWindow': function() {},

}


/** Instances of the SafariAvailableEvent class are used to notify listeners when Reader is available.
 * @returns SafariAvailableEvent */
function SafariAvailableEvent() {};
SafariAvailableEvent.prototype = {

}


/** Instances of the SafariBeforeNavigateEvent class are used to notify listeners when the user navigates to a new page, before the page is loaded. You can use the preventDefault method to prevent the new page from loading.
 * @returns SafariBeforeNavigateEvent */
function SafariBeforeNavigateEvent() {};
SafariBeforeNavigateEvent.prototype = {

  /** @type String readonly The URL that the user is navigating to. */
  'url': null,

}


/** Instances of the SafariBrowserTab class represent tabs in the user’s browser window.
 * @returns SafariBrowserTab */
function SafariBrowserTab() {};
SafariBrowserTab.prototype = {

  /** @type SafariBrowserWindow readonly The browser window containing this tab. */
  'browserWindow': null,

  /** @type SafariWebPageProxy readonly A proxy object for the the web content displayed in the tab. */
  'page': null,

  /** @type SafariReader readonly The Reader view associated with this tab. */
  'reader': null,

  /** @type String readonly The tab’s current title. */
  'title': null,

  /** @type String  The URL loaded in this tab. */
  'url': null,

  /** Selects the tab.
   * @returns void
   */
  'activate': function() {},

  /** Requests that the tab should close.
   * @returns void
   */
  'close': function() {},

  /** Returns a data URL for an image of the visible contents of the tab.
   * @returns String
   */
  'visibleContentsAsDataURL': function() {},

}


/** Instances of the SafariBrowserWindow class represent browser windows. Each window contains one or more tabs, which display web content.
 * @returns SafariBrowserWindow */
function SafariBrowserWindow() {};
SafariBrowserWindow.prototype = {

  /** @type SafariBrowserTab readonly The tab currently being displayed in the window. */
  'activeTab': null,

  /** @type Array readonly The tabs in the window. */
  'tabs': null,

  /** @type Boolean readonly A Boolean value that indicates whether the window is visible. */
  'visible': null,

  /** Brings the window to the front and gives it keyboard focus.
   * @returns void
   */
  'activate': function() {},

  /** Requests that the window should close.
   * @returns void
   */
  'close': function() {},

  /** Inserts a tab into the window.
   * @param {SafariBrowserTab} tab The tab being inserted.
   * @param {Number} index The location where the tab is being inserted.
   * @returns void
   */
  'insertTab': function(tab, index) {},

  /** Opens a new tab in the window.
   * @param {String} visibility Either foreground if the tab should be opened in the foreground, or background if it should be opened in the background. Optional.
   * @param {Number} index The desired location of the new tab. Optional.
   * @returns SafariBrowserTab
   */
  'openTab': function(visibility, index) {},

}


/** Instances of the SafariCloseEvent class are used to notify listeners when a tab or window is closed.
 * @returns SafariCloseEvent */
function SafariCloseEvent() {};
SafariCloseEvent.prototype = {

}


/** Instances of the SafariCommandEvent class represent events being used to send a command.
 * @returns SafariCommandEvent */
function SafariCommandEvent() {};
SafariCommandEvent.prototype = {

  /** @type String readonly The command identifier of the target being dispatched. */
  'command': null,

}


/** Instances of the SafariContentBrowserTabProxy class serve as  proxy objects, allowing scripts injected in the web content to communicate with SafariBrowserTab objects and the rest of the extension.
 * @returns SafariContentBrowserTabProxy */
function SafariContentBrowserTabProxy() {};
SafariContentBrowserTabProxy.prototype = {

  /** Dispatches a canLoad message to the browser window tab.
   * @param {BeforeLoadEvent} event The before-load event you are responding to.
   * @param {any} message The body of the message. Optional.
   * @returns any
   */
  'canLoad': function(event, message) {},

  /** Dispatches a message to the browser window tab.
   * @param {String} name The name of the message.
   * @param {any} message The body of the message. Optional.
   * @returns void
   */
  'dispatchMessage': function(name, message) {},

  /** Sets the user info to the appropriate context information.
   * @param {MouseEvent} event The event you are responding to.
   * @param {any} userInfo The context information.
   * @returns void
   */
  'setContextMenuEventUserInfo': function(event, userInfo) {},

}


/** The SafariContentExtension class represents your extension to scripts running inside the web content; an instance of the class is accessible as safari.extension. Its counterpart class outside of the web content is SafariExtension.
 * @returns SafariContentExtension */
function SafariContentExtension() {};
SafariContentExtension.prototype = {

  /** @type String readonly The URI that corresponds to the root of the extension’s bundle. */
  'baseURI': null,

}


/** The SafariContentNamespace class is a namespace that provides access to the Safari Extensions functionality inside of a web content area.
 * @returns SafariContentNamespace */
function SafariContentNamespace() {};
SafariContentNamespace.prototype = {

  /** @type SafariContentExtension readonly The current Safari extension. */
  'extension': null,

  /** @type SafariContentWebPage readonly The associated page object. */
  'self': null,

}


/** Instances of the SafariContentWebPage class represent a web content area.
 * @returns SafariContentWebPage */
function SafariContentWebPage() {};
SafariContentWebPage.prototype = {

  /** @type SafariContentBrowserTabProxy readonly A proxy object for the tab containing the web content. */
  'tab': null,

}


/** Instances of the SafariDeactivateEvent class are used to notify listeners when a browser tab or a browser window is deactivated.
 * @returns SafariDeactivateEvent */
function SafariDeactivateEvent() {};
SafariDeactivateEvent.prototype = {

}


/** The SafariEvent class is a base class used to encapsulate events. Developers who are familiar with DOM events will notice many similarities in design and behavior.
 * @returns SafariEvent */
function SafariEvent() {};
SafariEvent.prototype = {

  /** @type Boolean readonly A Boolean value that indicates whether the event goes through the bubbling phase. */
  'bubbles': null,

  /** @type Boolean readonly A Boolean value that indicates  whether the event can be canceled. */
  'cancelable': null,

  /** @type SafariEventTarget readonly The object that the event is currently being sent to. */
  'currentTarget': null,

  /** @type Boolean readonly A Boolean value that indicates whether the event’s default action has been prevented. */
  'defaultPrevented': null,

  /** @type Number readonly The event-handling phase that the event is in. */
  'eventPhase': null,

  /** @type SafariEventTarget readonly The target of the event. */
  'target': null,

  /** @type DOMTimeStamp readonly The time and date that the event was created. */
  'timeStamp': null,

  /** @type String readonly The type of the event. */
  'type': null,

  /** Prevents the browser from performing the default action for an event.
   * @returns void
   */
  'preventDefault': function() {},

  /** Prevents the event from any further propagation.
   * @returns void
   */
  'stopPropagation': function() {},

}


/** The SafariEventTarget class serves as a base class for all objects that participate in the event-dispatch hierarchy.
 * @returns SafariEventTarget */
function SafariEventTarget() {};
SafariEventTarget.prototype = {

  /** Starts listening for the specified type of event.
   * @param {String} type The type of event to listen for.
   * @param {SafariEventListener} listener The function to call when the event occurs.
   * @param {Boolean} useCapture Pass true if you want to listen during the capturing phase; otherwise, false.
   * @returns void
   */
  'addEventListener': function(type, listener, useCapture) {},

  /** Stops listening for the specified type of event.
   * @param {String} type The type of event to listen for.
   * @param {SafariEventListener} listener The function to call when the event occurs.
   * @param {Boolean} useCapture Pass true if you want to listen during the capturing phase; otherwise, false.
   * @returns void
   */
  'removeEventListener': function(type, listener, useCapture) {},

}


/** The SafariExtension class represents your extension outside of the web content; an instance of the class is accessible as safari.extension. Its counterpart class for scripts running within the web content is SafariContentExtension.
 * @returns SafariExtension */
function SafariExtension() {};
SafariExtension.prototype = {

  /** @type Array readonly All of the bars of an extension. */
  'bars': null,

  /** @type String readonly The URI that corresponds to the root of the extension’s bundle. */
  'baseURI': null,

  /** @type SafariExtensionGlobalPage readonly The extension’s global page, or null if the extension doesn’t have a global page. */
  'globalPage': null,

  /** @type Array readonly All of the menus of an extension. */
  'menus': null,

  /** @type Array readonly All of the popovers of an extension. */
  'popovers': null,

  /** @type SafariExtensionSecureSettings readonly The storage object for an extension’s secure settings. */
  'secureSettings': null,

  /** @type SafariExtensionSettings readonly The storage object for an extension’s normal settings. */
  'settings': null,

  /** @type Array readonly All of the toolbar items of an extension. */
  'toolbarItems': null,

  /** Adds a content script from a string.
   * @param {String} source The source code of the script.
   * @param {Array} whitelist A list of patterns matching URLs of pages that the script should be run on.
   * @param {Array} blacklist A list of patterns matching URLs of pages that the script should not be run on.
   * @param {Boolean} runAtEnd If true, the script waits until the page is fully loaded before running.
   * @returns String
   */
  'addContentScript': function(source, whitelist, blacklist, runAtEnd) {},

  /** Adds a content script from a URL.
   * @param {String} url The URL of the script.
   * @param {Array} whitelist A list of patterns matching URLs of pages that the script should be run on.
   * @param {Array} blacklist A list of patterns matching URLs of pages that the script should not be run on.
   * @param {Boolean} runAtEnd If true, the script waits until the page is fully loaded before running.
   * @returns String
   */
  'addContentScriptFromURL': function(url, whitelist, blacklist, runAtEnd) {},

  /** Adds a content style sheet from a string.
   * @param {String} source The source code of the style sheet.
   * @param {Array} whitelist A list of patterns matching URLs of pages that the script should be applied to.
   * @param {Array} blacklist A list of patterns matching URLs of pages that the script should not be applied to.
   * @returns String
   */
  'addContentStyleSheet': function(source, whitelist, blacklist) {},

  /** Adds a content style sheet from a URL.
   * @param {String} url The URL of the style sheet.
   * @param {Array} whitelist A list of patterns matching URLs of pages that the script should be applied to.
   * @param {Array} blacklist A list of patterns matching URLs of pages that the script should not be applied to.
   * @returns String
   */
  'addContentStyleSheetFromURL': function(url, whitelist, blacklist) {},

  /** Creates and returns a new menu.
   * @param {String} identifier The unique identifier for the menu.
   * @returns SafariExtensionMenu
   */
  'createMenu': function(identifier) {},

  /** Creates and returns a new popover.
   * @param {String} identifier The unique identifier for the popover.
   * @param {String} url The URL of the content displayed in the popover.
   * @param {Number} width The width, in pixels. This parameter is optional; the default value is 400.
   * @param {Number} height The height, in pixels. This parameter is optional; the default value is 300.
   * @returns SafariExtensionPopover
   */
  'createPopover': function(identifier, url, width, height) {},

  /** Removes the specified content script.
   * @param {String} url The URL of the script being removed.
   * @returns void
   */
  'removeContentScript': function(url) {},

  /** Removes all content scripts added by this extension.
   * @returns void
   */
  'removeContentScripts': function() {},

  /** Removes the specified content style sheet.
   * @param {String} url The URL of the style sheet being removed.
   * @returns void
   */
  'removeContentStyleSheet': function(url) {},

  /** Removes all content style sheets added by this extension.
   * @returns void
   */
  'removeContentStyleSheets': function() {},

  /** Removes the specified menu.
   * @param {String} identifier The unique identifier for the menu being removed.
   * @returns void
   */
  'removeMenu': function(identifier) {},

  /** Removes the specified popover.
   * @param {String} identifier The unique identifier for the popover being removed.
   * @returns void
   */
  'removePopover': function(identifier) {},

}


/** Instances of the SafariExtensionBar class represent a bar that your extension provides. An extension can add any number of bars to Safari. Adding bars is optional.
 * @returns SafariExtensionBar */
function SafariExtensionBar() {};
SafariExtensionBar.prototype = {

  /** @type SafariBrowserWindow readonly The browser window containing the bar. */
  'browserWindow': null,

  /** @type DOMWindow readonly The DOM window object of the bar. */
  'contentWindow': null,

  /** @type String readonly The unique identifier of the bar. */
  'identifier': null,

  /** @type String  The title of the bar. */
  'label': null,

  /** @type Boolean readonly A Boolean value that indicates whether the bar is visible. */
  'visible': null,

  /** Hides the bar.
   * @param {Boolean} doNotRemember If true, new bars with the same identifier should be also be hidden in the future. Defaults to false.
   * @returns void
   */
  'hide': function(doNotRemember) {},

  /** Shows the bar.
   * @param {Boolean} doNotRemember If true, new bars with the same identifier should also be shown. Defaults to false.
   * @returns void
   */
  'show': function(doNotRemember) {},

}


/** Instances of the SafariExtensionContextMenu class represent a contextual menu that is populated by the extension. Safari displays the contents of this menu as part of its contextual menu.
 * @returns SafariExtensionContextMenu */
function SafariExtensionContextMenu() {};
SafariExtensionContextMenu.prototype = {

  /** @type Array readonly Returns a list of the context menu items from this extension. */
  'contextMenuItems': null,

  /** Appends a menu item to the contextual menu.
   * @param {String} identifier The unique identifier of the menu item.
   * @param {String} title The title of the menu item.
   * @param {String} command The command identifier that the context menu item sends when activated. Optional.
   * @returns SafariExtensionContextMenuItem
   */
  'appendContextMenuItem': function(identifier, title, command) {},

  /** Inserts a menu item at a specific index in the contextual menu.
   * @param {Number} index The index where the menu item is being inserted.
   * @param {String} identifier The unique identifier of the menu item.
   * @param {String} title The title of the menu item.
   * @param {String} command The command identifier that the context menu item sends when activated. Optional.
   * @returns SafariExtensionContextMenuItem
   */
  'insertContextMenuItem': function(index, identifier, title, command) {},

}


/** Instances of the SafariExtensionContextMenuEvent class are used to notify listeners when a context menu is about to be displayed.
 * @returns SafariExtensionContextMenuEvent */
function SafariExtensionContextMenuEvent() {};
SafariExtensionContextMenuEvent.prototype = {

  /** @type SafariExtensionContextMenu readonly The context menu being built up. */
  'contextMenu': null,

  /** @type any readonly Information about the current context menu event. */
  'userInfo': null,

}


/** Instances of the SafariExtensionContextMenuItem class represent individual menu items within an extension’s context menu.
 * @returns SafariExtensionContextMenuItem */
function SafariExtensionContextMenuItem() {};
SafariExtensionContextMenuItem.prototype = {

  /** @type String  The command identifier that the context menu item sends when activated. */
  'command': null,

  /** @type Boolean  A Boolean value that indicates whether a context menu item is disabled. */
  'disabled': null,

  /** @type String readonly The unique identifier of the context menu item. */
  'identifier': null,

  /** @type String  The title displayed in the context menu. */
  'title': null,

}


/** Instances of the SafariExtensionContextMenuItemCommandEvent class are used to send command events from a context menu item.
 * @returns SafariExtensionContextMenuItemCommandEvent */
function SafariExtensionContextMenuItemCommandEvent() {};
SafariExtensionContextMenuItemCommandEvent.prototype = {

  /** @type any readonly The user info object for this context menu event. */
  'userInfo': null,

}


/** Instances of the SafariExtensionContextMenuItemValidateEvent class are used to notify listeners when a context menu is about to be displayed.
 * @returns SafariExtensionContextMenuItemValidateEvent */
function SafariExtensionContextMenuItemValidateEvent() {};
SafariExtensionContextMenuItemValidateEvent.prototype = {

  /** @type any readonly Information about the current context menu event. */
  'userInfo': null,

}


/** Safari extensions have a global page, represented by the SafariExtensionGlobalPage class. The global page is loaded once when the extension is loaded, but it is never displayed to the user. It can contain resources such as scripts, images, and HTML content.
 * @returns SafariExtensionGlobalPage */
function SafariExtensionGlobalPage() {};
SafariExtensionGlobalPage.prototype = {

  /** @type DOMWindow readonly The DOM window object of the extension’s global page. */
  'contentWindow': null,

}


/** The SafariExtensionMenu class represents menus.
 * @returns SafariExtensionMenu */
function SafariExtensionMenu() {};
SafariExtensionMenu.prototype = {

  /** @type String readonly The unique identifier of the menu. */
  'identifier': null,

  /** @type Array readonly The items in the menu. */
  'menuItems': null,

  /** @type Boolean readonly A Boolean value that indicates whether the menu is currently visible to the user. */
  'visible': null,

  /** Creates a menu item and appends it to the menu.
   * @param {String} identifier The unique identifier of the menu item.
   * @param {String} title The title of the menu item.
   * @param {String} command The command identifier to send when the menu item is activated. This parameter is optional; the default value is the menu item’s identifier.
   * @returns SafariExtensionMenuItem
   */
  'appendMenuItem': function(identifier, title, command) {},

  /** Creates a separator menu item and appends it to the menu.
   * @param {String} identifier The unique identifier of the menu item.
   * @returns SafariExtensionMenuItem
   */
  'appendSeparator': function(identifier) {},

  /** Creates a menu item and inserts it in the menu at the given index.
   * @param {Number} index The index at which the menu item is being inserted.
   * @param {String} identifier The unique identifier of the menu item being inserted.
   * @param {String} title The title of the menu item.
   * @param {String} command The command identifier to send when the menu item is activated. This parameter is optional; the default value is the menu item’s identifier.
   * @returns SafariExtensionMenuItem
   */
  'insertMenuItem': function(index, identifier, title, command) {},

  /** Creates a separator menu item and inserts it in the menu at the given index.
   * @param {Number} index The index at which the menu item is being inserted.
   * @param {String} identifier The unique identifier of the menu item being inserted.
   * @returns SafariExtensionMenuItem
   */
  'insertSeparator': function(index, identifier) {},

  /** Removes a menu item.
   * @param {Number} index The index of the menu item being removed.
   * @returns void
   */
  'removeMenuItem': function(index) {},

}


/** The SafariExtensionMenuItem class represents items in a menu.
 * @returns SafariExtensionMenuItem */
function SafariExtensionMenuItem() {};
SafariExtensionMenuItem.prototype = {

  /** @type Number  The state of the menu item. */
  'checkedState': null,

  /** @type String  The command identifier that the menu item sends when activated. */
  'command': null,

  /** @type Boolean  A Boolean value that indicates whether a menu item is disabled. */
  'disabled': null,

  /** @type String readonly The unique identifier of the menu item. */
  'identifier': null,

  /** @type String  The URL of the image shown next to the menu item. */
  'image': null,

  /** @type Boolean readonly A Boolean value that indicates whether the menu item is a separator. */
  'separator': null,

  /** @type SafariExtensionMenu  The submenu displayed by this menu item. */
  'submenu': null,

  /** @type String  The title displayed in the menu. */
  'title': null,

  /** @type Boolean readonly A Boolean value that indicates whether the menu item is visible. */
  'visible': null,

}


/** Instances of the SafariExtensionMessageEvent encapsulate a message being passed. Message passing is the only way to communicate information from inside the web content area to scripts running outside of it, and vice versa.
 * @returns SafariExtensionMessageEvent */
function SafariExtensionMessageEvent() {};
SafariExtensionMessageEvent.prototype = {

  /** @type any  The message data. */
  'message': null,

  /** @type String readonly The name of the message. */
  'name': null,

}


/** The SafariExtensionPopover class represents popovers. You use popovers to present information temporarily. The popover content is layered on top of the existing web content in a special type of window.
 * @returns SafariExtensionPopover */
function SafariExtensionPopover() {};
SafariExtensionPopover.prototype = {

  /** @type DOMWindow readonly The DOM window object of the popover. */
  'contentWindow': null,

  /** @type Number  The height, in pixels, of the popover. */
  'height': null,

  /** @type String readonly The unique identifier for the popover. */
  'identifier': null,

  /** @type Boolean readonly A Boolean value that indicates whether the popover is visible. */
  'visible': null,

  /** @type Number  The width, in pixels, of the popover. */
  'width': null,

  /** Hides the popover.
   * @returns void
   */
  'hide': function() {},

}


/** The SafariExtensionSecureSettings class provides a place for your extension to securely store settings that should persist between sessions. You interact with it in exactly the same way as you interact with the SafariExtensionSettings class.
 * @returns SafariExtensionSecureSettings */
function SafariExtensionSecureSettings() {};
SafariExtensionSecureSettings.prototype = {

  /** Removes all key-value pairs.
   * @returns void
   */
  'clear': function() {},

  /** Returns the current value of a key.
   * @param {String} key The key whose value is being returned.
   * @returns any
   */
  'getItem': function(key) {},

  /** Removes a key.
   * @param {String} key The key being removed.
   * @returns void
   */
  'removeItem': function(key) {},

  /** Sets the value of a key.
   * @param {String} key The key whose value is being set.
   * @param {any} value The value being set.
   * @returns void
   */
  'setItem': function(key, value) {},

}


/** The SafariExtensionsSettings class provides a place for your extension to store settings that should persist between sessions.
 * @returns SafariExtensionSettings */
function SafariExtensionSettings() {};
SafariExtensionSettings.prototype = {

  /** Removes all key-value pairs.
   * @returns void
   */
  'clear': function() {},

  /** Returns the current value of a key.
   * @param {String} key The key whose value is being returned.
   * @returns any
   */
  'getItem': function(key) {},

  /** Removes a key.
   * @param {String} key The key being removed.
   * @returns void
   */
  'removeItem': function(key) {},

  /** Sets the value of a key.
   * @param {String} key The key whose value is being set.
   * @param {any} value The value being set.
   * @returns void
   */
  'setItem': function(key, value) {},

}


/** Instances of the SafariExtensionsSettingsChangeEvent class are used to provide a description of a change made to the extension’s settings. A settings change event is sent when your extension changes a setting as well as when a setting is changed outside your extension (for example, a setting changed in the Safari preferences).
 * @returns SafariExtensionSettingsChangeEvent */
function SafariExtensionSettingsChangeEvent() {};
SafariExtensionSettingsChangeEvent.prototype = {

  /** @type String readonly The key identifier of the setting that was changed. */
  'key': null,

  /** @type any readonly The value after the settings change. */
  'newValue': null,

  /** @type any readonly The value before the settings change. */
  'oldValue': null,

}


/** Instances of the SafariExtensionToolbarItem represent items that your extension adds to the Safari toolbar. Users can select which toolbar items are shown by selecting Customize Toolbar in the same way that they can add and remove toolbar items  provided by Safari.
 * @returns SafariExtensionToolbarItem */
function SafariExtensionToolbarItem() {};
SafariExtensionToolbarItem.prototype = {

  /** @type Number  The current badge number. */
  'badge': null,

  /** @type SafariBrowserWindow readonly The containing browser window. */
  'browserWindow': null,

  /** @type String  The command identifier that the toolbar item sends when it is clicked. */
  'command': null,

  /** @type Boolean  A Boolean value that indicates whether the toolbar item is disabled. */
  'disabled': null,

  /** @type String readonly The unique identifier of the toolbar item. */
  'identifier': null,

  /** @type String  The URL of the current image. */
  'image': null,

  /** @type String  The label of the toolbar item, as shown in the toolbar’s overflow menu. */
  'label': null,

  /** @type SafariExtensionMenu  The menu associated with this toolbar item. */
  'menu': null,

  /** @type String readonly The label of the toolbar item, as shown in the Customize palette. */
  'paletteLabel': null,

  /** @type SafariExtensionPopover  The popover associated with the toolbar item. */
  'popover': null,

  /** @type String  The tooltip (help tag) of the toolbar item. */
  'toolTip': null,

  /** Shows the menu for the toolbar item.
   * @returns void
   */
  'showMenu': function() {},

  /** Shows the popover for the toolbar item.
   * @returns void
   */
  'showPopover': function() {},

  /** Dispatches a validate event for this toolbar item.
   * @returns void
   */
  'validate': function() {},

}


/** The SafariNamespace class is a namespace that provides access to the Safari Extensions functionality outside of the web content area.
 * @returns SafariNamespace */
function SafariNamespace() {};
SafariNamespace.prototype = {

  /** @type SafariApplication readonly The Safari application. */
  'application': null,

  /** @type SafariExtension readonly The current Safari extension. */
  'extension': null,

  /** @type any readonly The SafariExtensionGlobalPage or SafariExtensionBar object that owns the DOM window that this instance of the SafariNamespace class was accessed from. */
  'self': null,

}


/** Instances of the SafariNavigateEventClassRef class are used to notify listeners when the user navigates to a new webpage.
 * @returns SafariNavigateEvent */
function SafariNavigateEvent() {};
SafariNavigateEvent.prototype = {

}


/** Instances of the SafariOpenEvent class are used to notify listeners when a tab or window is opened.
 * @returns SafariOpenEvent */
function SafariOpenEvent() {};
SafariOpenEvent.prototype = {

}


/** Instances of the SafariReader class represent the Reader view.
 * @returns SafariReader */
function SafariReader() {};
SafariReader.prototype = {

  /** @type Boolean readonly A Boolean value that indicates whether the tab can display the Reader view. */
  'available': null,

  /** @type SafariBrowserTab readonly The browser tab that contains the Reader view. */
  'tab': null,

  /** @type Boolean readonly A Boolean value that indicates whether the Reader view is being displayed. */
  'visible': null,

  /** Enters the Reader view if it is available; otherwise does nothing.
   * @returns void
   */
  'enter': function() {},

  /** Exits the Reader if it is visible; otherwise does nothing.
   * @returns void
   */
  'exit': function() {},

}


/** Instances of the SafariValidateEvent class encapsulate a validate event. User interface elements such as contextual menu items and toolbar buttons send a validate event when they are about to display. You can prevent the element from displaying by listening for validate events and marking the element as disabled.
 * @returns SafariValidateEvent */
function SafariValidateEvent() {};
SafariValidateEvent.prototype = {

  /** @type String readonly The command identifier of the target being validated. */
  'command': null,

}


/** Instances of the SafariWebPageProxy class serve as a proxy objects, allowing objects outside of the web content to communicate with the SafariContentWebPage object.
 * @returns SafariWebPageProxy */
function SafariWebPageProxy() {};
SafariWebPageProxy.prototype = {

  /** Dispatches a message to the web content area.
   * @param {String} name The name of the message.
   * @param {any} message The body of the message. Optional.
   * @returns void
   */
  'dispatchMessage': function(name, message) {},

}


/** @type SafariNamespace */
var safari = null;



