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

//#region src/store/provider-mixin.d.ts
type ProviderMixin<Store extends PlayerStore> = <Class extends MediaElementConstructor>(BaseClass: Class) => Class & PlayerProviderConstructor<Store>;
/**
 * Create a mixin that provides player context to descendant elements.
 *
 * @param context - Player context to provide to descendants.
 * @param factory - Factory function that creates a store instance.
 */
declare function createProviderMixin<Store extends PlayerStore>(context: PlayerContext<Store>, factory: () => Store): ProviderMixin<Store>;
//#endregion
export { ProviderMixin, createProviderMixin };
//# sourceMappingURL=provider-mixin.d.ts.map