[
    {
        "comment": "This file provides metadata about this API for reflective lookup usage. It is autogenerated by the 'generatemeta.ts' script. DO NOT CHANGE BY HAND - RE-GENERATE AS NEEDED.",
        "name": "Jabra",
        "documentation": "Global functions exported under jabra nampespace",
        "tsType": "jabra",
        "jsType": "object",
        "methods": [
            {
                "name": "init",
                "parameters": [],
                "tsType": "Promise<void>",
                "jsType": "Promise",
                "documentation": "The JavaScript library must be initialized using this function. It returns a promise that\r\nresolves when initialization is complete."
            },
            {
                "name": "shutdown",
                "parameters": [],
                "tsType": "Promise<void>",
                "jsType": "Promise",
                "documentation": "De-initialize the api after use. Not normally used as api will normally\r\nstay in use thoughout an application - mostly of interest for testing."
            },
            {
                "name": "addEventListener",
                "parameters": [
                    {
                        "name": "nameSpec",
                        "documentation": "",
                        "tsType": "any",
                        "jsType": "unknown",
                        "optional": false
                    },
                    {
                        "name": "callback",
                        "documentation": "",
                        "tsType": "(event: any) => void",
                        "jsType": "function",
                        "optional": false
                    }
                ],
                "tsType": "void",
                "jsType": "void",
                "documentation": ""
            },
            {
                "name": "removeEventListener",
                "parameters": [
                    {
                        "name": "nameSpec",
                        "documentation": "",
                        "tsType": "any",
                        "jsType": "unknown",
                        "optional": false
                    },
                    {
                        "name": "callback",
                        "documentation": "",
                        "tsType": "(event: any) => void",
                        "jsType": "function",
                        "optional": false
                    }
                ],
                "tsType": "void",
                "jsType": "void",
                "documentation": ""
            },
            {
                "name": "ring",
                "parameters": [],
                "tsType": "void",
                "jsType": "void",
                "documentation": "Activate ringer (if supported) on the Jabra Device"
            },
            {
                "name": "unring",
                "parameters": [],
                "tsType": "void",
                "jsType": "void",
                "documentation": "Deactivate ringer (if supported) on the Jabra Device"
            },
            {
                "name": "offHook",
                "parameters": [
                    {
                        "name": "continueRinger",
                        "documentation": "True to continue ringer on offhook",
                        "tsType": "boolean",
                        "jsType": "boolean",
                        "optional": true
                    }
                ],
                "tsType": "void",
                "jsType": "void",
                "documentation": "Change state to in-a-call.\r\n\r\nBy default the offhook command will also stop the ringer. Set first argument to true to ignore this behaviour and continue ringer."
            },
            {
                "name": "onHook",
                "parameters": [
                    {
                        "name": "continueRinger",
                        "documentation": "True to continue ringer on onhook",
                        "tsType": "boolean",
                        "jsType": "boolean",
                        "optional": true
                    }
                ],
                "tsType": "void",
                "jsType": "void",
                "documentation": "Change state to idle (not-in-a-call).  \r\n\r\nBy default the onHook command will also stop the ringer. Set first argument to true to ignore this behaviour and continue ringer"
            },
            {
                "name": "mute",
                "parameters": [],
                "tsType": "void",
                "jsType": "void",
                "documentation": "Mutes the microphone (if supported)."
            },
            {
                "name": "unmute",
                "parameters": [],
                "tsType": "void",
                "jsType": "void",
                "documentation": "Unmutes the microphone (if supported)."
            },
            {
                "name": "hold",
                "parameters": [],
                "tsType": "void",
                "jsType": "void",
                "documentation": "Change state to held (if supported)."
            },
            {
                "name": "resume",
                "parameters": [],
                "tsType": "void",
                "jsType": "void",
                "documentation": "Change state from held to OffHook (if supported)."
            },
            {
                "name": "setMmiFocus",
                "parameters": [
                    {
                        "name": "type",
                        "documentation": "The button that should be captured/released.",
                        "tsType": "RemoteMmiType",
                        "jsType": "number",
                        "optional": false
                    },
                    {
                        "name": "capture",
                        "documentation": "True if button should be captured, false if it should be released.",
                        "tsType": "boolean",
                        "jsType": "boolean",
                        "optional": false
                    }
                ],
                "tsType": "Promise<void>",
                "jsType": "Promise",
                "documentation": "Capture/release buttons for customization (if supported). This turns off default behavior and enables mmi events to\r\nbe received instead. It also allows for mmi actions to be applied like changing lights with setRemoteMmiLightAction."
            },
            {
                "name": "setRemoteMmiLightAction",
                "parameters": [
                    {
                        "name": "type",
                        "documentation": "The button that should be captured/released.",
                        "tsType": "RemoteMmiType",
                        "jsType": "number",
                        "optional": false
                    },
                    {
                        "name": "color",
                        "documentation": "An RGB array of 3x integers or a RGB number (with 0x or # prefix for hex).",
                        "tsType": "number | [number, number, number]",
                        "jsType": "number | object",
                        "optional": false
                    },
                    {
                        "name": "effect",
                        "documentation": "What effect to apply to the button.",
                        "tsType": "RemoteMmiSequence",
                        "jsType": "number",
                        "optional": false
                    }
                ],
                "tsType": "Promise<void>",
                "jsType": "Promise",
                "documentation": "Change light/color on a previously captured button.\r\nNb. This requires the button to be previously captured though setMMiFocus."
            },
            {
                "name": "getActiveDevice",
                "parameters": [
                    {
                        "name": "includeBrowserMediaDeviceInfo",
                        "documentation": "",
                        "tsType": "boolean",
                        "jsType": "boolean",
                        "optional": true
                    }
                ],
                "tsType": "Promise<DeviceInfo>",
                "jsType": "Promise",
                "documentation": "Get detailed information about the current active Jabra Device, including current status\r\nand optionally also including related browser media device information.\r\n\r\nNote that browser media device information requires mediaDevices.getUserMedia or\r\ngetUserDeviceMediaExt to have been called so permissions are granted. Browser media information\r\nis useful for setting a device constraint on mediaDevices.getUserMedia for input or for calling\r\nsetSinkId (when supported by the browser) to set output."
            },
            {
                "name": "getDevices",
                "parameters": [
                    {
                        "name": "includeBrowserMediaDeviceInfo",
                        "documentation": "",
                        "tsType": "boolean",
                        "jsType": "boolean",
                        "optional": true
                    }
                ],
                "tsType": "Promise<readonly DeviceInfo[]>",
                "jsType": "Promise",
                "documentation": "List detailed information about all attached Jabra Devices, including current status.\r\nand optionally also including related browser media device information.\r\n\r\nNote that browser media device information requires mediaDevices.getUserMedia or\r\ngetUserDeviceMediaExt to have been called so permissions are granted. Browser media information\r\nis useful for setting a device constraint on mediaDevices.getUserMedia for input or for calling\r\nsetSinkId (when supported by the browser) to set output."
            },
            {
                "name": "setActiveDeviceId",
                "parameters": [
                    {
                        "name": "id",
                        "documentation": "The id number of the new active device.",
                        "tsType": "number",
                        "jsType": "number",
                        "optional": false
                    }
                ],
                "tsType": "Promise<void>",
                "jsType": "Promise",
                "documentation": "Select a new active device returning once selection is completed.\r\n\r\nNote: The active device is a global setting that affects all browser\r\ninstances using the browser SDK. Unless changed specifically, the setting\r\npersist until browser is restarted or device is unplugged."
            },
            {
                "name": "setBusyLight",
                "parameters": [
                    {
                        "name": "busy",
                        "documentation": "True if busy light should be set, false if it should be cleared.",
                        "tsType": "boolean",
                        "jsType": "boolean",
                        "optional": false
                    }
                ],
                "tsType": "Promise<void>",
                "jsType": "Promise",
                "documentation": "Set busylight on active device (if supported)"
            },
            {
                "name": "getInstallInfo",
                "parameters": [],
                "tsType": "Promise<InstallInfo>",
                "jsType": "Promise",
                "documentation": "Get version number information for all components."
            },
            {
                "name": "trySetDeviceOutput",
                "parameters": [
                    {
                        "name": "audioElement",
                        "documentation": "",
                        "tsType": "HTMLMediaElement",
                        "jsType": "object",
                        "optional": false
                    },
                    {
                        "name": "deviceInfo",
                        "documentation": "",
                        "tsType": "DeviceInfo",
                        "jsType": "object",
                        "optional": false
                    }
                ],
                "tsType": "Promise<boolean>",
                "jsType": "Promise",
                "documentation": "Configure an audio html element on a webpage to use jabra audio device as speaker output. Returns a promise with boolean success status.\r\nThe deviceInfo argument must come from getDeviceInfo or getUserDeviceMediaExt calls. \r\nNote: for headsets connected via USB-dongle, call the method on the dongle"
            },
            {
                "name": "isDeviceSelectedForInput",
                "parameters": [
                    {
                        "name": "mediaStream",
                        "documentation": "",
                        "tsType": "MediaStream",
                        "jsType": "object",
                        "optional": false
                    },
                    {
                        "name": "deviceInfo",
                        "documentation": "",
                        "tsType": "DeviceInfo",
                        "jsType": "object",
                        "optional": false
                    }
                ],
                "tsType": "boolean",
                "jsType": "boolean",
                "documentation": "Checks if a Jabra Input device is in fact selected in a media stream.\r\nThe deviceInfo argument must come from getDeviceInfo or getUserDeviceMediaExt calls."
            },
            {
                "name": "getUserDeviceMediaExt",
                "parameters": [
                    {
                        "name": "constraints",
                        "documentation": "",
                        "tsType": "MediaStreamConstraints",
                        "jsType": "object",
                        "optional": true
                    }
                ],
                "tsType": "Promise<MediaStreamAndDeviceInfoPair>",
                "jsType": "Promise",
                "documentation": "Replacement for mediaDevices.getUserMedia that makes a best effort to select the active Jabra audio device\r\nto be used for the microphone. Unlike getUserMedia this method returns a promise that\r\nresolve to an object containing both a stream and the device info for the selected device.\r\n\r\nOptional, additional non-audio constrains (like f.x. video) can be specified as well.\r\n\r\nNote: Subsequently, if this method appears to succeed use the isDeviceSelectedForInput function to check\r\nif the browser did in fact choose a Jabra device for the microphone."
            }
        ],
        "properties": []
    },
    {
        "comment": "This file provides metadata about this API for reflective lookup usage. It is autogenerated by the 'generatemeta.ts' script. DO NOT CHANGE BY HAND - RE-GENERATE AS NEEDED.",
        "name": "Analytics",
        "documentation": "WARNING: THE ANALYTICS APIS ARE PRE-RELEASE, AND SUBJECT TO CHANGE WITHOUT \r\nWARNING IN FUTURE RELEASES. ONLY USE FOR EVALUATION PURPOSES. \r\n\r\nThe Analytics will collect AnalyticsEvents and allow you to query data such\r\nas speech status, speech time, and much more. To use the class, initialize an\r\ninstance of the class and use the start method to start collecting. The class\r\nis an event emitter, so you can use addEventListener to listen to specific\r\nAnalyticEvents. If you have multiple jabra devices connected and only want to\r\ncollect events from one of the devices supply a deviceID in the class\r\nconstructor.",
        "tsType": "class",
        "jsType": "object",
        "methods": [
            {
                "name": "start",
                "parameters": [],
                "tsType": "void",
                "jsType": "void",
                "documentation": "Starts the analytics module"
            },
            {
                "name": "stop",
                "parameters": [],
                "tsType": "void",
                "jsType": "void",
                "documentation": "Stops the analytics module"
            },
            {
                "name": "clear",
                "parameters": [],
                "tsType": "void",
                "jsType": "void",
                "documentation": "Clears the event history of the analytics module"
            },
            {
                "name": "getSpeechStatus",
                "parameters": [],
                "tsType": "SpeechStatus",
                "jsType": "object",
                "documentation": "Get whether the transmitter or receiver is talking, and whether there's\r\ncrosstalk or silence"
            },
            {
                "name": "getSpeechTime",
                "parameters": [
                    {
                        "name": "fromTime",
                        "documentation": "",
                        "tsType": "number",
                        "jsType": "number",
                        "optional": true
                    },
                    {
                        "name": "toTime",
                        "documentation": "",
                        "tsType": "number",
                        "jsType": "number",
                        "optional": true
                    }
                ],
                "tsType": "SpeechTime",
                "jsType": "object",
                "documentation": "Get time the transmitter or reciver has talked, and how long there's\r\nbeen crosstalk or silence"
            },
            {
                "name": "getMutedStatus",
                "parameters": [],
                "tsType": "boolean",
                "jsType": "boolean",
                "documentation": "Get whether or not the headset is muted"
            },
            {
                "name": "getMutedCount",
                "parameters": [],
                "tsType": "number",
                "jsType": "number",
                "documentation": "Get the number of times the headset has been muted"
            },
            {
                "name": "getBoomArmStatus",
                "parameters": [],
                "tsType": "boolean",
                "jsType": "boolean",
                "documentation": "Get the boom arm position status"
            },
            {
                "name": "getBoomArmMisalignedCount",
                "parameters": [],
                "tsType": "number",
                "jsType": "number",
                "documentation": "Get the number of times the boom arm has been misaligned"
            },
            {
                "name": "getVolumeUpCount",
                "parameters": [],
                "tsType": "number",
                "jsType": "number",
                "documentation": "Get the number of times the volume has been increased"
            },
            {
                "name": "getVolumeDownCount",
                "parameters": [],
                "tsType": "number",
                "jsType": "number",
                "documentation": "Get the number of times the volume has been decreased"
            },
            {
                "name": "getAudioExposure",
                "parameters": [
                    {
                        "name": "limit",
                        "documentation": "",
                        "tsType": "number",
                        "jsType": "number",
                        "optional": true
                    }
                ],
                "tsType": "AnalyticsEvent[]",
                "jsType": "array",
                "documentation": "Get the audio exposure level"
            },
            {
                "name": "getAverageAudioExposure",
                "parameters": [
                    {
                        "name": "fromTime",
                        "documentation": "",
                        "tsType": "number",
                        "jsType": "number",
                        "optional": true
                    },
                    {
                        "name": "toTime",
                        "documentation": "",
                        "tsType": "number",
                        "jsType": "number",
                        "optional": true
                    }
                ],
                "tsType": "number",
                "jsType": "number",
                "documentation": "Get the average audio exposure level over a time interval"
            },
            {
                "name": "getBackgroundNoise",
                "parameters": [
                    {
                        "name": "limit",
                        "documentation": "",
                        "tsType": "number",
                        "jsType": "number",
                        "optional": true
                    }
                ],
                "tsType": "AnalyticsEvent[]",
                "jsType": "array",
                "documentation": "Get the average background noise level"
            },
            {
                "name": "getAverageBackgroundNoise",
                "parameters": [
                    {
                        "name": "fromTime",
                        "documentation": "",
                        "tsType": "number",
                        "jsType": "number",
                        "optional": true
                    },
                    {
                        "name": "toTime",
                        "documentation": "",
                        "tsType": "number",
                        "jsType": "number",
                        "optional": true
                    }
                ],
                "tsType": "number",
                "jsType": "number",
                "documentation": "Get the average background noise level over a time interval"
            }
        ],
        "properties": [
            {
                "name": "startTime",
                "documentation": "The timestamp of when analytics was started",
                "tsType": "number",
                "jsType": "number",
                "readonly": false
            },
            {
                "name": "stopTime",
                "documentation": "The timestamp of when the analytics was stopped",
                "tsType": "number",
                "jsType": "number",
                "readonly": false
            }
        ]
    }
]