import { DVCRequestEvent } from './models/requestEvent'; import { BucketedUserConfig, DVCLogger, DVCReporter } from '@devcycle/types'; import { DevCycleEvent, DVCPopulatedUser } from '@devcycle/js-cloud-server-sdk'; import { WASMBucketingExports } from '@devcycle/bucketing-assembly-script'; export declare const AggregateEventTypes: Record; export declare const EventTypes: Record; type UserEventsBatchRecord = { user: DVCPopulatedUser; events: DVCRequestEvent[]; }; export type FlushPayload = { payloadId: string; eventCount: number; records: UserEventsBatchRecord[]; }; export type EventQueueOptions = { eventFlushIntervalMS?: number; disableAutomaticEventLogging?: boolean; disableCustomEventLogging?: boolean; eventRequestChunkSize?: number; maxEventQueueSize?: number; flushEventQueueSize?: number; logger: DVCLogger; reporter?: DVCReporter; eventsAPIURI?: string; }; export declare class EventQueue { private readonly sdkKey; private readonly clientUUID; private readonly bucketing; private readonly logger; private readonly reporter?; private readonly eventsAPIURI?; eventFlushIntervalMS: number; flushEventQueueSize: number; maxEventQueueSize: number; disabledEventFlush: boolean; private flushInterval; private flushInProgress; private flushCallbacks; constructor(sdkKey: string, clientUUID: string, bucketing: WASMBucketingExports, options: EventQueueOptions); cleanup(): void; private _flushEvents; /** * Flush events in queue to DevCycle Events API. Requeue events if flush fails */ flushEvents(): Promise; /** * Queue DVCAPIEvent for publishing to DevCycle Events API. */ queueEvent(user: DVCPopulatedUser, event: DevCycleEvent): void; /** * Queue DVCEvent that can be aggregated together, where multiple calls are aggregated * by incrementing the 'value' field. */ queueAggregateEvent(user: DVCPopulatedUser, event: DevCycleEvent, bucketedConfig?: BucketedUserConfig): void; private checkEventQueueSize; } export {};