/* eslint-disable no-redeclare */ /* eslint-disable no-unused-vars */ import Vue, { VueConstructor, ComponentOptions } from 'vue'; type VueMixin = VueConstructor | ComponentOptions; export type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; export type ExtractInstance = T extends VueConstructor ? V : T extends ComponentOptions ? V : never; export type MixedVueConstructor = Mixins extends (infer T)[] ? VueConstructor> & Vue> : never; export default function mixins(...mixins: Mixins): MixedVueConstructor; export default function mixins(...mixins: (VueConstructor | ComponentOptions)[]): VueConstructor { return Vue.extend({ mixins }); }