import { type DecodeContext, type RTError, Type } from './type.js'; import { type OptionalKeys, type RequiredKeys, type Result } from './utils.js'; export declare class StructType extends Type<{ [K in RequiredKeys]: T[K]; } & { [K in OptionalKeys]?: T[K]; }> { props: { [K in keyof T]: Type; }; private _keys; private _keySet; constructor(props: { [K in keyof T]: Type; }); print(): string; decode(u: unknown, opts: DecodeContext): Result<{ [K in RequiredKeys]: T[K]; } & { [K in OptionalKeys]?: T[K]; }, RTError>; validate(v: T, opts: DecodeContext): Promise]: T[K]; } & { [K_1 in OptionalKeys]?: T[K_1] | undefined; }, RTError>>; validateSync(v: T, opts: DecodeContext): Result<{ [K in RequiredKeys]: T[K]; } & { [K_1 in OptionalKeys]?: T[K_1] | undefined; }, RTError>; } export declare function struct(props: { [K in keyof T]: Type; }): StructType; export declare function partial(strct: StructType): StructType>; export type PatchField = T extends undefined ? T | null : T | undefined; export type PatchStruct = { [K in keyof T]?: PatchField; }; export declare function patch(strct: StructType): StructType>; type DeepPartialValue = V extends unknown[] | Date ? V : V extends object ? DeepPartial : V; export type DeepPartial = { [K in keyof T]?: DeepPartialValue; } & {}; type DeepPatchValue = V extends unknown[] | Date ? V : V extends object ? DeepPatchStruct : V; export type DeepPatchStruct = { [K in keyof T]?: DeepPatchValue> | (undefined extends T[K] ? null : never) | undefined; } & {}; export declare function deepPartial(strct: StructType): StructType>; export declare function deepPatch(strct: StructType): StructType>; export declare function pick(strct: StructType, keys: K[]): StructType>; export declare function omit(strct: StructType, keys: K[]): StructType>; export {};