import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from './enums';
declare type AEP<Action, ActionSubject, ActionSubjectID, Attributes, NonPrivacySafeAttributes, EventType, ImplicitAttributes extends {} = {}> = {
    action: Action;
    actionSubject: ActionSubject;
    actionSubjectId?: ActionSubjectID;
    attributes?: Attributes & {
        [key in keyof ImplicitAttributes]?: ImplicitAttributes[key];
    };
    eventType: EventType;
    nonPrivacySafeAttributes?: NonPrivacySafeAttributes;
};
export declare type UIAEP<Action, ActionSubject, ActionSubjectID, Attributes, NonPrivacySafeAttributes> = AEP<Action, ActionSubject, ActionSubjectID, Attributes, NonPrivacySafeAttributes, EVENT_TYPE.UI>;
export declare type TrackAEP<Action, ActionSubject, ActionSubjectID, Attributes, NonPrivacySafeAttributes, ImplicitAttributes extends {} = {}> = AEP<Action, ActionSubject, ActionSubjectID, Attributes, NonPrivacySafeAttributes, EVENT_TYPE.TRACK, ImplicitAttributes>;
export declare type OperationalAEP<Action, ActionSubject, ActionSubjectID, Attributes, NonPrivacySafeAttributes> = AEP<Action, ActionSubject, ActionSubjectID, Attributes, NonPrivacySafeAttributes, EVENT_TYPE.OPERATIONAL>;
export declare type ScreenAEP<Action, ActionSubject, ActionSubjectID, Attributes, NonPrivacySafeAttributes> = AEP<Action, ActionSubject, ActionSubjectID, Attributes, NonPrivacySafeAttributes, EVENT_TYPE.SCREEN>;
export declare type TableAEP<Action, Attributes, NonPrivacySafeAttributes> = TrackAEP<Action, ACTION_SUBJECT.TABLE, null, Attributes, NonPrivacySafeAttributes>;
export declare enum SELECTION_TYPE {
    CURSOR = "cursor",
    RANGED = "ranged",
    GAP_CURSOR = "gapCursor",
    NODE = "node",
    CELL = "cell"
}
export declare enum SELECTION_POSITION {
    START = "start",
    MIDDLE = "middle",
    END = "end",
    LEFT = "left",
    RIGHT = "right"
}
interface NonRequiredAttributes {
    insertLocation?: string;
    selectionType?: SELECTION_TYPE;
    selectionPosition?: SELECTION_POSITION;
}
export declare type InsertAEP<ActionSubjectID, Attributes, NonPrivacySafeAttributes> = TrackAEP<ACTION.INSERTED, ACTION_SUBJECT.DOCUMENT, ActionSubjectID, Attributes, NonPrivacySafeAttributes, NonRequiredAttributes>;
export {};
