/**
 * Copyright 2024-2025, 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
 *
 * http://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 { Store } from "../utils/cache/store";
import { Maybe } from "../utils/type";
import { BatchEventProcessor, EventWithId } from "./batch_event_processor";
import { EventDispatcher } from "./event_dispatcher/event_dispatcher";
import { EventProcessor } from "./event_processor";
import { Platform } from '../platform_support';
export declare const INVALID_EVENT_DISPATCHER = "Invalid event dispatcher";
export declare const FAILED_EVENT_RETRY_INTERVAL: number;
export declare const getPrefixEventStore: (store: Store<string>) => Store<EventWithId>;
declare const eventProcessorSymbol: unique symbol;
export type OpaqueEventProcessor = {
    [eventProcessorSymbol]: unknown;
};
export type BatchEventProcessorOptions = {
    eventDispatcher?: EventDispatcher;
    closingEventDispatcher?: EventDispatcher;
    flushInterval?: number;
    batchSize?: number;
    storeTtl?: number;
    eventStore?: Store<string>;
    maxRetries?: number;
};
export type BatchEventProcessorFactoryOptions = Omit<BatchEventProcessorOptions, 'eventDispatcher' | 'eventStore'> & {
    eventDispatcher: EventDispatcher;
    closingEventDispatcher?: EventDispatcher;
    failedEventRetryInterval?: number;
    defaultFlushInterval: number;
    defaultBatchSize: number;
    eventStore?: Store<EventWithId>;
    retryOptions?: {
        maxRetries: number;
        minBackoff?: number;
        maxBackoff?: number;
    };
};
export declare const validateEventDispatcher: (eventDispatcher: EventDispatcher) => void;
export declare const getBatchEventProcessor: (options: BatchEventProcessorFactoryOptions, EventProcessorConstructor?: typeof BatchEventProcessor) => EventProcessor;
export declare const wrapEventProcessor: (eventProcessor: EventProcessor) => OpaqueEventProcessor;
export declare const getOpaqueBatchEventProcessor: (options: BatchEventProcessorFactoryOptions, EventProcessorConstructor?: typeof BatchEventProcessor) => OpaqueEventProcessor;
export declare const extractEventProcessor: (eventProcessor: Maybe<OpaqueEventProcessor>) => Maybe<EventProcessor>;
export declare function getForwardingEventProcessor(dispatcher: EventDispatcher): EventProcessor;
export declare const __platforms: Platform[];
export {};
