import type { TSchema, SchemaOptions } from '../schema/index'; import type { Evaluate, Ensure } from '../helpers/index'; import type { TMappedResult } from '../mapped/index'; import { type TReadonlyOptional } from '../readonly-optional/index'; import { type TComputed } from '../computed/index'; import { type TOptional } from '../optional/index'; import { type TReadonly } from '../readonly/index'; import { type TRecursive } from '../recursive/index'; import { type TObject, type TProperties } from '../object/index'; import { type TIntersect } from '../intersect/index'; import { type TUnion } from '../union/index'; import { type TRef } from '../ref/index'; import { type TBigInt } from '../bigint/index'; import { type TBoolean } from '../boolean/index'; import { type TInteger } from '../integer/index'; import { type TLiteral } from '../literal/index'; import { type TNull } from '../null/index'; import { type TNumber } from '../number/index'; import { type TString } from '../string/index'; import { type TSymbol } from '../symbol/index'; import { type TUndefined } from '../undefined/index'; import { type TPartialFromMappedResult } from './partial-from-mapped-result'; type TFromComputed = Ensure]>>; type TFromRef = Ensure]>>; type TFromProperties = Evaluate<{ [K in keyof Properties]: Properties[K] extends (TReadonlyOptional) ? TReadonlyOptional : Properties[K] extends (TReadonly) ? TReadonlyOptional : Properties[K] extends (TOptional) ? TOptional : TOptional; }>; type TFromObject<_Type extends TObject, Properties extends TProperties, MappedProperties extends TProperties = TFromProperties, Result extends TSchema = TObject> = Result; type TFromRest = (Types extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromRest]> : Result); export type TPartial = (Type extends TRecursive ? TRecursive> : Type extends TComputed ? TFromComputed : Type extends TRef ? TFromRef : Type extends TIntersect ? TIntersect> : Type extends TUnion ? TUnion> : Type extends TObject ? TFromObject : Type extends TBigInt ? Type : Type extends TBoolean ? Type : Type extends TInteger ? Type : Type extends TLiteral ? Type : Type extends TNull ? Type : Type extends TNumber ? Type : Type extends TString ? Type : Type extends TSymbol ? Type : Type extends TUndefined ? Type : TObject<{}>); /** `[Json]` Constructs a type where all properties are optional */ export declare function Partial(type: MappedResult, options?: SchemaOptions): TPartialFromMappedResult; /** `[Json]` Constructs a type where all properties are optional */ export declare function Partial(type: Type, options?: SchemaOptions): TPartial; export {};