export interface AutoplayResolvable {
    ResolveAutoplay(): any;
}
/**
 * AutoplayResolver is used to detect instances of blocked playback due to the browsers autoplay protection
 * e.g. a typical scenario when this happens is:
 * 1. You load the webpage
 * 2. The user interacts with the webpage to wait for an incoming call (without themselves sending audio)
 * 3. The user then receives an incoming call
 * 4. The system will attempt to show the received video feed. However, the browser will block the playback
 * because the user hasn't played any audio themselves yet.
 *
 * In this situation the event onautoplayblocked will trigger. The user must then interact with the UI
 * e.g. a button and during the event handler AutoplayResolver.Resolve must be called. The browser
 * detects that this interaction comes from the user and then allows all blocked elements to play.
 *
 * In case of the Unity plugin a click / touch event handler is registered with unity's WebGL canvas
 * and once the user interacts with it, it is automatically resolved.
 *
 */
export declare class AutoplayResolver {
    /**Register an event handler here to detect when a stream gets blocked from playback
     * AutoplayResolver.Resolve() must then be called via an event handler to ensure
     * the browser detects the user allowed playback.
     */
    static onautoplayblocked: () => void;
    private static sBlockedStreams;
    static HasCompleted(): boolean;
    static RequestAutoplayFix(res: AutoplayResolvable): void;
    static Resolve(): void;
    static RemoveCompleted(res: AutoplayResolvable): void;
    static Remove(res: AutoplayResolvable): void;
}
