import type { XSchema } from '../types/schema.mjs'; import type { XPointerGet } from '../pointer/pointer_get.mjs'; import type { XStaticSchema } from './schema.mjs'; type XCyclicCheck = (Stack extends [infer Left, ...infer Right] ? Buffer['length'] extends MaxLength ? false : XCyclicCheck : true); type XCyclicGuard = (Ref extends Stack[number] ? XCyclicCheck : true); type XNormal = Result; export type XStaticRef, Target extends unknown = XPointerGet, Schema extends XSchema = Target extends XSchema ? Target : {}, Result extends unknown = (XCyclicGuard extends true ? XStaticSchema<[...Stack, Ref], Root, Schema> : any)> = Result; export {};