import { CartProperties, CheckoutProperties, DeliveryProperties, ECommerceTypes, ItemProperties } from "../modules/ECommerce/typings";
import { LevelProperties, MilestoneProperties } from "../modules/Loyalty/typings";
import { ELearningTypes } from "../modules/ELearning/typings";
import { LoyaltyTypes } from "../modules/Loyalty/typings";
import { AppProperties, ContentBlock, IdentifyProperties, InternalSearchProperties, MediaProperties, NavigationTypes, PageProperties, NudgeResponseProperties } from "../modules/Navigation/typings";
import { DeferredPaymentProperties, PaymentsTypes } from "../modules/Payments/typings";
import { InteractProperties, ReferenceGuideTypes } from "../modules/ReferenceGuide/typings";
import { FeedProperties, FeedTypes, PublicationProperties } from "../modules/Feed/typings";
export declare enum GlobalTypes {
    NavigationTypes = 0,
    ECommerceTypes = 1
}
export interface BsBrowserOptions {
    logScroll: boolean;
    logPage: boolean;
    logUrlChanges: boolean;
    flushOnLeave: boolean;
}
export interface LogIngestorOptions {
    flushInterval: number;
    flushMaxRetries: number;
    ingestPath: string;
    cacheEventsInLocalstorage: boolean;
    cacheEventsKey: string;
}
export interface CfLogOptions {
    baseUrl: string;
    nudgeFetchPath: string;
    currencyPath: string;
    catalogPath: string;
    activateNudgeMechanism: boolean;
    defaultBlock: ContentBlock;
    debug: boolean;
    skipDynamicLoading?: 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 | ReferenceGuideTypes | PaymentsTypes | LoyaltyTypes | FeedTypes;
export type EventTeaser = {
    name?: string;
    type: NavigationTypes;
    props: PageProperties | AppProperties | IdentifyProperties | MediaProperties | InternalSearchProperties | NudgeResponseProperties;
} | {
    name?: string;
    type: ECommerceTypes;
    props: CartProperties | DeliveryProperties | CheckoutProperties | ItemProperties;
} | {
    name?: string;
    type: ReferenceGuideTypes;
    props: InteractProperties;
} | {
    name?: string;
    type: PaymentsTypes;
    props: DeferredPaymentProperties;
} | {
    name?: string;
    type: LoyaltyTypes;
    props: LevelProperties | MilestoneProperties;
} | {
    name?: string;
    type: FeedTypes;
    props: PublicationProperties | FeedProperties;
};
export type EventCommon = {
    block: ContentBlock;
    ol: boolean;
    ts: string;
};
export type Event = EventTeaser & EventCommon;
export type DeviceInfoObject = {
    id: string;
    brand: string;
    model: string;
    os: string;
    os_ver: string;
};
export type AppInfoObject = {
    id: string;
    min_sdk_version: number;
    target_sdk_version: number;
    version_code: number;
    version_name: string;
    version: string;
};
export type EventMainObject = {
    s_id: string;
    u_id: string;
    app_info: AppInfoObject;
    d_info: DeviceInfoObject;
    sdk: string;
    up?: number;
    dn?: number;
    data?: Event[];
};
export interface QueueItem {
    uuid: string;
    event: Event;
    time: number;
    retries: number;
    lastRetry?: number;
}
export interface TypedRows {
    header: string[];
    data_type: string[];
    rows: any[][];
}
