import * as i0 from '@angular/core';
import { Signal } from '@angular/core';

/**
 * Created by ahsanayaz on 08/11/2016.
 */
declare const GENERAL: {
    UKNOWN: string;
};
declare const BROWSERS: {
    CHROME: string;
    FIREFOX: string;
    SAFARI: string;
    OPERA: string;
    IE: string;
    MS_EDGE: string;
    MS_EDGE_CHROMIUM: string;
    FB_MESSANGER: string;
    SAMSUNG: string;
    UCBROWSER: string;
    UNKNOWN: string;
};
declare const MOBILES_RE: {
    HTC: RegExp;
    NEXUS_PHONE: RegExp;
    DELL: RegExp;
    MOTOROLA: RegExp;
    SAMSUNG: RegExp;
    LG: RegExp;
    SONY: RegExp;
    ASUS: RegExp;
    NOKIA_LUMIA: RegExp;
    MICROMAX: RegExp;
    PALM: RegExp;
    VERTU: RegExp;
    PANTECH: RegExp;
    FLY: RegExp;
    WIKO: RegExp;
    I_MOBILE: RegExp;
    SIMVALLEY: RegExp;
    WOLFGANG: RegExp;
    ALCATEL: RegExp;
    NINTENDO: RegExp;
    AMOI: RegExp;
    INQ: RegExp;
    VITA: RegExp;
    BLACKBERRY: RegExp;
    FIREFOX_OS: RegExp;
    IPHONE: RegExp;
    iPod: RegExp;
    ANDROID: RegExp;
    WINDOWS_PHONE: RegExp;
    GENERIC_PHONE: RegExp;
};
declare const TABLETS_RE: {
    iPad: RegExp;
    NexusTablet: RegExp;
    GoogleTablet: RegExp;
    SamsungTablet: RegExp;
    Kindle: RegExp;
    SurfaceTablet: RegExp;
    HPTablet: RegExp;
    AsusTablet: RegExp;
    BlackBerryTablet: RegExp;
    HTCtablet: RegExp;
    MotorolaTablet: RegExp;
    NookTablet: RegExp;
    AcerTablet: RegExp;
    ToshibaTablet: RegExp;
    LGTablet: RegExp;
    FujitsuTablet: RegExp;
    PrestigioTablet: RegExp;
    LenovoTablet: RegExp;
    DellTablet: RegExp;
    YarvikTablet: RegExp;
    MedionTablet: RegExp;
    ArnovaTablet: RegExp;
    IntensoTablet: RegExp;
    IRUTablet: RegExp;
    MegafonTablet: RegExp;
    EbodaTablet: RegExp;
    AllViewTablet: RegExp;
    ArchosTablet: RegExp;
    AinolTablet: RegExp;
    NokiaLumiaTablet: RegExp;
    SonyTablet: RegExp;
    PhilipsTablet: RegExp;
    CubeTablet: RegExp;
    CobyTablet: RegExp;
    MIDTablet: RegExp;
    MSITablet: RegExp;
    SMiTTablet: RegExp;
    RockChipTablet: RegExp;
    FlyTablet: RegExp;
    bqTablet: RegExp;
    HuaweiTablet: RegExp;
    NecTablet: RegExp;
    PantechTablet: RegExp;
    BronchoTablet: RegExp;
    VersusTablet: RegExp;
    ZyncTablet: RegExp;
    PositivoTablet: RegExp;
    NabiTablet: RegExp;
    KoboTablet: RegExp;
    DanewTablet: RegExp;
    TexetTablet: RegExp;
    PlaystationTablet: RegExp;
    TrekstorTablet: RegExp;
    PyleAudioTablet: RegExp;
    AdvanTablet: RegExp;
    DanyTechTablet: string;
    GalapadTablet: RegExp;
    MicromaxTablet: RegExp;
    KarbonnTablet: RegExp;
    AllFineTablet: RegExp;
    PROSCANTablet: RegExp;
    YONESTablet: RegExp;
    ChangJiaTablet: RegExp;
    GUTablet: RegExp;
    PointOfViewTablet: RegExp;
    OvermaxTablet: RegExp;
    HCLTablet: RegExp;
    DPSTablet: RegExp;
    VistureTablet: RegExp;
    CrestaTablet: RegExp;
    MediatekTablet: RegExp;
    ConcordeTablet: RegExp;
    GoCleverTablet: RegExp;
    ModecomTablet: RegExp;
    VoninoTablet: RegExp;
    ECSTablet: RegExp;
    StorexTablet: RegExp;
    VodafoneTablet: RegExp;
    EssentielBTablet: RegExp;
    RossMoorTablet: RegExp;
    iMobileTablet: RegExp;
    TolinoTablet: RegExp;
    AudioSonicTablet: RegExp;
    AMPETablet: RegExp;
    SkkTablet: RegExp;
    TecnoTablet: RegExp;
    JXDTablet: RegExp;
    iJoyTablet: RegExp;
    FX2Tablet: RegExp;
    XoroTablet: RegExp;
    ViewsonicTablet: RegExp;
    VerizonTablet: RegExp;
    OdysTablet: RegExp;
    CaptivaTablet: RegExp;
    IconbitTablet: RegExp;
    TeclastTablet: RegExp;
    OndaTablet: RegExp;
    JaytechTablet: RegExp;
    BlaupunktTablet: RegExp;
    DigmaTablet: RegExp;
    EvolioTablet: RegExp;
    LavaTablet: RegExp;
    AocTablet: RegExp;
    MpmanTablet: RegExp;
    CelkonTablet: RegExp;
    WolderTablet: RegExp;
    MediacomTablet: string;
    MiTablet: RegExp;
    NibiruTablet: RegExp;
    NexoTablet: RegExp;
    LeaderTablet: RegExp;
    UbislateTablet: RegExp;
    PocketBookTablet: RegExp;
    KocasoTablet: RegExp;
    HisenseTablet: RegExp;
    Hudl: RegExp;
    TelstraTablet: RegExp;
    Honeywell: RegExp;
    GenericTablet: RegExp;
};
declare const DEVICES: {
    BLACKBERRY: string;
    FIREFOX_OS: string;
    CHROME_BOOK: string;
    WINDOWS_PHONE: string;
    VITA: string;
    PS4: string;
    MAC: string;
    CHROMECAST: string;
    APPLE_TV: string;
    GOOGLE_TV: string;
    ANDROID: string;
    Tesla: string;
    iPad: string;
    IPHONE: string;
    iPod: string;
    UNKNOWN: string;
    HTC: string;
    NEXUS_PHONE: string;
    NexusTablet: string;
    DELL: string;
    MOTOROLA: string;
    SAMSUNG: string;
    LG: string;
    SONY: string;
    ASUS: string;
    NOKIA_LUMIA: string;
    MICROMAX: string;
    PALM: string;
    VERTU: string;
    PANTECH: string;
    FLY: string;
    WIKO: string;
    I_MOBILE: string;
    SIMVALLEY: string;
    WOLFGANG: string;
    ALCATEL: string;
    HONEYWELL: string;
    NINTENDO: string;
    AMOI: string;
    INQ: string;
    GENERIC_PHONE: string;
    MI_SE_9: string;
};
declare const DESKTOP_DEVICES: string[];
declare const OS: {
    WINDOWS: string;
    MAC: string;
    IOS: string;
    ANDROID: string;
    LINUX: string;
    UNIX: string;
    FIREFOX_OS: string;
    CHROME_OS: string;
    WINDOWS_PHONE: string;
    UNKNOWN: string;
};
declare const OS_VERSIONS: {
    WINDOWS_3_11: string;
    WINDOWS_95: string;
    WINDOWS_ME: string;
    WINDOWS_98: string;
    WINDOWS_CE: string;
    WINDOWS_2000: string;
    WINDOWS_XP: string;
    WINDOWS_SERVER_2003: string;
    WINDOWS_VISTA: string;
    WINDOWS_7: string;
    WINDOWS_8_1: string;
    WINDOWS_8: string;
    WINDOWS_10: string;
    WINDOWS_PHONE_7_5: string;
    WINDOWS_PHONE_8_1: string;
    WINDOWS_PHONE_10: string;
    WINDOWS_NT_4_0: string;
    MACOSX_11_0: string;
    MACOSX_16: string;
    MACOSX_15: string;
    MACOSX_14: string;
    MACOSX_13: string;
    MACOSX_12: string;
    MACOSX_11: string;
    MACOSX_10: string;
    MACOSX_9: string;
    MACOSX_8: string;
    MACOSX_7: string;
    MACOSX_6: string;
    MACOSX_5: string;
    MACOSX_4: string;
    MACOSX_3: string;
    MACOSX_2: string;
    MACOSX: string;
    iOS: string;
    ANDROID_9: string;
    UNKNOWN: string;
};
declare const OS_RE: {
    WINDOWS: {
        and: ({
            or: RegExp[];
            not?: undefined;
        } | {
            not: RegExp;
            or?: undefined;
        })[];
    };
    MAC: {
        and: (RegExp | {
            not: {
                or: RegExp[];
            };
        })[];
    };
    IOS: {
        and: ({
            or: RegExp[];
            not?: undefined;
        } | {
            not: RegExp;
            or?: undefined;
        })[];
    };
    ANDROID: {
        and: (RegExp | {
            not: RegExp;
        })[];
    };
    LINUX: RegExp;
    UNIX: RegExp;
    FIREFOX_OS: {
        and: RegExp[];
    };
    CHROME_OS: RegExp;
    WINDOWS_PHONE: {
        or: RegExp[];
    };
    PS4: RegExp;
    VITA: RegExp;
};
declare const BROWSERS_RE: {
    CHROME: {
        and: ({
            or: RegExp[];
            not?: undefined;
        } | {
            not: {
                or: RegExp[];
            };
            or?: undefined;
        })[];
    };
    FIREFOX: {
        or: RegExp[];
    };
    SAFARI: {
        and: (RegExp | {
            not: {
                or: RegExp[];
            };
        })[];
    };
    OPERA: {
        or: RegExp[];
    };
    IE: {
        or: RegExp[];
    };
    MS_EDGE: {
        or: RegExp[];
    };
    MS_EDGE_CHROMIUM: RegExp;
    PS4: RegExp;
    VITA: RegExp;
    FB_MESSANGER: RegExp;
    SAMSUNG: RegExp;
    UCBROWSER: RegExp;
};
declare const DEVICES_RE: {
    FIREFOX_OS: {
        and: RegExp[];
    };
    CHROME_BOOK: RegExp;
    PS4: RegExp;
    CHROMECAST: RegExp;
    APPLE_TV: RegExp;
    GOOGLE_TV: RegExp;
    Tesla: RegExp;
    MI_SE_9: RegExp;
    MAC: {
        and: (RegExp | {
            not: {
                or: RegExp[];
            };
        })[];
    };
    WINDOWS: {
        and: ({
            or: RegExp[];
            not?: undefined;
        } | {
            not: RegExp;
            or?: undefined;
        })[];
    };
    IOS: {
        and: ({
            or: RegExp[];
            not?: undefined;
        } | {
            not: RegExp;
            or?: undefined;
        })[];
    };
    ANDROID: {
        and: (RegExp | {
            not: RegExp;
        })[];
    };
    LINUX: RegExp;
    UNIX: RegExp;
    CHROME_OS: RegExp;
    WINDOWS_PHONE: {
        or: RegExp[];
    };
    VITA: RegExp;
    iPad: RegExp;
    NexusTablet: RegExp;
    GoogleTablet: RegExp;
    SamsungTablet: RegExp;
    Kindle: RegExp;
    SurfaceTablet: RegExp;
    HPTablet: RegExp;
    AsusTablet: RegExp;
    BlackBerryTablet: RegExp;
    HTCtablet: RegExp;
    MotorolaTablet: RegExp;
    NookTablet: RegExp;
    AcerTablet: RegExp;
    ToshibaTablet: RegExp;
    LGTablet: RegExp;
    FujitsuTablet: RegExp;
    PrestigioTablet: RegExp;
    LenovoTablet: RegExp;
    DellTablet: RegExp;
    YarvikTablet: RegExp;
    MedionTablet: RegExp;
    ArnovaTablet: RegExp;
    IntensoTablet: RegExp;
    IRUTablet: RegExp;
    MegafonTablet: RegExp;
    EbodaTablet: RegExp;
    AllViewTablet: RegExp;
    ArchosTablet: RegExp;
    AinolTablet: RegExp;
    NokiaLumiaTablet: RegExp;
    SonyTablet: RegExp;
    PhilipsTablet: RegExp;
    CubeTablet: RegExp;
    CobyTablet: RegExp;
    MIDTablet: RegExp;
    MSITablet: RegExp;
    SMiTTablet: RegExp;
    RockChipTablet: RegExp;
    FlyTablet: RegExp;
    bqTablet: RegExp;
    HuaweiTablet: RegExp;
    NecTablet: RegExp;
    PantechTablet: RegExp;
    BronchoTablet: RegExp;
    VersusTablet: RegExp;
    ZyncTablet: RegExp;
    PositivoTablet: RegExp;
    NabiTablet: RegExp;
    KoboTablet: RegExp;
    DanewTablet: RegExp;
    TexetTablet: RegExp;
    PlaystationTablet: RegExp;
    TrekstorTablet: RegExp;
    PyleAudioTablet: RegExp;
    AdvanTablet: RegExp;
    DanyTechTablet: string;
    GalapadTablet: RegExp;
    MicromaxTablet: RegExp;
    KarbonnTablet: RegExp;
    AllFineTablet: RegExp;
    PROSCANTablet: RegExp;
    YONESTablet: RegExp;
    ChangJiaTablet: RegExp;
    GUTablet: RegExp;
    PointOfViewTablet: RegExp;
    OvermaxTablet: RegExp;
    HCLTablet: RegExp;
    DPSTablet: RegExp;
    VistureTablet: RegExp;
    CrestaTablet: RegExp;
    MediatekTablet: RegExp;
    ConcordeTablet: RegExp;
    GoCleverTablet: RegExp;
    ModecomTablet: RegExp;
    VoninoTablet: RegExp;
    ECSTablet: RegExp;
    StorexTablet: RegExp;
    VodafoneTablet: RegExp;
    EssentielBTablet: RegExp;
    RossMoorTablet: RegExp;
    iMobileTablet: RegExp;
    TolinoTablet: RegExp;
    AudioSonicTablet: RegExp;
    AMPETablet: RegExp;
    SkkTablet: RegExp;
    TecnoTablet: RegExp;
    JXDTablet: RegExp;
    iJoyTablet: RegExp;
    FX2Tablet: RegExp;
    XoroTablet: RegExp;
    ViewsonicTablet: RegExp;
    VerizonTablet: RegExp;
    OdysTablet: RegExp;
    CaptivaTablet: RegExp;
    IconbitTablet: RegExp;
    TeclastTablet: RegExp;
    OndaTablet: RegExp;
    JaytechTablet: RegExp;
    BlaupunktTablet: RegExp;
    DigmaTablet: RegExp;
    EvolioTablet: RegExp;
    LavaTablet: RegExp;
    AocTablet: RegExp;
    MpmanTablet: RegExp;
    CelkonTablet: RegExp;
    WolderTablet: RegExp;
    MediacomTablet: string;
    MiTablet: RegExp;
    NibiruTablet: RegExp;
    NexoTablet: RegExp;
    LeaderTablet: RegExp;
    UbislateTablet: RegExp;
    PocketBookTablet: RegExp;
    KocasoTablet: RegExp;
    HisenseTablet: RegExp;
    Hudl: RegExp;
    TelstraTablet: RegExp;
    Honeywell: RegExp;
    GenericTablet: RegExp;
    HTC: RegExp;
    NEXUS_PHONE: RegExp;
    DELL: RegExp;
    MOTOROLA: RegExp;
    SAMSUNG: RegExp;
    LG: RegExp;
    SONY: RegExp;
    ASUS: RegExp;
    NOKIA_LUMIA: RegExp;
    MICROMAX: RegExp;
    PALM: RegExp;
    VERTU: RegExp;
    PANTECH: RegExp;
    FLY: RegExp;
    WIKO: RegExp;
    I_MOBILE: RegExp;
    SIMVALLEY: RegExp;
    WOLFGANG: RegExp;
    ALCATEL: RegExp;
    NINTENDO: RegExp;
    AMOI: RegExp;
    INQ: RegExp;
    BLACKBERRY: RegExp;
    IPHONE: RegExp;
    iPod: RegExp;
    GENERIC_PHONE: RegExp;
};
declare const OS_VERSIONS_RE_MAP: {
    WINDOWS_3_11: RegExp;
    WINDOWS_95: RegExp;
    WINDOWS_ME: RegExp;
    WINDOWS_98: RegExp;
    WINDOWS_CE: RegExp;
    WINDOWS_2000: RegExp;
    WINDOWS_XP: RegExp;
    WINDOWS_SERVER_2003: RegExp;
    WINDOWS_VISTA: RegExp;
    WINDOWS_7: RegExp;
    WINDOWS_8_1: RegExp;
    WINDOWS_8: RegExp;
    WINDOWS_10: RegExp;
    WINDOWS_PHONE_7_5: RegExp;
    WINDOWS_PHONE_8_1: RegExp;
    WINDOWS_PHONE_10: RegExp;
    WINDOWS_NT_4_0: {
        and: (RegExp | {
            not: RegExp;
        })[];
    };
    MACOSX: RegExp;
    MACOSX_3: RegExp;
    MACOSX_4: RegExp;
    MACOSX_5: RegExp;
    MACOSX_6: RegExp;
    MACOSX_7: RegExp;
    MACOSX_8: RegExp;
    MACOSX_9: RegExp;
    MACOSX_10: RegExp;
    MACOSX_11: RegExp;
    MACOSX_12: RegExp;
    MACOSX_13: RegExp;
    MACOSX_14: RegExp;
    MACOSX_15: RegExp;
    MACOSX_16: RegExp;
    MACOSX_11_0: {
        or: RegExp[];
    };
    iOS: RegExp;
    ANDROID_9: RegExp;
};
declare const BROWSER_VERSIONS_RE_MAP: {
    CHROME: RegExp[];
    FIREFOX: RegExp[];
    SAFARI: RegExp[];
    OPERA: RegExp[];
    IE: RegExp[];
    MS_EDGE: RegExp;
    MS_EDGE_CHROMIUM: RegExp;
    SAMSUNG: RegExp;
    UCBROWSER: RegExp;
};
declare const OS_VERSIONS_RE: {};
declare const BROWSER_VERSIONS_RE: {};

