/* eslint-disable max-len */ import { VueConstructor, ComponentOptions, FunctionalComponentOptions, VNodeData, } from 'vue' import { CombinedVueInstance, Vue } from 'vue/types/vue' import { RecordPropsDefinition, ThisTypedComponentOptionsWithArrayProps, ThisTypedComponentOptionsWithRecordProps, } from 'vue/types/options' import { MetaInfo } from 'vue-meta/types' import { TouchStoredHandlers } from './directives/touch' declare global { interface Window { Vue: VueConstructor } interface HTMLCollection { [Symbol.iterator] (): IterableIterator } interface Element { getElementsByClassName(classNames: string): NodeListOf } interface HTMLElement { _clickOutside?: EventListenerOrEventListenerObject _onResize?: { callback: () => void options?: boolean | AddEventListenerOptions } _ripple?: { enabled?: boolean centered?: boolean class?: string circle?: boolean touched?: boolean isTouch?: boolean } _observe?: { init: boolean observer: IntersectionObserver } _mutate?: { observer: MutationObserver } _onScroll?: { callback: EventListenerOrEventListenerObject options: boolean | AddEventListenerOptions target: EventTarget } _touchHandlers?: { [_uid: number]: TouchStoredHandlers } } interface WheelEvent { path?: EventTarget[] } function parseInt(s: string | number, radix?: number): number function parseFloat(string: string | number): number export type Dictionary = Record export const __VUETIFY_VERSION__: string export const __REQUIRED_VUE__: string } declare module 'vue/types/vnode' { export interface VNodeData { model?: { callback: (v: any) => void expression: string value: any } } } declare module 'vue/types/options' { interface ComponentOptions { head?: MetaInfo | (() => MetaInfo) } } declare module 'vue/types/vue' { export type OptionsVue = VueConstructor< CombinedVueInstance & Vue, Options > export interface Vue { _uid: number _isDestroyed: boolean /** bindObjectProps */ _b ( data: VNodeData, tag: string, value: Dictionary | Dictionary[], asProp?: boolean, isSync?: boolean ): VNodeData /** bindObjectListeners */ _g (data: VNodeData, value: {}): VNodeData } export interface RawComponentOptions< V extends Vue = Vue, Data = {} | undefined, Methods = {} | undefined, Computed = {} | undefined, Props = {} | undefined > { name?: string data: Data methods: Methods computed: { [C in keyof Computed]: (this: V) => Computed[C] } props: Props } interface VueConstructor< V extends Vue = Vue, Options = Record > { version: string /* eslint-disable-next-line camelcase */ $_vuetify_subcomponents?: Record /* eslint-disable-next-line camelcase */ $_vuetify_installed?: true options: Options extend (options?: ThisTypedComponentOptionsWithArrayProps & Options): OptionsVue, Options> extend (options?: ThisTypedComponentOptionsWithRecordProps & Options): OptionsVue extend (definition: FunctionalComponentOptions, PropNames[]> & Options): OptionsVue, Options> extend (definition: FunctionalComponentOptions> & Options): OptionsVue extend (options?: ComponentOptions & Options): OptionsVue } }