export interface EventTrackingIntegration { name: string; transformEvent?: EventTransformer; init?: () => Promise; sendEvent?: (infos: OutEvent, commonInfos: CommonEventInfo) => Promise; } export interface UserPropertiesTrackingIntegration { name: string; init?: () => Promise; transformUserProperties?: UserPropertyTransformer; updateUserProperties?: (userId: string, userInfo: InUserInfo) => Promise; } export declare type TrackingIntegration = EventTrackingIntegration & UserPropertiesTrackingIntegration; export declare type DelayFunction = () => Promise; export declare type Logger = { info: Function; warn: Function; error: Function; }; export declare type CreateSendEventOptions = { integrations: readonly EventTrackingIntegration[]; logger?: Logger; delayFunction?: DelayFunction; }; export declare type CreateUpdateUserProperties = { integrations: UserPropertiesTrackingIntegration[]; logger?: Logger; }; export declare type EventTransformer = (event: InEvent) => OutEvent | OutEvent[]; export declare type UserPropertyTransformer = (userInfo: InUserInfo) => OutUserInfo | null;