import { Get } from './Get'; import { TypeGuard } from './TypeGuard'; export type JsonValue = string | number | boolean | null | Json | JsonValue[]; export type Json = { [key: string]: JsonValue; }; export declare const isJson: TypeGuard<{ toJSON: () => Json; }>; export declare const json: { parse: (subject: unknown) => T; merge: (...subjects: unknown[]) => Json; delete: (subject: T, key: string) => T; set: (subject: T, key?: string, value?: unknown) => T; omit: (subject: T, ...keys: string[]) => T; pick: (subject: T, ...keys: string[]) => T; defaults: (options?: Partial, defaults?: Partial) => T; isSubset: (subject: Json, subset: Json) => boolean; split: , K extends string = "extracted">(t: T, keys: readonly (keyof T)[], prop?: K) => { [P in K]: Partial; }; }; export declare const toJson: (...subjects: unknown[]) => Json; export declare const asJson: (j?: unknown, alt?: Get) => Json; declare class Any { readonly value: T; constructor(value: T); merge: (...subjects: T[]) => Any; delete: (key: keyof T) => Any; omit: (...keys: (keyof T)[]) => Any; set: (key: keyof T, value?: unknown) => Any; toJSON(): Json; } export declare const takeFirstKey: (j: unknown, alt?: string) => string; export declare const takeFirst: (j: Record) => [K, T]; export declare const any: (value: T) => Any; export {};