/**
 * @externs
 */


/**
 * @type {Object}
 */
var oli;



/** @interface */
oli.CollectionEvent = function() {};


/** @type {*} */
oli.CollectionEvent.prototype.element;



/** @interface */
oli.DragBoxEvent;


/** @type {ol.Coordinate} */
oli.DragBoxEvent.prototype.coordinate;



/** @interface */
oli.DrawEvent;


/** @type {ol.Feature} */
oli.DrawEvent.prototype.feature;



/** @interface */
oli.ObjectEvent;


/** @type {string} */
oli.ObjectEvent.prototype.key;



/** @interface */
oli.MapBrowserEvent;


/** @type {ol.Coordinate} */
oli.MapBrowserEvent.prototype.coordinate;


/** @type {Event} */
oli.MapBrowserEvent.prototype.originalEvent;


/** @type {ol.Pixel} */
oli.MapBrowserEvent.prototype.pixel;



/**
 * @interface
 */
oli.control.Control = function() {};


/**
 * @param {ol.Map} map Map.
 * @return {undefined} Undefined.
 */
oli.control.Control.prototype.setMap = function(map) {};



/** @interface */
oli.interaction.DragAndDropEvent = function() {};


/** @type {Array.<ol.Feature>} */
oli.interaction.DragAndDropEvent.prototype.features;


/** @type {ol.proj.Projection} */
oli.interaction.DragAndDropEvent.prototype.projection;



/** @interface */
oli.render.Event = function() {};


/** @type {CanvasRenderingContext2D|null|undefined} */
oli.render.Event.prototype.context;


/** @type {ol.FrameState|undefined} */
oli.render.Event.prototype.frameState;


/** @type {ol.webgl.Context|null|undefined} */
oli.render.Event.prototype.glContext;


/** @type {ol.render.IVectorContext|undefined} */
oli.render.Event.prototype.vectorContext;



/** @interface */
oli.source.VectorEvent;


/** @type {ol.Feature} */
oli.source.VectorEvent.prototype.feature;

@@ -370,24 +370,1477 @@
 .feature;%0A%0A%0A
+/** @interface */%0Aoli.FrameState;%0A%0A%0A/** @type %7Bboolean%7D */%0Aoli.FrameState.prototype.animate;%0A%0A%0A/** @type %7BObject.%3Cstring, ol.Attribution%3E%7D */%0Aoli.FrameState.prototype.attributions;%0A%0A%0A/** @type %7Bgoog.vec.Mat4.Number%7D */%0Aoli.FrameState.prototype.coordinateToPixelMatrix;%0A%0A%0A/** @type %7B(null%7Col.Extent)%7D */%0Aoli.FrameState.prototype.extent;%0A%0A%0A/** @type %7Bol.Coordinate%7D */%0Aoli.FrameState.prototype.focus;%0A%0A%0A/** @type %7Bnumber%7D */%0Aoli.FrameState.prototype.index;%0A%0A%0A/** @type %7BArray.%3Col.layer.Layer%3E%7D */%0Aoli.FrameState.prototype.layersArray;%0A%0A%0A/** @type %7BObject.%3Cnumber, ol.layer.LayerState%3E%7D */%0Aoli.FrameState.prototype.layerStates;%0A%0A%0A/** @type %7BObject.%3Cstring, string%3E%7D */%0Aoli.FrameState.prototype.logos;%0A%0A%0A/** @type %7Bnumber%7D */%0Aoli.FrameState.prototype.pixelRatio;%0A%0A%0A/** @type %7Bgoog.vec.Mat4.Number%7D */%0Aoli.FrameState.prototype.pixelToCoordinateMatrix;%0A%0A%0A/** @type %7BArray.%3Col.PostRenderFunction%3E%7D */%0Aoli.FrameState.prototype.postRenderFunctions;%0A%0A%0A/** @type %7Bol.Size%7D */%0Aoli.FrameState.prototype.size;%0A%0A%0A/** @type %7Bol.TileQueue%7D */%0Aoli.FrameState.prototype.tileQueue;%0A%0A%0A/** @type %7Bnumber%7D */%0Aoli.FrameState.prototype.time;%0A%0A%0A/** @type %7BObject.%3Cstring, Object.%3Cstring, ol.TileRange%3E%3E%7D */%0Aoli.FrameState.prototype.usedTiles;%0A%0A%0A/** @type %7Bol.View2DState%7D */%0Aoli.FrameState.prototype.view2DState;%0A%0A%0A/** @type %7BArray.%3Cnumber%3E%7D */%0Aoli.FrameState.prototype.viewHints;%0A%0A%0A/** @type %7BObject.%3Cstring, Object.%3Cstring, boolean%3E%3E%7D */%0Aoli.FrameState.prototype.wantedTiles;%0A%0A
 %0A/** @interf
@@ -2769,16 +2769,17 @@
 type %7Bol
+i
 .FrameSt

Add oli.FrameState extern