import { ArrayArg, IntegerArg, CharacterArg, TextType } from '../'; import { AnyExpression, Expression } from '../../expressions'; import { ConstraintConfig } from '../../functions'; import { Type } from '../index'; export declare const JSON: () => JSONType; export declare type JSONArg = JSONType['argument']; export interface JSONType extends Type<'JSON', R, T> { expression: JSONExpression; argument: Expression> | this['input']; required(conf?: ConstraintConfig): JSONType; } export interface JSONExpression = Record, R extends boolean = boolean> extends AnyExpression> { concat(arg: CharacterArg): Expression>; get(item: K): Expression>; get(item: IntegerArg | CharacterArg): Expression>; getText(item: IntegerArg | CharacterArg): Expression>; getByPath(path: ArrayArg): Expression>; getTextByPath(path: ArrayArg): Expression>; }