/**
 * The IAnalyticsActionCause interface describes the cause of an event for the analytics service.
 *
 * See the {@link Analytics} component
 */
export interface IAnalyticsActionCause {
  /**
   * Specifies the name of the event. While you can actually set this property to any arbitrary string value, its value
   * should uniquely identify the precise action that triggers the event. Thus, each individual event should have its
   * own unique `name` value.
   *
   * Example: `searchBoxSubmit`, `resultSort`, etc.
   */
  name: string;

  /**
   * Specifies the type of the event. While you can actually set this property to any arbitrary string value, it should
   * describe the general category of the event. Thus, more than one event can have the same `type` value, which makes
   * it possible to group events with identical types when doing reporting.
   *
   * Example: All search box related events could have `searchbox` as their `type` value.
   */
  type: string;
}

export interface IAnalyticsNoMeta {}

export interface IAnalyticsInterfaceChange {
  interfaceChangeTo: string;
}

export interface IAnalyticsContextAddMeta {
  contextName: string;
}

export interface IAnalyticsContextRemoveMeta {
  contextName: string;
}

export interface IAnalyticsResultsSortMeta {
  resultsSortBy: string;
}

/**
 * The `IAnalyticsDocumentViewMeta` interface describes the expected metadata when logging a click event / item view.
 *
 * See also the [`Analytics`]{@link Analytics} component, and more specifically its
 * [`logClickEvent`]{@link Analytics.logClickEvent} method.
 */
export type IAnalyticsDocumentViewMeta = {
  /**
   * The URL of the clicked item.
   */
  documentURL?: string;

  /**
   * The title of the clicked item.
   */
  documentTitle?: string;

  /**
   * The author of the clicked item.
   */
  author: string;
};

export interface IAnalyticsOmniboxFacetMeta {
  facetId: string;
  facetField: string;
  facetTitle: string;
  facetValue?: string;
  suggestions: string;
  suggestionRanking: number;
  query: string;
}

export interface IAnalyticsSimpleFilterMeta {
  simpleFilterTitle: string;
  simpleFilterSelectedValue?: string;
  simpleFilterField: string;
}

export interface IAnalyticsFacetMeta {
  facetId: string;
  facetField: string;
  facetValue?: string;
  facetRangeStart?: string;
  facetRangeEnd?: string;
  facetRangeEndInclusive?: boolean;
  facetTitle: string;
}

export interface IAnalyticsFacetSortMeta extends IAnalyticsFacetMeta {
  criteria: string;
}

export interface IAnalyticsCategoryFacetMeta {
  categoryFacetId: string;
  categoryFacetField: string;
  categoryFacetPath?: string[];
  categoryFacetTitle: string;
}

export interface IAnalyticsQueryErrorMeta {
  query: string;
  aq: string;
  cq: string;
  dq: string;
  errorType: string;
  errorMessage: string;
}

export interface IAnalyticsTopSuggestionMeta {
  suggestionRanking: number;
  partialQueries: string;
  suggestions: string;
  partialQuery: string;
}

export interface IAnalyticsOmniboxSuggestionMeta {
  suggestionRanking: number;
  partialQueries: string;
  suggestions: string;
  partialQuery: string;
}

export interface IAnalyticsFacetSliderChangeMeta {
  facetId: string;
  facetField: string;
  facetRangeStart: any;
  facetRangeEnd: any;
}

export interface IAnalyticsFacetGraphSelectedMeta extends IAnalyticsFacetSliderChangeMeta {}

export interface IAnalyticsFacetOperatorMeta extends IAnalyticsFacetMeta {
  facetOperatorBefore: string;
  facetOperatorAfter: string;
}

export interface IAnalyticsPreferencesChangeMeta {
  preferenceName: string;
  preferenceType: string;
}

export interface IAnalyticsCustomFiltersChangeMeta {
  customFilterName: string;
  customFilterType: string;
  customFilterExpression: string;
}

export interface IAnalyticsCaseAttachMeta {
  resultUriHash: string;
  articleID: string;
  caseID: string;
  author: string;
}

export interface IAnalyticsCaseContextAddMeta {
  caseID: string;
}

export interface IAnalyticsCaseContextRemoveMeta {
  caseID: string;
}

export interface IAnalyticsCaseDetachMeta extends IAnalyticsCaseAttachMeta {}

export interface IAnalyticsCaseCreationInputChangeMeta {
  inputTitle: string;
  input: string;
  value: string;
}

export interface IAnalyticsCaseCreationDeflectionMeta {
  hasClicks: boolean;
  values: { [field: string]: string };
}

export interface IAnalyticsPagerMeta {
  pagerNumber: number;
}

export interface IAnalyticsResultsPerPageMeta {
  currentResultsPerPage: number;
}

export interface IAnalyticsTriggerNotify {
  notifications: string[];
}

export interface IAnalyticsTriggerRedirect {
  redirectedTo: string;
  query?: string;
}

export interface IAnalyticsTriggerQuery {
  query: string;
}

export interface IAnalyticsTriggerExecution {
  functionName: string;
  params: (string | number | boolean)[];
}

export interface IAnalyticsTriggerExecute {
  executions: IAnalyticsTriggerExecution[];
}

export interface IAnalyticsSearchAlertsMeta {
  subscription: string;
}

export interface IAnalyticsSearchAlertsUpdateMeta extends IAnalyticsSearchAlertsMeta {
  frequency: string;
}

export type IAnalyticsSearchAlertsFollowDocumentMeta = IAnalyticsDocumentViewMeta & {
  documentSource: string;
  documentLanguage: string[];
  contentIDKey: string;
  contentIDValue: string;
};

export interface IAnalyticsResultsLayoutChange {
  resultsLayoutChangeTo: string;
}

export interface IAnalyticsMissingTerm {
  missingTerm: string;
}

export interface IAnalyticsSmartSnippetMeta {
  searchQueryUid: string;
}

export enum AnalyticsSmartSnippetFeedbackReason {
  DoesNotAnswer = 'does_not_answer',
  PartiallyAnswers = 'partially_answers',
  WasNotAQuestion = 'was_not_a_question',
  Other = 'other'
}

export interface IAnalyticsSmartSnippetFeedbackMeta extends IAnalyticsSmartSnippetMeta {
  reason: AnalyticsSmartSnippetFeedbackReason;
  details?: string;
}

