import type { Emitter } from '../emitter' import type Artplayer from '../runtime' import type { Events } from './events' import type { Player } from './player' /** Safe fields before Template returns; video/query/proxy getters are not usable yet. */ export interface ProxyHost extends Emitter, Pick {} // Mapped types collapse distinct getter/setter types; preserve Player directly. type Pending = Player & Omit & Partial> type AfterPlayer = 'layers' | 'controls' | 'contextmenu' | 'subtitle' | 'info' | 'loading' | 'hotkey' | 'mask' | 'setting' | 'plugins' /** URL assignment awaits its owned delay before invoking customType. */ export type CustomTypeHost = Artplayer export type LayerHost = Pending export type ControlHost = Pending> export type ContextmenuHost = Pending> /** Constructor factories run before the Plugins registry is assigned to the player. */ export type PluginHost = Pending<'plugins'>