/// /// import { Component } from "../component"; import { ExtractInstanceType, UiInstance } from "./instances"; import { Var } from "./state"; type InferVariables = [C] extends [Var] ? [N, Ctx] : [C] extends [UiInstance] ? InferInstanceVariables : [C] extends [ { _if: [infer C, infer T, infer F]; } ] ? InferVariables | InferVariables | InferVariables : [C] extends [ { _eq: [infer L, infer R]; } ] ? InferVariables | InferVariables : [C] extends [ { _datatype: [string, infer Ctx, ...infer V]; } ] ? { [k in keyof V]: InferVariables; }[keyof V] : never; type InstanceFieldContext = [K] extends [keyof ExtractInstanceType] ? ExtractInstanceType[K] extends RBXScriptSignal ? C | undefined : ExtractInstanceType[K] : Component | Component[] | undefined; type InferInstanceVariables = { [k in keyof T]-?: InferVariables>; }[keyof T]; export type InferVariableState> = Reconstruct : never>>; export {};