import type { App, Ref } from 'vue'; import type { ConfigProviderProps } from '../../config-provider'; import type { DialogApi, DialogProviderProps } from '../../dialog'; import type { LoadingBarApi, LoadingBarProviderProps } from '../../loading-bar'; import type { MessageApi, MessageProviderProps } from '../../message'; import type { 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; } : Record) & ('notification' extends T ? { notification: NotificationApi; } : Record) & ('dialog' extends T ? { dialog: DialogApi; } : Record) & ('loadingBar' extends T ? { loadingBar: LoadingBarApi; } : Record);