import { FlagsStatus, IHit, primitive } from '../types';
import { EventEmitter } from '../depsNode.native';
import { IVisitor } from './IVisitor';
import { IFlagshipConfig } from '../config/index';
import { type HitAbstract } from '../hit/HitAbstract';
import { VisitorAbstract } from './VisitorAbstract';
import { IFSFlag } from '../flag/IFSFlag';
import { IFSFlagCollection } from '../flag/IFSFlagCollection';
/**
 * The `Visitor` class represents a unique user within your application. It aids in
 * managing the visitor's data and fetching the corresponding flags for the visitor
 * from the [Flagship platform](https://app.flagship.io/login) .
 */
export declare class Visitor extends EventEmitter implements IVisitor {
    private visitorDelegate;
    private _onReady;
    constructor(visitorDelegate: VisitorAbstract);
    /**
     * @inheritdoc
     */
    get visitorId(): string;
    /**
     * @inheritdoc
     */
    set visitorId(v: string);
    /**
     * @inheritdoc
     */
    get anonymousId(): string | null;
    /**
     * @inheritdoc
     */
    get config(): IFlagshipConfig;
    /**
     * @inheritdoc
     */
    get context(): Record<string, primitive>;
    /**
     * @inheritdoc
     */
    get flagsStatus(): FlagsStatus;
    /**
     * @inheritdoc
     */
    get hasConsented(): boolean;
    /**
     * @inheritdoc
     */
    setConsent(hasConsented: boolean): void;
    /**
     * @inheritdoc
     */
    updateContext(key: string, value: primitive): void;
    updateContext(context: Record<string, primitive>): void;
    /**
     * @inheritdoc
     */
    clearContext(): void;
    /**
     * @inheritdoc
     */
    getFlag(key: string): IFSFlag;
    /**
     * @inheritdoc
     */
    getFlags(): IFSFlagCollection;
    /**
     * @inheritdoc
     */
    fetchFlags(): Promise<void>;
    /**
     * @inheritdoc
     */
    sendHit(hit: HitAbstract): Promise<void>;
    sendHit(hit: IHit): Promise<void>;
    sendHit(hit: IHit | HitAbstract): Promise<void>;
    /**
     * @inheritdoc
     */
    sendHits(hits: HitAbstract[]): Promise<void>;
    sendHits(hits: IHit[]): Promise<void>;
    sendHits(hits: HitAbstract[] | IHit[]): Promise<void>;
    /**
     * @inheritdoc
     */
    authenticate(visitorId: string): void;
    /**
     * @inheritdoc
     */
    unauthenticate(): void;
    /**
     * @inheritdoc
     */
    collectEAIEventsAsync(...args: unknown[]): Promise<void>;
    /**
     * @inheritdoc
     */
    cleanup(): void;
}
