stencil-quantum
Version:
Experience the quantum realm of stencil.
14 lines (13 loc) • 769 B
TypeScript
import { QuantumSchema, QuantumType } from "./schema";
import { Entanglement, EntangleOptions } from "./entanglement";
export declare type QuantumKeys<T extends QuantumSchema> = {
[K in keyof T]: QuantumKey<ResolveQuantumType<T, K>, Entanglement<T>>;
};
export interface QuantumKey<T, C extends Entanglement<any>> extends EntangleOptions, QuantumType<T> {
name: string;
config: C;
}
declare type ResolveQuantumType<T extends QuantumSchema, K extends keyof T> = T[K] extends QuantumType<infer R> ? R : never;
export declare type ContextType<T extends Entanglement<any>, K extends keyof T["keys"]> = ResolveQuantumKey<T["keys"][K], T>;
export declare type ResolveQuantumKey<K, C extends Entanglement<any>> = K extends QuantumKey<infer T, C> ? T : never;
export {};