import { EventNotificationContext } from './EventNotificationContext';
import { IEventNotification } from './IEventNotification';
export declare abstract class EventNotification implements IEventNotification {
    /**
     * The client matter number if applicable
     */
    CMNumber: string;
    /**
     * The unique ID assigned to a document by Word if applicable
     */
    DocumentId: string;
    /**
     * The document name
     */
    DocumentName: string;
    /**
     * The document ID retrieved from integrated document manager like NetDocuments
     */
    DocumentManagerId: string;
    /**
     * The name of integrated document manager
     */
    DocumentManagerType: string;
    /**
     * This is a unique ID that is assigned to every event notification that we create. This unique ID can be used
     * by subscribers for the purpose of de-duplication. Note that this GUID does not signify the uniqueness of the
     * data referenced, but the notification itself.
     */
    Guid: string;
    /**
     * The context helps us identify things about the event's execution. Details such as who executed the
     * event and from which application are described herein.
     */
    Context: EventNotificationContext;
    /**
     * An identifier for the type of event. Generally, this will be auto-created by translating the events
     * class name like: CaseSaved -> case_saved, BoaGenerated -> boa_generated
     */
    EventType: string;
    /**
     * Timestamp from when the message was sent. This is filled out
     * automatically by the Notification Service.
     */
    Time: string;
    /**
     * If the event is for an event that was timed, this field will contain the time taken to complete the task being
     * referenced by the event.
     */
    SecondsTaken: number;
    /**
     * This field tracks the start time of an event we are notifying for.
     */
    private TimerStartTime;
    /**
     * Execute this function if we want to track the time between this execution and the sending of the event.
     * @constructor
     */
    StartTimer(): void;
    /**
     * This will return the number of seconds elapsed since the timer was started, or this event object was first
     * created.
     * @constructor
     */
    GetElapsedSeconds(): number;
    /**
     * To help control what data we ultimately send out, use this method to stringify an event to JSON.
     */
    toJSONString(): string;
    /**
     * This method is used to derive an event name from the event's class name.
     *
     * @constructor
     */
    private GetEventNameFromClassName;
}
