import { primitive, IHit, VisitorCacheDTO, IFSFlagMetadata, CampaignDTO, EAIScore } from '../types';
import { IVisitor } from './IVisitor';
import { VisitorAbstract } from './VisitorAbstract';
import { DecisionMode, IConfigManager, IFlagshipConfig } from '../config/index';
import { IDecisionManager } from '../decision/IDecisionManager';
import { BatchDTO } from '../hit/Batch';
import { ITrackingManager } from '../api/ITrackingManager';
import { Troubleshooting } from '../hit/Troubleshooting';
import { MurmurHash } from '../utils/MurmurHash';
import { UsageHit } from '../hit/UsageHit';
import { GetFlagMetadataParam, GetFlagValueParam, VisitorExposedParam } from '../type.local';
import { IVisitorEvent } from '../emotionAI/hit/IVisitorEvent';
import { IPageView } from '../emotionAI/hit/IPageView';
import { type HitAbstract } from '../hit/HitAbstract';
import { IVisitorCacheImplementation } from '../cache/IVisitorCacheImplementation';
export declare const LOOKUP_HITS_JSON_ERROR = "JSON DATA must be an array of object";
export declare const LOOKUP_HITS_JSON_OBJECT_ERROR = "JSON DATA must fit the type HitCacheDTO";
export declare const VISITOR_ID_MISMATCH_ERROR = "Visitor ID mismatch: {0} vs {1}";
export type StrategyAbstractConstruct = {
    visitor: VisitorAbstract;
    murmurHash: MurmurHash;
};
export declare abstract class StrategyAbstract implements Omit<IVisitor, 'visitorId' | 'anonymousId' | 'flagsStatus' | 'flagsData' | 'context' | 'hasConsented' | 'getFlagsDataArray' | 'getFlag' | 'getFlags' | 'cleanup'> {
    protected visitor: VisitorAbstract;
    protected get configManager(): IConfigManager;
    protected get trackingManager(): ITrackingManager;
    protected get decisionManager(): IDecisionManager;
    get config(): IFlagshipConfig;
    protected _murmurHash: MurmurHash;
    constructor(param: StrategyAbstractConstruct);
    collectEAIEventsAsync(currentPage?: Omit<IPageView, 'toApiKeys'>): Promise<void>;
    reportEaiVisitorEvent(event: IVisitorEvent): void;
    reportEaiPageView(pageView: IPageView): void;
    onEAICollectStatusChange(callback: (status: boolean) => void): void;
    cleanup(): void;
    updateCampaigns(campaigns: CampaignDTO[]): void;
    protected hasTrackingManager(process: string): boolean;
    setConsent(hasConsented: boolean): void;
    protected checKLookupVisitorDataV1(item: VisitorCacheDTO): boolean;
    protected checKLookupVisitorData(item: VisitorCacheDTO): boolean;
    private tryLookupCache;
    private processValidCache;
    lookupVisitor(): Promise<void>;
    protected createVisitorCacheDTO(eAIScore?: EAIScore, isEAIDataCollected?: boolean): VisitorCacheDTO;
    protected cacheAnonymousVisitor(visitorCacheInstance: IVisitorCacheImplementation, visitorCacheDTO: VisitorCacheDTO): Promise<void>;
    cacheVisitor(eAIScore?: EAIScore, isEAIDataCollected?: boolean): Promise<void>;
    protected flushVisitor(): Promise<void>;
    addInTrackingManager(hit: HitAbstract): Promise<void>;
    abstract updateContext(key: string, value: primitive): void;
    abstract updateContext(context: Record<string, primitive>): void;
    abstract updateContext(context: Record<string, primitive> | string, value?: primitive): void;
    abstract clearContext(): void;
    abstract sendHit(hit: HitAbstract): Promise<void>;
    abstract sendHit(hit: IHit): Promise<void>;
    abstract sendHit(hit: IHit | HitAbstract | BatchDTO): Promise<void>;
    abstract sendHits(hit: HitAbstract[]): Promise<void>;
    abstract sendHits(hit: IHit[]): Promise<void>;
    abstract sendHits(hits: HitAbstract[] | IHit[] | BatchDTO[]): Promise<void>;
    abstract authenticate(visitorId: string): void;
    abstract unauthenticate(): void;
    abstract fetchFlags(): Promise<void>;
    abstract visitorExposed(param: VisitorExposedParam): Promise<void>;
    abstract getFlagValue<T>(param: GetFlagValueParam<T>): T extends null ? unknown : T;
    abstract getFlagMetadata(param: GetFlagMetadataParam): IFSFlagMetadata;
    abstract sendVisitorAllocatedVariations(): void;
    sendTroubleshootingHit(hit: Troubleshooting): Promise<void>;
    sendUsageHit(hit: UsageHit): Promise<void>;
    getCurrentDateTime(): Date;
    protected getSdkConfigDecisionMode(): DecisionMode.BUCKETING | DecisionMode.BUCKETING_EDGE | 'DECISION_API' | undefined;
    sendSdkConfigAnalyticHit(): Promise<void>;
    sendFetchFlagsTroubleshooting({ isFromCache, campaigns, now }: {
        isFromCache: boolean;
        campaigns: CampaignDTO[];
        now: number;
    }): Promise<void>;
    sendConsentHitTroubleshooting(): void;
    sendSegmentHitTroubleshooting(): void;
}