export interface IAnalyticsSmartSnippetOpenSourceMeta extends IAnalyticsSmartSnippetMeta {
  /**
   * The URL of the snippet's source.
   */
  documentURL: string;
  /**
   * The title of the snippet's source.
   */
  documentTitle: string;
  /**
   * The author of the snippet's source..
   */
  author: string;
}

export interface IAnalyticsSmartSnippetOpenSnippetInlineLinkMeta extends IAnalyticsSmartSnippetMeta {
  /**
   * The URL of the clicked link.
   */
  linkURL: string;
  /**
   * The text of the clicked link.
   */
  linkText: string;
}

export interface IAnalyticsSmartSnippetSuggestionMeta extends IAnalyticsSmartSnippetMeta {
  documentId: { contentIdKey: string; contentIdValue: string };
  question: string;
  answerSnippet: string;
}

export interface IAnalyticsSmartSnippetSuggestionOpenSourceMeta extends IAnalyticsSmartSnippetSuggestionMeta {
  /**
   * The URL of the snippet's source.
   */
  documentURL: string;
  /**
   * The title of the snippet's source.
   */
  documentTitle: string;
  /**
   * The author of the snippet's source..
   */
  author: string;
}

export interface IAnalyticsSmartSnippetSuggestionOpenSnippetInlineLinkMeta extends IAnalyticsSmartSnippetSuggestionMeta {
  /**
   * The URL of the clicked link.
   */
  linkURL: string;
  /**
   * The text of the clicked link.
   */
  linkText: string;
}

/**
 * Describes the object sent as metadata along with [`clickQuerySuggestPreview`]{@link analyticsActionCauseList.clickQuerySuggestPreview} usage analytics events.
 */
export interface IAnalyticsClickQuerySuggestPreviewMeta {
  /**
   * The query suggestion for which a preview item was opened.
   */
  suggestion: string;
  /**
   * The 0-based position of the preview item that was opened.
   */
  displayedRank: number;
}

