@byomakase/omakase-player
Version:
## Omakase Player - Open source JavaScript framework for building frame accurate video experiences
1,344 lines (1,215 loc) • 423 kB
TypeScript
import { BehaviorSubject } from 'rxjs';
import { Config } from 'yoga-layout';
import { default as default_2 } from 'hls.js';
import { default as default_3 } from 'konva';
import { HlsConfig } from 'hls.js';
import { MediaChromeButton } from 'media-chrome';
import { MediaChromeRange } from 'media-chrome';
import { MediaController } from 'media-chrome';
import { MediaFullscreenButton } from 'media-chrome';
import { MediaKeySessionContext } from 'hls.js';
import { MediaPlayButton } from 'media-chrome';
import { MediaPlaylist } from 'hls.js';
import { MediaThemeElement } from 'media-chrome/media-theme-element';
import { MediaTimeRange } from 'media-chrome';
import { Node as Node_2 } from 'yoga-layout';
import { Observable } from 'rxjs';
import { ReplaySubject } from 'rxjs';
import { Subject } from 'rxjs';
import { Track as Track_2 } from 'hls.js';
export declare function affectsStyledElement(event: UiEvent, element: StyledElement<any>): boolean;
declare interface Alert {
readonly id: string;
readonly level: AlertLevel;
readonly message: string;
readonly timestamp: Date;
readonly config: AlertConfig | undefined;
readonly state: AlertState;
}
export declare interface AlertConfig {
/** Display duration in milliseconds. Undefined means the alert persists until dismissed. */
duration?: number;
}
export declare type AlertEvent = {
[K in AlertEventType]: {
type: K;
data: AlertEventTypeDataMap[K];
};
}[keyof AlertEventTypeDataMap];
declare interface AlertEventData {
alert: Alert;
}
export declare enum AlertEventType {
ALERT_RAISED = "ALERT_RAISED",
ALERT_DISMISSED = "ALERT_DISMISSED"
}
export declare type AlertEventTypeDataMap = {
[AlertEventType.ALERT_RAISED]: AlertEventData;
[AlertEventType.ALERT_DISMISSED]: AlertEventData;
};
declare enum AlertLevel {
INFO = "INFO",
WARN = "WARN",
ERROR = "ERROR"
}
export declare interface AlertsApi {
/** Emits an event whenever an alert is raised or dismissed. */
onEvent$: Observable<AlertEvent>;
/**
* Raises an info alert.
*
* @param message - The message to display.
* @param config - Optional display configuration (e.g. auto-dismiss duration).
* @returns The unique ID of the created alert.
*/
info(message: string, config?: AlertConfig): Alert['id'];
/**
* Raises a warning alert.
*
* @param message - The message to display.
* @param config - Optional display configuration (e.g. auto-dismiss duration).
* @returns The unique ID of the created alert.
*/
warn(message: string, config?: AlertConfig): Alert['id'];
/**
* Raises an error alert.
*
* @param message - The message to display.
* @param config - Optional display configuration (e.g. auto-dismiss duration).
* @returns The unique ID of the created alert.
*/
error(message: string, config?: AlertConfig): Alert['id'];
/**
* Dismisses the alert with the given ID.
*
* @param id - The ID of the alert to dismiss.
*/
dismiss(id: Alert['id']): void;
/** Dismisses all currently active alerts. */
dismissAll(): void;
}
declare class AlertsManager implements AlertsApi, Destroyable {
private readonly _onEvent$;
private readonly _activeAlerts;
constructor();
get onEvent$(): Observable<AlertEvent>;
info(message: string, config?: AlertConfig): string;
warn(message: string, config?: AlertConfig): string;
error(message: string, config?: AlertConfig): string;
dismiss(id: string): void;
dismissAll(): void;
private _emit;
private _dismiss;
destroy(): void;
}
declare interface AlertsManagerMessageChannel {
onEvent$: Observable<AlertEvent>;
info(message: string, config?: AlertConfig): Observable<Alert['id']>;
warn(message: string, config?: AlertConfig): Observable<Alert['id']>;
error(message: string, config?: AlertConfig): Observable<Alert['id']>;
dismiss(id: Alert['id']): Observable<void>;
dismissAll(): Observable<void>;
}
declare class AlertsManagerProxy extends BaseMessageChannelProxy<AlertsManagerMessageChannel> implements AlertsManagerMessageChannel {
constructor(remoteNode: RemoteNode);
get onEvent$(): Observable<AlertEvent>;
error(message: string, config?: AlertConfig): Observable<Alert["id"]>;
info(message: string, config?: AlertConfig): Observable<Alert["id"]>;
warn(message: string, config?: AlertConfig): Observable<Alert["id"]>;
dismiss(id: AlertState['id']): Observable<void>;
dismissAll(): Observable<void>;
}
declare interface AlertState {
id: string;
level: AlertLevel;
message: string;
timestamp: Date;
config: AlertConfig | undefined;
}
declare abstract class Audio_2 extends BaseTrack<AudioState, TrackEvent_2> {
protected _trackType: TrackType;
protected abstract _audioType: AudioType;
protected _url: string | undefined;
protected _duration: number | undefined;
protected _audioCodec: string | undefined;
protected _channels: number | undefined;
protected constructor(args: AudioArgs);
protected getState(): AudioState;
get url(): string | undefined;
get audioType(): AudioType;
get audioCodec(): string | undefined;
get channels(): number | undefined;
get duration(): number | undefined;
updateAttrs(attrs: AudioUpdateableAttrs): void;
}
export { Audio_2 as Audio }
/**
* Construction arguments for audio track instances.
*/
export declare interface AudioArgs extends BaseTrackArgs {
/** URL of the audio source. Overridden by `source` when a {@link UrlSource} is provided. */
url?: string | undefined;
/** Duration of the audio track in seconds. */
duration?: number | undefined;
/** Audio codec identifier (e.g. `"mp4a.40.2"`). */
audioCodec?: string | undefined;
/** Number of audio channels. */
channels?: number | undefined;
}
/**
* Implementation of {@link AudioEffectState}
*/
export declare interface AudioEffect {
/**
* Converts effect to effect definition
*/
toState(): AudioEffectState;
/**
* Returns input audio nodes
*/
getInputNodes(): AudioNode[];
/**
* Returns output audio nodes
*/
getOutputNode(): AudioNode;
/**
* Returns all audio nodes
*/
getNodes(): AudioNode[];
/**
* Effect's id. Unique at {@link AudioEffectGraph} level.
*/
id: string;
/**
* Effect's effect type. Used for dynamic effect instantiation.
*/
effectType: string;
/**
* Arbitrary values used to describe the effect
*/
attrs: Map<string, any>;
/**
* Signals when effect is fully initialized.
*/
onReady$: Observable<void>;
/**
* Sets effect parameter.
*
* @param param
*/
setParam(param: AudioEffectParam): void;
/**
* Returns all effect parameters
*/
getParams(): AudioEffectParamType[] | undefined;
/**
* Destroys all effect's nodes and sets up the effect to be garbage collected
*/
destroy(): void;
}
/**
* Connection definition to {@link AudioEffectState}
*/
export declare interface AudioEffectConnectionDef {
/**
* {@link OmpAudioNodeDef.id}
*/
effectId: string;
/**
* Input
*/
output?: number;
/**
* Output
*/
input?: number;
}
export declare class AudioEffectDef implements AudioEffectState {
id: string;
effectType: string;
attrs?: Record<string, any>;
connections?: AudioEffectConnectionDef[];
audioParams?: AudioEffectParamType[];
constructor(id: string, effectType: string);
withAttrs(attrs: Record<string, any>): AudioEffectDef;
outputTo(...effectConnections: (string | AudioEffectConnectionDef)[]): AudioEffectDef;
addParam(audioParam: AudioEffectParamType): this;
}
export declare class AudioEffectDelayTimeParam extends AudioEffectParam {
protected readonly _valueParam: AudioNodeValueParam;
constructor(delayTime?: number);
setDelayTime(delayTime: number): void;
}
export declare type AudioEffectEvent = {
[K in AudioEffectEventType]: {
type: K;
data: AudioEffectEventTypeDataMap[K];
};
}[keyof AudioEffectEventTypeDataMap];
export declare interface AudioEffectEventParametersChangeData extends Serializable {
connection: AudioEffectGraphConnection;
changedParameters: AudioEffectParameterChange[];
}
export declare enum AudioEffectEventType {
AUDIO_EFFECT_PARAMETER_CHANGE = "AUDIO_EFFECT_PARAMETER_CHANGE",
AUDIO_EFFECT_GRAPH_ADDED = "AUDIO_EFFECT_GRAPH_ADDED",
AUDIO_EFFECT_GRAPH_REMOVED = "AUDIO_EFFECT_GRAPH_REMOVED"
}
export declare type AudioEffectEventTypeDataMap = {
[AudioEffectEventType.AUDIO_EFFECT_PARAMETER_CHANGE]: AudioEffectEventParametersChangeData;
[AudioEffectEventType.AUDIO_EFFECT_GRAPH_ADDED]: AudioEffectSlotEventChangeData;
[AudioEffectEventType.AUDIO_EFFECT_GRAPH_REMOVED]: AudioEffectSlotEventChangeData;
};
export declare type AudioEffectFactory = (effectDef: AudioEffectState) => AudioEffect;
/**
* Filter values used for filtering {@link AudioEffect}'s
*/
export declare interface AudioEffectFilter {
/**
* {@link AudioEffect.id}
*/
id?: string | undefined;
/**
* {@link AudioEffect.type}
*/
effectType?: string | undefined;
/**
* {@link AudioEffect.attrs}
*/
attrs?: Record<string, any> | undefined;
}
export declare class AudioEffectGainParam extends AudioEffectParam {
protected readonly _valueParam: AudioNodeValueParam;
constructor(gain?: number);
setGain(gain: number): void;
}
/**
* Audio effects graph. Implementation corresponds to definition {@link AudioEffectGraph.toDef}
*/
export declare class AudioEffectGraph {
private def;
protected _effects: AudioEffect[];
protected _effectsById: Map<string, AudioEffect>;
protected _sourceEffects: AudioEffect[];
protected _destinationEffects: AudioEffect[];
protected _initialized: boolean;
get initialized(): boolean;
constructor(def: AudioEffectGraphState);
initialize(): Observable<void>;
/**
* Finds all {@link AudioEffect}'s that correspond to {@link filter}
*
* @param filter
*/
findAudioEffects(filter?: AudioEffectFilter): AudioEffect[];
/**
* Audio effects graph input {@link AudioEffect}'s
*/
get sourceEffects(): AudioEffect[];
/**
* Audio effects graph output {@link AudioEffect}'s
*/
get destinationEffects(): AudioEffect[];
toState(): AudioEffectGraphState;
destroy(): void;
}
/**
* Connection definition for audio graph.
*/
export declare type AudioEffectGraphConnection = {
slot: Extract<AudioEffectGraphSlot, 'router'>;
routingPath?: Partial<AudioRoutingPath>;
} | {
slot: Extract<AudioEffectGraphSlot, 'source'>;
} | {
slot: Extract<AudioEffectGraphSlot, 'destination'>;
};
/**
* Audio effects graph definition. Contains {@link AudioEffectState}'s
*/
export declare class AudioEffectGraphDef implements AudioEffectGraphState {
effectDefs: AudioEffectState[];
sourceEffectIds: string[];
destinationEffectIds: string[];
private constructor();
static create(...effects: AudioEffectState[]): AudioEffectGraphDef;
}
export declare type AudioEffectGraphSlot = 'source' | 'router' | 'destination';
export declare type AudioEffectGraphSpecificConnection = {
slot: Extract<AudioEffectGraphSlot, 'router'>;
routingPath: AudioRoutingPath;
} | {
slot: Extract<AudioEffectGraphSlot, 'source'>;
} | {
slot: Extract<AudioEffectGraphSlot, 'destination'>;
};
/**
* Audio graph definition. Contains {@link AudioEffectState}'s
*/
export declare interface AudioEffectGraphState {
effectDefs: AudioEffectState[];
/**
* Effects graph input effects ids
*/
sourceEffectIds: string[];
/**
* Effects graph output effects ids
*/
destinationEffectIds: string[];
}
export declare class AudioEffectParam extends AudioNodeParam {
}
export declare interface AudioEffectParameterChange {
effectId: string;
parameterName: string;
routingPath?: AudioRoutingPath;
}
export declare interface AudioEffectParamType extends AudioNodeParamType {
}
export declare interface AudioEffectsApi {
setEffectGraph(effectGraphState: AudioEffectGraphState, effectGraphConnection: AudioEffectGraphConnection): Observable<void>;
removeEffectGraph(effectGraphConnection: AudioEffectGraphConnection): Observable<void>;
setEffectsParams(param: AudioEffectParam, effectGraphConnection: AudioEffectGraphConnection, filter?: AudioEffectFilter): Observable<void>;
getEffectStates(effectGraphConnection: AudioEffectGraphConnection, filter?: AudioEffectFilter): Observable<AudioEffectState[]>;
getEffectGraphState(effectGraphConnection: AudioEffectGraphSpecificConnection): Observable<AudioEffectGraphState | undefined>;
onEvent$: Observable<AudioEffectEvent>;
}
export declare class AudioEffectsGraphDefBuilder {
protected _effectDefs: AudioEffectState[];
protected _effectDefsMap: Map<string, AudioEffectState>;
protected _sourceEffectDefs?: AudioEffectState[];
protected _destinationEffectDefs?: AudioEffectState[];
private constructor();
static get instance(): AudioEffectsGraphDefBuilder;
addEffects(effectDefs: AudioEffectState[]): this;
addEffect(node: AudioEffectState): this;
connections(connections: [{
from: string;
to: string;
}]): this;
connect(sourceNodeId: string, destinationNodeId: string): this;
sourceEffectsIds(ids: string[]): this;
destinationEffectsIds(ids: string[]): this;
build(): AudioEffectGraphState;
}
export declare interface AudioEffectSlotEventChangeData extends Serializable {
connection: AudioEffectGraphConnection;
}
declare interface AudioEffectsMessageChannel {
setEffectGraph(effectGraphState: AudioEffectGraphState, effectGraphConnection: AudioEffectGraphConnection): Observable<void>;
removeEffectGraph(effectGraphConnection: AudioEffectGraphConnection): Observable<void>;
setEffectsParams(param: AudioEffectParam, effectGraphConnection: AudioEffectGraphConnection, filter?: AudioEffectFilter): Observable<void>;
getEffectStates(effectGraphConnection: AudioEffectGraphConnection, filter?: AudioEffectFilter): Observable<AudioEffectState[]>;
getEffectGraphState(effectGraphConnection: AudioEffectGraphSpecificConnection): Observable<AudioEffectGraphState | undefined>;
onEvent$: Observable<AudioEffectEvent>;
}
declare class AudioEffectsProxy extends BaseMessageChannelProxy<AudioEffectsMessageChannel> implements AudioEffectsApi {
protected _destroyBreaker: ObserverBreaker;
constructor(messageChannel: MessageChannel_2<AudioEffectsMessageChannel>);
get onEvent$(): Observable<AudioEffectEvent>;
setEffectGraph(effectGraphState: AudioEffectGraphState, effectGraphConnection: AudioEffectGraphConnection): Observable<void>;
removeEffectGraph(effectGraphConnection: AudioEffectGraphConnection): Observable<void>;
setEffectsParams(param: AudioEffectParam, effectGraphConnection: AudioEffectGraphConnection, filter?: AudioEffectFilter): Observable<void>;
getEffectStates(effectGraphConnection: AudioEffectGraphConnection, filter?: AudioEffectFilter): Observable<AudioEffectState[]>;
getEffectGraphState(effectGraphConnection: AudioEffectGraphSpecificConnection): Observable<AudioEffectGraphState | undefined>;
destroy(): void;
}
export declare class AudioEffectsRegistry implements Destroyable {
static get instance(): AudioEffectsRegistry;
private registry;
constructor();
register(name: string, effect: AudioEffectFactory): void;
destroy(): void;
get(name: string): AudioEffectFactory | undefined;
}
/**
* Definition of an audio effect.
*/
export declare interface AudioEffectState {
id: string;
/**
* Effect type as used in EffectsRegistry. There are no limitations to effect types
* but they need to be dynamically added to EffectsRegistry.
*/
effectType: string;
/**
* Arbitrary attributes which can be used to describe audio effect.
*/
attrs?: Record<string, any>;
/**
* Connections to other {@link OmpAudioNodeDef}'s
*/
connections?: AudioEffectConnectionDef[];
/**
* Audio effect params
*/
audioParams?: AudioEffectParamType[];
}
export declare class AudioEffectsUtil {
/**
* Calculates crossfade gain value for {@link value} and {@link curve}
*
* @param value in [0, 1] range
* @param curve
*/
static crossfadeGain(value: number, curve?: 'linear' | 'equal-power' | 'log' | 'sigmoid'): {
left: number;
right: number;
};
}
export declare class AudioFile extends Audio_2 {
protected _audioType: AudioType;
constructor(args: AudioArgs);
}
declare interface AudioFileMainMediaArgs extends BaseMainMediaArgs {
source: Source;
}
declare interface AudioFileMainMediaState extends MainMediaState {
}
declare interface AudioFilePlayerControllerConfig extends PlayerControllerConfig {
}
declare interface AudioFilePlayerPlaybackEngine extends PlayerPlaybackEngine {
}
export declare interface AudioHandlerApi {
onEvent$: Observable<AudioHandlerEvent>;
onPeakProcessorEvent$: Observable<AudioPeakProcessorEvent>;
enabled: boolean;
inputAudioNode: AudioNode;
outputAudioNode: AudioNode;
channelCount: number;
volume: number;
muted: boolean;
state: AudioHandlerState;
effects: AudioEffectsApi;
router: AudioRouterApi | undefined;
mute(): Observable<void>;
unmute(): Observable<void>;
toggleMuted(): Observable<void>;
setMuted(muted: boolean): Observable<void>;
setVolume(volume: number): Observable<void>;
setEnabled(enabled: boolean): Observable<void>;
createPeakProcessor(): Observable<void>;
createPeakProcessor(meterStandard?: AudioPeakProcessorMeterStandard): Observable<void>;
createAudioRouter(inputsNumber?: number, outputsNumber?: number): Observable<AudioRouterApi>;
}
export declare type AudioHandlerEvent = {
[K in AudioHandlerEventType]: {
type: K;
data: AudioHandlerEventTypeDataMap[K];
};
}[keyof AudioHandlerEventTypeDataMap];
export declare interface AudioHandlerEventData extends Serializable {
state: AudioHandlerState;
}
export declare enum AudioHandlerEventType {
AUDIO_HANDLER_CHANGE = "AUDIO_HANDLER_CHANGE"
}
declare type AudioHandlerEventTypeDataMap = {
[AudioHandlerEventType.AUDIO_HANDLER_CHANGE]: AudioHandlerEventData;
};
declare interface AudioHandlerMessageChannel {
onEvent$: Observable<AudioHandlerEvent>;
onPeakProcessorEvent$: Observable<AudioPeakProcessorEvent>;
mute(): Observable<void>;
unmute(): Observable<void>;
toggleMuted(): Observable<void>;
setMuted(muted: boolean): Observable<void>;
setVolume(volume: number): Observable<void>;
setEnabled(enabled: boolean): Observable<void>;
state(): Observable<AudioHandlerState>;
createPeakProcessor(meterStandard?: AudioPeakProcessorMeterStandard): Observable<void>;
createAudioRouter(inputsNumber?: number, outputsNumber?: number): Observable<void>;
}
declare class AudioHandlerProxy extends BaseMessageChannelProxy<AudioHandlerMessageChannel> implements AudioHandlerApi {
protected _remoteNode: RemoteNode;
private _state?;
protected _audioEffects: AudioEffectsProxy;
protected _audioRouter: AudioRouterProxy | undefined;
private readonly _onEventQueue$;
protected _destroyBreaker: ObserverBreaker;
constructor(messageChannel: MessageChannel_2<AudioHandlerMessageChannel>, remoteNode: RemoteNode, state: AudioHandlerState);
private syncStateOperator;
get router(): AudioRouterProxy | undefined;
get effects(): AudioEffectsApi;
private checkLateInitialization;
updateFromState(state: AudioHandlerState): void;
get inputAudioNode(): AudioNode;
get outputAudioNode(): AudioNode;
get onEvent$(): Observable<AudioHandlerEvent>;
get onPeakProcessorEvent$(): Observable<AudioPeakProcessorEvent>;
get enabled(): boolean;
get channelCount(): number;
get muted(): boolean;
get volume(): number;
get state(): AudioHandlerState;
mute(): Observable<void>;
setEnabled(enabled: boolean): Observable<void>;
setMuted(muted: boolean): Observable<void>;
setVolume(volume: number): Observable<void>;
toggleMuted(): Observable<void>;
unmute(): Observable<void>;
createPeakProcessor(meterStandard?: AudioPeakProcessorMeterStandard): Observable<void>;
createAudioRouter(inputsNumber?: number, outputsNumber?: number): Observable<AudioRouterApi>;
destroy(): void;
}
declare interface AudioHandlerSlotState {
type: AudioSlotType;
effectGraph: AudioEffectGraphState;
}
export declare interface AudioHandlerState {
enabled: boolean;
channelCount: number;
volume: number;
muted: boolean;
peakProcessor: AudioPeakProcessorState | undefined;
router: AudioRouterState | undefined;
slots: AudioHandlerSlotState[];
}
export declare type AudioLevelEvent = {
[K in AudioLevelEventType]: {
type: K;
data: AudioLevelEventTypeDataMap[K];
};
}[keyof AudioLevelEventTypeDataMap];
export declare interface AudioLevelEventData extends Serializable {
dbValues: number[];
}
export declare enum AudioLevelEventType {
AUDIO_LEVEL_CHANGE = "AUDIO_LEVEL_CHANGE",
CHANNEL_COUNT_CHANGE = "CHANNEL_COUNT_CHANGE"
}
export declare type AudioLevelEventTypeDataMap = {
[AudioLevelEventType.AUDIO_LEVEL_CHANGE]: AudioLevelEventData;
[AudioLevelEventType.CHANNEL_COUNT_CHANGE]: ChannelCountEventData;
};
export declare abstract class AudioLevelSource implements AudioLevelSourceApi {
protected _onEvent$: Subject<AudioLevelEvent>;
protected _destroyBreaker: ObserverBreaker;
get onEvent$(): Observable<AudioLevelEvent>;
protected getBaseLog(x: number, y: number): number;
protected dbFromFloat(floatVal: number): number;
destroy(): void;
}
export declare interface AudioLevelSourceApi extends Destroyable {
onEvent$: Observable<AudioLevelEvent>;
}
export declare enum AudioLevelSourceType {
PEAK_PROCESSOR = "PEAK_PROCESSOR",
OBSERVATION_TRACK = "OBSERVATION_TRACK"
}
declare class AudioMainMedia extends BaseMainMedia<AudioFileMainMediaState> {
protected getState(): AudioFileMainMediaState;
protected _mainMediaType: MainMediaType;
protected _source: Source;
protected readonly _destroyBreaker: ObserverBreaker;
constructor(args: AudioFileMainMediaArgs);
protected _state(): AudioFileMainMediaState;
}
/**
* Wrapper for {@link AudioParam}
*/
export declare class AudioNodeParam implements AudioNodeParamType {
name: string;
props: AudioNodeParamPropType[];
constructor(name: string);
protected addProp(prop: AudioNodeParamPropType): void;
}
export declare interface AudioNodeParamFilter {
name?: string;
id?: string;
}
/**
* Wrapper for {@link AudioParam} attributes
*/
export declare interface AudioNodeParamPropType {
name: string;
value: any;
}
/**
* Wrapper for {@link AudioParam}
*/
export declare interface AudioNodeParamType {
name: string;
props: AudioNodeParamPropType[];
}
export declare class AudioNodeUtil {
static extractAudioParamProps(audioParam: AudioParam): AudioNodeParamPropType[];
}
/**
* Wrapper for {@link AudioParam} attributes
*/
export declare class AudioNodeValueParam implements AudioNodeParamPropType {
name: string;
value: any;
constructor(value: any);
setValue(value: any): void;
}
export declare class AudioPeakProcessor implements AudioPeakProcessorApi {
protected readonly _onEvent$: Subject<AudioPeakProcessorEvent>;
protected readonly _meterStandard: AudioPeakProcessorMeterStandard;
protected readonly _loadStage: OpStage;
protected _audioWorkletNode?: AudioWorkletNode;
protected _audioNode?: AudioNode;
protected _destroyBreaker: ObserverBreaker;
constructor(meterStandard?: AudioPeakProcessorMeterStandard);
load(audioNode: AudioNode): Observable<void>;
protected handleAudioPeakProcessorMessage: (event: MessageEvent) => void;
get onEvent$(): Observable<AudioPeakProcessorEvent>;
get state(): AudioPeakProcessorState;
destroy(): void;
}
export declare interface AudioPeakProcessorApi extends Destroyable {
onEvent$: Observable<AudioPeakProcessorEvent>;
state: AudioPeakProcessorState;
load(audioNode: AudioNode): Observable<void>;
}
export declare interface AudioPeakProcessorErrorEventData extends AudioPeakProcessorEventData {
error: string | undefined;
}
export declare type AudioPeakProcessorEvent = {
[K in AudioPeakProcessorEventType]: {
type: K;
data: AudioPeakProcessorEventTypeDataMap[K];
};
}[keyof AudioPeakProcessorEventTypeDataMap];
export declare interface AudioPeakProcessorEventData extends Serializable {
}
export declare enum AudioPeakProcessorEventType {
AUDIO_PEAK_PROCESSOR_LOADING = "AUDIO_PEAK_PROCESSOR_LOADING",
AUDIO_PEAK_PROCESSOR_LOADED = "AUDIO_PEAK_PROCESSOR_LOADED",
AUDIO_PEAK_PROCESSOR_LOAD_ERROR = "AUDIO_PEAK_PROCESSOR_LOAD_ERROR",
AUDIO_PEAK_PROCESSOR_MESSAGE = "AUDIO_PEAK_PROCESSOR_MESSAGE"
}
export declare type AudioPeakProcessorEventTypeDataMap = {
[AudioPeakProcessorEventType.AUDIO_PEAK_PROCESSOR_LOADING]: AudioPeakProcessorEventData;
[AudioPeakProcessorEventType.AUDIO_PEAK_PROCESSOR_LOADED]: AudioPeakProcessorEventData;
[AudioPeakProcessorEventType.AUDIO_PEAK_PROCESSOR_LOAD_ERROR]: AudioPeakProcessorErrorEventData;
[AudioPeakProcessorEventType.AUDIO_PEAK_PROCESSOR_MESSAGE]: AudioPeakProcessorMessage;
};
export declare type AudioPeakProcessorMessage = AudioPeakProcessorMessageMessage | AudioPeakProcessorPeaksMessage;
export declare interface AudioPeakProcessorMessageMessage {
type: 'message';
message: number[][];
}
export declare enum AudioPeakProcessorMeterStandard {
PEAK_SAMPLE = "PEAK_SAMPLE",
TRUE_PEAK = "TRUE_PEAK"
}
export declare interface AudioPeakProcessorPeaksMessage {
type: 'peaks';
peaks: number[];
}
export declare interface AudioPeakProcessorState {
/**
* Audio peak processing strategy
*/
meterStandard: AudioPeakProcessorMeterStandard;
loadStage: OpStageState;
}
export declare enum AudioPlayerSize {
FULL = "FULL",
COMPACT = "COMPACT"
}
declare interface AudioProbeMetadata {
channelsNumber: number;
codec: string;
}
export declare class AudioRouter implements InternalAudioRouterApi {
protected readonly _onEvent$: Subject<AudioRouterEvent>;
protected readonly _loadStage: OpStage;
protected _inputsNumber: number;
protected _outputsNumber: number;
protected _sourceAudioNode?: AudioNode;
protected _channelSplitterNode: ChannelSplitterNode;
protected _channelMergerNode: ChannelMergerNode;
protected _defaultRoutingConnections: AudioRoutingConnection[];
protected _soloMuteStatesByInput: Map<number, AudioRouterInputSoloMuteState>;
protected _lastChangedSoloMuteStateInput: number | undefined;
protected _connectionsByInputOutput: Map<number, Map<number, AudioRoutingConnection>>;
protected _effectGraphsByInputOutput: Map<number, Map<number, AudioEffectGraph | undefined>>;
protected _destroyBreaker: ObserverBreaker;
constructor(audioOutputNode: AudioNode, inputsNumber: number, outputsNumberResolver?: (maxChannelCount: number) => number);
setDefaultRoutingConnections(connections: AudioRoutingConnection[]): Observable<void>;
resetRouter(): Observable<void>;
get onEvent$(): Observable<AudioRouterEvent>;
load(): Observable<void>;
get isSourceConnected(): boolean;
disconnectSource(): void;
connectSource(audioNode: AudioNode): void;
updateConnections(connections: AudioRoutingConnection[]): Observable<void>;
protected _updateConnection(newConnection: AudioRoutingConnection, emitEvent?: boolean): void;
protected emitChange(): void;
getDefaultRoutingConnections(): AudioRoutingConnection[];
protected getRoutingConnections(): AudioRoutingConnection[][];
get state(): AudioRouterState;
restoreState(state: AudioRouterState): Observable<void>;
toggleSolo(routingPath: AudioRoutingInputPath): Observable<void>;
protected _solo(inputNumber: number): void;
private setInputSoloMuteState;
protected _unsolo(inputNumber: number, checkMute?: boolean): void;
toggleMute(routingPath: AudioRoutingInputPath): Observable<void>;
protected _mute(inputNumber: number): void;
protected _unmute(inputNumber: number): void;
private getInitialRoutingConnectionsForInput;
resetInputsSoloMuteState(): void;
protected resetInputSoloMuteState(inputNumber: number, emitEvent?: boolean): void;
protected createInitialSoloMuteState(inputNumber: number): AudioRouterInputSoloMuteState;
protected _updateInputsSoloMuteState(): void;
setAudioEffectGraphs(effectGraphState: AudioEffectGraphState, routingPath?: Partial<AudioRoutingPath>): Observable<void>;
removeAudioEffectGraphs(routingPath?: Partial<AudioRoutingPath>): void;
findAudioEffectGraphs(routingPath?: Partial<AudioRoutingPath>): RoutedAudioEffectGraph[];
getEffectGraphState(routingPath: AudioRoutingPath): AudioEffectGraphState | undefined;
protected _findRoutedAudioEffects(filter?: {
routingPath?: Partial<AudioRoutingPath> | undefined;
} & AudioEffectFilter): RoutedAudioEffect[];
findAudioEffects(filter?: {
routingPath?: Partial<AudioRoutingPath> | undefined;
} & AudioEffectFilter): AudioEffect[];
findAudioEffectStates(filter?: {
routingPath?: Partial<AudioRoutingPath> | undefined;
} & AudioEffectFilter): AudioEffectState[];
setAudioEffectParams(param: AudioEffectParam, filter?: {
routingPath?: Partial<AudioRoutingPath> | undefined;
} & AudioEffectFilter): {
id: string;
routingPath: AudioRoutingPath;
}[];
private _setEffectsGraphs;
private _checkIfEffectsGraphsCanBeChanged;
private _setEffectGraph;
private _getByRoutingPath;
private connectEffectGraph;
private disconnectEffectGraph;
destroy(): void;
}
export declare interface AudioRouterApi {
onEvent$: Observable<AudioRouterEvent>;
state: AudioRouterState;
getDefaultRoutingConnections(): AudioRoutingConnection[];
setDefaultRoutingConnections(connections: AudioRoutingConnection[]): Observable<void>;
toggleSolo(routingPath: AudioRoutingInputPath): Observable<void>;
toggleMute(routingPath: AudioRoutingInputPath): Observable<void>;
resetRouter(): Observable<void>;
updateConnections(connections: AudioRoutingConnection[]): Observable<void>;
}
export declare interface AudioRouterErrorEventData extends AudioRouterEventData {
error: string | undefined;
}
export declare type AudioRouterEvent = {
[K in AudioRouterEventType]: {
type: K;
data: AudioRouterEventTypeDataMap[K];
};
}[keyof AudioRouterEventTypeDataMap];
export declare interface AudioRouterEventData extends Serializable {
state: AudioRouterState;
}
export declare enum AudioRouterEventType {
AUDIO_ROUTER_LOADING = "AUDIO_ROUTER_LOADING",
AUDIO_ROUTER_LOADED = "AUDIO_ROUTER_LOADED",
AUDIO_ROUTER_LOAD_ERROR = "AUDIO_ROUTER_LOAD_ERROR",
AUDIO_ROUTER_CHANGE = "AUDIO_ROUTER_CHANGE"
}
export declare type AudioRouterEventTypeDataMap = {
[AudioRouterEventType.AUDIO_ROUTER_LOADING]: AudioRouterEventData;
[AudioRouterEventType.AUDIO_ROUTER_LOADED]: AudioRouterEventData;
[AudioRouterEventType.AUDIO_ROUTER_LOAD_ERROR]: AudioRouterErrorEventData;
[AudioRouterEventType.AUDIO_ROUTER_CHANGE]: AudioRouterEventData;
};
export declare interface AudioRouterInputSoloMuteState {
/**
* Audio router input number
*/
inputNumber: number;
/**
* Flag that tells if audio router input is soloed
*/
soloed: boolean;
/**
* Flag that tells if audio router input is muted
*/
muted: boolean;
/**
* Audio router soloed input connections
*/
inputSoloedConnections: AudioRoutingConnection[];
/**
* Audio router muted input connections
*/
inputMutedConnections: AudioRoutingConnection[];
/**
* Audio router connections before input solo action (current input connections are not included)
*/
unsoloConnections: AudioRoutingConnection[];
}
declare interface AudioRouterMessageChannel {
onEvent$: Observable<AudioRouterEvent>;
state: Observable<AudioRouterState>;
getDefaultRoutingConnections(): Observable<AudioRoutingConnection[]>;
setDefaultRoutingConnections(connections: AudioRoutingConnection[]): Observable<void>;
toggleSolo(routingPath: AudioRoutingInputPath): Observable<void>;
toggleMute(routingPath: AudioRoutingInputPath): Observable<void>;
resetRouter(): Observable<void>;
updateConnections(connections: AudioRoutingConnection[]): Observable<void>;
}
declare class AudioRouterProxy extends BaseMessageChannelProxy<AudioRouterMessageChannel> implements AudioRouterApi {
protected _destroyBreaker: ObserverBreaker;
protected _routerState?: AudioRouterState;
protected _audioRouterEventEmmiter$: Subject<AudioRouterEvent>;
constructor(messageChannel: MessageChannel_2<AudioRouterMessageChannel>);
get onEvent$(): Observable<AudioRouterEvent>;
get state(): AudioRouterState;
getDefaultRoutingConnections(): AudioRoutingConnection[];
setDefaultRoutingConnections(connections: AudioRoutingConnection[]): Observable<void>;
toggleSolo(routingPath: AudioRoutingInputPath): Observable<void>;
toggleMute(routingPath: AudioRoutingInputPath): Observable<void>;
resetRouter(): Observable<void>;
updateConnections(connections: AudioRoutingConnection[]): Observable<void>;
private checkLateInitialization;
updateFromState(routerState: AudioRouterState): void;
protected tryLateInitialization(): void;
private syncStateOperator;
}
export declare interface AudioRouterState {
loadStage: OpStageState;
/**
* Number of audio inputs
*/
inputsNumber: number;
/**
* Number of audio outputs
*/
outputsNumber: number;
/**
* Audio routing matrix
*/
routingConnections: AudioRoutingConnection[][];
/**
* Audio router initial/default connections
*/
initialRoutingConnections: AudioRoutingConnection[];
routingRoutes: AudioRoutingRoute[];
}
/**
* Describes {@ OmpAudioRoutingPoint} connection status - connected or disconnected
*/
export declare interface AudioRoutingConnection {
/**
* Routing path - channel splitter output and channel merger input
*/
path: AudioRoutingPath;
/**
* Connected status, true = connected, false = disconnected
*/
connected: boolean;
}
export declare type AudioRoutingInputPath = Pick<AudioRoutingPath, 'input'>;
export declare type AudioRoutingOutputPath = Pick<AudioRoutingPath, 'output'>;
/**
* Describes routing path - channel splitter output and channel merger input
*/
export declare interface AudioRoutingPath {
/**
* Input - Channel splitter output
*/
input: number;
/**
* Output - Channel merger input
*/
output: number;
}
/**
* Describes state on {@link AudioRoutingPath}
*/
export declare interface AudioRoutingRoute {
/**
* Routing path
*/
path: AudioRoutingPath;
/**
* Connection status
*/
connection: AudioRoutingConnection;
/**
* Audio effect graph state
*/
audioEffectGraphState: AudioEffectGraphState | undefined;
}
declare type AudioSlotType = 'source' | 'router' | 'destination';
/**
* Serializable snapshot of an audio {@link Track}.
*/
export declare interface AudioState extends TrackState {
audioType: AudioType;
url: string | undefined;
duration: number | undefined;
audioCodec: string | undefined;
channels: number | undefined;
}
export declare interface AudioThemeConfig extends AudioThemeConfigUpdateableAttrs {
/**
* Specifies list of enabled floating controls
*/
floatingControls: AudioThemeFloatingControl[];
/**
* Specifies list of floating controls that are shown when the video is playing
*/
alwaysOnFloatingControls: AudioThemeFloatingControl[];
/**
* Sets the available playback rates in menu
*/
playbackRates: number[];
/**
* Enables/disables the audio visualization
*/
visualization: AudioVisualization;
/**
* Configures the audio visualization
*/
visualizationConfig: AudioVisualizationConfig;
/**
* Id of the custom web component used for Player chroming
*/
htmlTemplateId?: string;
}
export declare interface AudioThemeConfigUpdateableAttrs {
/**
* Specifies controls visibility
*/
controlBarVisibility: Omit<ControlBarVisibility, ControlBarVisibility.FULLSCREEN_ONLY>;
/**
* Specifies list of enabled controls in control bar
*/
controlBar: AudioThemeControl[];
/**
* Specifies the audio player size
*/
playerSize: AudioPlayerSize;
/**
* Specifies which time format will be used in the timer control
*/
timeFormat: ChromingTimeFormat;
}
export declare enum AudioThemeControl {
PLAY = "PLAY",
VOLUME = "VOLUME",
PLAYBACK_RATE = "PLAYBACK_RATE",
TRACK_SELECTOR = "TRACK_SELECTOR",
SCRUBBER = "SCRUBBER",
TIME = "TIME",
ROUTER = "ROUTER"
}
export declare enum AudioThemeFloatingControl {
PLAYBACK_CONTROLS = "PLAYBACK_CONTROLS",
HELP_MENU = "HELP_MENU"
}
declare interface AudioTrackController extends TrackController<TrackControllerEvent> {
onBufferingRequired$: Observable<boolean>;
handler: PlayerAudioHandlerApi;
}
declare type AudioTrackIdentifier = any;
/** Load options for audio tracks. */
export declare interface AudioTrackLoadOptions extends BaseTrackLoadOptions {
args?: AudioArgs;
}
/**
* Discriminator for the origin of an audio track.
*/
export declare enum AudioType {
/** Standalone audio file loaded as a sidecar. */
AUDIO_FILE = "AUDIO_FILE",
/** Audio rendition extracted from an HLS manifest. */
HLS_AUDIO = "HLS_AUDIO",
/** Audio track from an MP4 container. */
MP4_AUDIO = "MP4_AUDIO"
}
/**
* Subset of {@link AudioState} fields that can be updated at runtime.
*/
export declare type AudioUpdateableAttrs = TrackUpdateableAttrs & Pick<AudioState, 'channels'>;
export declare enum AudioVisualization {
DISABLED = "DISABLED",
ENABLED = "ENABLED"
}
export declare interface AudioVisualizationConfig {
/**
* Hex value for the stroke color
*/
strokeColor: string;
/**
* Hex values for the fill gradient colors
*/
fillColors: string[];
}
export declare class AuthConfig {
static _authentication?: AuthenticationData | undefined;
static set authentication(authentication: AuthenticationData | undefined);
static get authentication(): AuthenticationData | undefined;
/**
* Creates a fetch-compatible RequestInit object
*/
static createRequestInit(url: string, authentication?: AuthenticationData): RequestInit;
}
/** Union of all supported authentication strategies. */
export declare type AuthenticationData = BasicAuthenticationData | BearerAuthenticationData | CustomAuthenticationData;
export declare class BarChartLane extends BaseObservationTrackLane<BarChartLaneConfig, BarChartLaneLaneStyle, BarChartLaneTrackConfig> {
protected _downsamplers: Map<ObservationTrack['id'], ObservationTrackDownsampler>;
private _typedTrackViews;
constructor(configAndStyle?: ConfigAndStyle<BarChartLaneConfig, BarChartLaneLaneStyle>);
addTrack(track: ObservationTrack, config?: BarChartLaneTrackConfig): void;
addTrack(id: ObservationTrack['id'], config?: BarChartLaneTrackConfig): void;
protected renderTrack(track: ObservationTrack, config: BarChartLaneTrackConfig | undefined): ObservationTrackView;
protected onTrackRemoved(trackId: ObservationTrack['id']): void;
protected hasVisualElements(): boolean;
protected updatePositions(): void;
protected createLoadingGroupContent(width: number, height: number): default_3.Animation;
private _createDefaultLoadingAnimation;
private _createOgLoadingAnimation;
destroy(): void;
}
export declare interface BarChartLaneConfig extends ObservationTrackLaneConfig {
}
export declare interface BarChartLaneLaneStyle extends ObservationTrackLaneStyle {
}
/**
* Per-track configuration for {@link BarChartLane}.
* Each track added via `addTrack()` can carry its own scale, baseline, interpolation
* settings, and visual style that override lane-level defaults.
*/
export declare interface BarChartLaneTrackConfig extends ObservationTrackLaneTrackConfig {
/** Value domain for this track. Auto-derived from data when omitted. */
scale?: BarChartLaneTrackScale;
/** Value that maps to the bar baseline (zero-crossing). Defaults to 0. */
scaleBaseline?: number;
/** Aggregation strategy used when multiple samples fall in the same interpolation bucket. */
interpolationStrategy?: InterpolationStrategy;
/** Width in pixels of a single interpolation bucket. Smaller = more detail */
interpolationWidth?: number;
style?: BarChartLaneTrackStyle;
}
/**
* Visual style for a single measurement series within a bar-chart track.
* Matched to data by `measurement`; unmatched measurements use defaults.
*/
export declare interface BarChartLaneTrackMeasurementStyle {
/** Measurement this style applies to (matches {@link ObservationItem.measurement}). */
measurement: ObservationItem['measurement'];
/** Bar rendering mode: `'default'` draws rectangles, `'og'` draws a column of stacked circles. */
barType: 'default' | 'og';
/** Solid fill color. Mutually exclusive with `fillLinearGradientColorStops`. */
fill: Color;
/** Gradient color stops (Konva format). Used when `fill` is not set. */
fillLinearGradientColorStops: (number | string)[];
/** Overall bar opacity (0–1). */
opacity: Size;
/** Corner radius for `'default'` bars. */
cornerRadius: Size | [Size, Size, Size, Size];
/** Stroke color drawn around each bar. */
strokeColor: Color;
/** Stroke width in pixels. */
strokeWidth: Size;
/** Horizontal padding inside the bar's allocated width. Single value = symmetric; tuple = [left, right]. */
paddingX: Size | [Size, Size];
}
declare type BarChartLaneTrackScale = {
min: number;
max: number;
};
export declare interface BarChartLaneTrackStyle {
paddingTop?: number;
paddingBottom?: number;
baselineFill?: Color;
baselineThickness?: Size;
baselineDash?: Size[];
measurements?: Partial<BarChartLaneTrackMeasurementStyle>[];
}
export declare type BarChartViewComponentEvent = {
[K in BarChartViewComponentEventType]: {
type: K;
data: BarChartViewComponentEventTypeDataMap[K];
};
}[keyof BarChartViewComponentEventTypeDataMap];
export declare interface BarChartViewComponentEventData {
item: ObservationState;
pointerPosition: Position;
}
export declare enum BarChartViewComponentEventType {
CLICK = "CLICK",
MOUSE_MOVE = "MOUSE_MOVE",
MOUSE_ENTER = "MOUSE_ENTER",
MOUSE_LEAVE = "MOUSE_LEAVE"
}
export declare type BarChartViewComponentEventTypeDataMap = {
[BarChartViewComponentEventType.CLICK]: BarChartViewComponentEventData;
[BarChartViewComponentEventType.MOUSE_MOVE]: BarChartViewComponentEventData;
[BarChartViewComponentEventType.MOUSE_ENTER]: BarChartViewComponentEventData;
[BarChartViewComponentEventType.MOUSE_LEAVE]: BarChartViewComponentEventData;
};
declare abstract class BaseChroming implements ChromingInternalApi, Destroyable {
protected readonly _onEvent$: Subject<ChromingEvent>;
protected _destroyBreaker: ObserverBreaker;
protected _config: ChromingInternalConfig;
protected _playerInternal: PlayerInternalApi | undefined;
protected _alertDuration: number;
private _watermark;
private _helpMenuGroups;
private _videoSafeZones;
protected _thumbnailTrackId: Track['id'] | undefined;
protected _markerTrackHandlers: {
[ChromingTrackDestination.PROGRESS_BAR]: ChromingMarkerBarHandler | undefined;
[ChromingTrackDestination.MARKER_BARS]: ChromingMarkerBarHandler[];
};
protected _domController: ChromingDomController<ChromingThemeTypes>;
protected constructor(config: ChromingInternalConfig);
abstract addMarkerBar(trackId: Track['id'], destination: ChromingTrackDestination, config?: Partial<ChromingMarkerBarConfig>): Observable<ChromingMarkerBarState['id']>;
abstract setMarkerBars(markerBars: ChromingMarkerBarState[], progressBarMarkerBar?: ChromingMarkerBarState): Observable<void>;
abstract updateMarker(markerTrack: MarkerTrackState, marker: MarkerState, attrs: MarkerUpdateableAttrs): void;
abstract setThumbnailTrack(trackId: Track['id'] | undefined): Observable<void>;
abstract restoreAlerts(): Observable<void>;
protected abstract addAudioTrackObserver(trackId: Track['id'], breaker$: Observable<any>, audioType: PlayerAudioType.MAIN | PlayerAudioType.SIDECAR): void;
protected abstract addTextTrackObserver(trackId: Track['id'], breaker$: Observable<any>): void;
protected abstract getMarkerTrackState(trackId: Track['id']): Observable<MarkerTrackState | undefined>;
protected handleTrackRepositoryDeleteEvent(event: TrackRepositoryEvent): void;
protected handleMarkerTrackEvent(event: TimedItemsTrackEvent): void;
protected handleThumbnailTrackEvent(event: TimedItemsTrackEvent, track: ThumbnailTrack): void;
setPlayerInternal(playerInternal: PlayerInternalApi): void;
get onEvent$(): Observable<ChromingEvent>;
restoreChromingSession(chromingSession: ChromingSession): Observable<void>;
protected resolveTheme(): ChromingTheme;
protected resolveThemeConfig(): Partial<DefaultThemeConfig | StampThemeConfig | ChromelessThemeConfig | AudioThemeConfig | OmakaseThemeConfig | CustomThemeConfig> | undefined;
get state(): ChromingState;
get chromingSession(): ChromingSession;
emitChromingChange(): void;
emitSafeZonesChange(): void;
emitHelpMenuChange(): void;
emitMarkerTrackChange(): void;
emitThumbnailTrackChange(): void;
emitThemeConfigChange(): void;
emitWatermarkChange(watermark: string | undefined): void;
setWatermark(watermark: string | undefined): Observable<void>;
get videoSafeZones(): VideoSafeZone[];
setSafeZones(videoSafeZones: VideoSafeZone[]): Observable<void>;
addSafeZone(videoSafeZone: VideoSafeZoneCreate): Observable<VideoSafeZone>;
removeSafeZone(id: string): Observable<void>;
removeAllSafeZones(): Observable<void>;
get helpMenuGroups(): HelpMenuGroup[];
setHelpMenuGroups(helpMenuGroups: HelpMenuGroup[]): Observable<void>;
addHelpMenuGroup(helpMenuGroup: HelpMenuGroup, insertPosition?: HelpMenuGroupInsertPosition): Observable<HelpMenuGroup>;
clearHelpMenuGroups(): Observable<void>;
setFloatingTimeVisible(visible: boolean): Observable<void>;
setFloatingVuMeterVisible(visible: boolean): Observable<void>;
setTimeFormat(timeFormat: ChromingTimeFormat): Observable<void>;
setThemeConfig(themeConfig: Partial<ChromingThemeConfigTypes>): Observable<void>;
setVuMeterConfig(vuMeterConfig: Partial<ChromingVuMeterConfig>, position?: ChromingVuMeterPosition): Observable<void>;
toggleFullScreen(): Observable<void>;
getPlayerChromingElement<T>(querySelector: string): T;
getMarkerBars(): ChromingMarkerBarHandlers;
getMarkerBar(id: string): ChromingMarkerBarHandlerApi | undefined;
deleteMarkerBar(id: string): Observable<void>;
protected createMarkerElementAndHandler(markerTracks: MarkerTrackState[], destination: ChromingTrackDestination, config?: Partial<ChromingMarkerBarConfig>, trackState?: ChromingMarkerBarState, ui?: Ui | UiProxy): ChromingMarkerBarHandlerApi;
get isFloatingTimeVisible(): boolean | undefined;
get timeFormat(): ChromingTimeFormat | undefined;
get domController(): ChromingDomController<ChromingThemeTypes>;
destroy(): void;
}
declare abstract class BaseFlexGroup<C extends FlexGroupConfig, T extends FlexGroupContentNode<any>> extends BaseF