import type { SchemaOptions, TSchema } from '../schema/index'; import type { TupleToUnion, Evaluate } from '../helpers/index'; import { type TRecursive } from '../recursive/index'; import type { TMappedKey, TMappedResult } from '../mapped/index'; import { TComputed } from '../computed/index'; import { TLiteral, TLiteralValue } from '../literal/index'; import { type TIndexPropertyKeys } from '../indexed/index'; import { type TIntersect } from '../intersect/index'; import { type TUnion } from '../union/index'; import { type TObject, type TProperties } from '../object/index'; import { type TRef } from '../ref/index'; import { type TOmitFromMappedKey } from './omit-from-mapped-key'; import { type TOmitFromMappedResult } from './omit-from-mapped-result'; type TFromIntersect = (Types extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromIntersect]> : Result); type TFromUnion = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromUnion]> : Result); type TFromProperties> = (Evaluate>); type TFromObject<_Type extends TObject, PropertyKeys extends PropertyKey[], Properties extends TProperties, MappedProperties extends TProperties = TFromProperties, Result extends TSchema = TObject> = Result; type TUnionFromPropertyKeys = (PropertyKeys extends [infer Key extends PropertyKey, ...infer Rest extends PropertyKey[]] ? Key extends TLiteralValue ? TUnionFromPropertyKeys]> : TUnionFromPropertyKeys : TUnion); export type TOmitResolve = (Properties extends TRecursive ? TRecursive> : Properties extends TIntersect ? TIntersect> : Properties extends TUnion ? TUnion> : Properties extends TObject ? TFromObject : TObject<{}>); type TResolvePropertyKeys = Key extends TSchema ? TIndexPropertyKeys : Key; type TResolveTypeKey = Key extends PropertyKey[] ? TUnionFromPropertyKeys : Key; export type TOmit = (Type extends TMappedResult ? TOmitFromMappedResult> : Key extends TMappedKey ? TOmitFromMappedKey : [ IsTypeRef, IsKeyRef ] extends [true, true] ? TComputed<'Omit', [Type, TResolveTypeKey]> : [ IsTypeRef, IsKeyRef ] extends [false, true] ? TComputed<'Omit', [Type, TResolveTypeKey]> : [ IsTypeRef, IsKeyRef ] extends [true, false] ? TComputed<'Omit', [Type, TResolveTypeKey]> : TOmitResolve>); /** `[Json]` Constructs a type whose keys are picked from the given type */ export declare function Omit(type: Type, key: readonly [...Key], options?: SchemaOptions): TOmit; /** `[Json]` Constructs a type whose keys are picked from the given type */ export declare function Omit(type: Type, key: Key, options?: SchemaOptions): TOmit; export {};