{
  "metadata": {
    "toolPackage": "@microsoft/api-extractor",
    "toolVersion": "7.41.0",
    "schemaVersion": 1011,
    "oldestForwardsCompatibleVersion": 1001,
    "tsdocConfig": {
      "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json",
      "noStandardTags": true,
      "tagDefinitions": [
        {
          "tagName": "@alpha",
          "syntaxKind": "modifier"
        },
        {
          "tagName": "@beta",
          "syntaxKind": "modifier"
        },
        {
          "tagName": "@defaultValue",
          "syntaxKind": "block"
        },
        {
          "tagName": "@decorator",
          "syntaxKind": "block",
          "allowMultiple": true
        },
        {
          "tagName": "@deprecated",
          "syntaxKind": "block"
        },
        {
          "tagName": "@eventProperty",
          "syntaxKind": "modifier"
        },
        {
          "tagName": "@example",
          "syntaxKind": "block",
          "allowMultiple": true
        },
        {
          "tagName": "@experimental",
          "syntaxKind": "modifier"
        },
        {
          "tagName": "@inheritDoc",
          "syntaxKind": "inline"
        },
        {
          "tagName": "@internal",
          "syntaxKind": "modifier"
        },
        {
          "tagName": "@label",
          "syntaxKind": "inline"
        },
        {
          "tagName": "@link",
          "syntaxKind": "inline",
          "allowMultiple": true
        },
        {
          "tagName": "@override",
          "syntaxKind": "modifier"
        },
        {
          "tagName": "@packageDocumentation",
          "syntaxKind": "modifier"
        },
        {
          "tagName": "@param",
          "syntaxKind": "block",
          "allowMultiple": true
        },
        {
          "tagName": "@privateRemarks",
          "syntaxKind": "block"
        },
        {
          "tagName": "@public",
          "syntaxKind": "modifier"
        },
        {
          "tagName": "@readonly",
          "syntaxKind": "modifier"
        },
        {
          "tagName": "@remarks",
          "syntaxKind": "block"
        },
        {
          "tagName": "@returns",
          "syntaxKind": "block"
        },
        {
          "tagName": "@sealed",
          "syntaxKind": "modifier"
        },
        {
          "tagName": "@see",
          "syntaxKind": "block"
        },
        {
          "tagName": "@throws",
          "syntaxKind": "block",
          "allowMultiple": true
        },
        {
          "tagName": "@typeParam",
          "syntaxKind": "block",
          "allowMultiple": true
        },
        {
          "tagName": "@virtual",
          "syntaxKind": "modifier"
        },
        {
          "tagName": "@betaDocumentation",
          "syntaxKind": "modifier"
        },
        {
          "tagName": "@internalRemarks",
          "syntaxKind": "block"
        },
        {
          "tagName": "@preapproved",
          "syntaxKind": "modifier"
        }
      ],
      "supportForTags": {
        "@alpha": true,
        "@beta": true,
        "@defaultValue": true,
        "@decorator": true,
        "@deprecated": true,
        "@eventProperty": true,
        "@example": true,
        "@experimental": true,
        "@inheritDoc": true,
        "@internal": true,
        "@label": true,
        "@link": true,
        "@override": true,
        "@packageDocumentation": true,
        "@param": true,
        "@privateRemarks": true,
        "@public": true,
        "@readonly": true,
        "@remarks": true,
        "@returns": true,
        "@sealed": true,
        "@see": true,
        "@throws": true,
        "@typeParam": true,
        "@virtual": true,
        "@betaDocumentation": true,
        "@internalRemarks": true,
        "@preapproved": true
      },
      "reportUnsupportedHtmlElements": false
    }
  },
  "kind": "Package",
  "canonicalReference": "@tldraw/validate!",
  "docComment": "",
  "name": "@tldraw/validate",
  "preserveMemberOrder": false,
  "members": [
    {
      "kind": "EntryPoint",
      "canonicalReference": "@tldraw/validate!",
      "name": "",
      "preserveMemberOrder": false,
      "members": [
        {
          "kind": "Class",
          "canonicalReference": "@tldraw/validate!ArrayOfValidator:class",
          "docComment": "/**\n * @public\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class ArrayOfValidator<T> extends "
            },
            {
              "kind": "Reference",
              "text": "Validator",
              "canonicalReference": "@tldraw/validate!Validator:class"
            },
            {
              "kind": "Content",
              "text": "<T[]>"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "fileUrlPath": "packages/validate/src/lib/validation.ts",
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "isAbstract": false,
          "name": "ArrayOfValidator",
          "preserveMemberOrder": false,
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@tldraw/validate!ArrayOfValidator:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `ArrayOfValidator` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(itemValidator: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "itemValidator",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "isOptional": false
                }
              ]
            },
            {
              "kind": "Property",
              "canonicalReference": "@tldraw/validate!ArrayOfValidator#itemValidator:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly itemValidator: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isReadonly": true,
              "isOptional": false,
              "releaseTag": "Public",
              "name": "itemValidator",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "isStatic": false,
              "isProtected": false,
              "isAbstract": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!ArrayOfValidator#lengthGreaterThan1:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "lengthGreaterThan1(): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [],
              "isOptional": false,
              "isAbstract": false,
              "name": "lengthGreaterThan1"
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!ArrayOfValidator#nonEmpty:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "nonEmpty(): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [],
              "isOptional": false,
              "isAbstract": false,
              "name": "nonEmpty"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@tldraw/validate!DictValidator:class",
          "docComment": "/**\n * @public\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class DictValidator<Key extends "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", Value> extends "
            },
            {
              "kind": "Reference",
              "text": "Validator",
              "canonicalReference": "@tldraw/validate!Validator:class"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Record",
              "canonicalReference": "!Record:type"
            },
            {
              "kind": "Content",
              "text": "<Key, Value>>"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "fileUrlPath": "packages/validate/src/lib/validation.ts",
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "Key",
              "constraintTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "Value",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "isAbstract": false,
          "name": "DictValidator",
          "preserveMemberOrder": false,
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@tldraw/validate!DictValidator:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `DictValidator` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(keyValidator: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<Key>"
                },
                {
                  "kind": "Content",
                  "text": ", valueValidator: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<Value>"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "keyValidator",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "isOptional": false
                },
                {
                  "parameterName": "valueValidator",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 6
                  },
                  "isOptional": false
                }
              ]
            },
            {
              "kind": "Property",
              "canonicalReference": "@tldraw/validate!DictValidator#keyValidator:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly keyValidator: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<Key>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isReadonly": true,
              "isOptional": false,
              "releaseTag": "Public",
              "name": "keyValidator",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "isStatic": false,
              "isProtected": false,
              "isAbstract": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@tldraw/validate!DictValidator#valueValidator:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly valueValidator: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<Value>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isReadonly": true,
              "isOptional": false,
              "releaseTag": "Public",
              "name": "valueValidator",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "isStatic": false,
              "isProtected": false,
              "isAbstract": false
            }
          ],
          "extendsTokenRange": {
            "startIndex": 3,
            "endIndex": 7
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@tldraw/validate!ObjectValidator:class",
          "docComment": "/**\n * @public\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class ObjectValidator<Shape extends "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": "> extends "
            },
            {
              "kind": "Reference",
              "text": "Validator",
              "canonicalReference": "@tldraw/validate!Validator:class"
            },
            {
              "kind": "Content",
              "text": "<Shape>"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "fileUrlPath": "packages/validate/src/lib/validation.ts",
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "Shape",
              "constraintTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "isAbstract": false,
          "name": "ObjectValidator",
          "preserveMemberOrder": false,
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@tldraw/validate!ObjectValidator:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `ObjectValidator` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(config: "
                },
                {
                  "kind": "Content",
                  "text": "{\n        readonly [K in keyof Shape]: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<Shape[K]>;\n    }"
                },
                {
                  "kind": "Content",
                  "text": ", shouldAllowUnknownProperties?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "config",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 4
                  },
                  "isOptional": false
                },
                {
                  "parameterName": "shouldAllowUnknownProperties",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  },
                  "isOptional": true
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!ObjectValidator#allowUnknownProperties:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "allowUnknownProperties(): "
                },
                {
                  "kind": "Reference",
                  "text": "ObjectValidator",
                  "canonicalReference": "@tldraw/validate!ObjectValidator:class"
                },
                {
                  "kind": "Content",
                  "text": "<Shape>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [],
              "isOptional": false,
              "isAbstract": false,
              "name": "allowUnknownProperties"
            },
            {
              "kind": "Property",
              "canonicalReference": "@tldraw/validate!ObjectValidator#config:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly config: "
                },
                {
                  "kind": "Content",
                  "text": "{\n        readonly [K in keyof Shape]: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<Shape[K]>;\n    }"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isReadonly": true,
              "isOptional": false,
              "releaseTag": "Public",
              "name": "config",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 4
              },
              "isStatic": false,
              "isProtected": false,
              "isAbstract": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!ObjectValidator#extend:member(1)",
              "docComment": "/**\n * Extend an object validator by adding additional properties.\n *\n * @example\n * ```ts\n * const animalValidator = T.object({\n * \tname: T.string,\n * })\n * const catValidator = animalValidator.extend({\n * \tmeowVolume: T.number,\n * })\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "extend<Extension extends "
                },
                {
                  "kind": "Reference",
                  "text": "Record",
                  "canonicalReference": "!Record:type"
                },
                {
                  "kind": "Content",
                  "text": "<string, unknown>"
                },
                {
                  "kind": "Content",
                  "text": ">(extension: "
                },
                {
                  "kind": "Content",
                  "text": "{\n        readonly [K in keyof Extension]: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<Extension[K]>;\n    }"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ObjectValidator",
                  "canonicalReference": "@tldraw/validate!ObjectValidator:class"
                },
                {
                  "kind": "Content",
                  "text": "<Shape & Extension>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "Extension",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "extension",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 7
                  },
                  "isOptional": false
                }
              ],
              "isOptional": false,
              "isAbstract": false,
              "name": "extend"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 3,
            "endIndex": 5
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Namespace",
          "canonicalReference": "@tldraw/validate!T:namespace",
          "docComment": "",
          "excerptTokens": [],
          "fileUrlPath": "packages/validate/src/index.ts",
          "releaseTag": "None",
          "name": "T",
          "preserveMemberOrder": false,
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.any:var",
              "docComment": "/**\n * Validation that accepts any value. Generally this should be avoided, but you can use it as an escape hatch if you want to work without validations for e.g. a prototype.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "any: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<any>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "any",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.array:var",
              "docComment": "/**\n * Validates that a value is an array. To check the contents of the array, use T.arrayOf.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "array: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<unknown[]>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "array",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Function",
              "canonicalReference": "@tldraw/validate!T.arrayOf:function(1)",
              "docComment": "/**\n * Validates that a value is an array whose contents matches the passed-in validator.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare function arrayOf<T>(itemValidator: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ArrayOfValidator",
                  "canonicalReference": "@tldraw/validate!ArrayOfValidator:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "itemValidator",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "isOptional": false
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "arrayOf"
            },
            {
              "kind": "Class",
              "canonicalReference": "@tldraw/validate!T.ArrayOfValidator:class",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare class ArrayOfValidator<T> extends "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": " "
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "releaseTag": "Public",
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "isAbstract": false,
              "name": "ArrayOfValidator",
              "preserveMemberOrder": false,
              "members": [
                {
                  "kind": "Constructor",
                  "canonicalReference": "@tldraw/validate!T.ArrayOfValidator:constructor(1)",
                  "docComment": "/**\n * Constructs a new instance of the `ArrayOfValidator` class\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "constructor(itemValidator: "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validatable",
                      "canonicalReference": "@tldraw/validate!T.Validatable:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<T>"
                    },
                    {
                      "kind": "Content",
                      "text": ");"
                    }
                  ],
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "itemValidator",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 3
                      },
                      "isOptional": false
                    }
                  ]
                },
                {
                  "kind": "Property",
                  "canonicalReference": "@tldraw/validate!T.ArrayOfValidator#itemValidator:member",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "readonly itemValidator: "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validatable",
                      "canonicalReference": "@tldraw/validate!T.Validatable:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<T>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isReadonly": true,
                  "isOptional": false,
                  "releaseTag": "Public",
                  "name": "itemValidator",
                  "propertyTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "isStatic": false,
                  "isProtected": false,
                  "isAbstract": false
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.ArrayOfValidator#lengthGreaterThan1:member(1)",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "lengthGreaterThan1(): "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validator",
                      "canonicalReference": "@tldraw/validate!Validator:class"
                    },
                    {
                      "kind": "Content",
                      "text": "<T[]>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "lengthGreaterThan1"
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.ArrayOfValidator#nonEmpty:member(1)",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "nonEmpty(): "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validator",
                      "canonicalReference": "@tldraw/validate!Validator:class"
                    },
                    {
                      "kind": "Content",
                      "text": "<T[]>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "nonEmpty"
                }
              ],
              "extendsTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "implementsTokenRanges": []
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.bigint:var",
              "docComment": "/**\n * Validates that a value is a bigint.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "bigint: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<bigint>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "bigint",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.boolean:var",
              "docComment": "/**\n * Validates that a value is boolean.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "boolean: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<boolean>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "boolean",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Function",
              "canonicalReference": "@tldraw/validate!T.dict:function(1)",
              "docComment": "/**\n * Validation that an option is a dict with particular keys and values.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare function dict<Key extends "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", Value>(keyValidator: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<Key>"
                },
                {
                  "kind": "Content",
                  "text": ", valueValidator: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<Value>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "DictValidator",
                  "canonicalReference": "@tldraw/validate!DictValidator:class"
                },
                {
                  "kind": "Content",
                  "text": "<Key, Value>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "returnTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "keyValidator",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  },
                  "isOptional": false
                },
                {
                  "parameterName": "valueValidator",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 8
                  },
                  "isOptional": false
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "Key",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                },
                {
                  "typeParameterName": "Value",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "dict"
            },
            {
              "kind": "Class",
              "canonicalReference": "@tldraw/validate!T.DictValidator:class",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare class DictValidator<Key extends "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", Value> extends "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Record",
                  "canonicalReference": "!Record:type"
                },
                {
                  "kind": "Content",
                  "text": "<Key, Value>>"
                },
                {
                  "kind": "Content",
                  "text": " "
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "releaseTag": "Public",
              "typeParameters": [
                {
                  "typeParameterName": "Key",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                },
                {
                  "typeParameterName": "Value",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "isAbstract": false,
              "name": "DictValidator",
              "preserveMemberOrder": false,
              "members": [
                {
                  "kind": "Constructor",
                  "canonicalReference": "@tldraw/validate!T.DictValidator:constructor(1)",
                  "docComment": "/**\n * Constructs a new instance of the `DictValidator` class\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "constructor(keyValidator: "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validatable",
                      "canonicalReference": "@tldraw/validate!T.Validatable:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<Key>"
                    },
                    {
                      "kind": "Content",
                      "text": ", valueValidator: "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validatable",
                      "canonicalReference": "@tldraw/validate!T.Validatable:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<Value>"
                    },
                    {
                      "kind": "Content",
                      "text": ");"
                    }
                  ],
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "keyValidator",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 3
                      },
                      "isOptional": false
                    },
                    {
                      "parameterName": "valueValidator",
                      "parameterTypeTokenRange": {
                        "startIndex": 4,
                        "endIndex": 6
                      },
                      "isOptional": false
                    }
                  ]
                },
                {
                  "kind": "Property",
                  "canonicalReference": "@tldraw/validate!T.DictValidator#keyValidator:member",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "readonly keyValidator: "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validatable",
                      "canonicalReference": "@tldraw/validate!T.Validatable:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<Key>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isReadonly": true,
                  "isOptional": false,
                  "releaseTag": "Public",
                  "name": "keyValidator",
                  "propertyTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "isStatic": false,
                  "isProtected": false,
                  "isAbstract": false
                },
                {
                  "kind": "Property",
                  "canonicalReference": "@tldraw/validate!T.DictValidator#valueValidator:member",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "readonly valueValidator: "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validatable",
                      "canonicalReference": "@tldraw/validate!T.Validatable:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<Value>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isReadonly": true,
                  "isOptional": false,
                  "releaseTag": "Public",
                  "name": "valueValidator",
                  "propertyTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "isStatic": false,
                  "isProtected": false,
                  "isAbstract": false
                }
              ],
              "extendsTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              },
              "implementsTokenRanges": []
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.indexKey:var",
              "docComment": "/**\n * Validates that a value is an IndexKey.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "indexKey: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "IndexKey",
                  "canonicalReference": "@tldraw/utils!IndexKey:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "indexKey",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.integer:var",
              "docComment": "/**\n * Fails if number is not an integer\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "integer: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<number>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "integer",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Function",
              "canonicalReference": "@tldraw/validate!T.jsonDict:function(1)",
              "docComment": "/**\n * Validate an object has a particular shape.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare function jsonDict(): "
                },
                {
                  "kind": "Reference",
                  "text": "DictValidator",
                  "canonicalReference": "@tldraw/validate!DictValidator:class"
                },
                {
                  "kind": "Content",
                  "text": "<string, "
                },
                {
                  "kind": "Reference",
                  "text": "JsonValue",
                  "canonicalReference": "@tldraw/utils!JsonValue:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "jsonDict"
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.jsonValue:var",
              "docComment": "/**\n * Validate that a value is valid JSON.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "jsonValue: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "JsonValue",
                  "canonicalReference": "@tldraw/utils!JsonValue:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "jsonValue",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.linkUrl:var",
              "docComment": "/**\n * Validates that a value is a url safe to use as a link.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "linkUrl: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<string>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "linkUrl",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Function",
              "canonicalReference": "@tldraw/validate!T.literal:function(1)",
              "docComment": "/**\n * Validates that a value matches another that was passed in.\n *\n * @example\n * ```ts\n * const trueValidator = T.literal(true)\n * ```\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare function literal<T extends "
                },
                {
                  "kind": "Content",
                  "text": "boolean | number | string"
                },
                {
                  "kind": "Content",
                  "text": ">(expectedValue: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "expectedValue",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  },
                  "isOptional": false
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "literal"
            },
            {
              "kind": "Function",
              "canonicalReference": "@tldraw/validate!T.literalEnum:function(1)",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare function literalEnum<const Values extends "
                },
                {
                  "kind": "Content",
                  "text": "readonly unknown[]"
                },
                {
                  "kind": "Content",
                  "text": ">(...values: "
                },
                {
                  "kind": "Content",
                  "text": "Values"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<Values[number]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "values",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  },
                  "isOptional": false
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "Values",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "literalEnum"
            },
            {
              "kind": "Function",
              "canonicalReference": "@tldraw/validate!T.model:function(1)",
              "docComment": "/**\n * A named object with an ID. Errors will be reported as being part of the object with the given name.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare function model<T extends "
                },
                {
                  "kind": "Content",
                  "text": "{\n    readonly id: string;\n}"
                },
                {
                  "kind": "Content",
                  "text": ">(name: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", validator: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "name",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  },
                  "isOptional": false
                },
                {
                  "parameterName": "validator",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 7
                  },
                  "isOptional": false
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "model"
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.nonZeroInteger:var",
              "docComment": "/**\n * Fails if value \\<= 0 and is not an integer\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "nonZeroInteger: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<number>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "nonZeroInteger",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.nonZeroNumber:var",
              "docComment": "/**\n * Fails if value \\<= 0\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "nonZeroNumber: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<number>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "nonZeroNumber",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Function",
              "canonicalReference": "@tldraw/validate!T.nullable:function(1)",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare function nullable<T>(validator: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<null | T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "validator",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "isOptional": false
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "nullable"
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.number:var",
              "docComment": "/**\n * Validates that a value is a finite non-NaN number.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "number: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<number>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "number",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Function",
              "canonicalReference": "@tldraw/validate!T.object:function(1)",
              "docComment": "/**\n * Validate an object has a particular shape.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare function object<Shape extends "
                },
                {
                  "kind": "Content",
                  "text": "object"
                },
                {
                  "kind": "Content",
                  "text": ">(config: "
                },
                {
                  "kind": "Content",
                  "text": "{\n    readonly [K in keyof Shape]: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<Shape[K]>;\n}"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ObjectValidator",
                  "canonicalReference": "@tldraw/validate!ObjectValidator:class"
                },
                {
                  "kind": "Content",
                  "text": "<{\n    [P in "
                },
                {
                  "kind": "Reference",
                  "text": "ExtractRequiredKeys",
                  "canonicalReference": "@tldraw/validate!~ExtractRequiredKeys:type"
                },
                {
                  "kind": "Content",
                  "text": "<Shape>]: Shape[P];\n} & {\n    [P in "
                },
                {
                  "kind": "Reference",
                  "text": "ExtractOptionalKeys",
                  "canonicalReference": "@tldraw/validate!~ExtractOptionalKeys:type"
                },
                {
                  "kind": "Content",
                  "text": "<Shape>]?: Shape[P];\n}>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "config",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 6
                  },
                  "isOptional": false
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "Shape",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "object"
            },
            {
              "kind": "Class",
              "canonicalReference": "@tldraw/validate!T.ObjectValidator:class",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare class ObjectValidator<Shape extends "
                },
                {
                  "kind": "Content",
                  "text": "object"
                },
                {
                  "kind": "Content",
                  "text": "> extends "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<Shape>"
                },
                {
                  "kind": "Content",
                  "text": " "
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "releaseTag": "Public",
              "typeParameters": [
                {
                  "typeParameterName": "Shape",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "isAbstract": false,
              "name": "ObjectValidator",
              "preserveMemberOrder": false,
              "members": [
                {
                  "kind": "Constructor",
                  "canonicalReference": "@tldraw/validate!T.ObjectValidator:constructor(1)",
                  "docComment": "/**\n * Constructs a new instance of the `ObjectValidator` class\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "constructor(config: "
                    },
                    {
                      "kind": "Content",
                      "text": "{\n        readonly [K in keyof Shape]: "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validatable",
                      "canonicalReference": "@tldraw/validate!T.Validatable:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<Shape[K]>;\n    }"
                    },
                    {
                      "kind": "Content",
                      "text": ", shouldAllowUnknownProperties?: "
                    },
                    {
                      "kind": "Content",
                      "text": "boolean"
                    },
                    {
                      "kind": "Content",
                      "text": ");"
                    }
                  ],
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "config",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 4
                      },
                      "isOptional": false
                    },
                    {
                      "parameterName": "shouldAllowUnknownProperties",
                      "parameterTypeTokenRange": {
                        "startIndex": 5,
                        "endIndex": 6
                      },
                      "isOptional": true
                    }
                  ]
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.ObjectValidator#allowUnknownProperties:member(1)",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "allowUnknownProperties(): "
                    },
                    {
                      "kind": "Reference",
                      "text": "ObjectValidator",
                      "canonicalReference": "@tldraw/validate!ObjectValidator:class"
                    },
                    {
                      "kind": "Content",
                      "text": "<Shape>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "allowUnknownProperties"
                },
                {
                  "kind": "Property",
                  "canonicalReference": "@tldraw/validate!T.ObjectValidator#config:member",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "readonly config: "
                    },
                    {
                      "kind": "Content",
                      "text": "{\n        readonly [K in keyof Shape]: "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validatable",
                      "canonicalReference": "@tldraw/validate!T.Validatable:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<Shape[K]>;\n    }"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isReadonly": true,
                  "isOptional": false,
                  "releaseTag": "Public",
                  "name": "config",
                  "propertyTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 4
                  },
                  "isStatic": false,
                  "isProtected": false,
                  "isAbstract": false
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.ObjectValidator#extend:member(1)",
                  "docComment": "/**\n * Extend an object validator by adding additional properties.\n *\n * @example\n * ```ts\n * const animalValidator = T.object({\n * \tname: T.string,\n * })\n * const catValidator = animalValidator.extend({\n * \tmeowVolume: T.number,\n * })\n * ```\n *\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "extend<Extension extends "
                    },
                    {
                      "kind": "Reference",
                      "text": "Record",
                      "canonicalReference": "!Record:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<string, unknown>"
                    },
                    {
                      "kind": "Content",
                      "text": ">(extension: "
                    },
                    {
                      "kind": "Content",
                      "text": "{\n        readonly [K in keyof Extension]: "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validatable",
                      "canonicalReference": "@tldraw/validate!T.Validatable:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<Extension[K]>;\n    }"
                    },
                    {
                      "kind": "Content",
                      "text": "): "
                    },
                    {
                      "kind": "Reference",
                      "text": "ObjectValidator",
                      "canonicalReference": "@tldraw/validate!ObjectValidator:class"
                    },
                    {
                      "kind": "Content",
                      "text": "<Shape & Extension>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "typeParameters": [
                    {
                      "typeParameterName": "Extension",
                      "constraintTokenRange": {
                        "startIndex": 1,
                        "endIndex": 3
                      },
                      "defaultTypeTokenRange": {
                        "startIndex": 0,
                        "endIndex": 0
                      }
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 10
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "extension",
                      "parameterTypeTokenRange": {
                        "startIndex": 4,
                        "endIndex": 7
                      },
                      "isOptional": false
                    }
                  ],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "extend"
                }
              ],
              "extendsTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "implementsTokenRanges": []
            },
            {
              "kind": "Function",
              "canonicalReference": "@tldraw/validate!T.optional:function(1)",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare function optional<T>(validator: "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<T | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "validator",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "isOptional": false
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "optional"
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.positiveInteger:var",
              "docComment": "/**\n * Fails if value \\< 0 and is not an integer\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "positiveInteger: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<number>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "positiveInteger",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.positiveNumber:var",
              "docComment": "/**\n * Fails if value \\< 0\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "positiveNumber: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<number>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "positiveNumber",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Function",
              "canonicalReference": "@tldraw/validate!T.setEnum:function(1)",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare function setEnum<T>(values: "
                },
                {
                  "kind": "Reference",
                  "text": "ReadonlySet",
                  "canonicalReference": "!ReadonlySet:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "values",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "isOptional": false
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "setEnum"
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.srcUrl:var",
              "docComment": "/**\n * Validates that a valid is a url safe to load as an asset.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "srcUrl: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<string>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "srcUrl",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.string:var",
              "docComment": "/**\n * Validates that a value is a string.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "string: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<string>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "string",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "TypeAlias",
              "canonicalReference": "@tldraw/validate!T.TypeOf:type",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export type TypeOf<V extends "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<any>"
                },
                {
                  "kind": "Content",
                  "text": "> = "
                },
                {
                  "kind": "Content",
                  "text": "V extends "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<infer T> ? T : never"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "releaseTag": "Public",
              "name": "TypeOf",
              "typeParameters": [
                {
                  "typeParameterName": "V",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "typeTokenRange": {
                "startIndex": 4,
                "endIndex": 7
              }
            },
            {
              "kind": "Function",
              "canonicalReference": "@tldraw/validate!T.union:function(1)",
              "docComment": "/**\n * Validate a union of several object types. Each object must have a property matching `key` which should be a unique string.\n *\n * @example\n * ```ts\n * const catValidator = T.object({ kind: T.value('cat'), meow: T.boolean })\n * const dogValidator = T.object({ kind: T.value('dog'), bark: T.boolean })\n * const animalValidator = T.union('kind', { cat: catValidator, dog: dogValidator })\n * ```\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare function union<Key extends "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", Config extends "
                },
                {
                  "kind": "Reference",
                  "text": "UnionValidatorConfig",
                  "canonicalReference": "@tldraw/validate!~UnionValidatorConfig:type"
                },
                {
                  "kind": "Content",
                  "text": "<Key, Config>"
                },
                {
                  "kind": "Content",
                  "text": ">(key: "
                },
                {
                  "kind": "Content",
                  "text": "Key"
                },
                {
                  "kind": "Content",
                  "text": ", config: "
                },
                {
                  "kind": "Content",
                  "text": "Config"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "UnionValidator",
                  "canonicalReference": "@tldraw/validate!UnionValidator:class"
                },
                {
                  "kind": "Content",
                  "text": "<Key, Config>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 12
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  },
                  "isOptional": false
                },
                {
                  "parameterName": "config",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  },
                  "isOptional": false
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "Key",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                },
                {
                  "typeParameterName": "Config",
                  "constraintTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "union"
            },
            {
              "kind": "Class",
              "canonicalReference": "@tldraw/validate!T.UnionValidator:class",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare class UnionValidator<Key extends "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", Config extends "
                },
                {
                  "kind": "Reference",
                  "text": "UnionValidatorConfig",
                  "canonicalReference": "@tldraw/validate!~UnionValidatorConfig:type"
                },
                {
                  "kind": "Content",
                  "text": "<Key, Config>"
                },
                {
                  "kind": "Content",
                  "text": ", UnknownValue = "
                },
                {
                  "kind": "Content",
                  "text": "never"
                },
                {
                  "kind": "Content",
                  "text": "> extends "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "TypeOf",
                  "canonicalReference": "@tldraw/validate!T.TypeOf:type"
                },
                {
                  "kind": "Content",
                  "text": "<Config[keyof Config]> | UnknownValue>"
                },
                {
                  "kind": "Content",
                  "text": " "
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "releaseTag": "Public",
              "typeParameters": [
                {
                  "typeParameterName": "Key",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                },
                {
                  "typeParameterName": "Config",
                  "constraintTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                },
                {
                  "typeParameterName": "UnknownValue",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                }
              ],
              "isAbstract": false,
              "name": "UnionValidator",
              "preserveMemberOrder": false,
              "members": [
                {
                  "kind": "Constructor",
                  "canonicalReference": "@tldraw/validate!T.UnionValidator:constructor(1)",
                  "docComment": "/**\n * Constructs a new instance of the `UnionValidator` class\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "constructor(key: "
                    },
                    {
                      "kind": "Content",
                      "text": "Key"
                    },
                    {
                      "kind": "Content",
                      "text": ", config: "
                    },
                    {
                      "kind": "Content",
                      "text": "Config"
                    },
                    {
                      "kind": "Content",
                      "text": ", unknownValueValidation: "
                    },
                    {
                      "kind": "Content",
                      "text": "(value: object, variant: string) => UnknownValue"
                    },
                    {
                      "kind": "Content",
                      "text": ");"
                    }
                  ],
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "key",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 2
                      },
                      "isOptional": false
                    },
                    {
                      "parameterName": "config",
                      "parameterTypeTokenRange": {
                        "startIndex": 3,
                        "endIndex": 4
                      },
                      "isOptional": false
                    },
                    {
                      "parameterName": "unknownValueValidation",
                      "parameterTypeTokenRange": {
                        "startIndex": 5,
                        "endIndex": 6
                      },
                      "isOptional": false
                    }
                  ]
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.UnionValidator#validateUnknownVariants:member(1)",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "validateUnknownVariants<Unknown>(unknownValueValidation: "
                    },
                    {
                      "kind": "Content",
                      "text": "(value: object, variant: string) => Unknown"
                    },
                    {
                      "kind": "Content",
                      "text": "): "
                    },
                    {
                      "kind": "Reference",
                      "text": "UnionValidator",
                      "canonicalReference": "@tldraw/validate!UnionValidator:class"
                    },
                    {
                      "kind": "Content",
                      "text": "<Key, Config, Unknown>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "typeParameters": [
                    {
                      "typeParameterName": "Unknown",
                      "constraintTokenRange": {
                        "startIndex": 0,
                        "endIndex": 0
                      },
                      "defaultTypeTokenRange": {
                        "startIndex": 0,
                        "endIndex": 0
                      }
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "unknownValueValidation",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 2
                      },
                      "isOptional": false
                    }
                  ],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "validateUnknownVariants"
                }
              ],
              "extendsTokenRange": {
                "startIndex": 8,
                "endIndex": 12
              },
              "implementsTokenRanges": []
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.unknown:var",
              "docComment": "/**\n * Validation that accepts any value. Useful as a starting point for building your own custom validations.\n *\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "unknown: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "unknown",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@tldraw/validate!T.unknownObject:var",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "unknownObject: "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Record",
                  "canonicalReference": "!Record:type"
                },
                {
                  "kind": "Content",
                  "text": "<string, unknown>>"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "isReadonly": true,
              "releaseTag": "Public",
              "name": "unknownObject",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            },
            {
              "kind": "TypeAlias",
              "canonicalReference": "@tldraw/validate!T.Validatable:type",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export type Validatable<T> = "
                },
                {
                  "kind": "Content",
                  "text": "{\n    validate: (value: unknown) => T;\n    validateUsingKnownGoodVersion?: (knownGoodValue: T, newValue: unknown) => T;\n}"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "releaseTag": "Public",
              "name": "Validatable",
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "typeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "Class",
              "canonicalReference": "@tldraw/validate!T.ValidationError:class",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare class ValidationError extends "
                },
                {
                  "kind": "Reference",
                  "text": "Error",
                  "canonicalReference": "!Error:interface"
                },
                {
                  "kind": "Content",
                  "text": " "
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "releaseTag": "Public",
              "isAbstract": false,
              "name": "ValidationError",
              "preserveMemberOrder": false,
              "members": [
                {
                  "kind": "Constructor",
                  "canonicalReference": "@tldraw/validate!T.ValidationError:constructor(1)",
                  "docComment": "/**\n * Constructs a new instance of the `ValidationError` class\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "constructor(rawMessage: "
                    },
                    {
                      "kind": "Content",
                      "text": "string"
                    },
                    {
                      "kind": "Content",
                      "text": ", path?: "
                    },
                    {
                      "kind": "Reference",
                      "text": "ReadonlyArray",
                      "canonicalReference": "!ReadonlyArray:interface"
                    },
                    {
                      "kind": "Content",
                      "text": "<number | string>"
                    },
                    {
                      "kind": "Content",
                      "text": ");"
                    }
                  ],
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "rawMessage",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 2
                      },
                      "isOptional": false
                    },
                    {
                      "parameterName": "path",
                      "parameterTypeTokenRange": {
                        "startIndex": 3,
                        "endIndex": 5
                      },
                      "isOptional": true
                    }
                  ]
                },
                {
                  "kind": "Property",
                  "canonicalReference": "@tldraw/validate!T.ValidationError#name:member",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "name: "
                    },
                    {
                      "kind": "Content",
                      "text": "string"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isReadonly": false,
                  "isOptional": false,
                  "releaseTag": "Public",
                  "name": "name",
                  "propertyTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "isStatic": false,
                  "isProtected": false,
                  "isAbstract": false
                },
                {
                  "kind": "Property",
                  "canonicalReference": "@tldraw/validate!T.ValidationError#path:member",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "readonly path: "
                    },
                    {
                      "kind": "Reference",
                      "text": "ReadonlyArray",
                      "canonicalReference": "!ReadonlyArray:interface"
                    },
                    {
                      "kind": "Content",
                      "text": "<number | string>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isReadonly": true,
                  "isOptional": false,
                  "releaseTag": "Public",
                  "name": "path",
                  "propertyTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "isStatic": false,
                  "isProtected": false,
                  "isAbstract": false
                },
                {
                  "kind": "Property",
                  "canonicalReference": "@tldraw/validate!T.ValidationError#rawMessage:member",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "readonly rawMessage: "
                    },
                    {
                      "kind": "Content",
                      "text": "string"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isReadonly": true,
                  "isOptional": false,
                  "releaseTag": "Public",
                  "name": "rawMessage",
                  "propertyTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "isStatic": false,
                  "isProtected": false,
                  "isAbstract": false
                }
              ],
              "extendsTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "implementsTokenRanges": []
            },
            {
              "kind": "Class",
              "canonicalReference": "@tldraw/validate!T.Validator:class",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export declare class Validator<T> implements "
                },
                {
                  "kind": "Reference",
                  "text": "Validatable",
                  "canonicalReference": "@tldraw/validate!T.Validatable:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": " "
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "releaseTag": "Public",
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "isAbstract": false,
              "name": "Validator",
              "preserveMemberOrder": false,
              "members": [
                {
                  "kind": "Constructor",
                  "canonicalReference": "@tldraw/validate!T.Validator:constructor(1)",
                  "docComment": "/**\n * Constructs a new instance of the `Validator` class\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "constructor(validationFn: "
                    },
                    {
                      "kind": "Reference",
                      "text": "ValidatorFn",
                      "canonicalReference": "@tldraw/validate!T.ValidatorFn:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<T>"
                    },
                    {
                      "kind": "Content",
                      "text": ", validateUsingKnownGoodVersionFn?: "
                    },
                    {
                      "kind": "Content",
                      "text": "undefined | "
                    },
                    {
                      "kind": "Reference",
                      "text": "ValidatorUsingKnownGoodVersionFn",
                      "canonicalReference": "@tldraw/validate!T.ValidatorUsingKnownGoodVersionFn:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<T, T>"
                    },
                    {
                      "kind": "Content",
                      "text": ");"
                    }
                  ],
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "validationFn",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 3
                      },
                      "isOptional": false
                    },
                    {
                      "parameterName": "validateUsingKnownGoodVersionFn",
                      "parameterTypeTokenRange": {
                        "startIndex": 4,
                        "endIndex": 7
                      },
                      "isOptional": true
                    }
                  ]
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.Validator#check:member(1)",
                  "docComment": "/**\n * Refine this validation with an additional check that doesn't change the resulting value.\n *\n * @example\n * ```ts\n * const numberLessThan10Validator = T.number.check((value) => {\n * \tif (value >= 10) {\n * \t\tthrow new ValidationError(`Expected number less than 10, got ${value}`)\n * \t}\n * })\n * ```\n *\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "check(name: "
                    },
                    {
                      "kind": "Content",
                      "text": "string"
                    },
                    {
                      "kind": "Content",
                      "text": ", checkFn: "
                    },
                    {
                      "kind": "Content",
                      "text": "(value: T) => void"
                    },
                    {
                      "kind": "Content",
                      "text": "): "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validator",
                      "canonicalReference": "@tldraw/validate!Validator:class"
                    },
                    {
                      "kind": "Content",
                      "text": "<T>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 7
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "name",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 2
                      },
                      "isOptional": false
                    },
                    {
                      "parameterName": "checkFn",
                      "parameterTypeTokenRange": {
                        "startIndex": 3,
                        "endIndex": 4
                      },
                      "isOptional": false
                    }
                  ],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "check"
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.Validator#check:member(2)",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "check(checkFn: "
                    },
                    {
                      "kind": "Content",
                      "text": "(value: T) => void"
                    },
                    {
                      "kind": "Content",
                      "text": "): "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validator",
                      "canonicalReference": "@tldraw/validate!Validator:class"
                    },
                    {
                      "kind": "Content",
                      "text": "<T>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 2,
                  "parameters": [
                    {
                      "parameterName": "checkFn",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 2
                      },
                      "isOptional": false
                    }
                  ],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "check"
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.Validator#isValid:member(1)",
                  "docComment": "/**\n * Checks that the passed value is of the correct type.\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "isValid(value: "
                    },
                    {
                      "kind": "Content",
                      "text": "unknown"
                    },
                    {
                      "kind": "Content",
                      "text": "): "
                    },
                    {
                      "kind": "Reference",
                      "text": "value",
                      "canonicalReference": "@tldraw/validate!~value"
                    },
                    {
                      "kind": "Content",
                      "text": " is T"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "value",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 2
                      },
                      "isOptional": false
                    }
                  ],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "isValid"
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.Validator#nullable:member(1)",
                  "docComment": "/**\n * Returns a new validator that also accepts null or undefined. The resulting value will always be null.\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "nullable(): "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validator",
                      "canonicalReference": "@tldraw/validate!Validator:class"
                    },
                    {
                      "kind": "Content",
                      "text": "<null | T>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "nullable"
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.Validator#optional:member(1)",
                  "docComment": "/**\n * Returns a new validator that also accepts null or undefined. The resulting value will always be null.\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "optional(): "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validator",
                      "canonicalReference": "@tldraw/validate!Validator:class"
                    },
                    {
                      "kind": "Content",
                      "text": "<T | undefined>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "optional"
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.Validator#refine:member(1)",
                  "docComment": "/**\n * Refine this validation to a new type. The passed-in validation function should throw an error if the value can't be converted to the new type, or return the new type otherwise.\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "refine<U>(otherValidationFn: "
                    },
                    {
                      "kind": "Content",
                      "text": "(value: T) => U"
                    },
                    {
                      "kind": "Content",
                      "text": "): "
                    },
                    {
                      "kind": "Reference",
                      "text": "Validator",
                      "canonicalReference": "@tldraw/validate!Validator:class"
                    },
                    {
                      "kind": "Content",
                      "text": "<U>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "typeParameters": [
                    {
                      "typeParameterName": "U",
                      "constraintTokenRange": {
                        "startIndex": 0,
                        "endIndex": 0
                      },
                      "defaultTypeTokenRange": {
                        "startIndex": 0,
                        "endIndex": 0
                      }
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "otherValidationFn",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 2
                      },
                      "isOptional": false
                    }
                  ],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "refine"
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.Validator#validate:member(1)",
                  "docComment": "/**\n * Asserts that the passed value is of the correct type and returns it. The returned value is guaranteed to be referentially equal to the passed value.\n */\n",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "validate(value: "
                    },
                    {
                      "kind": "Content",
                      "text": "unknown"
                    },
                    {
                      "kind": "Content",
                      "text": "): "
                    },
                    {
                      "kind": "Content",
                      "text": "T"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "value",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 2
                      },
                      "isOptional": false
                    }
                  ],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "validate"
                },
                {
                  "kind": "Method",
                  "canonicalReference": "@tldraw/validate!T.Validator#validateUsingKnownGoodVersion:member(1)",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "validateUsingKnownGoodVersion(knownGoodValue: "
                    },
                    {
                      "kind": "Content",
                      "text": "T"
                    },
                    {
                      "kind": "Content",
                      "text": ", newValue: "
                    },
                    {
                      "kind": "Content",
                      "text": "unknown"
                    },
                    {
                      "kind": "Content",
                      "text": "): "
                    },
                    {
                      "kind": "Content",
                      "text": "T"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isStatic": false,
                  "returnTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  },
                  "releaseTag": "Public",
                  "isProtected": false,
                  "overloadIndex": 1,
                  "parameters": [
                    {
                      "parameterName": "knownGoodValue",
                      "parameterTypeTokenRange": {
                        "startIndex": 1,
                        "endIndex": 2
                      },
                      "isOptional": false
                    },
                    {
                      "parameterName": "newValue",
                      "parameterTypeTokenRange": {
                        "startIndex": 3,
                        "endIndex": 4
                      },
                      "isOptional": false
                    }
                  ],
                  "isOptional": false,
                  "isAbstract": false,
                  "name": "validateUsingKnownGoodVersion"
                },
                {
                  "kind": "Property",
                  "canonicalReference": "@tldraw/validate!T.Validator#validateUsingKnownGoodVersionFn:member",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "readonly validateUsingKnownGoodVersionFn?: "
                    },
                    {
                      "kind": "Content",
                      "text": "undefined | "
                    },
                    {
                      "kind": "Reference",
                      "text": "ValidatorUsingKnownGoodVersionFn",
                      "canonicalReference": "@tldraw/validate!T.ValidatorUsingKnownGoodVersionFn:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<T, T>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isReadonly": true,
                  "isOptional": true,
                  "releaseTag": "Public",
                  "name": "validateUsingKnownGoodVersionFn",
                  "propertyTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 4
                  },
                  "isStatic": false,
                  "isProtected": false,
                  "isAbstract": false
                },
                {
                  "kind": "Property",
                  "canonicalReference": "@tldraw/validate!T.Validator#validationFn:member",
                  "docComment": "",
                  "excerptTokens": [
                    {
                      "kind": "Content",
                      "text": "readonly validationFn: "
                    },
                    {
                      "kind": "Reference",
                      "text": "ValidatorFn",
                      "canonicalReference": "@tldraw/validate!T.ValidatorFn:type"
                    },
                    {
                      "kind": "Content",
                      "text": "<T>"
                    },
                    {
                      "kind": "Content",
                      "text": ";"
                    }
                  ],
                  "isReadonly": true,
                  "isOptional": false,
                  "releaseTag": "Public",
                  "name": "validationFn",
                  "propertyTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "isStatic": false,
                  "isProtected": false,
                  "isAbstract": false
                }
              ],
              "implementsTokenRanges": [
                {
                  "startIndex": 1,
                  "endIndex": 3
                }
              ]
            },
            {
              "kind": "TypeAlias",
              "canonicalReference": "@tldraw/validate!T.ValidatorFn:type",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export type ValidatorFn<T> = "
                },
                {
                  "kind": "Content",
                  "text": "(value: unknown) => T"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "releaseTag": "Public",
              "name": "ValidatorFn",
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "typeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "TypeAlias",
              "canonicalReference": "@tldraw/validate!T.ValidatorUsingKnownGoodVersionFn:type",
              "docComment": "/**\n * @public\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "export type ValidatorUsingKnownGoodVersionFn<In, Out = "
                },
                {
                  "kind": "Content",
                  "text": "In"
                },
                {
                  "kind": "Content",
                  "text": "> = "
                },
                {
                  "kind": "Content",
                  "text": "(knownGoodValue: In, value: unknown) => Out"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "fileUrlPath": "packages/validate/src/lib/validation.ts",
              "releaseTag": "Public",
              "name": "ValidatorUsingKnownGoodVersionFn",
              "typeParameters": [
                {
                  "typeParameterName": "In",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                },
                {
                  "typeParameterName": "Out",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "typeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            }
          ]
        },
        {
          "kind": "Class",
          "canonicalReference": "@tldraw/validate!UnionValidator:class",
          "docComment": "/**\n * @public\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class UnionValidator<Key extends "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", Config extends "
            },
            {
              "kind": "Reference",
              "text": "UnionValidatorConfig",
              "canonicalReference": "@tldraw/validate!~UnionValidatorConfig:type"
            },
            {
              "kind": "Content",
              "text": "<Key, Config>"
            },
            {
              "kind": "Content",
              "text": ", UnknownValue = "
            },
            {
              "kind": "Content",
              "text": "never"
            },
            {
              "kind": "Content",
              "text": "> extends "
            },
            {
              "kind": "Reference",
              "text": "Validator",
              "canonicalReference": "@tldraw/validate!Validator:class"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "TypeOf",
              "canonicalReference": "@tldraw/validate!T.TypeOf:type"
            },
            {
              "kind": "Content",
              "text": "<Config[keyof Config]> | UnknownValue>"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "fileUrlPath": "packages/validate/src/lib/validation.ts",
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "Key",
              "constraintTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "Config",
              "constraintTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "UnknownValue",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              }
            }
          ],
          "isAbstract": false,
          "name": "UnionValidator",
          "preserveMemberOrder": false,
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@tldraw/validate!UnionValidator:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `UnionValidator` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(key: "
                },
                {
                  "kind": "Content",
                  "text": "Key"
                },
                {
                  "kind": "Content",
                  "text": ", config: "
                },
                {
                  "kind": "Content",
                  "text": "Config"
                },
                {
                  "kind": "Content",
                  "text": ", unknownValueValidation: "
                },
                {
                  "kind": "Content",
                  "text": "(value: object, variant: string) => UnknownValue"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "isOptional": false
                },
                {
                  "parameterName": "config",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  },
                  "isOptional": false
                },
                {
                  "parameterName": "unknownValueValidation",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  },
                  "isOptional": false
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!UnionValidator#validateUnknownVariants:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "validateUnknownVariants<Unknown>(unknownValueValidation: "
                },
                {
                  "kind": "Content",
                  "text": "(value: object, variant: string) => Unknown"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "UnionValidator",
                  "canonicalReference": "@tldraw/validate!UnionValidator:class"
                },
                {
                  "kind": "Content",
                  "text": "<Key, Config, Unknown>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "Unknown",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "unknownValueValidation",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "isOptional": false
                }
              ],
              "isOptional": false,
              "isAbstract": false,
              "name": "validateUnknownVariants"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 8,
            "endIndex": 12
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@tldraw/validate!Validator:class",
          "docComment": "/**\n * @public\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class Validator<T> implements "
            },
            {
              "kind": "Reference",
              "text": "Validatable",
              "canonicalReference": "@tldraw/validate!T.Validatable:type"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "fileUrlPath": "packages/validate/src/lib/validation.ts",
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "isAbstract": false,
          "name": "Validator",
          "preserveMemberOrder": false,
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@tldraw/validate!Validator:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `Validator` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(validationFn: "
                },
                {
                  "kind": "Reference",
                  "text": "ValidatorFn",
                  "canonicalReference": "@tldraw/validate!T.ValidatorFn:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ", validateUsingKnownGoodVersionFn?: "
                },
                {
                  "kind": "Content",
                  "text": "undefined | "
                },
                {
                  "kind": "Reference",
                  "text": "ValidatorUsingKnownGoodVersionFn",
                  "canonicalReference": "@tldraw/validate!T.ValidatorUsingKnownGoodVersionFn:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, T>"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "validationFn",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  },
                  "isOptional": false
                },
                {
                  "parameterName": "validateUsingKnownGoodVersionFn",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 7
                  },
                  "isOptional": true
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!Validator#check:member(1)",
              "docComment": "/**\n * Refine this validation with an additional check that doesn't change the resulting value.\n *\n * @example\n * ```ts\n * const numberLessThan10Validator = T.number.check((value) => {\n * \tif (value >= 10) {\n * \t\tthrow new ValidationError(`Expected number less than 10, got ${value}`)\n * \t}\n * })\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "check(name: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", checkFn: "
                },
                {
                  "kind": "Content",
                  "text": "(value: T) => void"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "name",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "isOptional": false
                },
                {
                  "parameterName": "checkFn",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  },
                  "isOptional": false
                }
              ],
              "isOptional": false,
              "isAbstract": false,
              "name": "check"
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!Validator#check:member(2)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "check(checkFn: "
                },
                {
                  "kind": "Content",
                  "text": "(value: T) => void"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "checkFn",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "isOptional": false
                }
              ],
              "isOptional": false,
              "isAbstract": false,
              "name": "check"
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!Validator#isValid:member(1)",
              "docComment": "/**\n * Checks that the passed value is of the correct type.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "isValid(value: "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "value",
                  "canonicalReference": "@tldraw/validate!~value"
                },
                {
                  "kind": "Content",
                  "text": " is T"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "value",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "isOptional": false
                }
              ],
              "isOptional": false,
              "isAbstract": false,
              "name": "isValid"
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!Validator#nullable:member(1)",
              "docComment": "/**\n * Returns a new validator that also accepts null or undefined. The resulting value will always be null.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "nullable(): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<null | T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [],
              "isOptional": false,
              "isAbstract": false,
              "name": "nullable"
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!Validator#optional:member(1)",
              "docComment": "/**\n * Returns a new validator that also accepts null or undefined. The resulting value will always be null.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "optional(): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<T | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [],
              "isOptional": false,
              "isAbstract": false,
              "name": "optional"
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!Validator#refine:member(1)",
              "docComment": "/**\n * Refine this validation to a new type. The passed-in validation function should throw an error if the value can't be converted to the new type, or return the new type otherwise.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "refine<U>(otherValidationFn: "
                },
                {
                  "kind": "Content",
                  "text": "(value: T) => U"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Validator",
                  "canonicalReference": "@tldraw/validate!Validator:class"
                },
                {
                  "kind": "Content",
                  "text": "<U>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "U",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "otherValidationFn",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "isOptional": false
                }
              ],
              "isOptional": false,
              "isAbstract": false,
              "name": "refine"
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!Validator#validate:member(1)",
              "docComment": "/**\n * Asserts that the passed value is of the correct type and returns it. The returned value is guaranteed to be referentially equal to the passed value.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "validate(value: "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "value",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "isOptional": false
                }
              ],
              "isOptional": false,
              "isAbstract": false,
              "name": "validate"
            },
            {
              "kind": "Method",
              "canonicalReference": "@tldraw/validate!Validator#validateUsingKnownGoodVersion:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "validateUsingKnownGoodVersion(knownGoodValue: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", newValue: "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "isProtected": false,
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "knownGoodValue",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "isOptional": false
                },
                {
                  "parameterName": "newValue",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  },
                  "isOptional": false
                }
              ],
              "isOptional": false,
              "isAbstract": false,
              "name": "validateUsingKnownGoodVersion"
            },
            {
              "kind": "Property",
              "canonicalReference": "@tldraw/validate!Validator#validateUsingKnownGoodVersionFn:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly validateUsingKnownGoodVersionFn?: "
                },
                {
                  "kind": "Content",
                  "text": "undefined | "
                },
                {
                  "kind": "Reference",
                  "text": "ValidatorUsingKnownGoodVersionFn",
                  "canonicalReference": "@tldraw/validate!T.ValidatorUsingKnownGoodVersionFn:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isReadonly": true,
              "isOptional": true,
              "releaseTag": "Public",
              "name": "validateUsingKnownGoodVersionFn",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 4
              },
              "isStatic": false,
              "isProtected": false,
              "isAbstract": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@tldraw/validate!Validator#validationFn:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly validationFn: "
                },
                {
                  "kind": "Reference",
                  "text": "ValidatorFn",
                  "canonicalReference": "@tldraw/validate!T.ValidatorFn:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isReadonly": true,
              "isOptional": false,
              "releaseTag": "Public",
              "name": "validationFn",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "isStatic": false,
              "isProtected": false,
              "isAbstract": false
            }
          ],
          "implementsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 3
            }
          ]
        }
      ]
    }
  ]
}
