import { MediaElement } from "./media-element.js";
import { PlayerController } from "../player/player-controller.js";
import { PropertyDeclarationMap, PropertyValues } from "@videojs/element";
import { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from "@videojs/core";

//#region src/ui/media-button-element.d.ts
/** Abstract base for HTML custom elements that render a media-control button. */
declare abstract class MediaButtonElement<Core extends MediaUIComponent> extends MediaElement {
  #private;
  static properties: PropertyDeclarationMap;
  disabled: boolean;
  label: string;
  protected abstract readonly core: Core;
  protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;
  protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;
  protected abstract activate(state: InferMediaState<Core>): void;
  connectedCallback(): void;
  disconnectedCallback(): void;
  protected willUpdate(changed: PropertyValues): void;
  protected update(changed: PropertyValues): void;
}
//#endregion
export { MediaButtonElement };
//# sourceMappingURL=media-button-element.d.ts.map