/**
 * Copyright 2024-2026, 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 { RequestHandler } from "../shared_types";
import { Cache } from "../utils/cache/cache";
import { Maybe } from "../utils/type";
import { EventRequestGenerator } from "./event_manager/odp_event_api_manager";
import { OdpManager } from "./odp_manager";
import { UserAgentParser } from "./ua_parser/user_agent_parser";
import { Platform } from '../platform_support';
export declare const DEFAULT_CACHE_SIZE = 10000;
export declare const DEFAULT_CACHE_TIMEOUT = 600000;
export declare const DEFAULT_EVENT_BATCH_SIZE = 100;
export declare const DEFAULT_EVENT_FLUSH_INTERVAL = 10000;
export declare const DEFAULT_EVENT_MAX_RETRIES = 2;
export declare const DEFAULT_EVENT_MIN_BACKOFF = 200;
export declare const DEFAULT_EVENT_MAX_BACKOFF = 1000;
export declare const INVALID_CACHE = "Invalid cache";
export declare const INVALID_CACHE_METHOD = "Invalid cache method %s";
declare const odpManagerSymbol: unique symbol;
export type OpaqueOdpManager = {
    [odpManagerSymbol]: unknown;
};
export type OdpManagerOptions = {
    segmentsCache?: Cache<string[]>;
    segmentsCacheSize?: number;
    segmentsCacheTimeout?: number;
    segmentsApiTimeout?: number;
    eventFlushInterval?: number;
    eventBatchSize?: number;
    eventApiTimeout?: number;
    userAgentParser?: UserAgentParser;
};
export type OdpManagerFactoryOptions = Omit<OdpManagerOptions, 'segmentsApiTimeout' | 'eventApiTimeout'> & {
    segmentRequestHandler: RequestHandler;
    eventRequestHandler: RequestHandler;
    eventRequestGenerator: EventRequestGenerator;
    eventMaxRetries?: number;
    eventMinBackoff?: number;
    eventMaxBackoff?: number;
};
export declare const getOdpManager: (options: OdpManagerFactoryOptions) => OdpManager;
export declare const getOpaqueOdpManager: (options: OdpManagerFactoryOptions) => OpaqueOdpManager;
export declare const extractOdpManager: (manager: Maybe<OpaqueOdpManager>) => Maybe<OdpManager>;
export declare const __platforms: Platform[];
export {};
