/** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Microsoft Live Share SDK License. */ import { IMediaPlayer } from "./IMediaPlayer"; export declare enum LimitLevelType { fixed = 0, percentage = 1 } /** * Smooth audio level changes when volume is modified, or if volume limiting has started/ended. */ export declare class VolumeManager { private readonly _player; private readonly _volumeChangeDuration; private _volume; private _isLimiting; private _limitLevel; private _limitLevelType; private _startTime; private _startVolume; private _running; constructor(player: IMediaPlayer); /** * The selected volume. * * @remarks * Expressed as a value between 0.0 and 1.0. The default value is 1.0. * Can be used for things like volume sliders. * * Does not return the current volume if limiting is enabled, but the desired volume. */ get volume(): number; set volume(value: number); /** * Target level to lower volume to. * * @remarks * Expressed as a value between 0.0 and 1.0. The value is applied based upon the configured * `levelType`. The default value is 0.1. * * For a level type of `LevelType.fixed` the value is the exact level the volume will be * lowered to. The default value of 0.1 would cause the volume to be lowered to 0.1. * * For a level type of `LevelType.percentage` the value is the percentage by which the volume * level should be lowered to. The default value of 0.1 would cause the volume to be lowered * to 10% of its starting value. */ get limitLevel(): number; set limitLevel(value: number); /** * The type of level represented by the `limitLevel` property. */ get limitLevelType(): LimitLevelType; set limitLevelType(value: LimitLevelType); /** * Amount of time, in seconds, it should take to change the volume up or down to the desired level. * * @remarks * Default `volumeChangeDuration` is 0.5 seconds. */ get volumeChangeDuration(): number; set volumeChangeDuration(value: number); /** * Whether or not volume limiting is currently enabled. */ get isLimiting(): boolean; /** * Limits volume based on `limitLevel` and `limitLevelType` properties. * @see `limitLevel` * @see `limitLevelType` */ startLimiting(): void; /** * Disables volume limit. */ stopLimiting(): void; private startAdjusting; private scheduleAnimationFrame; private computeInterpolatedVolume; private computeTargetVolume; private millisSinceVolumeChangeStart; } //# sourceMappingURL=VolumeManager.d.ts.map