import { DecisionReason, EventType, Experiment, HackleEvent, HackleUser, Long, Properties, RemoteConfigParameter, VariationId, VariationKey } from "../model/model"; import { EventDto, ExposureEventDto, RemoteConfigEventDto, TrackEventDto } from "./dto"; import ExperimentEvaluation from "../evaluation/evalautor/experiment/ExperimentEvaluation"; import RemoteConfigEvaluation from "../evaluation/evalautor/remoteconfig/RemoteConfigEvaluation"; export default abstract class UserEvent { timestamp: Long; user: HackleUser; readonly insertId: string; protected constructor(timestamp: Long, user: HackleUser, insertId?: string); static exposure(user: HackleUser, evaluation: ExperimentEvaluation, properties: Properties, timestamp: number): ExposureEvent; static track(eventType: EventType, event: HackleEvent, user: HackleUser, timestamp: number): TrackEvent; static remoteConfig(user: HackleUser, evaluation: RemoteConfigEvaluation, properties: Properties, timestamp: number): RemoteConfigEvent; static isExposureEvent(event: UserEvent): event is ExposureEvent; static isTrackEvent(event: UserEvent): event is TrackEvent; static isRemoteConfigEvent(event: UserEvent): event is RemoteConfigEvent; static isExposureEventDto(event: EventDto): event is ExposureEventDto; static isTrackEventDto(event: EventDto): event is TrackEventDto; static isRemoteConfigEventDto(event: EventDto): event is RemoteConfigEventDto; abstract copyWithUser(user: HackleUser): UserEvent; toDto(): EventDto; } export declare class ExposureEvent extends UserEvent { experiment: Experiment; variationId?: VariationId; variationKey: VariationKey; decisionReason: DecisionReason; properties: Properties; constructor(timestamp: Long, user: HackleUser, experiment: Experiment, variationId: VariationId | undefined, variationKey: VariationKey, decisionReason: DecisionReason, properties: Properties, insertId?: string); copyWithUser(user: HackleUser): ExposureEvent; toDto(): ExposureEventDto; } export declare class TrackEvent extends UserEvent { eventType: EventType; event: HackleEvent; constructor(timestamp: Long, user: HackleUser, eventType: EventType, event: HackleEvent, insertId?: string); copyWithUser(user: HackleUser): TrackEvent; toDto(): TrackEventDto; } export declare class RemoteConfigEvent extends UserEvent { parameter: RemoteConfigParameter; valueId: number | undefined; decisionReason: DecisionReason; properties: Properties; constructor(timestamp: Long, user: HackleUser, parameter: RemoteConfigParameter, valueId: number | undefined, decisionReason: DecisionReason, properties: Properties, insertId?: string); copyWithUser(user: HackleUser): RemoteConfigEvent; toDto(): RemoteConfigEventDto; }