/// <reference path="./sigApi.MenuBlueprint.d.ts" />
/// <reference path="./sigApi.MenuItem.d.ts" />
/// <reference path="./sigApi.MenuItemBlueprint.d.ts" />

declare namespace SigApi {
    interface Menu {
        /**
         * @returns {string}
         */
        getName(): string
        /**
         * @returns {number}
         */
        getIndex(): number
        /**
         * @returns {MenuBlueprint}
         */
        getBlueprint(): MenuBlueprint
        /**
         * @returns {number}
         */
        getDataPointId(): number
        /**
         * @param {string} propertyName
         * @returns {boolean}
         */
        hasProperty(propertyName: string): boolean
        /**
         * @param {string} propertyName
         * @returns {*}
         */
        getPropertyValue(propertyName: string): any
        /**
         * @returns {MenuItem[]}
         */
        getItems(): MenuItem[]
        /**
         * @param {MenuItemBlueprint} menuItemBlueprint
         * @returns {MenuItem}
         */
        addMenuItem(menuItemBlueprint: MenuItemBlueprint): MenuItem
        /**
         * @param {number} menuItemIndex - the return value of {@link MenuItem} getIndex
         * 
         * The menuItemIndex is a unique number identifying a menuItem and not an index
         * of a menuItem array. Previous implementation of menu manager did not support
         * removing menuItems and thus 'index' did fit.
         * @returns {boolean}
         */
        removeMenuItem(menuItemIndex: number): boolean
    }
}
