import { BaseEvent, User } from '@marsupialtail/idl'; export declare class Analytics { namespace: string | null; private analytics; /** * Constructs an analytics object. * @param filename The current file taken via `new Analytics(__filename)`. */ constructor(mixpanelToken: string, filename?: string); /** * Tracks an event. * @param name The name of the event. * @param user The user the event is attached to. Use null if anonymous. * @param event The event object. */ event: (name: string, user?: User, event?: T | undefined) => void; /** * Marks experiment exposure, allowing analytics to be segmented by variant. * @param experimentName The name of the experiment. * @param experimentVariant The name of the experiment variant the user is a part of. * @param user The user to mark exposure for. */ markExposure: (experimentName: string, experimentVariant: string, user?: User) => void; /** * Gets the namespaced name of the event. * @param name The base event name. * @returns A namespaced event name (ex. UserCreatedEvent -> endpoints.user.UserCreatedEvent). */ private getEventName; /** * Registers a user for in Mixpanel with a distinct_id. * @param user The user to register. */ private tryRegister; /** * Parses an optional filename into a namespace. Namespaces are used * to tell from where an event was fired. * @param filename The __filename of the analytics sender. * @returns A parsed namespace in.this.format or null. */ private static parseNamespace; /** * Parses a base event into an object literal with string keys. * @param baseEvent The event to parse. * @param user The user associated with this event. * @returns A parsed event or undefined if the event was not present. */ private static parseEvent; }