declare module "core/commonTypes" {
    export type GenericMeta = {
        [key: string]: string;
    };
    export interface SearchFilter {
        [key: string]: any;
    }
    export interface AddressObject {
        site_id?: string;
        name?: string;
        country?: string;
        region_state?: string;
        district?: string;
        sub_district?: string;
        city_town?: string;
        street_address?: string;
        landmark?: string;
        coordinates?: number[];
    }
    export interface DiagnosisQuestionItem {
        type: QuestionType;
        question: string;
        reply: string;
        score?: number;
        full_score?: number;
        remarks?: string;
        section?: string;
    }
    export enum QuestionType {
        OpenEnded = "open_ended",
        ClosedEnded = "closed_ended",
        Nominal = "nominal",
        LikertScale = "likert_scale",
        RatingScale = "rating_scale",
        YesNo = "yes_no",
        Interview = "interview",
        Other = "other"
    }
    export enum CurrencyCode {
        AED = "AED",
        AFN = "AFN",
        ALL = "ALL",
        AMD = "AMD",
        ANG = "ANG",
        AOA = "AOA",
        ARS = "ARS",
        AUD = "AUD",
        AWG = "AWG",
        AZN = "AZN",
        BAM = "BAM",
        BBD = "BBD",
        BDT = "BDT",
        BGN = "BGN",
        BHD = "BHD",
        BIF = "BIF",
        BMD = "BMD",
        BND = "BND",
        BOB = "BOB",
        BRL = "BRL",
        BSD = "BSD",
        BTN = "BTN",
        BWP = "BWP",
        BYR = "BYR",
        BZD = "BZD",
        CAD = "CAD",
        CDF = "CDF",
        CHF = "CHF",
        CLP = "CLP",
        CNY = "CNY",
        COP = "COP",
        CRC = "CRC",
        CUC = "CUC",
        CUP = "CUP",
        CVE = "CVE",
        CZK = "CZK",
        DJF = "DJF",
        DKK = "DKK",
        DOP = "DOP",
        DZD = "DZD",
        EGP = "EGP",
        ERN = "ERN",
        ETB = "ETB",
        EUR = "EUR",
        FJD = "FJD",
        FKP = "FKP",
        GBP = "GBP",
        GEL = "GEL",
        GGP = "GGP",
        GHS = "GHS",
        GIP = "GIP",
        GMD = "GMD",
        GNF = "GNF",
        GTQ = "GTQ",
        GYD = "GYD",
        HKD = "HKD",
        HNL = "HNL",
        HRK = "HRK",
        HTG = "HTG",
        HUF = "HUF",
        IDR = "IDR",
        ILS = "ILS",
        IMP = "IMP",
        INR = "INR",
        IQD = "IQD",
        IRR = "IRR",
        ISK = "ISK",
        JEP = "JEP",
        JMD = "JMD",
        JOD = "JOD",
        JPY = "JPY",
        KES = "KES",
        KGS = "KGS",
        KHR = "KHR",
        KMF = "KMF",
        KPW = "KPW",
        KRW = "KRW",
        KWD = "KWD",
        KYD = "KYD",
        KZT = "KZT",
        LAK = "LAK",
        LBP = "LBP",
        LKR = "LKR",
        LRD = "LRD",
        LSL = "LSL",
        LYD = "LYD",
        MAD = "MAD",
        MDL = "MDL",
        MGA = "MGA",
        MKD = "MKD",
        MMK = "MMK",
        MNT = "MNT",
        MOP = "MOP",
        MRO = "MRO",
        MUR = "MUR",
        MVR = "MVR",
        MWK = "MWK",
        MXN = "MXN",
        MYR = "MYR",
        MZN = "MZN",
        NAD = "NAD",
        NGN = "NGN",
        NIO = "NIO",
        NOK = "NOK",
        NPR = "NPR",
        NZD = "NZD",
        OMR = "OMR",
        PAB = "PAB",
        PEN = "PEN",
        PGK = "PGK",
        PHP = "PHP",
        PKR = "PKR",
        PLN = "PLN",
        PYG = "PYG",
        QAR = "QAR",
        RON = "RON",
        RSD = "RSD",
        RUB = "RUB",
        RWF = "RWF",
        SAR = "SAR",
        SBD = "SBD",
        SCR = "SCR",
        SDG = "SDG",
        SEK = "SEK",
        SGD = "SGD",
        SHP = "SHP",
        SLL = "SLL",
        SOS = "SOS",
        SPL = "SPL",
        SRD = "SRD",
        STD = "STD",
        SVC = "SVC",
        SYP = "SYP",
        SZL = "SZL",
        THB = "THB",
        TJS = "TJS",
        TMT = "TMT",
        TND = "TND",
        TOP = "TOP",
        TRY = "TRY",
        TTD = "TTD",
        TVD = "TVD",
        TWD = "TWD",
        TZS = "TZS",
        UAH = "UAH",
        UGX = "UGX",
        USD = "USD",
        UYU = "UYU",
        UZS = "UZS",
        VEF = "VEF",
        VND = "VND",
        VUV = "VUV",
        WST = "WST",
        XAF = "XAF",
        XCD = "XCD",
        XDR = "XDR",
        XOF = "XOF",
        XPF = "XPF",
        YER = "YER",
        ZAR = "ZAR",
        ZMW = "ZMW",
        ZWD = "ZWD"
    }
    export enum Country {
        Ascension_Island = "Ascension Island",
        Andorra = "Andorra",
        United_Arab_Emirates = "United Arab Emirates",
        Afghanistan = "Afghanistan",
        Antigua_and_Barbuda = "Antigua and Barbuda",
        Anguilla = "Anguilla",
        Albania = "Albania",
        Armenia = "Armenia",
        Netherlands_Antilles = "Netherlands Antilles",
        Angola = "Angola",
        Antarctica = "Antarctica",
        Argentina = "Argentina",
        American_Samoa = "American Samoa",
        Austria = "Austria",
        Australia = "Australia",
        Aruba = "Aruba",
        Aland_Islands = "Aland Islands",
        Azerbaijan = "Azerbaijan",
        Bosnia_and_Herzegovina = "Bosnia and Herzegovina",
        Barbados = "Barbados",
        Bangladesh = "Bangladesh",
        Belgium = "Belgium",
        Burkina_Faso = "Burkina Faso",
        Bulgaria = "Bulgaria",
        Bahrain = "Bahrain",
        Burundi = "Burundi",
        Benin = "Benin",
        Saint_Barthelemy = "Saint Barthelemy",
        Bermuda = "Bermuda",
        Brunei_Darussalam = "Brunei Darussalam",
        Bolivia = "Bolivia",
        Caribbean_Netherlands = "Caribbean Netherlands",
        Brazil = "Brazil",
        Bahamas = "Bahamas",
        Bhutan = "Bhutan",
        Burma = "Burma",
        Bouvet_Island = "Bouvet Island",
        Botswana = "Botswana",
        Belarus = "Belarus",
        Belize = "Belize",
        Canada = "Canada",
        Cocos_Islands = "Cocos Islands",
        Democratic_Republic_Congo = "Democratic Republic Congo",
        Central_African_Republic = "Central African Republic",
        Congo = "Congo",
        Switzerland = "Switzerland",
        Ivory_Coast = "Ivory Coast",
        Cook_Islands = "Cook Islands",
        Chile = "Chile",
        Cameroon = "Cameroon",
        China = "China",
        Colombia = "Colombia",
        Clipperton_Island = "Clipperton Island",
        Costa_Rica = "Costa Rica",
        Serbia_and_Montenegro = "Serbia and Montenegro",
        Cuba = "Cuba",
        Cape_Verde = "Cape Verde",
        Curacao = "Curacao",
        Christmas_Island = "Christmas Island",
        Cyprus = "Cyprus",
        Czech_Republic = "Czech Republic",
        Germany = "Germany",
        Diego_Garcia = "Diego Garcia",
        Djibouti = "Djibouti",
        Denmark = "Denmark",
        Dominica = "Dominica",
        Dominican_Republic = "Dominican Republic",
        Algeria = "Algeria",
        Ceuta_Melilla = "Ceuta Melilla",
        Ecuador = "Ecuador",
        Estonia = "Estonia",
        Egypt = "Egypt",
        Western_Sahara = "Western Sahara",
        Eritrea = "Eritrea",
        Spain = "Spain",
        Ethiopia = "Ethiopia",
        European_Union = "European Union",
        Eurozone = "Eurozone",
        Finland = "Finland",
        Fiji = "Fiji",
        Malvinas = "Malvinas",
        Micronesia = "Micronesia",
        Faroe_Islands = "Faroe Islands",
        France = "France",
        France_Metropolitan = "France Metropolitan",
        Gabon = "Gabon",
        United_Kingdom = "United Kingdom",
        Grenada = "Grenada",
        Georgia = "Georgia",
        French_Guiana = "French Guiana",
        Guernsey = "Guernsey",
        Ghana = "Ghana",
        Gibraltar = "Gibraltar",
        Greenland = "Greenland",
        Gambia = "Gambia",
        Guinea = "Guinea",
        Guadeloupe = "Guadeloupe",
        Equatorial_Guinea = "Equatorial Guinea",
        Greece = "Greece",
        South_Georgia_and_South_Sandwich_Islands = "South Georgia and South Sandwich Islands",
        Guatemala = "Guatemala",
        Guam = "Guam",
        Guinea_Bissau = "Guinea Bissau",
        Guyana = "Guyana",
        Hong_Kong = "Hong Kong",
        Heard_Island_and_McDonald_Islands = "Heard Island and McDonald Islands",
        Honduras = "Honduras",
        Croatia = "Croatia",
        Haiti = "Haiti",
        Hungary = "Hungary",
        Canary_Islands = "Canary Islands",
        Indonesia = "Indonesia",
        Ireland = "Ireland",
        Israel = "Israel",
        Isle_of_Man = "Isle of Man",
        India = "India",
        British_Indian_Ocean_Territory = "British Indian Ocean Territory",
        Iraq = "Iraq",
        Iran = "Iran",
        Iceland = "Iceland",
        Italy = "Italy",
        Jersey = "Jersey",
        Jamaica = "Jamaica",
        Jordan = "Jordan",
        Japan = "Japan",
        Kenya = "Kenya",
        Kyrgyzstan = "Kyrgyzstan",
        Cambodia = "Cambodia",
        Kiribati = "Kiribati",
        Comoros = "Comoros",
        Saint_Kitts_and_Nevis = "Saint Kitts and Nevis",
        North_Korea = "North Korea",
        South_Korea = "South Korea",
        Kuwait = "Kuwait",
        Cayman_Islands = "Cayman Islands",
        Kazakhstan = "Kazakhstan",
        Lao = "Lao",
        Lebanon = "Lebanon",
        Saint_Lucia = "Saint Lucia",
        Liechtenstein = "Liechtenstein",
        Sri_Lanka = "Sri Lanka",
        Liberia = "Liberia",
        Lesotho = "Lesotho",
        Lithuania = "Lithuania",
        Luxembourg = "Luxembourg",
        Latvia = "Latvia",
        Libya = "Libya",
        Morocco = "Morocco",
        Monaco = "Monaco",
        Moldova = "Moldova",
        Montenegro = "Montenegro",
        Saint_Martin = "Saint Martin",
        Madagascar = "Madagascar",
        Marshall_Islands = "Marshall Islands",
        North_Macedonia = "North Macedonia",
        Mali = "Mali",
        Myanmar = "Myanmar",
        Mongolia = "Mongolia",
        Macao = "Macao",
        Northern_Mariana_Islands = "Northern Mariana Islands",
        Martinique = "Martinique",
        Mauritania = "Mauritania",
        Montserrat = "Montserrat",
        Malta = "Malta",
        Mauritius = "Mauritius",
        Maldives = "Maldives",
        Malawi = "Malawi",
        Mexico = "Mexico",
        Malaysia = "Malaysia",
        Mozambique = "Mozambique",
        Namibia = "Namibia",
        New_Caledonia = "New Caledonia",
        Niger = "Niger",
        Norfolk_Island = "Norfolk Island",
        Nigeria = "Nigeria",
        Nicaragua = "Nicaragua",
        Netherlands = "Netherlands",
        Norway = "Norway",
        Nepal = "Nepal",
        Nauru = "Nauru",
        Neutral_Zone = "Neutral Zone",
        Niue = "Niue",
        New_Zealand = "New Zealand",
        Oman = "Oman",
        Panama = "Panama",
        Peru = "Peru",
        French_Polynesia = "French Polynesia",
        Papua_New_Guinea = "Papua New Guinea",
        Philippines = "Philippines",
        Pakistan = "Pakistan",
        Poland = "Poland",
        Saint_Pierre_and_Miquelon = "Saint Pierre and Miquelon",
        Pitcairn = "Pitcairn",
        Puerto_Rico = "Puerto Rico",
        Palestine = "Palestine",
        Portugal = "Portugal",
        Palau = "Palau",
        Paraguay = "Paraguay",
        Qatar = "Qatar",
        Reunion = "Reunion",
        Romania = "Romania",
        Serbia = "Serbia",
        Russia = "Russia",
        Rwanda = "Rwanda",
        Saudi_Arabia = "Saudi Arabia",
        Solomon_Islands = "Solomon Islands",
        Seychelles = "Seychelles",
        Sudan = "Sudan",
        Sweden = "Sweden",
        Singapore = "Singapore",
        Saint_Helena = "Saint Helena",
        Slovenia = "Slovenia",
        Svalbard = "Svalbard",
        Slovakia = "Slovakia",
        Sierra_Leone = "Sierra Leone",
        San_Marino = "San Marino",
        Senegal = "Senegal",
        Somalia = "Somalia",
        Suriname = "Suriname",
        South_Sudan = "South Sudan",
        Sao_Tome_and_Principe = "Sao Tome and Principe",
        USSR = "USSR",
        El_Salvador = "El Salvador",
        Sint_Maarten = "Sint Maarten",
        Syria = "Syria",
        Eswatini = "Eswatini",
        Turks_and_Caicos_Islands = "Turks and Caicos Islands",
        French_Southern_Territories = "French Southern Territories",
        Togo = "Togo",
        Thailand = "Thailand",
        Tajikistan = "Tajikistan",
        Tokelau = "Tokelau",
        Timor_Leste = "Timor Leste",
        Turkmenistan = "Turkmenistan",
        Tunisia = "Tunisia",
        Tonga = "Tonga",
        East_Timor = "East Timor",
        Turkey = "Turkey",
        Trinidad_and_Tobago = "Trinidad and Tobago",
        Tuvalu = "Tuvalu",
        Taiwan = "Taiwan",
        Tanzania = "Tanzania",
        Ukraine = "Ukraine",
        Uganda = "Uganda",
        United_States_Minor_Outlying_Islands = "United States Minor Outlying Islands",
        United_States = "United States",
        Uruguay = "Uruguay",
        Uzbekistan = "Uzbekistan",
        Vatican = "Vatican",
        Saint_Vincent_and_Grenadines = "Saint Vincent and Grenadines",
        Venezuela = "Venezuela",
        British_Virgin_Islands = "British Virgin Islands",
        US_Virgin_Islands = "US Virgin Islands",
        Vietnam = "Vietnam",
        Vanuatu = "Vanuatu",
        Wallis_and_Futuna = "Wallis and Futuna",
        Samoa = "Samoa",
        Northern_Ireland = "Northern Ireland",
        Kosovo = "Kosovo",
        Yemen = "Yemen",
        Mayotte = "Mayotte",
        Yugoslavia = "Yugoslavia",
        South_Africa = "South Africa",
        Zambia = "Zambia",
        Zaire = "Zaire",
        Zimbabwe = "Zimbabwe"
    }
    export enum Language {
        Afar = "Afar",
        Abkhaz = "Abkhaz",
        Avestan = "Avestan",
        Afrikaans = "Afrikaans",
        Akan = "Akan",
        Amharic = "Amharic",
        Aragonese = "Aragonese",
        Arabic = "Arabic",
        Avaric = "Avaric",
        Aymara = "Aymara",
        Azerbaijani = "Azerbaijani",
        Bashkir = "Bashkir",
        Belarusian = "Belarusian",
        Bulgarian = "Bulgarian",
        Bihari = "Bihari",
        Bislama = "Bislama",
        Bambara = "Bambara",
        Bengali = "Bengali",
        Tibetan = "Tibetan",
        Breton = "Breton",
        Bosnian = "Bosnian",
        Catalan = "Catalan",
        Chechen = "Chechen",
        Chamorro = "Chamorro",
        Corsican = "Corsican",
        Cree = "Cree",
        Czech = "Czech",
        Slavonic = "Slavonic",
        Chuvash = "Chuvash",
        Welsh = "Welsh",
        Danish = "Danish",
        German = "German",
        Maldivian = "Maldivian",
        Dzongkha = "Dzongkha",
        Ewe = "Ewe",
        Greek = "Greek",
        English = "English",
        Esperanto = "Esperanto",
        Spanish = "Spanish",
        Estonian = "Estonian",
        Basque = "Basque",
        Persian = "Persian",
        Fulah = "Fulah",
        Finnish = "Finnish",
        Fijian = "Fijian",
        Faroese = "Faroese",
        French = "French",
        Western_Frisian = "Western_Frisian",
        Irish = "Irish",
        Gaelic = "Gaelic",
        Galician = "Galician",
        Guarani = "Guarani",
        Gujarati = "Gujarati",
        Manx = "Manx",
        Hausa = "Hausa",
        Hebrew = "Hebrew",
        Hindi = "Hindi",
        Hiri_Motu = "Hiri_Motu",
        Croatian = "Croatian",
        Haitian = "Haitian",
        Hungarian = "Hungarian",
        Armenian = "Armenian",
        Herero = "Herero",
        Interlingua = "Interlingua",
        Indonesian = "Indonesian",
        Occidental = "Occidental",
        Igbo = "Igbo",
        Nuosu = "Nuosu",
        Inupiaq = "Inupiaq",
        Ido = "Ido",
        Icelandic = "Icelandic",
        Italian = "Italian",
        Inuktitut = "Inuktitut",
        Japanese = "Japanese",
        Javanese = "Javanese",
        Georgian = "Georgian",
        Kongo = "Kongo",
        Kikuyu = "Kikuyu",
        Kuanyama = "Kuanyama",
        Kazakh = "Kazakh",
        Greenlandic = "Greenlandic",
        Central_Khmer = "Central_Khmer",
        Kannada = "Kannada",
        Korean = "Korean",
        Kanuri = "Kanuri",
        Kashmiri = "Kashmiri",
        Kurdish = "Kurdish",
        Komi = "Komi",
        Cornish = "Cornish",
        Kirghiz = "Kirghiz",
        Latin = "Latin",
        Luxembourgish = "Luxembourgish",
        Ganda = "Ganda",
        Limburgish = "Limburgish",
        Lingala = "Lingala",
        Lao = "Lao",
        Lithuanian = "Lithuanian",
        Luba_katanga = "Luba_katanga",
        Latvian = "Latvian",
        Malagasy = "Malagasy",
        Marshallese = "Marshallese",
        Maori = "Maori",
        Macedonian = "Macedonian",
        Malayalam = "Malayalam",
        Mongolian = "Mongolian",
        Moldavian = "Moldavian",
        Marathi = "Marathi",
        Malay = "Malay",
        Maltese = "Maltese",
        Burmese = "Burmese",
        Nauruan = "Nauruan",
        Norwegian_Bokmal = "Norwegian_Bokmal",
        North_Ndebele = "North_Ndebele",
        Nepali = "Nepali",
        Ndonga = "Ndonga",
        Dutch = "Dutch",
        Norwegian_Nynorsk = "Norwegian_Nynorsk",
        Norwegian = "Norwegian",
        South_Ndebele = "South_Ndebele",
        Navajo = "Navajo",
        Nyanja = "Nyanja",
        Occitan = "Occitan",
        Ojibwa = "Ojibwa",
        Oromo = "Oromo",
        Oriya = "Oriya",
        Ossetian = "Ossetian",
        Punjabi = "Punjabi",
        Pali = "Pali",
        Polish = "Polish",
        Pushto = "Pushto",
        Portuguese = "Portuguese",
        Quechua = "Quechua",
        Reunionese = "Reunionese",
        Romansh = "Romansh",
        Rundi = "Rundi",
        Romanian = "Romanian",
        Russian = "Russian",
        Kinyarwanda = "Kinyarwanda",
        Sanskrit = "Sanskrit",
        Sardinian = "Sardinian",
        Sindhi = "Sindhi",
        Northern_Sami = "Northern Sami",
        Sango = "Sango",
        Slavic = "Slavic_Languages",
        Sinhalese = "Sinhalese",
        Slovak = "Slovak",
        Slovenian = "Slovenian",
        Samoan = "Samoan",
        Shona = "Shona",
        Somali = "Somali",
        Albanian = "Albanian",
        Serbian = "Serbian",
        Swati = "Swati",
        Southern_Sotho = "Southern Sotho",
        Sundanese = "Sundanese",
        Swedish = "Swedish",
        Swahili = "Swahili",
        Tamil = "Tamil",
        Telugu = "Telugu",
        Tajik = "Tajik",
        Thai = "Thai",
        Tigrinya = "Tigrinya",
        Turkmen = "Turkmen",
        Tagalog = "Tagalog",
        Tswana = "Tswana",
        Tongan = "Tongan",
        Turkish = "Turkish",
        Tsonga = "Tsonga",
        Tatar = "Tatar",
        Twi = "Twi",
        Tahitian = "Tahitian",
        Uighur = "Uighur",
        Ukrainian = "Ukrainian",
        Urdu = "Urdu",
        Uzbek = "Uzbek",
        Venda = "Venda",
        Vietnamese = "Vietnamese",
        Volapuk = "Volapuk",
        Walloon = "Walloon",
        Wolof = "Wolof",
        Xhosa = "Xhosa",
        Yiddish = "Yiddish",
        Yoruba = "Yoruba",
        Zhuang = "Zhuang",
        Chinese = "Chinese",
        Zulu = "Zulu"
    }
    export enum CfLogEvents {
        NudgeAction = "nudge-action"
    }
    export enum CfLogEventType {
        Redirect = "redirect",
        AddToCart = "add_to_cart"
    }
    export enum NudgeScreenType {
        None = "",
        Home = "home",
        Search = "search",
        Product = "product",
        Cart = "cart",
        Checkout = "checkout",
        Reminder = "reminder",
        Favorite = "favorite",
        Other = "other"
    }
}
declare module "modules/ECommerce/typings" {
    import { CurrencyCode } from "core/commonTypes";
    import { GenericMeta } from "core/commonTypes";
    export type ISO8601Format = string;
    export enum ECommerceTypes {
        CancelCheckout = "cancel_checkout",
        Cart = "cart",
        Checkout = "checkout",
        Delivery = "delivery",
        Item = "item",
        ItemReport = "item_report",
        ItemRequest = "item_request",
        ItemVerification = "item_verification"
    }
    export enum ECommerceCatalogType {
        Drug = "drug",
        Grocery = "grocery",
        Blood = "blood",
        Oxygen = "oxygen",
        MedicalEquipment = "medical_equipment",
        Facility = "facility"
    }
    export enum ItemAction {
        View = "view",
        Detail = "detail",
        Impression = "impression",
        TopUp = "top_up",
        Cancel = "cancel",
        Update = "update",
        Remove = "remove",
        Add = "add",
        Select = "select",
        AddFavorite = "add_favorite",
        RemoveFavorite = "remove_favorite",
        AddReminder = "add_reminder",
        RemoveReminder = "remove_reminder",
        RemoveReminderAuto = "remove_reminder_auto",
        Other = "other"
    }
    export enum ItemType {
        Blood = "blood",
        Book = "book",
        Clothing = "clothing",
        Drug = "drug",
        Grocery = "grocery",
        Subscription = "subscription",
        Facility = "facility",
        Electronics = "electronics",
        MedicalEquipment = "medical_equipment",
        Misc = "misc",
        Oxygen = "oxygen",
        ItemVerification = "item_verification",
        ItemReport = "item_report",
        Reward = "reward",
        Survey = "survey",
        Other = "other"
    }
    export enum ScanChannel {
        App = "app",
        Ussd = "ussd"
    }
    export enum ScanType {
        Pin = "pin",
        QrCode = "qr_code"
    }
    export enum StockStatus {
        InStock = "in_stock",
        LowStock = "low_stock",
        OutOfStock = "out_of_stock"
    }
    export type ItemObject = {
        id: string;
        type: ItemType;
        quantity: number;
        price: number;
        currency: CurrencyCode;
        stock_status?: StockStatus;
        promo_id?: string;
        facility_id?: string;
        discount?: number;
    };
    export interface ItemProperties {
        action: ItemAction;
        item: ItemObject;
        meta?: GenericMeta;
    }
    export interface StoreObject {
        id: string;
        lat?: number;
        lon?: number;
    }
    export enum CartAction {
        AddItem = "add_item",
        RemoveItem = "remove_item"
    }
    export interface CartProperties {
        cart_id: string;
        action: CartAction;
        item: ItemObject;
        meta?: GenericMeta;
    }
    export enum ListAction {
        Add = "add_item",
        Discard = "discard",
        Edit = "edit_item",
        Remove = "remove_item",
        View = "view",
        Expired = "expired"
    }
    export enum ListType {
        Cart = "cart",
        Favourite = "favourite",
        Order = "order",
        Reminder = "reminder"
    }
    export enum ShopMode {
        Delivery = "delivery",
        Pickup = "pickup"
    }
    export interface CheckoutProperties {
        order_id: string;
        is_successful: boolean;
        cart_price: number;
        items: ItemObject[];
        cart_id: string;
        shop_mode?: ShopMode;
        meta?: any;
    }
    export interface CheckoutInternalProperties {
        order_id: string;
        is_successful: boolean;
        cart_price: number;
        items: any;
        cart_id: string;
        shop_mode?: ShopMode;
        meta?: any;
    }
    export enum DeliveryAction {
        Schedule = "schedule",
        Update = "update",
        Dispatch = "dispatch",
        Delivered = "delivered"
    }
    export interface DeliveryProperties {
        delivery_id: string;
        order_id: string;
        is_urgent: boolean;
        action: DeliveryAction;
        est_delivery_ts?: string;
        delivery_coordinates?: number[];
        dispatch_coordinates?: number[];
        meta?: GenericMeta;
    }
    export interface DrugCatalog {
        market_id: string;
        name: string;
        description?: string;
        supplier_id: string;
        supplier_name: string;
        producer?: string;
        packaging?: string;
        active_ingredients: string[];
        drug_form?: string;
        drug_strength?: string;
        atc_anatomical_group?: string;
        otc_or_ethical?: string;
        meta?: GenericMeta;
    }
    export interface GroceryCatalog {
        name: string;
        description?: string;
        category?: string;
        active_ingredients?: string[];
        market_id?: string;
        packaging?: string;
        packaging_size?: number;
        packaging_units?: string;
        producer?: string;
        supplier_id?: string;
        supplier_name?: string;
        meta?: GenericMeta;
    }
    export interface FacilityCatalog {
        name: string;
        type?: string;
        country?: string;
        region_state?: string;
        city?: string;
        is_active?: boolean;
        has_delivery?: boolean;
        is_sponsored?: boolean;
        meta?: GenericMeta;
    }
    export enum CancelType {
        Cart = "cart",
        Order = "order"
    }
    export interface CancelCheckoutProperties {
        cancel_type_id: string;
        type: CancelType;
        items: string[];
        reason: string;
        meta?: GenericMeta;
    }
    export interface ItemReportProperties {
        item_id: string;
        item_type: ItemType;
        report_id: string;
        report_remarks: string;
        store_id: string;
        meta?: GenericMeta;
    }
    export interface ItemRequestProperties {
        item_id: string;
        item_name: string;
        manufacturer: string;
    }
    export interface ItemInfoObject {
        id: string;
        type: ItemType;
        batch_id?: string;
        reward_id?: string;
        survey_id?: string;
        is_featured?: boolean;
        expiry_date?: number;
        production_date?: number;
    }
    export interface ItemVerificationProperties {
        scan_channel: ScanChannel;
        scan_type: ScanType;
        is_successful: boolean;
        item_info: ItemInfoObject;
    }
}
declare module "modules/Loyalty/typings" {
    import { GenericMeta } from "core/commonTypes";
    export enum LoyaltyTypes {
        Survey = "survey",
        Reward = "reward",
        Level = "level",
        Milestone = "milestone",
        Promo = "promo"
    }
    export enum LoyaltyCatalogSubject {
        Survey = "survey",
        Reward = "reward"
    }
    export enum PromoAction {
        Apply = "apply",
        View = "view",
        Other = "other"
    }
    export enum PromoType {
        AddToCart = "add_to_cart",
        Coupon = "coupon",
        Other = "other"
    }
    export enum PromoItemType {
        Blood = "blood",
        Book = "book",
        Clothing = "clothing",
        Drug = "drug",
        Grocery = "grocery",
        Electronics = "electronics",
        Misc = "misc",
        Oxygen = "oxygen",
        Subscription = "subscription",
        Facility = "facility",
        Other = "other"
    }
    export enum SurveyType {
        OpenEnded = "open_ended",
        ClosedEnded = "closed_ended",
        Nominal = "nominal",
        LikertScale = "likert_scale",
        RatingScale = "rating_scale",
        YesNo = "yes_no",
        Interview = "interview",
        Other = "other"
    }
    export enum SurveyAction {
        View = "view",
        Impression = "impression",
        Start = "start",
        Submit = "submit",
        Other = "other"
    }
    export enum RewardAction {
        View = "view",
        Add = "add",
        Redeem = "redeem",
        Other = "other"
    }
    export enum RedeemType {
        Cash = "cash",
        Airtime = "airtime",
        Other = "other"
    }
    export interface PromoProperties {
        promo_id: string;
        action: PromoAction;
        items_list: string[];
        title: string;
        type: PromoType;
        meta?: any;
    }
    export interface LevelProperties {
        prev_level: number;
        new_level: number;
        module_id?: string;
        meta?: any;
    }
    export enum MilestoneAction {
        Achieved = "achieved",
        Other = "other"
    }
    export interface MilestoneProperties {
        milestone_id: string;
        action: MilestoneAction;
        meta?: any;
    }
    export interface SurveyProperties {
        action: SurveyAction;
        survey_id: string;
        is_completed: boolean;
        reward_id: string;
        type: SurveyType;
        survey_questions: string[];
        response_list: string[];
        meta?: any;
    }
    export interface RewardProperties {
        reward_id: string;
        action: RewardAction;
        acc_points?: number;
        total_points: number;
        redeem_type?: string;
        redeem_points_withdrawn?: number;
        redeem_converted_value?: number;
        redeem_currency?: string;
        redeem_is_successful?: boolean;
        meta?: any;
    }
    export interface SurveyCatalog {
        name: string;
        description?: string;
        type: string;
        duration?: number;
        organization_id?: string;
        organization_name?: string;
        questions_list: string[];
        reward_id: string;
        creation_date?: string;
        expiry_date?: string;
        meta?: GenericMeta;
    }
    export interface RewardCatalog {
        name: string;
        description?: string;
        type: string;
        required_points: number;
        creation_date?: string;
        expiry_date?: string;
        organization_id?: string;
        organization_name?: string;
    }
}
declare module "modules/ELearning/typings" {
    export enum ELearningTypes {
        Module = "module",
        Question = "question",
        Exam = "exam"
    }
    export enum ExamAction {
        Start = "start",
        Submit = "submit",
        Result = "result",
        Other = "other"
    }
    export interface ExamProperties {
        exam_id: string;
        action: ExamAction;
        duration?: number;
        score?: number;
        is_passed?: boolean;
        meta?: any;
    }
    export enum ModuleAction {
        View = "view",
        Other = "other"
    }
    export interface ModuleProperties {
        module_id: string;
        progress: number;
        action: ModuleAction;
        meta?: any;
    }
    export enum QuestionAction {
        Answer = "answer",
        Skip = "skip",
        Other = "other"
    }
    export interface QuestionProperties {
        question_id: string;
        exam_id: string;
        action: QuestionAction;
        answer_id: string;
        meta?: any;
    }
}
declare module "modules/CallCenter/typings" {
    export enum CallCenterEventType {
        Break = "break",
        Contact = "contact",
        OpsScorecard = "ops_scorecard"
    }
    export enum CallCenterAction {
        View = "view",
        Add = "add",
        Update = "update",
        Remove = "remove",
        Start = "start",
        End = "end",
        Pause = "pause",
        Resume = "resume",
        Attend = "attend",
        Decline = "decline",
        Terminate = "terminate",
        Transfer = "transfer",
        Skip = "skip",
        Other = "other"
    }
    export enum BreakType {
        BioBreak = "bio_break",
        Feedback = "feedback",
        Meeting = "meeting",
        Meal = "meal",
        Tea = "tea",
        Other = "other"
    }
    export enum ContactChannel {
        Call = "call",
        WhatsApp = "whatsapp",
        SMS = "sms",
        Email = "email",
        Other = "other"
    }
    export enum ContactType {
        Emergency = "emergency",
        Grievance = "grievance",
        NonEmergency = "non_emergency",
        Transfer = "transfer",
        FollowUp = "follow_up",
        ServiceOffering = "service_offering",
        CustomerSupport = "customer_support",
        Other = "other"
    }
    export interface BreakProperties {
        type: BreakType;
        sub_type?: string;
        action: CallCenterAction;
        total_time: number;
        consumed_time: number;
        meta?: any;
    }
    export interface ContactProperties {
        action: CallCenterAction;
        contact_id: string;
        contact_channel: ContactChannel;
        contact_type: ContactType;
        contact_start_time?: string;
        contact_sub_type?: string;
        contact_is_valid?: boolean;
        contact_is_transfer?: boolean;
        contact_incident_id?: string;
        contact_customer_id?: string;
        contact_customer_type?: string;
        contact_phone_id?: string;
        contact_extension?: string;
        contact_duration?: number;
        contact_resolution?: string;
        contact_summary?: string;
        contact_remarks?: string;
        contact_is_priority?: boolean;
        transfer_id?: string;
        transfer_destination?: string;
        transfer_summary?: string;
        transfer_remarks?: string;
        meta?: any;
    }
    export interface OpsScorecardProperties {
        audit_count: number;
        quality_score?: number;
        fatal_calls?: number;
        fatal_score?: number;
        performance_group: string;
        remarks?: string;
        meta?: any;
    }
}
declare module "modules/EmergencyMgmt/typings" {
    import { Language } from "core/commonTypes";
    export enum EmergencyMgmtEventType {
        Incident = "incident",
        Ambulance = "ambulance"
    }
    export enum EmergencyMgmtCatalogType {
        ERO = "user_ero",
        Ambulance = "ambulance"
    }
    export enum EmergencyMgmtItemAction {
        View = "view",
        Add = "add",
        Update = "update",
        Remove = "remove",
        Start = "start",
        End = "end",
        Pause = "pause",
        Resume = "resume",
        Attend = "attend",
        Decline = "decline",
        Terminate = "terminate",
        Transfer = "transfer",
        Skip = "skip",
        Dispatch = "dispatch",
        Denial = "denial",
        Other = "other"
    }
    export enum IncidentType {
        Emergency = "emergency",
        Grievance = "grievance",
        NonEmergency = "non_emergency",
        Transfer = "transfer",
        FollowUp = "follow_up",
        ServiceOffering = "service_offering",
        CustomerSupport = "customer_support",
        Other = "other"
    }
    export enum AmbulanceStatus {
        Available = "available",
        Busy = "busy",
        Maintenance = "maintenance",
        Other = "other"
    }
    export interface IncidentProperties {
        action: EmergencyMgmtItemAction;
        patient_id?: string;
        age?: number;
        blood_group?: string;
        gender?: string;
        incident_id: string;
        contact_id?: string;
        type: IncidentType;
        sub_type?: string;
        category?: string[];
        language?: Language;
        is_duplicate_incident?: boolean;
        is_sms_set_location?: boolean;
        severity?: string;
        chief_complaints_list?: string[];
        site_id?: string;
        name?: string;
        country?: string;
        region_state?: string;
        district?: string;
        sub_district?: string;
        city_town?: string;
        street_address?: string;
        landmark?: string;
        coordinates?: number[];
        facility_id?: string;
        ambulance_ids_list?: string[];
        schedule_time?: number;
        status?: string;
        resolution?: string;
        summary?: string;
        remarks?: string;
        meta?: any;
    }
    export interface AmbulanceProperties {
        incident_id?: string;
        contact_id?: string;
        action: EmergencyMgmtItemAction;
        ambulance_id: string;
        driver_id: string;
        emso_id?: string;
        type: string;
        distance_from_incident?: number;
        status: AmbulanceStatus;
        eta?: number;
        gps_datetime?: string;
        location?: string;
        destination_site_id?: string;
        destination_name?: string;
        destination_country?: string;
        destination_region_state?: string;
        destination_district?: string;
        destination_sub_district?: string;
        destination_city_town?: string;
        destination_street_address?: string;
        destination_landmark?: string;
        destination_coordinates?: number[];
        pickup_site_id?: string;
        pickup_name?: string;
        pickup_country?: string;
        pickup_region_state?: string;
        pickup_district?: string;
        pickup_sub_district?: string;
        pickup_city_town?: string;
        pickup_street_address?: string;
        pickup_landmark?: string;
        pickup_coordinates?: number[];
        denial_author?: string;
        denial_reason: string;
        denial_remarks?: string;
        meta?: any;
    }
    export interface EROCatalog {
        joining_date?: string;
        status: string;
        employee_type?: string;
        zone?: string;
        site_id_list?: string[];
        supervisor_id_list?: string[];
    }
    export interface AmbulanceCatalog {
        type: string;
        base_site_id?: string;
        base_site_name?: string;
        base_site_district?: string;
    }
}
declare module "modules/Navigation/typings" {
    import { Country, GenericMeta, Language, SearchFilter } from "core/commonTypes";
    import { ItemType } from "modules/ECommerce/typings";
    export enum NavigationTypes {
        App = "app",
        Identify = "identify",
        Media = "media",
        ActionResponse = "action_response",
        Page = "page",
        Rate = "rate",
        Search = "search",
        ModuleSelection = "module_selection",
        Track = "track"
    }
    export enum CoreCatalogType {
        User = "user",
        Site = "site",
        Media = "media",
        Other = "other"
    }
    export enum ContentBlock {
        Core = "core",
        ELearning = "e-learning",
        ECommerce = "e-commerce",
        Payment = "payment",
        Loyalty = "loyalty",
        PatientMgmt = "patient_mgmt",
        CallCenter = "call_center",
        EmergencyMgmt = "emergency_mgmt"
    }
    export enum ModuleType {
        Core = "core",
        ECommerce = "e_commerce",
        ELearning = "e_learning",
        Screening = "screening",
        Assessment = "assessment",
        Enrolment = "enrolment",
        MedicalReview = "medical_review",
        MyPatients = "my_patients",
        Appointments = "appointments",
        Prescription = "prescription",
        LifestyleMgmt = "lifestyle_mgmt",
        PsychologicalMgmt = "psychological_mgmt",
        CounselingMgmt = "counseling_mgmt",
        Investigation = "investigation",
        TreatmentPlan = "treatment_plan",
        Transfers = "transfers",
        HCWMgmt = "hcw_mgmt",
        Break = "break",
        CallerHistory = "caller_history",
        AttendCall = "attend_call",
        Single = "single",
        Dashboard = "dashboard",
        Map = "map",
        Other = "other"
    }
    export enum SearchModuleType {
        Core = "core",
        ECommerce = "e_commerce",
        ELearning = "e_learning",
        Other = "other"
    }
    export enum AppAction {
        Background = "background",
        Close = "close",
        Open = "open",
        Resume = "resume"
    }
    export enum IdentityAction {
        Login = "login",
        Logout = "logout",
        Register = "register",
        Blocked = "blocked",
        UnBlocked = "unblocked"
    }
    export enum MediaAction {
        View = "view",
        Impression = "impression",
        Play = "play",
        Pause = "pause",
        Seek = "seek",
        Finish = "finish"
    }
    export enum MembersCount {
        None = "none",
        One = "1",
        Two = "2",
        Three = "3",
        Four = "4",
        FiveOrMore = "5_or_more",
        Undisclosed = "undisclosed"
    }
    export enum UserGender {
        Male = "male",
        Female = "female",
        Other = "other",
        UnDisclosed = "undisclosed"
    }
    export enum SearchItemType {
        PatientRecord = "patient_record",
        LifestylePlanItem = "lifestyle_plan_item",
        TreatmentPlanItem = "treatment_plan_item",
        PsychologicalPlanItem = "psychological_plan_item",
        CounselingPlanItem = "counseling_plan_item",
        InvestigationTestItem = "investigation_test_item",
        Blood = "blood",
        Oxygen = "oxygen",
        Drug = "drug",
        Grocery = "grocery",
        Facility = "facility",
        MedicalEquipment = "medical_equipment",
        Subscription = "subscription",
        Electronics = "electronics",
        Clothing = "clothing",
        Book = "book",
        ItemVerification = "item_verification",
        ItemReport = "item_report",
        Reward = "reward",
        Survey = "survey",
        Incident = "incident",
        Address = "address",
        Ambulance = "ambulance",
        OtherVehicle = "other_vehicle",
        Contact = "contact",
        Call = "call",
        Email = "email",
        SMS = "sms",
        Other = "other"
    }
    export enum MaritalStatus {
        Single = "single",
        Married = "married",
        Widowed = "widowed",
        Divorced = "divorced",
        Separated = "separated",
        Other = "other",
        UnDisclosed = "undisclosed"
    }
    export interface AppProperties {
        action: AppAction;
        start_time: number;
    }
    export interface IdentifyProperties {
        action: IdentityAction;
        referral_code?: string;
        blocked?: IdentifyBlockObject;
    }
    export interface IdentifyBlockObject {
        reason: string;
        remarks?: string;
    }
    export interface UserInfo extends IdentifyProperties {
        user_props: UserCatalog;
    }
    export type ImageProperties = {
        /**
         * The block or module where the media is embedded. For example,
         * 'e-learning' if the media is included as an activity
         * of the course
         *
         */
        contentBlock?: ContentBlock;
        type: MediaType;
        id: string;
        action: MediaAction;
        seek_time?: number;
        meta?: GenericMeta;
    };
    export enum MediaType {
        Audio = "audio",
        Video = "video",
        Image = "image"
    }
    export type AudioVideoProperties = {
        /**
         * The block or module where the media is embedded. For example,
         * 'e-learning' if the video or audio is included as an activity
         * of the course
         *
         */
        contentBlock?: ContentBlock;
        type: MediaType;
        id: string;
        action: MediaAction;
        seek_time: number;
        meta?: GenericMeta;
    };
    export type MediaProperties = ImageProperties | AudioVideoProperties;
    export type MediaCatalog = {
        id: string;
        type: MediaType;
        name?: string;
        length: string;
        description?: string;
        resolution?: string;
        language?: Language;
    };
    export interface PageProperties {
        path: string;
        title?: string;
        duration?: number;
        render_time: number;
        meta?: GenericMeta;
    }
    export enum SiteCatalogType {
        Pharmacy = "pharmacy",
        Clinic = "clinic",
        Community = "community"
    }
    /**
     * This interface represents the information related to
     * a search
     */
    export interface SearchProperties {
        /**
         * Free text introduced by the user to search
         */
        query: string;
        module: ModuleType;
        /**
         * Current list of items IDs obtained for this search and page.
         * If the user have pressed in a new page number, of scroll down
         * and the web automatically retrieved new item, include here only
         * the new ones
         */
        results_list: string[];
        /**
         * If the search engine allow to select specific value to search
         * in a selectable list, include here an object whose keys are the
         * attributes to search, and the values the actual values that must
         * match
         */
        filter?: SearchFilter;
        /**
         * If the search results are shown paginated, or with infinite scroll,
         * this field represent the number of page/subset the current result_ids
         * belongs to
         */
        page: number;
        /**
         * Any other additional information to be available in the logs
         */
        meta?: GenericMeta;
    }
    export enum EducationalLevel {
        Primary = "primary",
        LowerSecondary = "lower_secondary",
        UpperSecondary = "upper_secondary",
        NonTertiary = "non_tertiary",
        Tertiary = "tertiary",
        Bachelors = "bachelors",
        Masters = "masters",
        Doctorate = "doctorate"
    }
    export enum UserAccountType {
        Basic = "basic",
        Classic = "classic",
        Advanced = "advanced",
        Other = "other"
    }
    export interface UserCatalog {
        name?: string;
        organization_id?: string;
        organization_name?: string;
        experience?: string;
        region_state?: string;
        city?: string;
        workplace?: string;
        profession?: string;
        zipcode?: string;
        /**
         * ISO 8601 string (ie.: +0200)
         * Generated automatically by the SDK
         */
        timezone?: string;
        /**
         * country which the user is, represented as
         * two characters in ISO 3166
         */
        country?: Country;
        /**
         * iSO 639-1
         */
        language?: Language;
        education_level?: EducationalLevel;
        account_type?: UserAccountType;
        birth_year?: number;
        gender?: UserGender;
        marital_status?: MaritalStatus;
        family_members?: MembersCount;
        children_under_five?: MembersCount;
        referral_code?: string;
    }
    export interface SiteCatalog {
        name: string;
        type: SiteCatalogType;
        country?: Country;
        region_state?: string;
        city?: string;
        street_address?: string;
        zipcode?: string;
        level?: string;
        is_active?: boolean;
        latitude?: number;
        longitude?: number;
        culture?: string;
        parent_id?: string;
        service_list?: string[];
        sub_type?: string;
        priority?: string;
        is_private?: boolean;
        district?: string;
        sub_district?: string;
        landmark?: string;
        attributes?: SiteAttributes;
    }
    export interface SiteAttributes {
        bed_number?: number;
        insurance_plan_lst?: string[];
    }
    export enum RateType {
        App = "app",
        Exam = "exam",
        Question = "question",
        Module = "module",
        Process = "process",
        Form = "form",
        Section = "section",
        Media = "media",
        Order = "order",
        Item = "item",
        HCW = "hcw",
        HcwSite = "hcw_site",
        Facility = "facility",
        Assessment = "assessment",
        Customer = "customer",
        Other = "other"
    }
    export interface RateProperties {
        rate_value: number;
        type: RateType;
        subject_id: string;
        meta?: GenericMeta;
    }
    export interface ModuleSelectionProperties {
        type: ModuleType;
        meta?: GenericMeta;
    }
    export interface TrackProperties {
        name: string;
        property?: string;
        meta?: GenericMeta;
    }
    export interface LegacySearchProperties {
        /**
         * The block or module where the search was performed. For example,
         * 'e-commerce' if the user made a search in the marketplace section,
         * or 'e-learning' is the search was performed in the courses/classes
         * section
         */
        contentBlock?: ContentBlock;
        module: SearchModuleType;
        /**
         * Free text introduced by the user to search
         */
        query: string;
        /**
         * If the search results are shown paginated, or with infinite scroll,
         * this field represent the number of page/subset the current result_ids
         * belongs to
         */
        page: number;
        /**
         * Current list of items IDs obtained for this search and page.
         * If the user have pressed in a new page number, of scroll down
         * and the web automatically retrieved new item, include here only
         * the new ones
         */
        results_list?: Array<ItemMinObject>;
        /**
         * If the search engine allow to select specific value to search
         * in a selectable list, include here an object whose keys are the
         * attributes to search, and the values the actual values that must
         * match
         */
        filter?: SearchFilter;
        /**
         * Any other additional information to be available in the logs
         */
        meta?: any;
    }
    export interface ItemMinObject {
        id: string;
        type: SearchItemType | ItemType;
    }
}
declare module "modules/Payments/typings" {
    import { CurrencyCode } from "core/commonTypes";
    export enum PaymentsEventTypes {
        Payment = "payment"
    }
    export enum PaymentAction {
        PaymentProcessed = "payment_processed",
        View = "view",
        Add = "add",
        Remove = "remove",
        Update = "update",
        Select = "select",
        Other = "other"
    }
    export enum PaymentMethod {
        BankCard = "bank_card",
        BankTransfer = "bank_transfer",
        CashOnDelivery = "cash_on_delivery",
        Cheque = "cheque",
        Credit = "credit",
        PointOfSale = "point_of_sale",
        MobileTransfer = "mobile_transfer",
        Cash = "cash",
        Wallet = "wallet",
        Other = "other"
    }
    export interface PaymentMethodProperties {
        payment_id: string;
        order_id: string;
        action: PaymentAction;
        type: PaymentMethod;
        payment_amount: number;
        account_balance?: number;
        currency: CurrencyCode;
        is_successful: boolean;
        meta?: any;
    }
}
declare module "modules/PatientMgmt/typings" {
    import { Country } from "core/commonTypes";
    export enum PatientMgmtEventType {
        Patient = "patient",
        Encounter = "encounter",
        Appointment = "appointment",
        Diagnosis = "diagnosis",
        Other = "other"
    }
    export enum PatientMgmtCatalogType {
        UserHcw = "user_chw",
        Patient = "patient"
    }
    export enum HcwSiteCategory {
        Facility = "facility",
        Community = "community",
        PatientAddress = "patient_address",
        Virtual = "virtual",
        Other = "other"
    }
    export enum AppointmentFollowupType {
        PhoneCall = "phone_call",
        SMS = "sms",
        WhatsApp = "whatsapp",
        HouseVisit = "house_visit",
        Other = "other"
    }
    export enum AppointmentStatus {
        Upcoming = "upcoming",
        Missed = "missed",
        Attended = "attended",
        Other = "other"
    }
    export enum CounselingType {
        Lifestyle = "lifestyle",
        Psychological = "psychological",
        Other = "other"
    }
    export enum DiagnosisCategory {
        Computed = "computed",
        Given = "given",
        Other = "other"
    }
    export enum DiagnosisQuestionnaireCategory {
        MedicalReview = "medical_review",
        Assessment = "assessment",
        Diagnostic = "diagnostic",
        Other = "other"
    }
    export enum DiagnosisQuestionnaireOutcomeType {
        RiskStatus = "risk_status",
        RiskScore = "risk_score",
        Other = "other"
    }
    export enum DiagnosisStatusValueType {
        Positive = "positive",
        Negative = "negative",
        Recovered = "recovered",
        Unknown = "unknown",
        NA = "n_a",
        Other = "other"
    }
    export enum DiagnosisStatusRiskType {
        Low = "low",
        High = "high",
        Unknown = "unknown",
        NA = "n_a",
        Other = "other"
    }
    export enum DiagnosisSubType {
        Age = "age",
        Gender = "gender",
        Height = "height",
        Weight = "weight",
        Smoker = "smoker",
        BloodPressure = "blood_pressure",
        BloodPressureSystolic = "blood_pressure_systolic",
        BloodPressureDiastolic = "blood_pressure_diastolic",
        MUAC = "muac",
        BloodGlucose = "blood_glucose",
        HbA1c = "hbA1c",
        Temperature = "temperature",
        Bmi = "bmi",
        Cvd = "cvd",
        Phq4 = "phq_4",
        Phq9 = "phq_9",
        Gad7 = "gad_7",
        PregnancyStatus = "pregnancy_status",
        PregnancyDangerSigns = "pregnancy_danger_signs",
        SuicidalIdeation = "suicidal_ideation",
        HighRiskPregnancy = "high_risk_pregnancy",
        Other = "other"
    }
    export enum DiagnosisSymptomType {
        Bio = "bio",
        HIV = "hiv",
        NCD = "ncd",
        TB = "tb",
        ECD = "ecd",
        Diabetes = "diabetes",
        Hypertension = "hypertension",
        Pregnancy = "pregnancy",
        MentalHealth = "mental_health",
        SubstanceUseDisorder = "substance_use_disorder",
        AdolescentHealth = "adolescent_health",
        GeneralScreening = "general_screening",
        Gynecologic = "gynecologic",
        Antenatal = "antenatal",
        Postnatal = "postnatal",
        CervicalCancer = "cervical_cancer",
        Lifestyle = "lifestyle",
        Psychological = "psychological",
        GenderBasedViolence = "gender_based_violence",
        SexualBehaviour = "sexual_behaviour",
        EconomicStrength = "economic_strengthening",
        Other = "other"
    }
    export enum DiagnosisType {
        Bio = "bio",
        HIV = "hiv",
        NCD = "ncd",
        TB = "tb",
        ECD = "ecd",
        Diabetes = "diabetes",
        Hypertension = "hypertension",
        Pregnancy = "pregnancy",
        MentalHealth = "mental_health",
        SubstanceUseDisorder = "substance_use_disorder",
        AdolescentHealth = "adolescent_health",
        GeneralScreening = "general_screening",
        Gynecologic = "gynecologic",
        Antenatal = "antenatal",
        Postnatal = "postnatal",
        CervicalCancer = "cervical_cancer",
        Lifestyle = "lifestyle",
        Psychological = "psychological",
        GenderBasedViolence = "gender_based_violence",
        SexualBehaviour = "sexual_behaviour",
        EconomicStrength = "economic_strengthening",
        Other = "other"
    }
    export enum EncounterType {
        Screening = "screening",
        Assessment = "assessment",
        Enrolment = "enrolment",
        MedicalReview = "medical_review",
        Counseling = "counseling",
        Other = "other"
    }
    export enum FrequencyType {
        Daily = "daily",
        Days = "days",
        Weeks = "weeks",
        Months = "months",
        Other = "other"
    }
    export enum HcwItemAction {
        View = "view",
        Add = "add",
        Update = "update",
        Remove = "remove",
        Done = "done",
        Other = "other"
    }
    export enum PatientType {
        Triage = "triage",
        Outpatient = "outpatient",
        Inpatient = "inpatient",
        Pharmacy = "pharmacy",
        DoorToDoor = "door_to_door",
        Camp = "camp",
        Other = "other"
    }
    export enum PrescriptionItemFrequency {
        AM = "AM",
        PM = "PM",
        OD = "OD",
        BD = "BD",
        TDS = "TDS",
        QDS = "QDS",
        OM = "OM",
        ON = "ON",
        CC = "CC",
        PC = "PC",
        AC = "AC",
        PRN = "PRN",
        Other = "other"
    }
    export enum PrescriptionItemFormulationType {
        Tablet = "tablet",
        Capsule = "capsule",
        Syrup = "syrup",
        Injection = "injection",
        Insulin = "insulin",
        Contraceptive = "contraceptive",
        Other = "other"
    }
    export enum ScheduleItemType {
        MedicalReview = "medical_review",
        Assessment = "assessment",
        Other = "other"
    }
    export interface PatientProperties {
        patient_id: string;
        site_id: string;
        location: string;
        action: HcwItemAction;
        is_from_gho: boolean;
        type: string;
        sub_type?: string;
        age?: number;
        gender?: string;
        registration_date?: string;
        meta?: any;
    }
    export interface EncounterProperties {
        encounter_id: string;
        patient_id: string;
        site_id: string;
        location: string;
        action: HcwItemAction;
        category: string;
        type: string;
        sub_type?: string;
        hcw_id_list?: string[];
        appointment_id?: string;
        encounter_time?: string;
        risk?: string;
        meta?: any;
    }
    export interface DiagnosisProperties {
        name: string;
        encounter_id: string;
        patient_id: string;
        site_id: string;
        location: string;
        action: HcwItemAction;
        category: string;
        type: string;
        sub_type?: string;
        value?: string;
        result?: string;
        meta?: any;
    }
    export interface AppointmentProperties {
        appointment_id: string;
        patient_id: string;
        site_id: string;
        location: string;
        status: string;
        category: string;
        type: string;
        sub_type?: string;
        action: HcwItemAction;
        time: string;
        hcw_id_list?: string[];
        is_time_sensitive?: boolean;
        update_reason?: string;
        followup_id?: string;
        followup_type?: string;
        followup_response?: string;
        meta?: any;
    }
    export interface HcwCatalogModel {
        name?: string;
        role?: string;
        site_id_list?: string[];
        supervisor_id_list?: string[];
        meta?: any;
    }
    export interface PatientCatalogModel {
        country?: Country;
        region_state?: string;
        city?: string;
        profession?: string;
        education_level?: string;
        site_id_list?: string[];
        insurance_id?: string;
        insurance_type?: string;
        insurance_status?: boolean;
        landmark?: string;
        phone_number_category?: string;
        program_id?: string;
        family_id?: string;
        hw_id_list?: string[];
        buddy_id_list?: string[];
        transport_mode?: string;
        marital_status?: string;
        employment_status?: string;
        nationality?: string;
        has_whatsapp?: boolean;
        has_email?: boolean;
        meta?: any;
    }
}
declare module "core/repositories/nudges/typings" {
    export enum NudgeDefinitionType {
        message = "message",
        UIComponent = "ui_component"
    }
    export enum NudgeRenderMethodType {
        push_notification = "push_notification",
        inAppMessage = "in_app_message",
        inAppComponent = "in_app_component"
    }
    export interface CTAResource {
        type: string;
        id: string;
    }
    export interface MessageInternal {
        inv_id: number;
        ref_time: string;
        action_id: number;
        expired_at: string;
        model_class: string;
        model_id: number;
        followup_of: number;
        followup_of_ref: string;
    }
    export enum NudgeAction {
        Shown = "shown",
        Error = "error",
        Block = "block",
        Discard = "discard",
        Open = "open",
        Expired = "expired"
    }
    export enum NudgeType {
        Push = "push_notification",
        InApp = "in_app_message"
    }
    export interface NudgeResponseProperties {
        response: string;
        details?: string;
        internal: any;
    }
    export interface Nudge {
        type: string;
        render_method: string;
        delivery_mode: string;
        content: Record<string, any>;
        attr: Record<string, any>;
        internal: any;
        tags?: any;
    }
    export interface NudgeResponseItem {
        payload: Nudge;
        error?: string | null;
    }
    export interface INudgesRepository {
        getNudges(userId: string, nudgeScreenType: string): Promise<NudgeResponseItem[]>;
        markNudgeAsShown(nudgeId: string): void;
        haveBeenAlreadyShown(nudgeId: string): boolean;
    }
    export interface ActionAPIResponse {
        data?: NudgeResponseItem[];
    }
    export type NudgeCallBack = {
        cta: 'redirect' | 'add_to_cart';
        id?: string;
    };
    export interface CTA {
        type: CTAType;
        cta_resource: CTAResource;
    }
    export enum CTAType {
        None = "",
        Redirect = "redirect",
        AddToCart = "add_to_cart"
    }
    export interface CTAResource {
        type: string;
        id: string;
    }
}
declare module "modules/typings" {
    export enum EventType {
        Identify = "identify",
        Page = "page",
        Level = "level",
        Purchase = "purchase",
        View = "view",
        Scroll = "scroll",
        PushNotification = "push_notification",
        Video = "video",
        Audio = "audio",
        Click = "click"
    }
    export enum DebugLevel {
        Debug = 0,
        Info = 1,
        Log = 2,
        Warn = 3,
        Error = 4,
        None = 5
    }
    export interface CfBrowserOptions {
        logScroll: boolean;
        logPage: boolean;
        logUrlChanges: boolean;
        flushOnLeave: boolean;
    }
    export interface CfLogOptions {
        flushInterval: number;
        flushMaxRetries: number;
        endpoint: string;
        cacheEventsInLocalstorage: boolean;
        cacheEventsKey: string;
        cacheCatalogKey: string;
        debugLevel: DebugLevel;
    }
    export interface BatteryStatus {
        charging: boolean;
        chargingTime: number;
        dischargingTime: number;
        level: number;
    }
    export interface EventContext {
        browser?: {
            user_agent: string;
            languages: string[];
            online: boolean;
            battery?: BatteryStatus;
        };
    }
    export interface EventTeaser {
        user_id: string;
        type: EventType;
        name?: string;
        properties: Record<string, any>;
    }
    export interface Event extends EventTeaser {
        uuid: string;
        device_time: number;
        context: EventContext;
    }
    export interface CatalogMainObject {
        data: CatalogItemModel[];
    }
    export interface CatalogItemModel {
        id: string;
        type: string;
        kv: any;
    }
    export interface QueueItem {
        uuid: string;
        event: Event;
        time: number;
        retries: number;
        lastRetry?: number;
    }
}
declare module "core/typings" {
    import { CancelCheckoutProperties, CartProperties, CheckoutProperties, DeliveryProperties, ECommerceTypes, ItemProperties, ItemReportProperties, ItemRequestProperties } from "modules/ECommerce/typings";
    import { LevelProperties, LoyaltyTypes, MilestoneProperties, PromoProperties, RewardProperties, SurveyProperties } from "modules/Loyalty/typings";
    import { ELearningTypes, ExamProperties, ModuleProperties, QuestionProperties } from "modules/ELearning/typings";
    import { BreakProperties, CallCenterEventType, ContactProperties, OpsScorecardProperties } from "modules/CallCenter/typings";
    import { AmbulanceProperties, EmergencyMgmtEventType, IncidentProperties } from "modules/EmergencyMgmt/typings";
    import { AppProperties, ContentBlock, IdentifyProperties, MediaProperties, ModuleSelectionProperties, NavigationTypes, PageProperties, RateProperties, SearchProperties, TrackProperties } from "modules/Navigation/typings";
    import { PaymentMethodProperties, PaymentsEventTypes } from "modules/Payments/typings";
    import { AppointmentProperties, EncounterProperties, PatientMgmtCatalogType, PatientMgmtEventType, PatientProperties } from "modules/PatientMgmt/typings";
    import { NudgeResponseProperties } from "core/repositories/nudges/typings";
    import { CatalogItemModel } from "modules/typings";
    export enum GlobalTypes {
        NavigationTypes = 0,
        ECommerceTypes = 1
    }
    export interface LogIngestorOptions {
        flushInterval: number;
        flushMaxRetries: number;
        ingestPath: string;
        dimensionPath: string;
        cacheEventsInLocalstorage: boolean;
        cacheEventsKey: string;
        cacheCatalogKey: string;
    }
    export interface CfLogOptions {
        cdnUrl: string;
        baseUrl: string;
        nudgeFetchPath: string;
        allowAnonymousUsers: boolean;
        catalogPath: string;
        activateNudgeMechanism: boolean;
        selfManagedNudges: boolean;
        defaultBlock: ContentBlock;
        debug: boolean;
        skipDynamicLoading?: boolean;
        isUsingAsInternalWrapper: boolean;
        pauseSDK: boolean;
    }
    export interface BatteryStatus {
        charging: boolean;
        chargingTime: number;
        dischargingTime: number;
        level: number;
    }
    export interface EventContext {
        browser?: {
            user_agent: string;
            languages: string[];
            online: boolean;
            battery?: BatteryStatus;
        };
    }
    export type AnyKnownType = NavigationTypes | ECommerceTypes | ELearningTypes | PaymentsEventTypes | LoyaltyTypes | CallCenterEventType | EmergencyMgmtEventType | PatientMgmtEventType | PatientMgmtCatalogType;
    type WithOlineStatus<T> = T & {
        __ol?: boolean;
    };
    export type EventTeaser = {
        name: NavigationTypes;
        property?: string;
        ctx?: WithOlineStatus<ModuleSelectionProperties | PageProperties | AppProperties | IdentifyProperties | MediaProperties | RateProperties | SearchProperties | TrackProperties | NudgeResponseProperties>;
    } | {
        name: ECommerceTypes;
        property?: string;
        ctx?: WithOlineStatus<CartProperties | DeliveryProperties | ItemReportProperties | ItemRequestProperties | CheckoutProperties | CancelCheckoutProperties | ItemProperties>;
    } | {
        name: ELearningTypes;
        property?: string;
        ctx?: WithOlineStatus<ExamProperties | ModuleProperties | QuestionProperties>;
    } | {
        name: PaymentsEventTypes;
        property?: string;
        ctx?: WithOlineStatus<PaymentMethodProperties>;
    } | {
        name: LoyaltyTypes;
        property?: string;
        ctx?: WithOlineStatus<LevelProperties | MilestoneProperties | PromoProperties | RewardProperties | SurveyProperties>;
    } | {
        name: CallCenterEventType;
        property?: string;
        ctx?: WithOlineStatus<BreakProperties | ContactProperties | OpsScorecardProperties>;
    } | {
        name: EmergencyMgmtEventType;
        property?: string;
        ctx?: WithOlineStatus<IncidentProperties | AmbulanceProperties>;
    } | {
        name: PatientMgmtEventType;
        property?: string;
        ctx?: WithOlineStatus<PatientProperties | EncounterProperties | AppointmentProperties>;
    } | {
        name: string;
        property?: string;
        ctx?: WithOlineStatus<Record<string, string | number>>;
    };
    export type EventCommon = {
        time: string;
    };
    export type Event = EventTeaser & EventCommon;
    export type InternalInfoObject = {
        s_id: string;
        sdk: string;
        app_id: string;
        app_version: string;
        device_id: string;
        device_os: string;
    };
    export type EventMainObject = {
        id: string;
        tz: string;
        internal: InternalInfoObject;
        data?: Event[];
    };
    export interface QueueItem {
        uuid: string;
        event: Event;
        time: number;
        retries: number;
        lastRetry?: number;
    }
    export interface QueueCatalogItem {
        uuid: string;
        catalog: CatalogItemModel;
        retries: number;
        lastRetry?: number;
    }
    export interface TypedRows {
        header: string[];
        data_type: string[];
        rows: any[][];
    }
    export interface ExceptionObject {
        title: string;
        event_type: string;
        exception_type: string;
        exception_source: string;
        stack_trace: string;
        ts: string;
    }
    export interface MainExceptionBody {
        id: string;
        tz: string;
        internal: InternalInfoObject;
        data: ExceptionObject[];
    }
    export enum GlobalSDKEventTypes {
        Identify = "identify",
        Page = "page",
        App = "app",
        Search = "search",
        Media = "media",
        ActionResponse = "action_response",
        Rate = "rate",
        ModuleSelection = "module_selection",
        Item = "item",
        Delivery = "delivery",
        Checkout = "checkout",
        Cart = "cart",
        CancelCheckout = "cancel_checkout",
        ItemReport = "item_report",
        ItemRequest = "item_request",
        Module = "module",
        Exam = "exam",
        Question = "question",
        Level = "level",
        Milestone = "milestone",
        Promo = "promo",
        Survey = "survey",
        Reward = "reward",
        Payment = "payment",
        Patient = "patient",
        Encounter = "encounter",
        Appointment = "appointment",
        Diagnosis = "diagnosis"
    }
}
declare module "core/impressions/typings" {
    export interface Dataset {
        [key: string]: string;
    }
    export interface IImpression {
        time_in: number;
        data: Dataset;
    }
    export interface ViewableImpressionOptions {
        triggerInterval: number;
        keepVisibleTimeout: number;
        intersectionThreshold: number;
    }
    export interface IImpressionManager {
        start(containerClassname: string, itemClassname: string, appData: Dataset): any;
        stop(): any;
    }
    export enum ImpressionEventType {
        Impression = "impression"
    }
}
declare module "drivers/network/typings" {
    export interface NetworkProxy {
        get(url: string): Promise<Object | undefined>;
        send(url: string, payload: any): Promise<Object | undefined>;
    }
}
declare module "drivers/notifications/typings" {
    import { Nudge } from "core/repositories/nudges/typings";
    export interface NotificationDispatcher {
        on<U extends keyof CfNotificationEvents>(event: U, listener: CfNotificationEvents[U]): this;
        emit<U extends keyof CfNotificationEvents>(event: U, ...args: Parameters<CfNotificationEvents[U]>): boolean;
    }
    export enum NotificationAction {
        Shown = "shown",
        Error = "error",
        Block = "block",
        Discard = "discard",
        Open = "open",
        Expired = "expired"
    }
    export interface CfNotificationEvents {
        [NotificationAction.Shown]: (id: number) => void;
        [NotificationAction.Block]: (id: number) => void;
        [NotificationAction.Discard]: (id: number) => void;
        [NotificationAction.Open]: (id: number) => void;
        [NotificationAction.Expired]: (id: number) => void;
    }
    export interface NotificationDispatcher {
        show(nudge: Nudge, id: number): any;
    }
}
declare module "drivers/storage/typings" {
    export interface IStorage {
        save(key: string, value: string): any;
        get(key: string): any;
    }
}
declare module "CfLog";
declare module "ECommerce";
declare module "Loyalty";
declare module "Navigation";
declare module "ELearning";
declare module "Payments";

declare module "@causalfoundry/js-sdk" {
    export * from "modules/ECommerce/typings"
    export * from "modules/ELearning/typings"
    export * from "modules/Loyalty/typings"
    export * from "modules/Navigation/typings"
    export * from "modules/Payments/typings"
    export * from "core/commonTypes"
    export * from "core/typings"

    export { CfLog } from "CfLog"
    export { ECommerce } from "ECommerce"
    export { ELearning } from "ELearning"
    export { Loyalty } from "Loyalty"
    export { Navigation } from "Navigation"
    export { Payments } from "Payments"
}