import ClientMetricReport from '../clientmetricreport/ClientMetricReport' ; import VideoStreamIdSet from '../videostreamidset/VideoStreamIdSet' ; import VideoStreamIndex from '../videostreamindex/VideoStreamIndex' ; import VideoTileController from '../videotilecontroller/VideoTileController' ; import VideoDownlinkObserver from './VideoDownlinkObserver' ; /**
 * [[VideoDownlinkBandwidthPolicy]] makes decisions about downlink
 * video bandwidth usage.
 */ export default interface VideoDownlinkBandwidthPolicy { /**
     * Reset back to initial state
     */ reset ( ) : void ; /**
     * Potentially update the desired set of video streams to receive
     * based on the given [[VideoStreamIndex]].
     */ updateIndex ( videoIndex ) : void ; /**
     * Update connection metrics
     */ updateMetrics ( clientMetricReport ) : void ; /**
     * Returns true if the policy has decided that a change to subscribed
     * set of video streams to receive would be beneficial.
     */ wantsResubscribe ( ) : boolean ; /**
     * Updates the internal state with the set of streams we expect to be
     * subscribed to, and return the set.
     *
     * When a policy is passed into a meeting session, this will be called
     * once every two seconds to check if the subscriptions have changed.
     */ chooseSubscriptions ( ) : VideoStreamIdSet ; /**
     * (Optional) Add VideoDownlinkObserver to observer resubscribe requests
     */ addObserver ? ( observer ) : void ; /**
     * (Optional) Removes the VideoDownlinkObserver.
     */ removeObserver ? ( observer ) : void ; param tileController bindToTileController ? ( tileController ) : void ; }