import { OmpBroadcastChannelActionsMap } from '../common/omp-broadcast-channel';
import { VideoControllerApi } from './video-controller-api';
import { UnwrapObservable } from '../types';
import { Observable } from 'rxjs';
type ExtractType<T, K extends keyof T> = T[K];
type ExtractReturnType<T, K extends keyof T> = T[K] extends (...args: any[]) => infer R ? R : never;
type ExtractParameterTypes<T, K extends keyof T> = T[K] extends (...args: infer A) => any ? A : never;
type ExtractPropertyTypes<T, K extends keyof T> = {
    requestType: UnwrapObservable<ExtractType<T, K>>;
    responseType: ExtractType<T, K>;
};
type ExtractMethodTypes<T, K extends keyof T> = {
    requestType: ExtractParameterTypes<T, K>;
    responseType: ExtractReturnType<T, K>;
};
export type HandshakeChannelActionsMap = OmpBroadcastChannelActionsMap<{
    'DetachedControllerProxy.connect': {
        requestType: {
            proxyId: string;
        };
        responseType: {
            proxyId: string;
            messageChannelId: string;
        };
    };
    'DetachedControllerProxy.connected': {
        requestType: {
            proxyId: string;
            messageChannelId: string;
        };
        responseType: {
            proxyId: string;
        };
    };
    'DetachedControllerProxy.heartbeat': {
        requestType: {
            proxyId: string;
            heartbeat: number;
        };
        responseType: {
            proxyId: string;
            heartbeat: number;
        };
    };
}>;
export type FlattenObservableToVoid<T> = T extends Observable<infer U> ? Observable<void> : T;
export type MessageChannelActionsMap = OmpBroadcastChannelActionsMap<{
    'VideoControllerApi.onVideoLoading$': ExtractPropertyTypes<VideoControllerApi, 'onVideoLoading$'>;
    'VideoControllerApi.onVideoLoaded$': ExtractPropertyTypes<VideoControllerApi, 'onVideoLoaded$'>;
    'VideoControllerApi.onPlay$': ExtractPropertyTypes<VideoControllerApi, 'onPlay$'>;
    'VideoControllerApi.onPause$': ExtractPropertyTypes<VideoControllerApi, 'onPause$'>;
    'VideoControllerApi.onVideoTimeChange$': ExtractPropertyTypes<VideoControllerApi, 'onVideoTimeChange$'>;
    'VideoControllerApi.onSeeking$': ExtractPropertyTypes<VideoControllerApi, 'onSeeking$'>;
    'VideoControllerApi.onSeeked$': ExtractPropertyTypes<VideoControllerApi, 'onSeeked$'>;
    'VideoControllerApi.onBuffering$': ExtractPropertyTypes<VideoControllerApi, 'onBuffering$'>;
    'VideoControllerApi.onEnded$': ExtractPropertyTypes<VideoControllerApi, 'onEnded$'>;
    'VideoControllerApi.onAudioSwitched$': ExtractPropertyTypes<VideoControllerApi, 'onAudioSwitched$'>;
    'VideoControllerApi.onAudioUpdated$': ExtractPropertyTypes<VideoControllerApi, 'onAudioUpdated$'>;
    'VideoControllerApi.onAudioOutputVolumeChange$': ExtractPropertyTypes<VideoControllerApi, 'onAudioOutputVolumeChange$'>;
    'VideoControllerApi.onVideoWindowPlaybackStateChange$': ExtractPropertyTypes<VideoControllerApi, 'onVideoWindowPlaybackStateChange$'>;
    'VideoControllerApi.onVideoError$': ExtractPropertyTypes<VideoControllerApi, 'onVideoError$'>;
    'VideoControllerApi.onVolumeChange$': ExtractPropertyTypes<VideoControllerApi, 'onVolumeChange$'>;
    'VideoControllerApi.onFullscreenChange$': ExtractPropertyTypes<VideoControllerApi, 'onFullscreenChange$'>;
    'VideoControllerApi.onVideoSafeZoneChange$': ExtractPropertyTypes<VideoControllerApi, 'onVideoSafeZoneChange$'>;
    'VideoControllerApi.onPlaybackRateChange$': ExtractPropertyTypes<VideoControllerApi, 'onPlaybackRateChange$'>;
    'VideoControllerApi.onHelpMenuChange$': ExtractPropertyTypes<VideoControllerApi, 'onHelpMenuChange$'>;
    'VideoControllerApi.onPlaybackState$': ExtractPropertyTypes<VideoControllerApi, 'onPlaybackState$'>;
    'VideoControllerApi.onAudioLoaded$': ExtractPropertyTypes<VideoControllerApi, 'onAudioLoaded$'>;
    'VideoControllerApi.onSubtitlesLoaded$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesLoaded$'>;
    'VideoControllerApi.onSubtitlesCreate$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesCreate$'>;
    'VideoControllerApi.onSubtitlesHide$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesHide$'>;
    'VideoControllerApi.onSubtitlesRemove$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesRemove$'>;
    'VideoControllerApi.onSubtitlesShow$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesShow$'>;
    'VideoControllerApi.onMainAudioChange$': ExtractPropertyTypes<VideoControllerApi, 'onMainAudioChange$'>;
    'VideoControllerApi.onMainAudioPeakProcessorMessage$': ExtractPropertyTypes<VideoControllerApi, 'onMainAudioPeakProcessorMessage$'>;
    'VideoControllerApi.onMainAudioInputSoloMute$': ExtractPropertyTypes<VideoControllerApi, 'onMainAudioInputSoloMute$'>;
    'VideoControllerApi.onSidecarAudioCreate$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioCreate$'>;
    'VideoControllerApi.onSidecarAudioLoaded$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioLoaded$'>;
    'VideoControllerApi.onSidecarAudioRemove$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioRemove$'>;
    'VideoControllerApi.onSidecarAudioChange$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioChange$'>;
    'VideoControllerApi.onSidecarAudioVolumeChange$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioVolumeChange$'>;
    'VideoControllerApi.onSidecarAudioPeakProcessorMessage$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioPeakProcessorMessage$'>;
    'VideoControllerApi.onSidecarAudioInputSoloMute$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioInputSoloMute$'>;
    'VideoControllerApi.onSidecarAudiosChange$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudiosChange$'>;
    'VideoControllerApi.onThumbnailVttUrlChanged$': ExtractPropertyTypes<VideoControllerApi, 'onThumbnailVttUrlChanged$'>;
    'VideoControllerApi.onActiveNamedEventStreamsChange$': ExtractPropertyTypes<VideoControllerApi, 'onActiveNamedEventStreamsChange$'>;
    'VideoControllerApi.onNamedEvent$': ExtractPropertyTypes<VideoControllerApi, 'onNamedEvent$'>;
    'VideoControllerApi.loadVideoInternal': ExtractMethodTypes<VideoControllerApi, 'loadVideoInternal'>;
    'VideoControllerApi.loadVideo': ExtractMethodTypes<VideoControllerApi, 'loadVideo'>;
    'VideoControllerApi.reloadVideo': ExtractMethodTypes<VideoControllerApi, 'reloadVideo'>;
    'VideoControllerApi.setVolume': ExtractMethodTypes<VideoControllerApi, 'setVolume'>;
    'VideoControllerApi.setPlaybackRate': ExtractMethodTypes<VideoControllerApi, 'setPlaybackRate'>;
    'VideoControllerApi.play': ExtractMethodTypes<VideoControllerApi, 'play'>;
    'VideoControllerApi.pause': ExtractMethodTypes<VideoControllerApi, 'pause'>;
    'VideoControllerApi.togglePlayPause': ExtractMethodTypes<VideoControllerApi, 'togglePlayPause'>;
    'VideoControllerApi.seekToFrame': ExtractMethodTypes<VideoControllerApi, 'seekToFrame'>;
    'VideoControllerApi.seekFromCurrentFrame': ExtractMethodTypes<VideoControllerApi, 'seekFromCurrentFrame'>;
    'VideoControllerApi.seekFromCurrentTime': ExtractMethodTypes<VideoControllerApi, 'seekFromCurrentTime'>;
    'VideoControllerApi.seekPreviousFrame': ExtractMethodTypes<VideoControllerApi, 'seekPreviousFrame'>;
    'VideoControllerApi.seekNextFrame': ExtractMethodTypes<VideoControllerApi, 'seekNextFrame'>;
    'VideoControllerApi.seekToTime': ExtractMethodTypes<VideoControllerApi, 'seekToTime'>;
    'VideoControllerApi.seekToTimecode': ExtractMethodTypes<VideoControllerApi, 'seekToTimecode'>;
    'VideoControllerApi.seekToPercent': ExtractMethodTypes<VideoControllerApi, 'seekToPercent'>;
    'VideoControllerApi.seekToEnd': ExtractMethodTypes<VideoControllerApi, 'seekToEnd'>;
    'VideoControllerApi.mute': ExtractMethodTypes<VideoControllerApi, 'mute'>;
    'VideoControllerApi.unmute': ExtractMethodTypes<VideoControllerApi, 'unmute'>;
    'VideoControllerApi.toggleMuteUnmute': ExtractMethodTypes<VideoControllerApi, 'toggleMuteUnmute'>;
    'VideoControllerApi.toggleFullscreen': ExtractMethodTypes<VideoControllerApi, 'toggleFullscreen'>;
    'VideoControllerApi.appendHelpMenuGroup': ExtractMethodTypes<VideoControllerApi, 'appendHelpMenuGroup'>;
    'VideoControllerApi.prependHelpMenuGroup': ExtractMethodTypes<VideoControllerApi, 'prependHelpMenuGroup'>;
    'VideoControllerApi.clearHelpMenuGroups': ExtractMethodTypes<VideoControllerApi, 'clearHelpMenuGroups'>;
    'VideoControllerApi.addSafeZone': ExtractMethodTypes<VideoControllerApi, 'addSafeZone'>;
    'VideoControllerApi.removeSafeZone': ExtractMethodTypes<VideoControllerApi, 'removeSafeZone'>;
    'VideoControllerApi.clearSafeZones': ExtractMethodTypes<VideoControllerApi, 'clearSafeZones'>;
    'VideoControllerApi.createSubtitlesVttTrack': ExtractMethodTypes<VideoControllerApi, 'createSubtitlesVttTrack'>;
    'VideoControllerApi.hideSubtitlesTrack': ExtractMethodTypes<VideoControllerApi, 'hideSubtitlesTrack'>;
    'VideoControllerApi.removeAllSubtitlesTracks': ExtractMethodTypes<VideoControllerApi, 'removeAllSubtitlesTracks'>;
    'VideoControllerApi.removeSubtitlesTrack': ExtractMethodTypes<VideoControllerApi, 'removeSubtitlesTrack'>;
    'VideoControllerApi.showSubtitlesTrack': ExtractMethodTypes<VideoControllerApi, 'showSubtitlesTrack'>;
    'VideoControllerApi.setActiveAudioTrack': ExtractMethodTypes<VideoControllerApi, 'setActiveAudioTrack'>;
    'VideoControllerApi.updateAudioTrack': ExtractMethodTypes<VideoControllerApi, 'updateAudioTrack'>;
    'VideoControllerApi.activateMainAudio': ExtractMethodTypes<VideoControllerApi, 'activateMainAudio'>;
    'VideoControllerApi.deactivateMainAudio': ExtractMethodTypes<VideoControllerApi, 'deactivateMainAudio'>;
    'VideoControllerApi.createMainAudioRouter': ExtractMethodTypes<VideoControllerApi, 'createMainAudioRouter'>;
    'VideoControllerApi.setAudioOutputVolume': ExtractMethodTypes<VideoControllerApi, 'setAudioOutputVolume'>;
    'VideoControllerApi.setAudioOutputMuted': ExtractMethodTypes<VideoControllerApi, 'setAudioOutputMuted'>;
    'VideoControllerApi.toggleAudioOutputMuteUnmute': ExtractMethodTypes<VideoControllerApi, 'toggleAudioOutputMuteUnmute'>;
    'VideoControllerApi.muteAudioOutput': ExtractMethodTypes<VideoControllerApi, 'muteAudioOutput'>;
    'VideoControllerApi.unmuteAudioOutput': ExtractMethodTypes<VideoControllerApi, 'unmuteAudioOutput'>;
    'VideoControllerApi.createMainAudioPeakProcessor': {
        requestType: ExtractParameterTypes<VideoControllerApi, 'createMainAudioPeakProcessor'>;
        responseType: FlattenObservableToVoid<ExtractReturnType<VideoControllerApi, 'createMainAudioPeakProcessor'>>;
    };
    'VideoControllerApi.updateMainAudioRouterConnections': ExtractMethodTypes<VideoControllerApi, 'updateMainAudioRouterConnections'>;
    'VideoControllerApi.toggleMainAudioRouterSolo': ExtractMethodTypes<VideoControllerApi, 'toggleMainAudioRouterSolo'>;
    'VideoControllerApi.toggleMainAudioRouterMute': ExtractMethodTypes<VideoControllerApi, 'toggleMainAudioRouterMute'>;
    'VideoControllerApi.setMainAudioRouterInitialRoutingConnections': ExtractMethodTypes<VideoControllerApi, 'setMainAudioRouterInitialRoutingConnections'>;
    'VideoControllerApi.setMainAudioEffectsGraphs': ExtractMethodTypes<VideoControllerApi, 'setMainAudioEffectsGraphs'>;
    'VideoControllerApi.removeMainAudioEffectsGraphs': ExtractMethodTypes<VideoControllerApi, 'removeMainAudioEffectsGraphs'>;
    'VideoControllerApi.setMainAudioEffectsParams': ExtractMethodTypes<VideoControllerApi, 'setMainAudioEffectsParams'>;
    'VideoControllerApi.createSidecarAudioTrack': ExtractMethodTypes<VideoControllerApi, 'createSidecarAudioTrack'>;
    'VideoControllerApi.createSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'createSidecarAudioTracks'>;
    'VideoControllerApi.removeSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'removeSidecarAudioTracks'>;
    'VideoControllerApi.activateSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'activateSidecarAudioTracks'>;
    'VideoControllerApi.deactivateSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'deactivateSidecarAudioTracks'>;
    'VideoControllerApi.setSidecarVolume': ExtractMethodTypes<VideoControllerApi, 'setSidecarVolume'>;
    'VideoControllerApi.setSidecarMuted': ExtractMethodTypes<VideoControllerApi, 'setSidecarMuted'>;
    'VideoControllerApi.muteSidecar': ExtractMethodTypes<VideoControllerApi, 'muteSidecar'>;
    'VideoControllerApi.unmuteSidecar': ExtractMethodTypes<VideoControllerApi, 'unmuteSidecar'>;
    'VideoControllerApi.removeAllSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'removeAllSidecarAudioTracks'>;
    'VideoControllerApi.createSidecarAudioRouter': ExtractMethodTypes<VideoControllerApi, 'createSidecarAudioRouter'>;
    'VideoControllerApi.setSidecarAudioRouterInitialRoutingConnections': ExtractMethodTypes<VideoControllerApi, 'setSidecarAudioRouterInitialRoutingConnections'>;
    'VideoControllerApi.updateSidecarAudioRouterConnections': ExtractMethodTypes<VideoControllerApi, 'updateSidecarAudioRouterConnections'>;
    'VideoControllerApi.toggleSidecarAudioRouterSolo': ExtractMethodTypes<VideoControllerApi, 'toggleSidecarAudioRouterSolo'>;
    'VideoControllerApi.toggleSidecarAudioRouterMute': ExtractMethodTypes<VideoControllerApi, 'toggleSidecarAudioRouterMute'>;
    'VideoControllerApi.setSidecarAudioEffectsGraph': ExtractMethodTypes<VideoControllerApi, 'setSidecarAudioEffectsGraph'>;
    'VideoControllerApi.removeSidecarAudioEffectsGraphs': ExtractMethodTypes<VideoControllerApi, 'removeSidecarAudioEffectsGraphs'>;
    'VideoControllerApi.setSidecarAudioEffectsParams': ExtractMethodTypes<VideoControllerApi, 'setSidecarAudioEffectsParams'>;
    'VideoControllerApi.createSidecarAudioPeakProcessor': {
        requestType: ExtractParameterTypes<VideoControllerApi, 'createSidecarAudioPeakProcessor'>;
        responseType: FlattenObservableToVoid<ExtractReturnType<VideoControllerApi, 'createSidecarAudioPeakProcessor'>>;
    };
    'VideoControllerApi.exportMainAudioTrackToSidecar': ExtractMethodTypes<VideoControllerApi, 'exportMainAudioTrackToSidecar'>;
    'VideoControllerApi.exportMainAudioTracksToSidecar': ExtractMethodTypes<VideoControllerApi, 'exportMainAudioTracksToSidecar'>;
    'VideoControllerApi.loadThumbnailVttUrl': ExtractMethodTypes<VideoControllerApi, 'loadThumbnailVttUrl'>;
    'VideoControllerApi.updateActiveNamedEventStreams': ExtractMethodTypes<VideoControllerApi, 'updateActiveNamedEventStreams'>;
    'VideoControllerApi.getActiveNamedEventStreams': ExtractMethodTypes<VideoControllerApi, 'getActiveNamedEventStreams'>;
    'VideoControllerApi.loadBlackVideo': ExtractMethodTypes<VideoControllerApi, 'loadBlackVideo'>;
    'VideoControllerApi.extractVideoKeyframe': ExtractMethodTypes<VideoControllerApi, 'extractVideoKeyframe'>;
    'VideoControllerApi.attachVideoWindow': ExtractMethodTypes<VideoControllerApi, 'attachVideoWindow'>;
}>;
export {};
