import VideoTile from '../videotile/VideoTile' ; import VideoTileState from '../videotile/VideoTileState' ; /**
 * [[VideoTileController]] allows one to manipulate how the underlying media
 * streams are assigned to video elements. The caller is responsible for laying
 * out video elements as desired and binding tile ids received from the observer
 * in the [[videoTileUpdated]] callbacks.
 */ export default interface VideoTileController { keepLastFrameWhenPaused ? : boolean | undefined ; /**
     * Binds the video element to the tile if it exists for the provided tileId.
     * This should also be called any time the layout of the video element changes, for example, when changing its
     * dimensions.
     */ bindVideoElement ( tileId , videoElement ) : void ; /**
     * Unbinds the video element from the tile if it exists for the provided tileId.
     * The video tile's bounded video element and that element's width and height are set to null.
     * This does not remove the provided tileId mapping from the tile map in the [[DefaultVideoTileController]].
     * To remove the mapping and destroy the tile for this tileId, you can use [[removeVideoTile]].
     */ unbindVideoElement ( tileId ) : void ; /**
     * Starts sharing the local video tile by creating a new video tile if one does not already exist.
     * Binds the created local video tile to the local video stream and then returns its tile id.
     */ startLocalVideoTile ( ) : number ; /**
     * Stops a local video tile, if it exists.
     * The bounded video stream associated with the local video tile is released and set to null.
     */ stopLocalVideoTile ( ) : void ; /**
     * Returns whether the local video tile has been started.
     */ hasStartedLocalVideoTile ( ) : boolean ; /**
     * Stops and removes a local video tile, if it exists.
     * This calls [[removeVideoTile]] internally with the current local tileId.
     */ removeLocalVideoTile ( ) : void ; /**
     * Returns the current local video tile if it exists
     */ getLocalVideoTile ( ) : VideoTile | null ; /**
     * Pauses the video tile if it exists and sends the updated video tile state
     * to the meeting session's AudioVideoObserver’s [[videoTileDidUpdate]] callback.
     * This API is intended to be called on the remote videos.
     * If called on a local video tile, then the tile will no longer be updated,
     * but the local video source will continue to be sent into the meeting.
     */ pauseVideoTile ( tileId ) : void ; /**
     * Unpauses the video tile if it exists and sends the updated video tile state
     * to the meeting session's AudioVideoObserver’s [[videoTileDidUpdate]] callback.
     * This API is intended to be called on the remote videos and has no effect on the local video.
     * When called on a remote video tileId, the remote video source will start getting the updates if paused earlier.
     */ unpauseVideoTile ( tileId ) : void ; /**
     * Looks up a video tile from its tile id
     */ getVideoTile ( tileId ) : VideoTile | null ; /**
     * Gets a video tile area in physical pixels
     */ getVideoTileArea ( tile ) : number ; /**
     * Returns the remote video tile
     */ getAllRemoteVideoTiles ( ) : VideoTile [ ] ; /**
     * Get all video tiles.
     */ getAllVideoTiles ( ) : VideoTile [ ] ; /**
     * Returns a new tile. The tile id is assigned automatically.
     */ addVideoTile ( ) : VideoTile ; /**
     * Disconnects the video source from the video element bounded with the video tile,
     * removes the tile by the tileId and the AudioVideoObserver’s [[videoTileWasRemoved]] callback
     * is called with the removed tile id.
     */ removeVideoTile ( tileId ) : void ; /**
     * Removes any tiles that have the given attendee id and returns the tile ids of the
     *  tiles removed
     */ removeVideoTilesByAttendeeId ( attendeeId ) : number [ ] ; /**
     * Removes all the tiles.
     */ removeAllVideoTiles ( ) : void ; /**
     * Broadcasts a tile state update to the session observers.
     */ sendTileStateUpdate ( tileState ) : void ; /**
     * Returns whether at least one video tile has a bound media stream.
     */ haveVideoTilesWithStreams ( ) : boolean ; /**
     * Returns whether an attendeeId is associated with a video tile
     */ haveVideoTileForAttendeeId ( attendeeId ) : boolean ; param attendeeId getVideoTileForAttendeeId ? ( attendeeId ) : VideoTile | undefined ; /**
     * This can be used to capture the image data for a given tile.
     */ captureVideoTile ? ( tileId ) : ImageData | null ; }