import { ContainerContext, PlayerContext } from "../player/context.js";
import { MediaElementConstructor } from "../ui/media-element.js";
import { PlayerConsumerConstructor } from "./types.js";
import { PlayerStore } from "@videojs/core/dom";

//#region src/store/container-mixin.d.ts
interface ContainerMixinConfig<Store extends PlayerStore> {
  playerContext: PlayerContext<Store>;
  containerContext: ContainerContext;
}
type ContainerMixin<Store extends PlayerStore> = <Class extends MediaElementConstructor>(BaseClass: Class) => Class & PlayerConsumerConstructor<Store>;
/**
 * Create a mixin that consumes player context and registers itself as the
 * container element with the provider via `containerContext`.
 *
 * @param config - Container configuration with player and container contexts.
 */
declare function createContainerMixin<Store extends PlayerStore>(config: ContainerMixinConfig<Store>): ContainerMixin<Store>;
//#endregion
export { ContainerMixin, ContainerMixinConfig, createContainerMixin };
//# sourceMappingURL=container-mixin.d.ts.map