import { DevCycleClient } from './Client';
import { DevCycleEvent, DevCycleOptions, DVCCustomDataJSON } from './types';
import { VariableDefinitions } from '@devcycle/types';
export declare const EventTypes: {
    variableEvaluated: string;
    variableDefaulted: string;
};
type AggregateEvent = DevCycleEvent & {
    target: string;
};
export declare class EventQueue<Variables extends VariableDefinitions = VariableDefinitions, CustomData extends DVCCustomDataJSON = DVCCustomDataJSON> {
    private readonly sdkKey;
    private readonly options;
    private readonly client;
    private eventQueue;
    private aggregateEventMap;
    private flushInterval;
    private flushEventQueueSize;
    private maxEventQueueSize;
    private eventQueueBatchSize;
    constructor(sdkKey: string, dvcClient: DevCycleClient<Variables, CustomData>, options: DevCycleOptions);
    flushEvents(): Promise<void>;
    /**
     * Queue DVCAPIEvent for producing
     */
    queueEvent(event: DevCycleEvent): void;
    /**
     * Queue DVCEvent that can be aggregated together, where multiple calls are aggregated
     * by incrementing the 'value' field.
     */
    queueAggregateEvent(event: AggregateEvent): void;
    private checkEventQueueSize;
    /**
     * Turn the Aggregate Event Map into an Array of DVCAPIEvent objects for publishing.
     */
    private eventsFromAggregateEventMap;
    close(): Promise<void>;
}
export {};
