import { MixedLocale } from './locale'; import type Reference from './Reference'; import type { Message, Maybe, AnyObject } from './types'; import type { Defined, If, Thunk } from './util/types'; import BaseSchema from './schema'; export declare type MatchOptions = { excludeEmptyString?: boolean; message: Message<{ regex: RegExp; }>; name?: string; }; export declare function create(): StringSchema, string | undefined>; export declare namespace create { var prototype: StringSchema; } export default class StringSchema = string | undefined, TContext extends AnyObject = AnyObject, TOut extends TType = TType> extends BaseSchema { constructor(); protected _typeCheck(value: any): value is NonNullable; protected _isPresent(value: any): boolean; length(length: number | Reference, message?: Message<{ length: number; }>): this; min(min: number | Reference, message?: Message<{ min: number; }>): this; max(max: number | Reference, message?: Message<{ max: number; }>): this; matches(regex: RegExp, options?: MatchOptions | MatchOptions['message']): this; email(message?: Message<{ regex: RegExp; }>): this; url(message?: Message<{ regex: RegExp; }>): this; uuid(message?: Message<{ regex: RegExp; }>): this; ensure(): StringSchema>; trim(message?: Message<{}>): this; lowercase(message?: Message<{}>): this; uppercase(message?: Message<{}>): this; } export interface DefinedStringSchema, TContext extends AnyObject = AnyObject> extends StringSchema> { default>(def: Thunk): If, DefinedStringSchema, TContext>>; defined(msg?: MixedLocale['defined']): this; required(msg?: MixedLocale['required']): RequiredStringSchema; optional(): StringSchema; notRequired(): StringSchema; nullable(isNullable?: true): RequiredStringSchema; nullable(isNullable: false): RequiredStringSchema, TContext>; } export interface RequiredStringSchema, TContext extends AnyObject = AnyObject> extends StringSchema> { default>(def: Thunk): If, RequiredStringSchema, TContext>>; defined(msg?: MixedLocale['defined']): DefinedStringSchema; required(msg?: MixedLocale['required']): RequiredStringSchema; optional(): StringSchema; notRequired(): StringSchema; nullable(isNullable?: true): RequiredStringSchema; nullable(isNullable: false): RequiredStringSchema, TContext>; } export default interface StringSchema = string | undefined, TContext extends AnyObject = AnyObject, TOut extends TType = TType> extends BaseSchema { concat>(schema: TOther): TOther; default>(def: Thunk): If, StringSchema, TContext>>; defined(msg?: MixedLocale['defined']): DefinedStringSchema; required(msg?: MixedLocale['required']): RequiredStringSchema; optional(): StringSchema; notRequired(): StringSchema; nullable(isNullable?: true): StringSchema; nullable(isNullable: false): StringSchema, TContext>; withContext(): StringSchema, TNextContext>; }