| // Type definitions for Bowser 1.x | |
| // Project: https://github.com/lancedikson/bowser | |
| // Definitions by: Paulo Cesar <https://github.com/pocesar> | |
| // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped | |
|  | |
| declare const bowser: bowser.IBowser; | |
| export = bowser; | |
| export as namespace bowser; | |
| 
 | |
| declare namespace bowser { | |
|     export interface IBowserPlatform { | |
|         ipad: boolean; | |
|         ipod: boolean; | |
|         iphone: boolean; | |
|         /** If a tablet device is detected, the flag tablet is set instead of mobile. */ | |
|         tablet: boolean; | |
|         /** All detected mobile OSes are additionally flagged mobile, unless it's a tablet */ | |
|         mobile: boolean; | |
|     } | |
| 
 | |
|     export interface IBowserOS { | |
|         mac: boolean; | |
|         /**other than Windows Phone */ | |
|         windows: boolean; | |
|         windowsphone: boolean; | |
|         /**other than android, chromeos, webos, tizen, and sailfish */ | |
|         linux: boolean; | |
|         chromeos: boolean; | |
|         android: boolean; | |
|         /** also sets one of iphone/ipad/ipod */ | |
|         ios: boolean; | |
|         blackberry: boolean; | |
|         firefoxos: boolean; | |
|         /** may also set touchpad */ | |
|         webos: boolean; | |
|         bada: boolean; | |
|         tizen: boolean; | |
|         sailfish: boolean; | |
|     } | |
| 
 | |
|     export interface IBowserVersions { | |
|         chrome: boolean; | |
|         chromium: boolean; | |
|         firefox: boolean; | |
|         msie: boolean; | |
|         msedge: boolean; | |
|         safari: boolean; | |
|         android: boolean; | |
|         ios: boolean; | |
|         opera: boolean; | |
|         samsungBrowser: boolean; | |
|         phantom: boolean; | |
|         blackberry: boolean; | |
|         webos: boolean; | |
|         silk: boolean; | |
|         bada: boolean; | |
|         tizen: boolean; | |
|         seamonkey: boolean; | |
|         sailfish: boolean; | |
|         ucbrowser: boolean; | |
|         qupzilla: boolean; | |
|         vivaldi: boolean; | |
|         sleipnir: boolean; | |
|         kMeleon: boolean; | |
|         whale: boolean; | |
|     } | |
| 
 | |
|     export interface IBowserEngines { | |
|         /** IE <= 11 */ | |
|         msie: boolean; | |
|         /**Chrome 0-27, Android <4.4, iOs, BB, etc. */ | |
|         webkit: boolean; | |
|         /**Chrome >=28, Android >=4.4, Opera, etc. */ | |
|         blink: boolean; | |
|         /**Firefox, etc. */ | |
|         gecko: boolean; | |
|         /** IE > 11 */ | |
|         msedge: boolean; | |
|     } | |
| 
 | |
|     export interface IBowserGrade { | |
|         /** Grade A browser */ | |
|         a: boolean; | |
|         /** Grade C browser */ | |
|         c: boolean; | |
|         /** Grade X browser */ | |
|         x: boolean; | |
|         /** A human readable name for this browser. E.g. 'Chrome', '' */ | |
|         name: string; | |
|         /** Version number for the browser. E.g. '32.0' */ | |
|         version: string|number; | |
|         /** Name for this operating system. E.g. 'macOS' */ | |
|         osname: string; | |
|         /** Version number for this operating system. E.g. '10.12.6' */ | |
|         osversion: string|number; | |
|     } | |
| 
 | |
|     export interface IBowserDetection extends IBowserGrade, IBowserEngines, IBowserOS, IBowserVersions, IBowserPlatform { } | |
| 
 | |
|     export interface IBowserMinVersions { | |
|         // { msie: "11", "firefox": "4" } | |
|         [index: string]: string; | |
|     } | |
| 
 | |
|     export interface IBowser extends IBowserDetection { | |
|         (): IBowserDetection; | |
|         test(browserList: string[]): boolean; | |
|         _detect(ua: string): IBowser; | |
|         detect(ua: string): IBowser; | |
|         compareVersions(versions: string[]): number; | |
|         check(minVersions: IBowserMinVersions, strictMode?: boolean|string, ua?: string): Boolean; | |
|         isUnsupportedBrowser(minVersions: IBowserMinVersions, strictMode?: boolean|string, ua?: string): boolean; | |
|     } | |
| 
 | |
| }
 |