/**
 * Created by ahsanayaz on 08/11/2016.
 */

interface DeviceInfo {
    userAgent: string;
    os: string;
    browser: string;
    device: string;
    os_version: string;
    browser_version: string;
    deviceType: string;
    orientation: string;
    isDesktopMode: boolean;
}
declare enum DeviceType {
    Mobile = "mobile",
    Tablet = "tablet",
    Desktop = "desktop",
    Unknown = "unknown"
}
declare enum OrientationType {
    Portrait = "portrait",
    Landscape = "landscape",
    Unknown = "Unknown"
}
declare class DeviceDetectorService {
    readonly deviceInfo: Signal<DeviceInfo>;
    private readonly _ua;
    private readonly _userAgent;
    private readonly _os;
    private readonly _browser;
    private readonly _device;
    private readonly _os_version;
    private readonly _browser_version;
    private readonly _deviceType;
    private readonly _orientation;
    private readonly _isDesktopMode;
    private readonly reTree;
    private readonly platformId;
    constructor();
    get ua(): Signal<string>;
    get browser(): Signal<string>;
    get device(): Signal<string>;
    get userAgent(): Signal<string>;
    get os(): Signal<string>;
    get os_version(): Signal<string>;
    get browser_version(): Signal<string>;
    get deviceType(): Signal<DeviceType>;
    get orientation(): Signal<OrientationType>;
    get isDesktopMode(): Signal<boolean>;
    /**
     * @author Ahsan Ayaz
     * @desc Sets the initial value of the device when the service is initiated.
     * This value is later accessible for usage
     */
    private detectFromMapping;
    /**
     * Detects if a mobile device is running in desktop mode
     * Desktop mode occurs when mobile browsers request desktop websites
     * by sending desktop user agent strings while retaining mobile characteristics
     */
    private detectDesktopMode;
    /**
     * Checks if screen dimensions suggest mobile device
     */
    private hasMobileScreenDimensions;
    /**
     * Checks for mobile browser signatures that might leak through in desktop mode
     */
    private hasMobileBrowserSignatures;
    setDeviceInfo(ua?: string): void;
    /**
     * @author Ahsan Ayaz
     * @desc Returns the device information
     * @deprecated Use `deviceInfo` signal instead.
     * @returns the device information object.
     */
    getDeviceInfo(): DeviceInfo;
    /**
     * @author Ahsan Ayaz
     * @desc Compares the current device info with the mobile devices to check
     * if the current device is a mobile and also check current device is tablet so it will return false.
     * @returns whether the current device is a mobile
     */
    isMobile(userAgent?: string): boolean;
    /**
     * @author Ahsan Ayaz
     * @desc Compares the current device info with the tablet devices to check
     * if the current device is a tablet.
     * @returns whether the current device is a tablet
     */
    isTablet(userAgent?: string): boolean;
    /**
     * @author Ahsan Ayaz
     * @desc Compares the current device info with the desktop devices to check
     * if the current device is a desktop device.
     * @returns whether the current device is a desktop device
     */
    isDesktop(userAgent?: string): boolean;
    /**
     * @desc Checks if the current device is a mobile device running in desktop mode.
     * Desktop mode occurs when mobile browsers request desktop websites by sending
     * desktop user agent strings while retaining mobile hardware characteristics.
     * @returns whether the current device is in desktop mode
     */
    isDesktopModeEnabled(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<DeviceDetectorService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DeviceDetectorService>;
}

/**
 * Created by ahsanayaz on 08/11/2016.
 */
declare class ReTree {
    private readonly regexCache;
    private getRegex;
    test(str: string, regex: unknown): boolean;
    exec(str: string, regex: unknown): RegExpExecArray | null;
}

export { BROWSERS, BROWSERS_RE, BROWSER_VERSIONS_RE, BROWSER_VERSIONS_RE_MAP, DESKTOP_DEVICES, DEVICES, DEVICES_RE, DeviceDetectorService, DeviceType, GENERAL, MOBILES_RE, OS, OS_RE, OS_VERSIONS, OS_VERSIONS_RE, OS_VERSIONS_RE_MAP, OrientationType, ReTree, TABLETS_RE };
export type { DeviceInfo };
