import { type StaticType, type StaticDirection } from './static.mjs'; import { type TSchema, type TSchemaOptions } from './schema.mjs'; import { type TProperties } from './properties.mjs'; import { type TObject } from './object.mjs'; import { type TUnknown } from './unknown.mjs'; type CyclicStackLength = (Stack extends [infer Left, ...infer Right] ? Buffer['length'] extends MaxLength ? false : CyclicStackLength : true); type CyclicGuard = (Ref extends Stack[number] ? CyclicStackLength : true); type StaticGuardedRef = (CyclicGuard extends true ? StaticType<[...Stack, Ref], Direction, Context, This, Type> : any); export type StaticRef : StaticGuardedRef> = Result; /** Represents a type reference. */ export interface TRef extends TSchema { '~kind': 'Ref'; $ref: Ref; } /** Creates a Ref type. */ export declare function Ref(ref: Ref, options?: TSchemaOptions): TRef; /** Returns true if the given value is TRef. */ export declare function IsRef(value: unknown): value is TRef; export {};