src/extras/super-annotations.js
function(opt_options) {
  /* @type {!Array.<!Annotation>} */
  this.annotations_ = [];
  // Used to detect resizes (which require the divs to be repositioned).
  this.lastWidth_ = -1;
  this.lastHeight = -1;
  this.dygraph_ = null;

  opt_options = opt_options || {};
  this.defaultAnnotationProperties_ = $.extend({
    'text': 'Description'
  }, opt_options['defaultAnnotationProperties']);
}
function(opt_options) {
  /* @type {!Array.<!Annotation>} */
  this.annotations_ = [];
  // Used to detect resizes (which require the divs to be repositioned).
  this.lastWidth_ = -1;
  this.lastHeight = -1;
  this.dygraph_ = null;

  opt_options = opt_options || {};
  this.defaultAnnotationProperties_ = $.extend({
    'text': 'Description'
  }, opt_options['defaultAnnotationProperties']);
}
These are just the basic requirements -- annotations can have whatever other
properties the code that displays them wants them to have.

@typedef {
xval:  number,      // x-value (i.e. millis or a raw number)
series: string,     // series name
yFrac: ?number,     // y-positioning. Default is a few px above the point.
lineDiv: !Element   // vertical div connecting point to info div.
infoDiv: !Element   // div containing info about the annotation.
} Annotation