import type { InjectionKey, MaybeRef } from 'vue' import { Awaitable } from './typed.js' /** 字典唯一标志 */ export type DictTypeKey = string & { __T?: T } /** 字典项基础 */ export interface _DictItemBase { /** 标签 */ label: string /** 值 */ value: string /** 备注 */ remark?: string /** 禁用 */ disabled?: boolean } /** 字典项 */ export type DictItem = T & _DictItemBase /** Options for {@link plugin} */ export interface DictOptions { /** 获取字典项 */ fetch: (params: (Omit & { dictType: string })[]) => Awaitable<(DictItem[] | undefined)[]> /** 缓存的存活时长,单位 ms */ ttl?: MaybeRef /** 缓存附加的 key,应存在于 {@link UseDictOptions} */ cacheKeys?: (keyof UseDictOptions)[] /** 缓存附加的 key 默认值 */ cacheKeysDefaultValue?: { [Key in keyof UseDictOptions]?: UseDictOptions[Key] | (() => UseDictOptions[Key]) | undefined } } /** * 字典插件 * - vue-plugin */ export declare function plugin( app: { provide | string | number>(key: K, value: K extends InjectionKey ? V : T): void }, options: DictOptions, ): void export default plugin /** 取消注册 */ type Unregister = () => void /** * 注册字典 * * @param dictType - 字典类型 * @param getter - 获取字典项 * @param cached - 是否缓存,默认 true * @returns 取消注册的 handler */ export declare function registerDict( dictType: DictTypeKey, getter: (options: UseDictOptions, getDict?: (dictType: DictTypeKey, options?: UseDictOptions) => Promise[]>) => Promise[]>, cached?: boolean, ): Unregister /** * 取消注册字典 * * @param dictType - 字典类型 */ export declare function unregisterDict(dictType: DictTypeKey): void /** * Options for {@link useDict} & {@link useDictMap} * * 可以增加参数,会在调用 {@link DictOptions.fetch} 时传递 */ export interface UseDictOptions { onGet?: (dicts: DictItem[]) => Awaitable[]> } /** Return for {@link useDict} & {@link useDictMap} */ export type UseDictReturn = Result & { loading: boolean } /** 字典项映射 map,key 为 字典值 {@link DictItem.value} */ export type DictValueMap = Map> /** * 获取字典项 * - vue-composable * * @param dictType - 字典类型 * @param options - 选项 */ export declare function useDict( dictType: MaybeRef>, options?: UseDictOptions, ): UseDictReturn[]> /** * 获取字典项映射 * - vue-composable * * @param dictType - 字典类型 * @param options - 选项 */ export declare function useDictMap( dictType: MaybeRef>, options?: UseDictOptions, ): UseDictReturn>