import { APIService } from "~/plugins/api";
import { NuxtAxiosInstance } from "./axios";
import { Registries } from '~/plugins/registry';

type WaveUI = any;

declare module 'vue/types/vue' {
	interface Vue {
		$isDark(): boolean;
		$api: APIService
		$waveui: WaveUI
		$axios: NuxtAxiosInstance
		$registries: Registries
	}
}

declare module '@nuxt/types' {
	interface NuxtAppOptions {
		$api: APIService
		$waveui: WaveUI
		$axios: NuxtAxiosInstance
		$registries: Registries
	}
	interface Context {
		$api: APIService
		$waveui: WaveUI
		$axios: NuxtAxiosInstance
		$registries: Registries
	}
}

declare module 'vuex/types/index' {
	interface Store<S> {
		$api: APIService
		$waveui: WaveUI
		$axios: NuxtAxiosInstance
		$registries: Registries
	}
}