import { VariableTypeAlias, VariableValue } from './config/models'; /** * Used to support strong typing of variable keys in the SDK. * Usage; * ```ts * import '@devcycle/types'; * declare module '@devcycle/types' { * interface CustomVariableDefinitions { * 'flag-one': boolean; * } * } * ``` * Or when using the cli generated types; * ```ts * import '@devcycle/types'; * declare module '@devcycle/types' { * interface CustomVariableDefinitions extends DVCVariableTypes {} * } * ``` */ export interface CustomVariableDefinitions { } type DynamicBaseVariableDefinitions = keyof CustomVariableDefinitions extends never ? { [key: string]: VariableValue; } : CustomVariableDefinitions; export interface VariableDefinitions extends DynamicBaseVariableDefinitions { } export type VariableKey = string & keyof VariableDefinitions; export type CustomVariablesDefined = keyof CustomVariableDefinitions extends never ? false : true; export type InferredVariableType = CustomVariablesDefined extends true ? VariableDefinitions[K] : VariableTypeAlias; export {};