export var analyticsActionCauseList = {
  /**
   * Identifies the search event that gets logged when the initial query is performed as a result of loading a search interface.
   *
   * `actionCause`: `'interfaceLoad'`
   * `actionType`: `'interface'`
   */
  interfaceLoad: <IAnalyticsActionCause>{
    name: 'interfaceLoad',
    type: 'interface'
  },
  /**
   * Identifies the search event that gets logged when a new tab is selected in the search interface.
   *
   * `actionCause`: `'interfaceChange'`
   * `actionType`: `'interface'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"interfaceChangeTo"`: <newTabId>
   */
  interfaceChange: <IAnalyticsActionCause>{
    name: 'interfaceChange',
    type: 'interface'
  },
  /**
   * Identifies the search event that gets logged when any `hd` or `hq` gets cleared from {@link QueryStateModel}, and then triggers a new query.
   *
   * `actionCause`: `'contextRemove'`
   * `actionType`: `'misc'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"contextName"`: <contextName>
   */
  contextRemove: <IAnalyticsActionCause>{
    name: 'contextRemove',
    type: 'misc'
  },
  /**
   * Identifies the search event that gets logged when `enableAutoCorrection: true` and the query is automatically corrected.
   *
   * `actionCause`: `'didyoumeanAutomatic'`
   * `actionType`: `'misc'`
   */
  didyoumeanAutomatic: <IAnalyticsActionCause>{
    name: 'didyoumeanAutomatic',
    type: 'misc'
  },
  /**
   * Identifies the search event that gets logged when the query suggestion with the corrected term is selected and successfully updates the query.
   *
   * `actionCause`: `'didyoumeanClick'`
   * `actionType`: `'misc'`
   */
  didyoumeanClick: <IAnalyticsActionCause>{
    name: 'didyoumeanClick',
    type: 'misc'
  },
  /**
   * Identifies the search event that gets logged when a sorting method is selected.
   *
   * `actionCause`: `'resultsSort'`
   * `actionType`: `'misc'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"resultsSortBy"`: <sortingCategory>
   */
  resultsSort: <IAnalyticsActionCause>{
    name: 'resultsSort',
    type: 'misc'
  },
  /**
   * Identifies the search event that gets logged when a submit button is selected on a search box.
   *
   * `actionCause`: `'searchboxSubmit'`
   * `actionType`: `'search box'`
   */
  searchboxSubmit: <IAnalyticsActionCause>{
    name: 'searchboxSubmit',
    type: 'search box'
  },
  /**
   * Identifies the search event that gets logged when a clear button is selected on a search box.
   *
   * `actionCause`: `'searchboxClear'`
   * `actionType`: `'search box'`
   */
  searchboxClear: <IAnalyticsActionCause>{
    name: 'searchboxClear',
    type: 'search box'
  },
  /**
   * The search-as-you-type event that gets logged when a query is automatically generated, and results are displayed while a user is entering text in the search box before they voluntarily submit the query.
   *
   * `actionCause`: `'searchboxAsYouType'`
   * `actionType`: `'search box'`
   */
  searchboxAsYouType: <IAnalyticsActionCause>{
    name: 'searchboxAsYouType',
    type: 'search box'
  },
  /**
   * The search-as-you-type event that gets logged when a breadcrumb facet is selected and the query is updated.
   *
   * `actionCause`: `'breadcrumbFacet'`
   * `actionType`: `'breadcrumb'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"facetId":`: <correspondingFacetId>
   */
  breadcrumbFacet: <IAnalyticsActionCause>{
    name: 'breadcrumbFacet',
    type: 'breadcrumb'
  },
  /**
   * Identifies the search event that gets logged when a user clears all values from the advanced search filter summary.
   *
   * `actionCause`: `'breadcrumbAdvancedSearch'`
   * `actionType`: `'breadcrumb'`
   */
  breadcrumbAdvancedSearch: <IAnalyticsActionCause>{
    name: 'breadcrumbAdvancedSearch',
    type: 'breadcrumb'
  },
  /**
   * Identifies the search event that gets logged when the event to clear the current breadcrumbs is triggered.
   *
   * `actionCause`: `'breadcrumbResetAll'`
   * `actionType`: `'breadcrumb'`
   */
  breadcrumbResetAll: <IAnalyticsActionCause>{
    name: 'breadcrumbResetAll',
    type: 'breadcrumb'
  },
  /**
   * Identifies the search event that gets logged when a user clicks a tag value from an item tag field to add a filter.
   *
   * `actionCause`: `'documentTag'`
   * `actionType`: `'document'`
   *
   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  documentTag: <IAnalyticsActionCause>{
    name: 'documentTag',
    type: 'document'
  },
  /**
   * Identifies the search event that gets logged when a user clicks a field value from an item field to add a filter.
   *
   * `actionCause`: `'documentField'`
   * `actionType`: `'document'`
   *
   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  documentField: <IAnalyticsActionCause>{
    name: 'documentField',
    type: 'document'
  },
  /**
   * Identifies the click event that gets logged when the Quick View element is selected and a Quick View modal of the document is displayed.
   *
   * `actionCause`: `'documentQuickview'`
   * `actionType`: `'document'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"documentTitle":`: <correspondingDocumentTitle>
   * `"documentURL":`: <correspondingDocumentURL>
   */
  documentQuickview: <IAnalyticsActionCause>{
    name: 'documentQuickview',
    type: 'document'
  },
  /**
   * Identifies the click event that gets logged when a user clicks on a search result to open an item.
   *
   * `actionCause`: `'documentOpen'`
   * `actionType`: `'document'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"documentTitle":`: <correspondingDocumentTitle>
   * `"documentURL":`: <correspondingDocumentURL>
   */
  documentOpen: <IAnalyticsActionCause>{
    name: 'documentOpen',
    type: 'document'
  },
  /**
   * Identifies the search event that gets logged when a user selects or deselects a facet filter from the Omnibox.
   *
   * `actionCause`: `'omniboxFacetSelect'`
   * `actionType`: `'omnibox'`
   *
   * The required properties of an [`IAnalyticsOmniboxFacetMeta`](@link IAnalyticsOmniboxFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  omniboxFacetSelect: <IAnalyticsActionCause>{
    name: 'omniboxFacetSelect',
    type: 'omnibox'
  },
  /**
   * Identifies the search event that gets logged when a user clicks a facet value to filter out results containing this value from the Omnibox.
   *
   * `actionCause`: `'omniboxFacetExclude'`
   * `actionType`: `'omnibox'`
   *
   * The required properties of an [`IAnalyticsOmniboxFacetMeta`](@link IAnalyticsOmniboxFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  omniboxFacetExclude: <IAnalyticsActionCause>{
    name: 'omniboxFacetExclude',
    type: 'omnibox'
  },
  /**
   * Identifies the search event that gets logged when a user selects or deselects a facet filter from the Omnibox.
   *
   * `actionCause`: `'omniboxFacetDeselect'`
   * `actionType`: `'omnibox'`
   *
   * The required properties of an [`IAnalyticsOmniboxFacetMeta`](@link IAnalyticsOmniboxFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  omniboxFacetDeselect: <IAnalyticsActionCause>{
    name: 'omniboxFacetDeselect',
    type: 'omnibox'
  },
  /**
   * Identifies the search event that gets logged when a user clicks a facet value to not filter out results containing this value from the Omnibox.
   *
   * `actionCause`: `'omniboxFacetUnexclude'`
   * `actionType`: `'omnibox'`
   *
   * The required properties of an [`IAnalyticsOmniboxFacetMeta`](@link IAnalyticsOmniboxFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  omniboxFacetUnexclude: <IAnalyticsActionCause>{
    name: 'omniboxFacetUnexclude',
    type: 'omnibox'
  },
  /**
   * Identifies the search event that gets logged when a user clicks a query suggestion based on the usage analytics recorded queries.
   *
   * `actionCause`: `'omniboxAnalytics'`
   * `actionType`: `'omnibox'`
   *
   * The required properties of an [`IAnalyticsOmniboxSuggestionMeta`](@link IAnalyticsOmniboxSuggestionMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  omniboxAnalytics: <IAnalyticsActionCause>{
    name: 'omniboxAnalytics',
    type: 'omnibox'
  },
  /**
   * Identifies the search event that gets logged when a suggested search query is selected from a standalone searchbox.
   *
   * `actionCause`: `'omniboxFromLink'`
   * `actionType`: `'omnibox'`
   *
   * The required properties of an [`IAnalyticsOmniboxSuggestionMeta`](@link IAnalyticsOmniboxSuggestionMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  omniboxFromLink: <IAnalyticsActionCause>{
    name: 'omniboxFromLink',
    type: 'omnibox'
  },
  /**
   * Identifies the search event that gets logged when a user selects a query suggestion from a list built from values of a field.
   *
   * `actionCause`: `'omniboxField'`
   * `actionType`: `'omnibox'`
   */
  omniboxField: <IAnalyticsActionCause>{
    name: 'omniboxField',
    type: 'omnibox'
  },
  /**
   * Identifies the search event that gets logged when the Clear Facet **X** button is selected.
   *
   * `actionCause`: `'facetClearAll'`
   * `actionType`: `'facet'`
   *
   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  facetClearAll: <IAnalyticsActionCause>{
    name: 'facetClearAll',
    type: 'facet'
  },
  /**
   * Identifies the custom event that gets logged when a query is being typed into the facet search box.
   *
   * `actionCause`: `'facetSearch'`
   * `actionType`: `'facet'`
   *
   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  facetSearch: <IAnalyticsActionCause>{
    name: 'facetSearch',
    type: 'facet'
  },
  /**
   * Identifies the search event that gets logged when the user toggles the facet operator.
   *
   * `actionCause`: `'facetToggle'`
   * `actionType`: `'facet'`
   *
   * The required properties of an [`IAnalyticsFacetOperatorMeta`](@link IAnalyticsFacetOperatorMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  facetToggle: <IAnalyticsActionCause>{
    name: 'facetToggle',
    type: 'facet'
  },
  /**
   * Identifies the search event that gets logged when a facet slider changes range values.
   *
   * `actionCause`: `'facetRangeSlider'`
   * `actionType`: `'facet'`
   *
   * The required properties of an [`IAnalyticsFacetSliderChangeMeta`](@link IAnalyticsFacetSliderChangeMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  facetRangeSlider: <IAnalyticsActionCause>{
    name: 'facetRangeSlider',
    type: 'facet'
  },
  /**
   * Identifies the search event that gets logged when a facet graph changes range values.
   *
   * `actionCause`: `'facetRangeGraph'`
   * `actionType`: `'facet'`
   *
   * The required properties of an [`IAnalyticsFacetSliderChangeMeta`](@link IAnalyticsFacetSliderChangeMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  facetRangeGraph: <IAnalyticsActionCause>{
    name: 'facetRangeGraph',
    type: 'facet'
  },
  /**
   * Identifies the search event that gets logged when a facet check box is selected and the query is updated.
   *
   * `actionCause`: `'facetSelect'`
   * `actionType`: `'facet'`
   *
   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  facetSelect: <IAnalyticsActionCause>{
    name: 'facetSelect',
    type: 'facet'
  },
  /**
   * Identifies the search event that gets logged when all filters on a facet are selected.
   *
   * `actionCause`: `'facetSelectAll'`
   * `actionType`: `'facet'`
   *
   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  facetSelectAll: <IAnalyticsActionCause>{
    name: 'facetSelectAll',
    type: 'facet'
  },
  /**
   * Identifies the search event that gets logged when a facet check box is deselected and the query is updated.
   *
   * `actionCause`: `'facetDeselect'`
   * `actionType`: `'facet'`
   *
   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  facetDeselect: <IAnalyticsActionCause>{
    name: 'facetDeselect',
    type: 'facet'
  },
  /**
   * Identifies the search event that gets logged when a user clicks a facet value to filter out results containing the facet value.
   *
   * `actionCause`: `'facetExclude'`
   * `actionType`: `'facet'`
   *
   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  facetExclude: <IAnalyticsActionCause>{
    name: 'facetExclude',
    type: 'facet'
  },
  /**
   * Identifies the search event that gets logged when a user clicks a facet value to not filter out results containing the facet value.
   *
   * `actionCause`: `'facetUnexclude'`
   * `actionType`: `'facet'`
   *
   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  facetUnexclude: <IAnalyticsActionCause>{
    name: 'facetUnexclude',
    type: 'facet'
  },
  facetUpdateSort: <IAnalyticsActionCause>{
    name: 'facetUpdateSort',
    type: 'facet'
  },
  /**
   * The custom event that gets logged when an end-user expands a facet to see additional values.
   *
   * `actionCause`: `'showMoreFacetResults'`
   * `actionType`: `'facet'`
   */
  facetShowMore: <IAnalyticsActionCause>{
    name: 'showMoreFacetResults',
    type: 'facet'
  },
  /**
   * The custom event that gets logged when an end-user collapses a facet to see less values.
   *
   * `actionCause`: `'showLessFacetResults'`
   * `actionType`: `'facet'`
   */
  facetShowLess: <IAnalyticsActionCause>{
    name: 'showLessFacetResults',
    type: 'facet'
  },
  categoryFacetSelect: <IAnalyticsActionCause>{
    name: 'categoryFacetSelect',
    type: 'categoryFacet'
  },
  categoryFacetReload: <IAnalyticsActionCause>{
    name: 'categoryFacetReload',
    type: 'categoryFacet'
  },
  categoryFacetClear: <IAnalyticsActionCause>{
    name: 'categoryFacetClear',
    type: 'categoryFacet'
  },
  categoryFacetBreadcrumb: <IAnalyticsActionCause>{
    name: 'categoryFacetBreadcrumb',
    type: 'categoryFacet'
  },
  categoryFacetSearch: <IAnalyticsActionCause>{
    name: 'categoryFacetSearch',
    type: 'categoryFacet'
  },
  /**
   * Identifies the search event that gets logged when a DynamicFacet check box is selected and the query is updated.
   *
   * `actionCause`: `'facetSelect'`
   * `actionType`: `'dynamicFacet'`
   *
   * The required and optional properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta)
   * object are added as custom data when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  dynamicFacetSelect: <IAnalyticsActionCause>{
    name: 'facetSelect',
    type: 'dynamicFacet'
  },
  /**
   * Identifies the search event that gets logged when a DynamicFacet check box is deselected and the query is updated.
   *
   * `actionCause`: `'facetDeselect'`
   * `actionType`: `'dynamicFacet'`
   *
   * The required and optional properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta)
   * object are added as custom data when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  dynamicFacetDeselect: <IAnalyticsActionCause>{
    name: 'facetDeselect',
    type: 'dynamicFacet'
  },
  /**
   * Identifies the search event that gets logged when the **Clear** button of the DynamicFacet is clicked.
   *
   * `actionCause`: `'facetClearAll'`
   * `actionType`: `'dynamicFacet'`
   *
   * The required and optional properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta)
   * object are added as custom data when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  dynamicFacetClearAll: <IAnalyticsActionCause>{
    name: 'facetClearAll',
    type: 'dynamicFacet'
  },
  /**
   * Identifies the search event that gets logged when the **Show more** button of the DynamicFacet is clicked.
   *
   * `actionCause`: `'showMoreFacetResults'`
   * `actionType`: `'dynamicFacet'`
   *
   * The required properties of an [`IAnalyticsDynamicFacetMeta`](@link IAnalyticsDynamicFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  dynamicFacetShowMore: <IAnalyticsActionCause>{
    name: 'showMoreFacetResults',
    type: 'dynamicFacet'
  },
  /**
   * Identifies the search event that gets logged when the **Show less** button of the DynamicFacet is clicked.
   *
   * `actionCause`: `'showLessFacetResults'`
   * `actionType`: `'dynamicFacet'`
   *
   * The required properties of an [`IAnalyticsDynamicFacetMeta`](@link IAnalyticsDynamicFacetMeta) object are added as custom data
   * when logging a usage analytics event matching this `actionCause`/`actionType`.
   */
  dynamicFacetShowLess: <IAnalyticsActionCause>{
    name: 'showLessFacetResults',
    type: 'dynamicFacet'
  },
  /**
   * Identifies the search and custom event that gets logged when a user clicks the Go Back link after an error page.
   *
   * `actionCause`: `'errorBack'`
   * `actionType`: `'errors'`
   */
  errorBack: <IAnalyticsActionCause>{
    name: 'errorBack',
    type: 'errors'
  },
  /**
   * Identifies the search and custom event that gets logged when a user clears the query box after an error page.
   *
   * `actionCause`: `'errorClearQuery'`
   * `actionType`: `'errors'`
   */
  errorClearQuery: <IAnalyticsActionCause>{
    name: 'errorClearQuery',
    type: 'errors'
  },
  /**
   * Identifies the search and custom event that gets logged when a user clicks the Retry link after an error page.
   *
   * `actionCause`: `'errorRetry'`
   * `actionType`: `'errors'`
   */
  errorRetry: <IAnalyticsActionCause>{
    name: 'errorRetry',
    type: 'errors'
  },
  /**
   * Identifies the search and custom event that gets logged when a user clicks the Cancel last action link when no results are returned following their last action.
   *
   * `actionCause`: `'noResultsBack'`
   * `actionType`: `'noResults'`
   */
  noResultsBack: <IAnalyticsActionCause>{
    name: 'noResultsBack',
    type: 'noResults'
  },
  /**
   * In the context of Coveo for Salesforce, this search event is logged when a user switches from a search results list in the Insight Panel to the Expanded Search using the Expanded Search icon.
   *
   * `actionCause`: `'expandToFullUI'`
   * `actionType`: `'interface'`
   */
  expandToFullUI: <IAnalyticsActionCause>{
    name: 'expandToFullUI',
    type: 'interface'
  },
  /**
   * In the context of some Coveo for Salesforce user interfaces, this search event is logged when a user fills a form input in the case creation page.
   *
   * `actionCause`: `'inputChange'`
   * `actionType`: `'caseCreation'`
   */
  caseCreationInputChange: <IAnalyticsActionCause>{
    name: 'inputChange',
    type: 'caseCreation'
  },
  /**
   * In the context of some Coveo for Salesforce user interfaces, this custom event is logged when a user creates a case by clicking the submit button.
   *
   * `actionCause`: `'submitButton'`
   * `actionType`: `'caseCreation'`
   */
  caseCreationSubmitButton: <IAnalyticsActionCause>{
    name: 'submitButton',
    type: 'caseCreation'
  },
  /**
   * In the context of some Coveo for Salesforce user interfaces, this custom event is logged when a user cancels the creation of their case by clicking the cancel button.
   *
   * `actionCause`: `'cancelButton'`
   * `actionType`: `'caseCreation'`
   */
  caseCreationCancelButton: <IAnalyticsActionCause>{
    name: 'cancelButton',
    type: 'caseCreation'
  },
  /**
   * In the context of some Coveo for Salesforce user interfaces, this custom event is logged when a user leaves the case creation page.
   *
   * `actionCause`: `'unloadPage'`
   * `actionType`: `'caseCreation'`
   */
  caseCreationUnloadPage: <IAnalyticsActionCause>{
    name: 'unloadPage',
    type: 'caseCreation'
  },
  /**
   * In the context of Coveo for Salesforce, this search event is logged when a user checks the Show only contextual result checkbox from the Insight Panel.
   *
   * `actionCause`: `'casecontextAdd'`
   * `actionType`: `'casecontext'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"caseID":`: <correspondingCaseId>
   */
  casecontextAdd: <IAnalyticsActionCause>{
    name: 'casecontextAdd',
    type: 'casecontext'
  },
  /**
   * In the context of Coveo for Salesforce, this search event is logged when a user clears the Show only contextual result checkbox from the Insight Panel.
   *
   * `actionCause`: `'casecontextRemove'`
   * `actionType`: `'casecontext'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"caseID":`: <correspondingCaseId>
   */
  casecontextRemove: <IAnalyticsActionCause>{
    name: 'casecontextRemove',
    type: 'casecontext'
  },
  /**
   * Identifies the search and custom event that gets logged when a checkbox in the search preferences is toggled.
   *
   * `actionCause`: `'preferencesChange'`
   * `actionType`: `'preferences'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"preferenceName":`: <correspondingPreferenceName>
   * `"preferenceType":`: <correspondingPreferenceType>
   */
  preferencesChange: <IAnalyticsActionCause>{
    name: 'preferencesChange',
    type: 'preferences'
  },
  /**
   * In the context of Coveo for Salesforce, this is custom event logged when an agent opens the User Actions panel.
   *
   * `actionCause`: `'getUserHistory'`
   * `actionType`: `'userHistory'`
   */
  getUserHistory: <IAnalyticsActionCause>{
    name: 'getUserHistory',
    type: 'userHistory'
  },
  /**
   * In the context of some Coveo for Salesforce user interfaces, this  custom event is logged when an agent clicks a link in the User Actions panel.
   *
   * `actionCause`: `'userActionDocumentClick'`
   * `actionType`: `'userHistory'`
   */
  userActionDocumentClick: <IAnalyticsActionCause>{
    name: 'userActionDocumentClick',
    type: 'userHistory'
  },
  /**
   * In the context of Coveo for Salesforce, this custom event is logged when a user attaches a knowledge base article to a case.
   *
   * `actionCause`: `'caseAttach'`
   * `actionType`: `'case'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"documentTitle":`: <correspondingDocumentTitle>
   * `"resultUriHash":`: <correspondingResultUriHash>
   * `"articleID":`: <correspondingArticleId>
   * `"caseID":`: <correspondingCaseID>
   */
  caseAttach: <IAnalyticsActionCause>{
    name: 'caseAttach',
    type: 'case'
  },
  /**
   * In the context of Coveo for Salesforce, this custom event is logged when a user detaches a knowledge base article to a case.
   *
   * `actionCause`: `'caseDetach'`
   * `actionType`: `'case'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"documentTitle":`: <correspondingDocumentTitle>
   * `"resultUriHash":`: <correspondingResultUriHash>
   * `"articleID":`: <correspondingArticleId>
   * `"caseID":`: <correspondingCaseID>
   */
  caseDetach: <IAnalyticsActionCause>{
    name: 'caseDetach',
    type: 'case'
  },
  /**
   * Identifies the search event that gets logged when a user modifies a custom search filter or removes one from the breadcrumbs.
   *
   * `actionCause`: `'customfiltersChange'`
   * `actionType`: `'customfilters'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"customFilterName":`: <correspondingCustomFilterName>
   * `"customFilterType":`: <correspondingCustomFilterType>
   * `"customFilterExpression":`: <correspondingCustomFilterExpression>
   */
  customfiltersChange: <IAnalyticsActionCause>{
    name: 'customfiltersChange',
    type: 'customfilters'
  },
  /**
   * Identifies the custom event that gets logged when a page number is selected and more items are loaded.
   *
   * `actionCause`: `'pagerNumber'`
   * `actionType`: `'getMoreResults'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"pagerNumber":`: <correspondingPageNumber>
   */
  pagerNumber: <IAnalyticsActionCause>{
    name: 'pagerNumber',
    type: 'getMoreResults'
  },
  /**
   * Identifies the custom event that gets logged when the Next Page link is selected and more items are loaded.
   *
   * `actionCause`: `'pagerNext'`
   * `actionType`: `'getMoreResults'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"pagerNumber":`: <correspondingPageNumber>
   */
  pagerNext: <IAnalyticsActionCause>{
    name: 'pagerNext',
    type: 'getMoreResults'
  },
  /**
   * Identifies the custom event that gets logged when the Previous Page link is selected and more items are loaded.
   *
   * `actionCause`: `'pagerPrevious'`
   * `actionType`: `'getMoreResults'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"pagerNumber":`: <correspondingPageNumber>
   */
  pagerPrevious: <IAnalyticsActionCause>{
    name: 'pagerPrevious',
    type: 'getMoreResults'
  },
  /**
   * Identifies the custom event that gets logged when the user scrolls to the bottom of the item page and more results are loaded.
   *
   * `actionCause`: `'pagerScrolling'`
   * `actionType`: `'getMoreResults'`
   */
  pagerScrolling: <IAnalyticsActionCause>{
    name: 'pagerScrolling',
    type: 'getMoreResults'
  },
  /**
   * Identifies the custom event that gets logged when the Results per page component is selected.
   *
   * `actionCause`: `'pagerResize'`
   * `actionType`: `'getMoreResults'`
   */
  pagerResize: <IAnalyticsActionCause>{
    name: 'pagerResize',
    type: 'getMoreResults'
  },
  /**
   * Identifies the search event that gets logged when the user accepts to share their location (latitude and longitude) with the search page.
   *
   * `actionCause`: `'positionSet'`
   * `actionType`: `'distance'`
   */
  positionSet: <IAnalyticsActionCause>{
    name: 'positionSet',
    type: 'distance'
  },
  /**
   * Identifies the search event that gets logged when the search page loads with a query, such as when a user clicks a link pointing to a search results page with a query or enters a query in a standalone search box that points to a search page.
   *
   * `actionCause`: `'searchFromLink'`
   * `actionType`: `'interface'`
   */
  searchFromLink: <IAnalyticsActionCause>{
    name: 'searchFromLink',
    type: 'interface'
  },
  /**
   * Identifies the custom event that gets logged when a user action triggers a notification set in the effective query pipeline on the search page.
   *
   * `actionCause`: `'notify'`
   * `actionType`: `'queryPipelineTriggers'`
   */
  triggerNotify: <IAnalyticsActionCause>{
    name: 'notify',
    type: 'queryPipelineTriggers'
  },
  /**
   * Identifies the custom event that gets logged when a user action executes a JavaScript function set in the effective query pipeline on the search page.
   *
   * `actionCause`: `'execute'`
   * `actionType`: `'queryPipelineTriggers'`
   */
  triggerExecute: <IAnalyticsActionCause>{
    name: 'execute',
    type: 'queryPipelineTriggers'
  },
  /**
   * Identifies the custom event that gets logged when a user action triggers a new query set in the effective query pipeline on the search page.
   *
   * `actionCause`: `'query'`
   * `actionType`: `'queryPipelineTriggers'`
   */
  triggerQuery: <IAnalyticsActionCause>{
    name: 'query',
    type: 'queryPipelineTriggers'
  },
  /**
   * Identifies the custom event that gets logged when a user action redirects them to a URL set in the effective query pipeline on the search page.
   *
   * `actionCause`: `'redirect'`
   * `actionType`: `'queryPipelineTriggers'`
   */
  triggerRedirect: <IAnalyticsActionCause>{
    name: 'redirect',
    type: 'queryPipelineTriggers'
  },
  /**
   * Identifies the custom event that gets logged when a user query encounters an error during execution.
   *
   * `actionCause`: `'query'`
   * `actionType`: `'errors'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"query":`: <correspondingQuery>
   * `"aq":`: <correspondingAdvancedQuery>
   * `"cq":`: <correspondingConstantQuery>
   * `"dq":`: <correspondingDisjunctiveQuery>
   * `"errorType":`: <errorType>
   * `"errorMessage":`: <errorMessage>
   */
  queryError: <IAnalyticsActionCause>{
    name: 'query',
    type: 'errors'
  },
  /**
   * Identifies the custom event that gets logged when a user exports search results in an XLS file by clicking the Export to Excel option.
   *
   * `actionCause`: `'exportToExcel'`
   * `actionType`: `'misc'`
   */
  exportToExcel: <IAnalyticsActionCause>{
    name: 'exportToExcel',
    type: 'misc'
  },
  /**
   * Identifies the custom event that gets logged when a user performs a query that returns recommendations in the Recommendations panel.
   *
   * `actionCause`: `'recommendation'`
   * `actionType`: `'recommendation'`
   */
  recommendation: <IAnalyticsActionCause>{
    name: 'recommendation',
    type: 'recommendation'
  },
  /**
   * Identifies the search event that gets logged when a user action (that is not a query) reloads the Recommendations panel with new recommendations.
   *
   * `actionCause`: `'recommendationInterfaceLoad'`
   * `actionType`: `'recommendation'`
   */
  recommendationInterfaceLoad: <IAnalyticsActionCause>{
    name: 'recommendationInterfaceLoad',
    type: 'recommendation'
  },
  /**
   * Identifies the click event that gets logged when a user clicks a recommendation in the Recommendations panel.
   *
   * `actionCause`: `'recommendationOpen'`
   * `actionType`: `'recommendation'`
   */
  recommendationOpen: <IAnalyticsActionCause>{
    name: 'recommendationOpen',
    type: 'recommendation'
  },
  /**
   * Identifies the search event that gets logged when a user creates an advanced query from the {@link AdvancedSearch} component.
   *
   * `actionCause`: `'advancedSearch'`
   * `actionType`: `'advancedSearch'`
   */
  advancedSearch: <IAnalyticsActionCause>{
    name: 'advancedSearch',
    type: 'advancedSearch'
  },
  /**
   * Identifies the custom event that gets logged when a user follows a document.
   *
   * `actionCause`: `'followDocument'`
   * `actionType`: `'searchAlerts'`
   */
  searchAlertsFollowDocument: <IAnalyticsActionCause>{
    name: 'followDocument',
    type: 'searchAlerts'
  },
  /**
   * Identifies the custom event that gets logged when a user follows a query.
   *
   * `actionCause`: `'followQuery'`
   * `actionType`: `'searchAlerts'`
   */
  searchAlertsFollowQuery: <IAnalyticsActionCause>{
    name: 'followQuery',
    type: 'searchAlerts'
  },
  /**
   * Identifies the custom event that gets logged when the dropdown value for frequency is changed.
   *
   * `actionCause`: `'updateSubscription'`
   * `actionType`: `'searchAlerts'`
   */
  searchAlertsUpdateSubscription: <IAnalyticsActionCause>{
    name: 'updateSubscription',
    type: 'searchAlerts'
  },
  /**
   * Identifies the custom event that gets logged when a subscription is successfully deleted.
   *
   * `actionCause`: `'deleteSubscription'`
   * `actionType`: `'searchAlerts'`
   */
  searchAlertsDeleteSubscription: <IAnalyticsActionCause>{
    name: 'deleteSubscription',
    type: 'searchAlerts'
  },
  /**
   * Identifies the custom event that gets logged when a user unfollows a document.
   *
   * `actionCause`: `'unfollowDocument'`
   * `actionType`: `'searchAlerts'`
   */
  searchAlertsUnfollowDocument: <IAnalyticsActionCause>{
    name: 'unfollowDocument',
    type: 'searchAlerts'
  },
  /**
   * Identifies the custom event that gets logged when a user unfollows a query.
   *
   * `actionCause`: `'unfollowQuery'`
   * `actionType`: `'searchAlerts'`
   */
  searchAlertsUnfollowQuery: <IAnalyticsActionCause>{
    name: 'unfollowQuery',
    type: 'searchAlerts'
  },
  /**
   * Identifies the search event that gets logged when a user selects a simple filter value under the search box.
   *
   * `actionCause`: `'selectValue'`
   * `actionType`: `'simpleFilter'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"simpleFilterTitle":`: <correspondingSimpleFilterTitle>
   * `"simpleFilterValue":`: <correspondingSimpleFilterValue>
   * `"simpleFilterField":`: <correspondingSimpleFilterField>
   */
  simpleFilterSelectValue: <IAnalyticsActionCause>{
    name: 'selectValue',
    type: 'simpleFilter'
  },
  /**
   * Identifies the search event that gets logged when a user deselects a simple filter value under the search box.
   *
   * `actionCause`: `'deselectValue'`
   * `actionType`: `'simpleFilter'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"simpleFilterTitle":`: <correspondingSimpleFilterTitle>
   * `"simpleFilterValue":`: <correspondingSimpleFilterValue>
   * `"simpleFilterField":`: <correspondingSimpleFilterField>
   */
  simpleFilterDeselectValue: <IAnalyticsActionCause>{
    name: 'deselectValue',
    type: 'simpleFilter'
  },
  /**
   * Identifies the search event that gets logged when a user clicks the Clear all button to remove all simple filters under the search box.
   *
   * `actionCause`: `'clearAll'`
   * `actionType`: `'simpleFilter'`
   *
   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.
   * `"simpleFilterTitle":`: <correspondingSimpleFilterTitle>
   * `"simpleFilterValue":`: <correspondingSimpleFilterValue>
   * `"simpleFilterField":`: <correspondingSimpleFilterField>
   */
  simpleFilterClearAll: <IAnalyticsActionCause>{
    name: 'clearAll',
    type: 'simpleFilter'
  },
  /**
   * Identifies the search event that gets logged when a user changes the search results layout (list, card, or table).
   *
   * `actionCause`: `'changeResultsLayout'`
   * `actionType`: `'resultsLayout'`
   */
  resultsLayoutChange: <IAnalyticsActionCause>{
    name: 'changeResultsLayout',
    type: 'resultsLayout'
  },
  /**
   * Identifies the click event that gets logged when a user clicks the Show More link under a search result that support the folding component
   *
   * `actionCause`: `'showMoreFoldedResults'`
   * `actionType`: `'folding'`
   */
  foldingShowMore: <IAnalyticsActionCause>{
    name: 'showMoreFoldedResults',
    type: 'folding'
  },
  /**
   * Identifies the click event that gets logged when a user clicks the Show Less link under a search result that support the folding component
   *
   * `actionCause`: `'showMoreFoldedResults'`
   * `actionType`: `'folding'`
   */
  foldingShowLess: <IAnalyticsActionCause>{
    name: 'showLessFoldedResults',
    type: 'folding'
  },
  /**
   * The search event that gets logged when an end-user triggers a new query by clicking a missing term in a result item.
   *
   * `actionCause`: `'addMissingTerm'`
   * `actionType`: `'missingTerm'`
   */
  addMissingTerm: <IAnalyticsActionCause>{
    name: 'addMissingTerm',
    type: 'missingTerm'
  },
  /**
   * The search event that gets logged when an end-user triggers a new query by removing a missing term from the breadcrumb.
   *
   * `actionCause`: `'removeMissingTerm'`
   * `actionType`: `'missingTerm'`
   */
  removeMissingTerm: <IAnalyticsActionCause>{
    name: 'removeMissingTerm',
    type: 'missingTerm'
  },
  /**
   * The search event logged when a preview is requested for a query suggestion (see the [QuerySuggestPreview]{@link QuerySuggestPreview} component).
   *
   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:
   *
   * ```javascript
   * {
   *  actionCause: "showQuerySuggestPreview",
   *  actionType: "querySuggestPreview"
   * }
   * ```
   *
   * The framework sends an [`IAnalyticsTopSuggestionMeta`]{@link IAnalyticsTopSuggestionMeta} object as metadata when logging this event.
   */
  showQuerySuggestPreview: <IAnalyticsActionCause>{
    name: 'showQuerySuggestPreview',
    type: 'querySuggestPreview'
  },
  /**
   * The custom event logged when an item is opened in a query suggestion preview (see the [QuerySuggestPreview]{@link QuerySuggestPreview} component).
   *
   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:
   *
   * ```javascript
   * {
   *  actionCause: "clickQuerySuggestPreview",
   *  actionType: "querySuggestPreview"
   * }
   * ```
   *
   * The framework sends an [`IAnalyticsClickQuerySuggestPreviewMeta`]{@link IAnalyticsClickQuerySuggestPreviewMeta} object as metadata when logging this event.
   */
  clickQuerySuggestPreview: <IAnalyticsActionCause>{
    name: 'clickQuerySuggestPreview',
    type: 'querySuggestPreview'
  },
  /**
   * The custom event logged when the "Yes" button is pressed in a [SmartSnippet]{@link SmartSnippet}'s feedback banner.
   *
   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:
   *
   * ```javascript
   * {
   *  actionCause: "likeSmartSnippet",
   *  actionType: "smartSnippet"
   * }
   * ```
   */
  likeSmartSnippet: <IAnalyticsActionCause>{
    name: 'likeSmartSnippet',
    type: 'smartSnippet'
  },
  /**
   * The custom event logged when the "No" button is pressed in a [SmartSnippet]{@link SmartSnippet}'s feedback banner.
   *
   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:
   *
   * ```javascript
   * {
   *  actionCause: "dislikeSmartSnippet",
   *  actionType: "smartSnippet"
   * }
   * ```
   */
  dislikeSmartSnippet: <IAnalyticsActionCause>{
    name: 'dislikeSmartSnippet',
    type: 'smartSnippet'
  },
  /**
   * The custom event logged when the "Show more" button is pressed in a [SmartSnippet]{@link SmartSnippet}.
   *
   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:
   *
   * ```javascript
   * {
   *  actionCause: "expandSmartSnippet",
   *  actionType: "smartSnippet"
   * }
   * ```
   */
  expandSmartSnippet: <IAnalyticsActionCause>{
    name: 'expandSmartSnippet',
    type: 'smartSnippet'
  },
  /**
   * The custom event logged when the "Show less" button is pressed in a [SmartSnippet]{@link SmartSnippet}.
   *
   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:
   *
   * ```javascript
   * {
   *  actionCause: "collapseSmartSnippet",
   *  actionType: "smartSnippet"
   * }
   * ```
   */
  collapseSmartSnippet: <IAnalyticsActionCause>{
    name: 'collapseSmartSnippet',
    type: 'smartSnippet'
  },
  /**
   * The custom event logged when the "Explain why" button in a [SmartSnippet]{@link SmartSnippet} is pressed.
   *
   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:
   *
   * ```javascript
   * {
   *  actionCause: "openSmartSnippetFeedbackModal",
   *  actionType: "smartSnippet"
   * }
   * ```
   */
  openSmartSnippetFeedbackModal: <IAnalyticsActionCause>{
    name: 'openSmartSnippetFeedbackModal',
    type: 'smartSnippet'
  },
  /**
   * The custom event logged when the modal opened by clicking the "Explain why" button in a [SmartSnippet]{@link SmartSnippet} is closed.
   *
   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:
   *
   * ```javascript
   * {
   *  actionCause: "closeSmartSnippetFeedbackModal",
   *  actionType: "smartSnippet"
   * }
   * ```
   */
  closeSmartSnippetFeedbackModal: <IAnalyticsActionCause>{
    name: 'closeSmartSnippetFeedbackModal',
    type: 'smartSnippet'
  },
  /**
   * The custom event logged when a generic reason was sent from the modal opened when clicking the "Explain why" button in a [SmartSnippet]{@link SmartSnippet}.
   *
   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:
   *
   * ```javascript
   * {
   *  actionCause: "sendSmartSnippetReason",
   *  actionType: "smartSnippet"
   * }
   * ```
   */
  sendSmartSnippetReason: <IAnalyticsActionCause>{
    name: 'sendSmartSnippetReason',
    type: 'smartSnippet'
  },
  /**
   * The custom event logged when a user clicks on the source of an answer in a [SmartSnippet]{@link SmartSnippet}..
   *
   * ```javascript
   * {
   *  actionCause: "openSmartSnippetSource",
   *  actionType: "smartSnippet"
   * }
   * ```
   */
  openSmartSnippetSource: <IAnalyticsActionCause>{
    name: 'openSmartSnippetSource',
    type: 'smartSnippet'
  },
  /**
   * The custom event logged when a user clicks on an inline link inside of an answer in a [SmartSnippet]{@link SmartSnippet}.
   *
   * ```javascript
   * {
   *  actionCause: "openSmartSnippetInlineLink",
   *  actionType: "smartSnippet"
   * }
   * ```
   */
  openSmartSnippetInlineLink: <IAnalyticsActionCause>{
    name: 'openSmartSnippetInlineLink',
    type: 'smartSnippet'
  },
  /**
   * The custom event logged when a suggestion from [SmartSnippetSuggestions]{@link SmartSnippetSuggestions} is expanded.
   *
   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:
   *
   * ```javascript
   * {
   *  actionCause: "expandSmartSnippetSuggestion",
   *  actionType: "smartSnippetSuggestions"
   * }
   * ```
   */
  expandSmartSnippetSuggestion: <IAnalyticsActionCause>{
    name: 'expandSmartSnippetSuggestion',
    type: 'smartSnippetSuggestions'
  },
  /**
   * The custom event logged when a suggestion from [SmartSnippetSuggestions]{@link SmartSnippetSuggestions} is collapsed.
   *
   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:
   *
   * ```javascript
   * {
   *  actionCause: "collapseSmartSnippetSuggestion",
   *  actionType: "smartSnippetSuggestions"
   * }
   * ```
   */
  collapseSmartSnippetSuggestion: <IAnalyticsActionCause>{
    name: 'collapseSmartSnippetSuggestion',
    type: 'smartSnippetSuggestions'
  },
  /**
   * The custom event logged when a user clicks on the source of an answer in a [SmartSnippetSuggestion]{@link SmartSnippetSuggestions}.
   *
   * ```javascript
   * {
   *  actionCause: "openSmartSnippetSuggestionSource",
   *  actionType: "smartSnippet"
   * }
   * ```
   */
  openSmartSnippetSuggestionSource: <IAnalyticsActionCause>{
    name: 'openSmartSnippetSuggestionSource',
    type: 'smartSnippet'
  },
  /**
   * The custom event logged when a user clicks on an inline link inside of an answer in an expanded [SmartSnippetSuggestion]{@link SmartSnippetSuggestions}.
   *
   * ```javascript
   * {
   *  actionCause: "openSmartSnippetSuggestionInlineLink",
   *  actionType: "smartSnippet"
   * }
   * ```
   */
  openSmartSnippetSuggestionInlineLink: <IAnalyticsActionCause>{
    name: 'openSmartSnippetSuggestionInlineLink',
    type: 'smartSnippet'
  }
};
