/**
 * Copyright 2023, Optimizely
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { LogHandler } from '../../modules/logging';
import BrowserAsyncStorageCache from '../key_value_cache/browserAsyncStorageCache';
import { OdpManager } from '../../core/odp/odp_manager';
import { OdpEvent } from '../../core/odp/odp_event';
import { OdpOptions } from '../../shared_types';
interface BrowserOdpManagerConfig {
    logger?: LogHandler;
    odpOptions?: OdpOptions;
}
export declare class BrowserOdpManager extends OdpManager {
    static cache: BrowserAsyncStorageCache;
    vuid?: string;
    constructor({ logger, odpOptions }: BrowserOdpManagerConfig);
    /**
     * Upon initializing BrowserOdpManager, accesses or creates new VUID from Browser cache and registers it via the Event Manager
     * @private
     */
    private initializeVuid;
    private registerVuid;
    /**
     * @override
     * - Still identifies a user via the ODP Event Manager
     * - Additionally, also passes VUID to help identify client-side users
     * @param fsUserId Unique identifier of a target user.
     */
    identifyUser(fsUserId?: string, vuid?: string): void;
    /**
     * @override
     * - Sends an event to the ODP Server via the ODP Events API
     * - Intercepts identifiers and injects VUID before sending event
     * - Identifiers must contain at least one key-value pair
     * @param {OdpEvent} odpEvent  > ODP Event to send to event manager
     */
    sendEvent({ type, action, identifiers, data }: OdpEvent): void;
    isVuidEnabled(): boolean;
    getVuid(): string | undefined;
}
export {};
