import { AfterContentInit, ElementRef, OnDestroy } from '@angular/core';
import { MatSnackBar } from '@angular/material';
import { Store } from '@ngrx/store';
import { ControlStateSyncService } from './control-state-sync.service';
import 'rxjs/add/operator/combineLatest';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/mapTo';
import 'rxjs/add/operator/startWith';
import 'rxjs/add/operator/take';
import '../util/takeUntilDestroyed';
import { ConsoleService } from '../console/console.service';
import { IProject, ProjectService } from '../redux/project';
/**
 * The RemoteControlsComponent hosts the frame containing remote Interactive
 * controls.
 */
export declare class RemoteControlsComponent implements AfterContentInit, OnDestroy {
    private readonly store;
    private readonly snackRef;
    private readonly project;
    private readonly controls;
    private readonly console;
    /**
     * The nested iframe containing the control.
     */
    iframe: ElementRef;
    /**
     * Participant socket interface.
     */
    private participant;
    constructor(store: Store<IProject>, snackRef: MatSnackBar, project: ProjectService, controls: ControlStateSyncService, console: ConsoleService);
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    onExit(ev: KeyboardEvent): void;
    /**
     * startConnect is called when we get interactive join data from the state.
     */
    private startConnect(join);
    /**
     * Called when the participant socket closes, for any reason.
     */
    private onClose(close);
    /**
     * Called after the pariticipant socket opens.
     */
    private afterConnect();
    /**
     * Called whenever a packet is transmitted over the Interactive connection.
     */
    private onTransmit();
}
