UNPKG

@illandril/foundryvtt-types

Version:

Type definitions for the Foundry VTT client, used by Illandril's modules

56 lines (50 loc) 1.5 kB
declare global { class ClientSettings { register<T>(module: string, key: string, data: ClientSettings.Config<T>): void; get(module: string, key: string): unknown; set<T>(module: string, key: string, value: T): void; registerMenu<ObjectType extends object, Options extends FormApplicationOptions>( module: string, key: string, data: ClientSettings.MenuConfig<ObjectType, Options>, ): void; } namespace ClientSettings { type MenuConfig<ObjectType extends object, Options extends FormApplicationOptions> = { name: string; label: string; hint: string; icon: string; type: typeof FormApplication<ObjectType, Options>; restricted: boolean; }; type TypeConstructor<T = unknown> = T extends string ? typeof String : T extends number ? typeof Number : T extends boolean ? typeof Boolean : T extends object ? typeof Object : never; type Config<T = unknown> = { name: string; hint?: string; scope: 'client' | 'world'; config: boolean; requiresReload?: boolean; type: ClientSettings.TypeConstructor<T>; default: T; onChange?: (value: T) => void; choices?: T extends string ? Record<string, string> : never; range?: T extends number ? { min: number; max: number; step: number; } : never; }; } } export type {};