import { Schema, symbol, type ISchemaOptions, type StrictOptions, Node, type WalkOptions } from "../schema/schema";
import type { Merge, OptionalUndefined, Simplify, Static, StaticCoerced, Writeable } from "../static";
export type TProperties = {
[key: string]: Schema;
};
export type TProperties2
= {
[K in keyof P]: P[K] extends Schema ? P[K] : never;
};
export type ObjectStatic = Simplify;
}>>>;
export type ObjectCoerced = Simplify;
}>>>;
export type ObjectDefaults = Simplify>>;
export interface IObjectOptions extends ISchemaOptions {
$defs?: Record;
patternProperties?: Record;
additionalProperties?: Schema | false;
unevaluatedProperties?: Schema | false;
dependencies?: Record;
dependentRequired?: Record;
dependentSchemas?: Record;
minProperties?: number;
maxProperties?: number;
propertyNames?: Schema;
}
type IRawObjectOptions = IObjectOptions & {
required?: string[];
};
export declare class ObjectSchema extends Schema : Simplify & {
[key: string]: unknown;
}>>, O extends {
additionalProperties: false;
} ? ObjectCoerced : Simplify & {
[key: string]: unknown;
}>>> {
readonly type = "object";
properties: P;
required: string[] | undefined;
constructor(properties: P, o?: O & IRawObjectOptions);
strict(): ObjectSchema>;
partial(): ObjectSchema<{ [Key in keyof P]: P[Key] extends Schema ? Schema : never; }, O>;
children(opts?: WalkOptions): Node[];
}
export declare const object: , const O extends IObjectOptions>(properties: P, options?: StrictOptions) => ObjectSchema & O;
export declare const strictObject: , const O extends IObjectOptions>(properties: P, options?: StrictOptions) => ObjectSchema>;
export declare const partialObject: , const O extends IObjectOptions>(properties: P, options?: StrictOptions) => ObjectSchema<{ [Key in keyof P]: P[Key] extends Schema ? Schema : never; }, O>;
export {};