|                                                                                                                                                                                                                                                                                                                                                                                                             |  | declare var ajv: {  (options?: ajv.Options): ajv.Ajv;  new(options?: ajv.Options): ajv.Ajv;  ValidationError: typeof AjvErrors.ValidationError;  MissingRefError: typeof AjvErrors.MissingRefError;  $dataMetaSchema: object;}
declare namespace AjvErrors {  class ValidationError extends Error {    constructor(errors: Array<ajv.ErrorObject>);
    message: string;    errors: Array<ajv.ErrorObject>;    ajv: true;    validation: true;  }
  class MissingRefError extends Error {    constructor(baseId: string, ref: string, message?: string);    static message: (baseId: string, ref: string) => string;
    message: string;    missingRef: string;    missingSchema: string;  }}
declare namespace ajv {  type ValidationError = AjvErrors.ValidationError;
  type MissingRefError = AjvErrors.MissingRefError;
  interface Ajv {    /**    * Validate data using schema    * Schema will be compiled and cached (using serialized JSON as key, [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize by default).
    * @param  {string|object|Boolean} schemaKeyRef key, ref or schema object    * @param  {Any} data to be validated    * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).    */    validate(schemaKeyRef: object | string | boolean, data: any): boolean | PromiseLike<any>;    /**    * Create validating function for passed schema.    * @param  {object|Boolean} schema schema object    * @return {Function} validating function    */    compile(schema: object | boolean): ValidateFunction;    /**    * Creates validating function for passed schema with asynchronous loading of missing schemas.    * `loadSchema` option should be a function that accepts schema uri and node-style callback.    * @this  Ajv    * @param {object|Boolean} schema schema object    * @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped    * @param {Function} callback optional node-style callback, it is always called with 2 parameters: error (or null) and validating function.    * @return {PromiseLike<ValidateFunction>} validating function    */    compileAsync(schema: object | boolean, meta?: Boolean, callback?: (err: Error, validate: ValidateFunction) => any): PromiseLike<ValidateFunction>;    /**    * Adds schema to the instance.    * @param {object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.    * @param {string} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.    * @return {Ajv} this for method chaining    */    addSchema(schema: Array<object> | object, key?: string): Ajv;    /**    * Add schema that will be used to validate other schemas    * options in META_IGNORE_OPTIONS are alway set to false    * @param {object} schema schema object    * @param {string} key optional schema key    * @return {Ajv} this for method chaining    */    addMetaSchema(schema: object, key?: string): Ajv;    /**    * Validate schema    * @param {object|Boolean} schema schema to validate    * @return {Boolean} true if schema is valid    */    validateSchema(schema: object | boolean): boolean;    /**    * Get compiled schema from the instance by `key` or `ref`.    * @param  {string} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).    * @return {Function} schema validating function (with property `schema`). Returns undefined if keyRef can't be resolved to an existing schema.    */    getSchema(keyRef: string): ValidateFunction | undefined;    /**    * Remove cached schema(s).    * If no parameter is passed all schemas but meta-schemas are removed.    * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.    * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.    * @param  {string|object|RegExp|Boolean} schemaKeyRef key, ref, pattern to match key/ref or schema object    * @return {Ajv} this for method chaining    */    removeSchema(schemaKeyRef?: object | string | RegExp | boolean): Ajv;    /**    * Add custom format    * @param {string} name format name    * @param {string|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)    * @return {Ajv} this for method chaining    */    addFormat(name: string, format: FormatValidator | FormatDefinition): Ajv;    /**    * Define custom keyword    * @this  Ajv    * @param {string} keyword custom keyword, should be a valid identifier, should be different from all standard, custom and macro keywords.    * @param {object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.    * @return {Ajv} this for method chaining    */    addKeyword(keyword: string, definition: KeywordDefinition): Ajv;    /**    * Get keyword definition    * @this  Ajv    * @param {string} keyword pre-defined or custom keyword.    * @return {object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise.    */    getKeyword(keyword: string): object | boolean;    /**    * Remove keyword    * @this  Ajv    * @param {string} keyword pre-defined or custom keyword.    * @return {Ajv} this for method chaining    */    removeKeyword(keyword: string): Ajv;    /**    * Validate keyword    * @this  Ajv    * @param {object} definition keyword definition object    * @param {boolean} throwError true to throw exception if definition is invalid    * @return {boolean} validation result    */    validateKeyword(definition: KeywordDefinition, throwError: boolean): boolean;    /**    * Convert array of error message objects to string    * @param  {Array<object>} errors optional array of validation errors, if not passed errors from the instance are used.    * @param  {object} options optional options with properties `separator` and `dataVar`.    * @return {string} human readable string with all errors descriptions    */    errorsText(errors?: Array<ErrorObject> | null, options?: ErrorsTextOptions): string;    errors?: Array<ErrorObject> | null;    _opts: Options;  }
  interface CustomLogger {    log(...args: any[]): any;    warn(...args: any[]): any;    error(...args: any[]): any;  }
  interface ValidateFunction {    (      data: any,      dataPath?: string,      parentData?: object | Array<any>,      parentDataProperty?: string | number,      rootData?: object | Array<any>    ): boolean | PromiseLike<any>;    schema?: object | boolean;    errors?: null | Array<ErrorObject>;    refs?: object;    refVal?: Array<any>;    root?: ValidateFunction | object;    $async?: true;    source?: object;  }
  interface Options {    $data?: boolean;    allErrors?: boolean;    verbose?: boolean;    jsonPointers?: boolean;    uniqueItems?: boolean;    unicode?: boolean;    format?: false | string;    formats?: object;    keywords?: object;    unknownFormats?: true | string[] | 'ignore';    schemas?: Array<object> | object;    schemaId?: '$id' | 'id' | 'auto';    missingRefs?: true | 'ignore' | 'fail';    extendRefs?: true | 'ignore' | 'fail';    loadSchema?: (uri: string, cb?: (err: Error, schema: object) => void) => PromiseLike<object | boolean>;    removeAdditional?: boolean | 'all' | 'failing';    useDefaults?: boolean | 'empty' | 'shared';    coerceTypes?: boolean | 'array';    strictDefaults?: boolean | 'log';    strictKeywords?: boolean | 'log';    strictNumbers?: boolean;    async?: boolean | string;    transpile?: string | ((code: string) => string);    meta?: boolean | object;    validateSchema?: boolean | 'log';    addUsedSchema?: boolean;    inlineRefs?: boolean | number;    passContext?: boolean;    loopRequired?: number;    ownProperties?: boolean;    multipleOfPrecision?: boolean | number;    errorDataPath?: string,    messages?: boolean;    sourceCode?: boolean;    processCode?: (code: string, schema: object) => string;    cache?: object;    logger?: CustomLogger | false;    nullable?: boolean;    serialize?: ((schema: object | boolean) => any) | false;  }
  type FormatValidator = string | RegExp | ((data: string) => boolean | PromiseLike<any>);  type NumberFormatValidator = ((data: number) => boolean | PromiseLike<any>);
  interface NumberFormatDefinition {    type: "number",    validate: NumberFormatValidator;    compare?: (data1: number, data2: number) => number;    async?: boolean;  }
  interface StringFormatDefinition {    type?: "string",    validate: FormatValidator;    compare?: (data1: string, data2: string) => number;    async?: boolean;  }
  type FormatDefinition = NumberFormatDefinition | StringFormatDefinition;
  interface KeywordDefinition {    type?: string | Array<string>;    async?: boolean;    $data?: boolean;    errors?: boolean | string;    metaSchema?: object;    // schema: false makes validate not to expect schema (ValidateFunction)
    schema?: boolean;    statements?: boolean;    dependencies?: Array<string>;    modifying?: boolean;    valid?: boolean;    // one and only one of the following properties should be present
    validate?: SchemaValidateFunction | ValidateFunction;    compile?: (schema: any, parentSchema: object, it: CompilationContext) => ValidateFunction;    macro?: (schema: any, parentSchema: object, it: CompilationContext) => object | boolean;    inline?: (it: CompilationContext, keyword: string, schema: any, parentSchema: object) => string;  }
  interface CompilationContext {    level: number;    dataLevel: number;    dataPathArr: string[];    schema: any;    schemaPath: string;    baseId: string;    async: boolean;    opts: Options;    formats: {      [index: string]: FormatDefinition | undefined;    };    keywords: {      [index: string]: KeywordDefinition | undefined;    };    compositeRule: boolean;    validate: (schema: object) => boolean;    util: {      copy(obj: any, target?: any): any;      toHash(source: string[]): { [index: string]: true | undefined };      equal(obj: any, target: any): boolean;      getProperty(str: string): string;      schemaHasRules(schema: object, rules: any): string;      escapeQuotes(str: string): string;      toQuotedString(str: string): string;      getData(jsonPointer: string, dataLevel: number, paths: string[]): string;      escapeJsonPointer(str: string): string;      unescapeJsonPointer(str: string): string;      escapeFragment(str: string): string;      unescapeFragment(str: string): string;    };    self: Ajv;  }
  interface SchemaValidateFunction {    (      schema: any,      data: any,      parentSchema?: object,      dataPath?: string,      parentData?: object | Array<any>,      parentDataProperty?: string | number,      rootData?: object | Array<any>    ): boolean | PromiseLike<any>;    errors?: Array<ErrorObject>;  }
  interface ErrorsTextOptions {    separator?: string;    dataVar?: string;  }
  interface ErrorObject {    keyword: string;    dataPath: string;    schemaPath: string;    params: ErrorParameters;    // Added to validation errors of propertyNames keyword schema
    propertyName?: string;    // Excluded if messages set to false.
    message?: string;    // These are added with the `verbose` option.
    schema?: any;    parentSchema?: object;    data?: any;  }
  type ErrorParameters = RefParams | LimitParams | AdditionalPropertiesParams |    DependenciesParams | FormatParams | ComparisonParams |    MultipleOfParams | PatternParams | RequiredParams |    TypeParams | UniqueItemsParams | CustomParams |    PatternRequiredParams | PropertyNamesParams |    IfParams | SwitchParams | NoParams | EnumParams;
  interface RefParams {    ref: string;  }
  interface LimitParams {    limit: number;  }
  interface AdditionalPropertiesParams {    additionalProperty: string;  }
  interface DependenciesParams {    property: string;    missingProperty: string;    depsCount: number;    deps: string;  }
  interface FormatParams {    format: string  }
  interface ComparisonParams {    comparison: string;    limit: number | string;    exclusive: boolean;  }
  interface MultipleOfParams {    multipleOf: number;  }
  interface PatternParams {    pattern: string;  }
  interface RequiredParams {    missingProperty: string;  }
  interface TypeParams {    type: string;  }
  interface UniqueItemsParams {    i: number;    j: number;  }
  interface CustomParams {    keyword: string;  }
  interface PatternRequiredParams {    missingPattern: string;  }
  interface PropertyNamesParams {    propertyName: string;  }
  interface IfParams {    failingKeyword: string;  }
  interface SwitchParams {    caseIndex: number;  }
  interface NoParams { }
  interface EnumParams {    allowedValues: Array<any>;  }}
export = ajv;
 |