interface StyledElement { style: CSSStyleDeclaration } interface EventPathSource { target: EventTarget | null composedPath?: () => EventTarget[] } type StackFrame = ((...args: never[]) => unknown) | (abstract new (...args: never[]) => object) export interface Utils { isBrowser: boolean userAgent: string isMobile: boolean isSafari: boolean isIOS: boolean isIOS13: boolean query: (selector: string, parent?: ParentNode) => T | null queryAll: (selector: string, parent?: ParentNode) => T[] addClass: (target: Pick, className: string) => void removeClass: (target: Pick, className: string) => void hasClass: (target: Pick, className: string) => boolean append: (parent: Element, child: unknown) => Element | ChildNode | null remove: (child: T) => T replaceElement: (newChild: T, oldChild: Node) => T siblings: (target: Element) => Element[] inverseClass: (target: Element, className: string) => void createElement: { (tag: K): HTMLElementTagNameMap[K] (tag: string): HTMLElement } setStyle: (element: T, key: PropertyKey, value: unknown) => T setStyles: (element: T, styles: object) => T getStyle: { (element: Element, key: string, numberType?: true): number (element: Element, key: string, numberType: false): string (element: Element, key: string, numberType: boolean): number | string } setStyleText: (id: string, cssText: string) => void getRect: (element: Pick) => DOMRect tooltip: (target: Element, message: string | number, position?: string) => void isInViewport: (target: Pick, offset?: number) => boolean includeFromEvent: (event: EventPathSource, target: EventTarget | null | undefined) => boolean getSafeAreaInsets: () => { top: number, right: number, bottom: number, left: number } srtToVtt: (text: string) => string vttToBlob: (text: string) => string assToVtt: (text: string) => string getExt: (url: string) => string download: (url: string, name: string) => void loadImg: (url: string, scale?: number) => Promise errorHandle: (condition: T, message?: string) => T silencePromise: (value: T) => T extends Promise ? Promise : T def: (object: T, name: PropertyKey, descriptor: PropertyDescriptor & object & ThisType) => T has: (object: object, name: PropertyKey) => boolean get: (object: object, name: PropertyKey) => PropertyDescriptor | undefined mergeDeep: (...objects: T) => T[number] sleep: (milliseconds?: number) => Promise /** The wrapper preserves its call receiver; the old context argument is ignored. */ debounce: (callback: (this: Receiver, ...args: Args) => unknown, duration: number, context?: object) => (this: Receiver, ...args: Args) => void throttle: (callback: (this: Receiver, ...args: Args) => unknown, duration: number) => (this: Receiver, ...args: Args) => void clamp: (number: number, a: number, b: number) => number secondToTime: (second: number) => string escape: (text: string) => string unescape: (text: string) => string capitalize: (text: string) => string ArtPlayerError: new (message?: string, context?: StackFrame) => Error getIcon: (key?: string, html?: string | HTMLElement) => HTMLElement getComposedPath: (event: EventPathSource) => EventTarget[] supportsFlex: () => boolean }