export interface MetaScopeValue { [Symbol.unscopables]: { __rpc_methods: M; __rpc_events: E; __rpc_state: S; }; } export interface MetaScope { [Symbol.unscopables]: MetaScopeValue; } export type EventPath = (K extends (string | number) ? (T[K] extends infer P ? (0 extends (1 & P) ? (K | [K, ...(number | string)[]]) : P extends unknown[] ? (K | [K]) : [ K, ...(EventPath extends infer NEXT extends ((string | number) | (string | number)[]) ? (NEXT extends any[] ? NEXT : [NEXT]) : never) ]) : never) : never); export type EventPathArgs = (0 extends (1 & FORM) ? any[] : PATH extends (number | string) ? EventPathArgs<[PATH], FORM> : PATH extends [] ? FORM extends any[] ? 0 extends (1 & FORM) ? any[] : FORM : never : PATH extends [infer PROP, ...infer TAIL extends (number | string)[]] ? (PROP extends keyof FORM ? EventPathArgs : never) : never);