import { primitive, IHit, FlagDTO, IFSFlagMetadata, CampaignDTO } from '../types';
import { StrategyAbstract } from './StrategyAbstract';
import { VisitorDelegate } from './index';
import { GetFlagMetadataParam, GetFlagValueParam, VisitorExposedParam } from '../type.local';
import { HitAbstract } from '../hit/HitAbstract';
export declare const TYPE_HIT_REQUIRED_ERROR = "property type is required and must ";
export declare const HIT_NULL_ERROR = "Hit must not be null";
export declare class DefaultStrategy extends StrategyAbstract {
    private checkPredefinedContext;
    private updateContextKeyValue;
    private checkAndUpdateContext;
    updateContext(key: string, value: primitive): void;
    updateContext(context: Record<string, primitive>): void;
    clearContext(): void;
    private isDeDuplicated;
    protected sendActivate(flagDto: FlagDTO, defaultValue?: unknown): Promise<void>;
    sendHit(hit: HitAbstract): Promise<void>;
    sendHit(hit: IHit): Promise<void>;
    sendHits(hits: HitAbstract[]): Promise<void>;
    sendHits(hits: IHit[]): Promise<void>;
    private getHit;
    private isHitAbstract;
    private prepareAndSendHit;
    authenticate(visitorId: string): void;
    unauthenticate(): void;
    handleFetchFlagsError(error: unknown, now: number, campaigns: CampaignDTO[] | null): void;
    getCampaigns(now: number): Promise<{
        campaigns: CampaignDTO[] | null;
        error?: string;
        isFetching?: boolean;
        isBuffered?: boolean;
    }>;
    protected fetchCampaignsFromCache(visitor: VisitorDelegate): CampaignDTO[] | null;
    handleNoCampaigns(now: number): CampaignDTO[] | null;
    sendVisitorAllocatedVariations(): void;
    private extractFlags;
    fetchFlags(): Promise<void>;
    visitorExposed(param: VisitorExposedParam): Promise<void>;
    private sendFlagTroubleshooting;
    getFlagValue<T>(param: GetFlagValueParam<T>): T extends null ? unknown : T;
    private SendFlagMetadataTroubleshooting;
    getFlagMetadata(param: GetFlagMetadataParam): IFSFlagMetadata;
}
