import type { TSchema, SchemaOptions } from '../schema/index'; import type { Static } from '../static/index'; import type { Evaluate } from '../helpers/index'; import type { TReadonly } from '../readonly/index'; import type { TOptional } from '../optional/index'; import { Kind } from '../symbols/index'; type ReadonlyOptionalPropertyKeys = { [K in keyof T]: T[K] extends TReadonly ? (T[K] extends TOptional ? K : never) : never; }[keyof T]; type ReadonlyPropertyKeys = { [K in keyof T]: T[K] extends TReadonly ? (T[K] extends TOptional ? never : K) : never; }[keyof T]; type OptionalPropertyKeys = { [K in keyof T]: T[K] extends TOptional ? (T[K] extends TReadonly ? never : K) : never; }[keyof T]; type RequiredPropertyKeys = keyof Omit | ReadonlyPropertyKeys | OptionalPropertyKeys>; type ObjectStaticProperties> = Evaluate<(Readonly>>> & Readonly>> & Partial>> & Required>>)>; type ObjectStatic = ObjectStaticProperties; }>; export type TPropertyKey = string | number; export type TProperties = Record; export type TAdditionalProperties = undefined | TSchema | boolean; export interface ObjectOptions extends SchemaOptions { /** Additional property constraints for this object */ additionalProperties?: TAdditionalProperties; /** The minimum number of properties allowed on this object */ minProperties?: number; /** The maximum number of properties allowed on this object */ maxProperties?: number; } export interface TObject extends TSchema, ObjectOptions { [Kind]: 'Object'; static: ObjectStatic; additionalProperties?: TAdditionalProperties; type: 'object'; properties: T; required?: string[]; } /** `[Json]` Creates an Object type */ declare function _Object(properties: T, options?: ObjectOptions): TObject; /** `[Json]` Creates an Object type */ export declare var Object: typeof _Object; export {};