import { App, Ref } from 'vue'; import { ConfigProviderProps } from '../../config-provider'; import { DialogApi, DialogProviderProps } from '../../dialog'; import { LoadingBarApi, LoadingBarProviderProps } from '../../loading-bar'; import { MessageApi, MessageProviderProps } from '../../message'; import { NotificationApi, NotificationProviderProps } from '../../notification'; export type MaybeRef = Ref | T; export interface DiscreteApiOptions { configProviderProps?: MaybeRef; messageProviderProps?: MaybeRef; dialogProviderProps?: MaybeRef; notificationProviderProps?: MaybeRef; loadingBarProviderProps?: MaybeRef; } export type DiscreteApiType = 'message' | 'notification' | 'loadingBar' | 'dialog'; export type DiscreteApi = { unmount: () => void; app: App; } & ('message' extends T ? { message: MessageApi; } : {}) & ('notification' extends T ? { notification: NotificationApi; } : {}) & ('dialog' extends T ? { dialog: DialogApi; } : {}) & ('loadingBar' extends T ? { loadingBar: LoadingBarApi; } : {});