solidity-ast
Version:
Solidity AST schema and type definitions
2,238 lines (2,237 loc) • 54.5 kB
JSON
{
"$schema": "http://json-schema.org/draft-06/schema#",
"definitions": {
"ElementaryTypeName": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"nodeType": {
"type": "string",
"enum": [
"ElementaryTypeName"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"stateMutability": {
"$ref": "#/definitions/StateMutability"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"id",
"name",
"nodeType",
"src",
"typeDescriptions"
],
"title": "ElementaryTypeName"
},
"TypeDescriptions": {
"type": "object",
"additionalProperties": false,
"properties": {
"typeIdentifier": {
"anyOf": [
{ "type": "string" },
{ "type": "null" }
]
},
"typeString": {
"anyOf": [
{ "type": "string" },
{ "type": "null" }
]
}
},
"required": [
],
"title": "TypeDescriptions"
},
"Expression": {
"anyOf": [
{ "$ref": "#/definitions/Assignment" },
{ "$ref": "#/definitions/BinaryOperation" },
{ "$ref": "#/definitions/Conditional" },
{ "$ref": "#/definitions/ElementaryTypeNameExpression" },
{ "$ref": "#/definitions/FunctionCall" },
{ "$ref": "#/definitions/FunctionCallOptions" },
{ "$ref": "#/definitions/Identifier" },
{ "$ref": "#/definitions/IndexAccess" },
{ "$ref": "#/definitions/Literal" },
{ "$ref": "#/definitions/MemberAccess" },
{ "$ref": "#/definitions/NewExpression" },
{ "$ref": "#/definitions/TupleExpression" },
{ "$ref": "#/definitions/UnaryOperation" }
]
},
"Assignment": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"id": {
"type": "integer"
},
"isConstant": {
"type": "boolean"
},
"isLValue": {
"type": "boolean"
},
"isPure": {
"type": "boolean"
},
"lValueRequested": {
"type": "boolean"
},
"leftHandSide": {
"$ref": "#/definitions/Expression"
},
"nodeType": {
"type": "string",
"enum": [
"Assignment"
]
},
"operator": {
"type": "string",
"enum": [
"=",
"+=",
"/="
]
},
"rightHandSide": {
"$ref": "#/definitions/Expression"
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"id",
"isConstant",
"isLValue",
"isPure",
"lValueRequested",
"leftHandSide",
"nodeType",
"operator",
"rightHandSide",
"src",
"typeDescriptions"
],
"title": "Assignment"
},
"BinaryOperation": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"commonType": {
"$ref": "#/definitions/TypeDescriptions"
},
"id": {
"type": "integer"
},
"isConstant": {
"type": "boolean"
},
"isLValue": {
"type": "boolean"
},
"isPure": {
"type": "boolean"
},
"lValueRequested": {
"type": "boolean"
},
"leftExpression": {
"$ref": "#/definitions/Expression"
},
"nodeType": {
"type": "string",
"enum": [
"BinaryOperation"
]
},
"operator": {
"type": "string",
"enum": [
"+",
"-",
"*",
"/",
"%",
"**",
"&&",
"||",
"!=",
"==",
"<",
"<=",
">",
">=",
"^",
"<<",
">>"
]
},
"rightExpression": {
"$ref": "#/definitions/Expression"
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"commonType",
"id",
"isConstant",
"isLValue",
"isPure",
"lValueRequested",
"leftExpression",
"nodeType",
"operator",
"rightExpression",
"src",
"typeDescriptions"
],
"title": "BinaryOperation"
},
"Conditional": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"condition": {
"$ref": "#/definitions/Expression"
},
"falseExpression": {
"$ref": "#/definitions/Expression"
},
"id": {
"type": "integer"
},
"isConstant": {
"type": "boolean"
},
"isLValue": {
"type": "boolean"
},
"isPure": {
"type": "boolean"
},
"lValueRequested": {
"type": "boolean"
},
"nodeType": {
"type": "string",
"enum": [
"Conditional"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"trueExpression": {
"$ref": "#/definitions/Expression"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"condition",
"falseExpression",
"id",
"isConstant",
"isLValue",
"isPure",
"lValueRequested",
"nodeType",
"src",
"trueExpression",
"typeDescriptions"
],
"title": "Conditional"
},
"ElementaryTypeNameExpression": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"id": {
"type": "integer"
},
"isConstant": {
"type": "boolean"
},
"isLValue": {
"type": "boolean"
},
"isPure": {
"type": "boolean"
},
"lValueRequested": {
"type": "boolean"
},
"nodeType": {
"type": "string",
"enum": [
"ElementaryTypeNameExpression"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
},
"typeName": {
"$ref": "#/definitions/ElementaryTypeName"
}
},
"required": [
"id",
"isConstant",
"isLValue",
"isPure",
"lValueRequested",
"nodeType",
"src",
"typeDescriptions",
"typeName"
],
"title": "ElementaryTypeNameExpression"
},
"IndexAccess": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"baseExpression": {
"$ref": "#/definitions/Expression"
},
"id": {
"type": "integer"
},
"indexExpression": {
"$ref": "#/definitions/Expression"
},
"isConstant": {
"type": "boolean"
},
"isLValue": {
"type": "boolean"
},
"isPure": {
"type": "boolean"
},
"lValueRequested": {
"type": "boolean"
},
"nodeType": {
"type": "string",
"enum": [
"IndexAccess"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"id",
"indexExpression",
"isConstant",
"isLValue",
"isPure",
"lValueRequested",
"nodeType",
"src",
"typeDescriptions"
],
"title": "IndexAccess"
},
"FunctionCall": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"arguments": {
"type": "array",
"items": {
"$ref": "#/definitions/Expression"
}
},
"expression": {
"$ref": "#/definitions/Expression"
},
"id": {
"type": "integer"
},
"isConstant": {
"type": "boolean"
},
"isLValue": {
"type": "boolean"
},
"isPure": {
"type": "boolean"
},
"kind": {
"type": "string",
"enum": [
"functionCall",
"typeConversion",
"structConstructorCall"
]
},
"lValueRequested": {
"type": "boolean"
},
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"nodeType": {
"type": "string",
"enum": [
"FunctionCall"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"tryCall": {
"type": "boolean"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"arguments",
"expression",
"id",
"isConstant",
"isLValue",
"isPure",
"kind",
"lValueRequested",
"names",
"nodeType",
"src",
"tryCall",
"typeDescriptions"
],
"title": "FunctionCall"
},
"FunctionCallOptions": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"expression": {
"$ref": "#/definitions/Expression"
},
"id": {
"type": "integer"
},
"isConstant": {
"type": "boolean"
},
"isLValue": {
"type": "boolean"
},
"isPure": {
"type": "boolean"
},
"lValueRequested": {
"type": "boolean"
},
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"nodeType": {
"type": "string",
"enum": [
"FunctionCallOptions"
]
},
"options": {
"type": "array",
"items": {
"$ref": "#/definitions/Expression"
}
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"expression",
"id",
"isConstant",
"isLValue",
"isPure",
"lValueRequested",
"names",
"nodeType",
"options",
"src",
"typeDescriptions"
],
"title": "FunctionCallOptions"
},
"Literal": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"hexValue": {
"type": "string",
"pattern": "^[0-9a-f]*$"
},
"id": {
"type": "integer"
},
"isConstant": {
"type": "boolean"
},
"isLValue": {
"type": "boolean"
},
"isPure": {
"type": "boolean"
},
"kind": {
"type": "string",
"enum": [
"bool",
"number",
"string"
]
},
"lValueRequested": {
"type": "boolean"
},
"nodeType": {
"type": "string",
"enum": [
"Literal"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"subdenomination": {
"type": "null"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
},
"value": {
"anyOf": [
{ "type": "null" },
{ "type": "string" }
]
}
},
"required": [
"hexValue",
"id",
"isConstant",
"isLValue",
"isPure",
"kind",
"lValueRequested",
"nodeType",
"src",
"typeDescriptions"
],
"title": "Literal"
},
"MemberAccess": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"expression": {
"$ref": "#/definitions/Expression"
},
"id": {
"type": "integer"
},
"isConstant": {
"type": "boolean"
},
"isLValue": {
"type": "boolean"
},
"isPure": {
"type": "boolean"
},
"lValueRequested": {
"type": "boolean"
},
"memberName": {
"type": "string"
},
"nodeType": {
"type": "string",
"enum": [
"MemberAccess"
]
},
"referencedDeclaration": {
"anyOf": [
{ "type": "null" },
{ "type": "integer" }
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"expression",
"id",
"isConstant",
"isLValue",
"isPure",
"lValueRequested",
"nodeType",
"src",
"typeDescriptions"
],
"title": "MemberAccess"
},
"NewExpression": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"id": {
"type": "integer"
},
"isConstant": {
"type": "boolean"
},
"isLValue": {
"type": "boolean"
},
"isPure": {
"type": "boolean"
},
"lValueRequested": {
"type": "boolean"
},
"nodeType": {
"type": "string",
"enum": [
"NewExpression"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
},
"typeName": {
"$ref": "#/definitions/TypeName"
}
},
"required": [
"id",
"isConstant",
"isLValue",
"isPure",
"lValueRequested",
"nodeType",
"src",
"typeDescriptions",
"typeName"
],
"title": "NewExpression"
},
"TupleExpression": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"components": {
"type": "array",
"items": {
"$ref": "#/definitions/Expression"
}
},
"id": {
"type": "integer"
},
"isConstant": {
"type": "boolean"
},
"isInlineArray": {
"type": "boolean"
},
"isLValue": {
"type": "boolean"
},
"isPure": {
"type": "boolean"
},
"lValueRequested": {
"type": "boolean"
},
"nodeType": {
"type": "string",
"enum": [
"TupleExpression"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"components",
"id",
"isConstant",
"isInlineArray",
"isLValue",
"isPure",
"lValueRequested",
"nodeType",
"src",
"typeDescriptions"
],
"title": "TupleExpression"
},
"UnaryOperation": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"id": {
"type": "integer"
},
"isConstant": {
"type": "boolean"
},
"isLValue": {
"type": "boolean"
},
"isPure": {
"type": "boolean"
},
"lValueRequested": {
"type": "boolean"
},
"nodeType": {
"type": "string",
"enum": [
"UnaryOperation"
]
},
"operator": {
"type": "string",
"enum": [
"++",
"--",
"-",
"!",
"delete"
]
},
"prefix": {
"type": "boolean"
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"subExpression": {
"$ref": "#/definitions/Expression"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"id",
"isConstant",
"isLValue",
"isPure",
"lValueRequested",
"nodeType",
"operator",
"prefix",
"src",
"subExpression",
"typeDescriptions"
],
"title": "UnaryOperation"
},
"FunctionTypeName": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"FunctionTypeName"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"stateMutability": {
"$ref": "#/definitions/StateMutability"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
},
"parameterTypes": {
"$ref": "#/definitions/ParameterList"
},
"returnParameterTypes": {
"$ref": "#/definitions/ParameterList"
},
"visibility": {
"$ref": "#/definitions/Visibility"
}
},
"required": [
"id",
"nodeType",
"parameterTypes",
"returnParameterTypes",
"src",
"stateMutability",
"typeDescriptions",
"visibility"
],
"title": "FunctionTypeName"
},
"ForStatement": {
"type": "object",
"additionalProperties": false,
"properties": {
"body": {
"anyOf": [
{ "$ref": "#/definitions/Block" },
{ "$ref": "#/definitions/Statement" }
]
},
"condition": {
"$ref": "#/definitions/Expression"
},
"id": {
"type": "integer"
},
"initializationExpression": {
"$ref": "#/definitions/VariableDeclarationStatement"
},
"loopExpression": {
"$ref": "#/definitions/ExpressionStatement"
},
"nodeType": {
"type": "string",
"enum": [
"ForStatement"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"body",
"condition",
"id",
"initializationExpression",
"loopExpression",
"nodeType",
"src"
],
"title": "ForStatement"
},
"IfStatement": {
"type": "object",
"additionalProperties": false,
"properties": {
"condition": {
"$ref": "#/definitions/Expression"
},
"falseBody": {
"anyOf": [
{ "type": "null" },
{ "$ref": "#/definitions/Statement" },
{ "$ref": "#/definitions/Block" }
]
},
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"IfStatement"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"trueBody": {
"anyOf": [
{ "$ref": "#/definitions/Block" },
{ "$ref": "#/definitions/Statement" }
]
}
},
"required": [
"condition",
"id",
"nodeType",
"src",
"trueBody"
],
"title": "IfStatement"
},
"EmitStatement": {
"type": "object",
"additionalProperties": false,
"properties": {
"eventCall": {
"$ref": "#/definitions/FunctionCall"
},
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"EmitStatement"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"eventCall",
"id",
"nodeType",
"src"
],
"title": "EmitStatement"
},
"ExpressionStatement": {
"type": "object",
"additionalProperties": false,
"properties": {
"expression": {
"$ref": "#/definitions/Expression"
},
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"ExpressionStatement"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"expression",
"id",
"nodeType",
"src"
],
"title": "ExpressionStatement"
},
"VariableDeclarationStatement": {
"type": "object",
"additionalProperties": false,
"properties": {
"assignments": {
"type": "array",
"items": {
"anyOf": [
{ "type": "null" },
{ "type": "integer" }
]
}
},
"declarations": {
"type": "array",
"items": {
"anyOf": [
{ "type": "null" },
{ "$ref": "#/definitions/VariableDeclaration" }
]
}
},
"id": {
"type": "integer"
},
"initialValue": {
"anyOf": [
{
"$ref": "#/definitions/Expression"
},
{
"type": "null"
}
]
},
"nodeType": {
"type": "string",
"enum": [
"VariableDeclarationStatement"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"assignments",
"declarations",
"id",
"nodeType",
"src"
],
"title": "VariableDeclarationStatement"
},
"WhileStatement": {
"type": "object",
"additionalProperties": false,
"properties": {
"body": {
"anyOf": [
{ "$ref": "#/definitions/Block" },
{ "$ref": "#/definitions/Statement" }
]
},
"condition": {
"$ref": "#/definitions/Expression"
},
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"WhileStatement"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"body",
"condition",
"id",
"nodeType",
"src"
],
"title": "WhileStatement"
},
"PlaceholderStatement": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"PlaceholderStatement"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"id",
"nodeType",
"src"
],
"title": "PlaceholderStatement"
},
"UserDefinedTypeName": {
"type": "object",
"additionalProperties": false,
"properties": {
"contractScope": {
"type": "null"
},
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"nodeType": {
"type": "string",
"enum": [
"UserDefinedTypeName"
]
},
"referencedDeclaration": {
"type": "integer"
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"id",
"name",
"nodeType",
"referencedDeclaration",
"src",
"typeDescriptions"
],
"title": "UserDefinedTypeName"
},
"InheritanceSpecifier": {
"type": "object",
"additionalProperties": false,
"properties": {
"arguments": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/definitions/Expression"
}
},
{
"type": "null"
}
]
},
"baseName": {
"$ref": "#/definitions/UserDefinedTypeName"
},
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"InheritanceSpecifier"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"baseName",
"id",
"nodeType",
"src"
],
"title": "InheritanceSpecifier"
},
"ModifierInvocation": {
"type": "object",
"additionalProperties": false,
"properties": {
"arguments": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/definitions/Expression"
}
},
{
"type": "null"
}
]
},
"id": {
"type": "integer"
},
"modifierName": {
"$ref": "#/definitions/Identifier"
},
"nodeType": {
"type": "string",
"enum": [
"ModifierInvocation"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"id",
"modifierName",
"nodeType",
"src"
],
"title": "ModifierInvocation"
},
"Identifier": {
"type": "object",
"additionalProperties": false,
"properties": {
"argumentTypes": {
"anyOf": [
{ "type": "null" },
{
"type": "array",
"items": {
"$ref": "#/definitions/TypeDescriptions"
}
}
]
},
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"nodeType": {
"type": "string",
"enum": [
"Identifier"
]
},
"overloadedDeclarations": {
"type": "array",
"items": {}
},
"referencedDeclaration": {
"anyOf": [
{ "type": "null" },
{ "type": "integer" }
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"id",
"name",
"nodeType",
"overloadedDeclarations",
"src",
"typeDescriptions"
],
"title": "Identifier"
},
"Block": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"Block"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"statements": {
"type": "array",
"items": {
"$ref": "#/definitions/Statement"
}
}
},
"required": [
"id",
"nodeType",
"src",
"statements"
],
"title": "Block"
},
"Statement": {
"anyOf": [
{ "$ref": "#/definitions/EmitStatement" },
{ "$ref": "#/definitions/ExpressionStatement" },
{ "$ref": "#/definitions/ForStatement" },
{ "$ref": "#/definitions/IfStatement" },
{ "$ref": "#/definitions/WhileStatement" },
{ "$ref": "#/definitions/InlineAssembly" },
{ "$ref": "#/definitions/PlaceholderStatement" },
{ "$ref": "#/definitions/Return" },
{ "$ref": "#/definitions/VariableDeclarationStatement" }
]
},
"OverrideSpecifier": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"OverrideSpecifier"
]
},
"overrides": {
"type": "array",
"items": {
"$ref": "#/definitions/UserDefinedTypeName"
}
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"id",
"nodeType",
"overrides",
"src"
],
"title": "OverrideSpecifier"
},
"EnumValue": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"nodeType": {
"type": "string",
"enum": [
"EnumValue"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"id",
"name",
"nodeType",
"src"
],
"title": "EnumValue"
},
"EnumDefinition": {
"type": "object",
"additionalProperties": false,
"properties": {
"canonicalName": {
"type": "string"
},
"id": {
"type": "integer"
},
"members": {
"type": "array",
"items": {
"$ref": "#/definitions/EnumValue"
}
},
"name": {
"type": "string"
},
"nodeType": {
"type": "string",
"enum": [
"EnumDefinition"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"canonicalName",
"id",
"members",
"name",
"nodeType",
"src"
],
"title": "EnumDefinition"
},
"EventDefinition": {
"type": "object",
"additionalProperties": false,
"properties": {
"anonymous": {
"type": "boolean"
},
"documentation": {
"anyOf": [
{ "type": "null" },
{ "$ref": "#/definitions/StructuredDocumentation" }
]
},
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"nodeType": {
"type": "string",
"enum": [
"EventDefinition"
]
},
"parameters": {
"$ref": "#/definitions/ParameterList"
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"anonymous",
"id",
"name",
"nodeType",
"parameters",
"src"
],
"title": "EventDefinition"
},
"FunctionDefinition": {
"type": "object",
"additionalProperties": false,
"properties": {
"baseFunctions": {
"type": "array",
"items": {
"type": "integer"
}
},
"body": {
"anyOf": [
{ "type": "null" },
{ "$ref": "#/definitions/Block" }
]
},
"documentation": {
"anyOf": [
{ "type": "null" },
{ "$ref": "#/definitions/StructuredDocumentation" }
]
},
"functionSelector": {
"type": "string"
},
"id": {
"type": "integer"
},
"implemented": {
"type": "boolean"
},
"kind": {
"type": "string",
"enum": [
"function",
"receive",
"constructor",
"fallback",
"freeFunction"
]
},
"modifiers": {
"type": "array",
"items": {
"$ref": "#/definitions/ModifierInvocation"
}
},
"name": {
"type": "string"
},
"nodeType": {
"type": "string",
"enum": [
"FunctionDefinition"
]
},
"overrides": {
"anyOf": [
{
"$ref": "#/definitions/OverrideSpecifier"
},
{
"type": "null"
}
]
},
"parameters": {
"$ref": "#/definitions/ParameterList"
},
"returnParameters": {
"$ref": "#/definitions/ParameterList"
},
"scope": {
"type": "integer"
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"stateMutability": {
"$ref": "#/definitions/StateMutability"
},
"virtual": {
"type": "boolean"
},
"visibility": {
"$ref": "#/definitions/Visibility"
}
},
"required": [
"id",
"implemented",
"kind",
"modifiers",
"name",
"nodeType",
"parameters",
"returnParameters",
"scope",
"src",
"stateMutability",
"virtual",
"visibility"
],
"title": "FunctionDefinition"
},
"ParameterList": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"ParameterList"
]
},
"parameters": {
"type": "array",
"items": {
"$ref": "#/definitions/VariableDeclaration"
}
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"id",
"nodeType",
"parameters",
"src"
],
"title": "ParameterList"
},
"ArrayTypeName": {
"type": "object",
"additionalProperties": false,
"properties": {
"baseType": {
"$ref": "#/definitions/TypeName"
},
"id": {
"type": "integer"
},
"length": {
"anyOf": [
{ "type": "null" },
{ "$ref": "#/definitions/Expression" }
]
},
"nodeType": {
"type": "string",
"enum": [
"ArrayTypeName"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
}
},
"required": [
"baseType",
"id",
"nodeType",
"src",
"typeDescriptions"
],
"title": "ArrayTypeName"
},
"Mapping": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer"
},
"keyType": {
"$ref": "#/definitions/TypeName"
},
"nodeType": {
"type": "string",
"enum": [
"Mapping"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeDescriptions": {
"$ref": "#/definitions/TypeDescriptions"
},
"valueType": {
"$ref": "#/definitions/TypeName"
}
},
"required": [
"id",
"keyType",
"nodeType",
"src",
"typeDescriptions",
"valueType"
],
"title": "Mapping"
},
"ModifierDefinition": {
"type": "object",
"additionalProperties": false,
"properties": {
"body": {
"$ref": "#/definitions/Block"
},
"documentation": {
"anyOf": [
{ "type": "null" },
{ "$ref": "#/definitions/StructuredDocumentation" }
]
},
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"nodeType": {
"type": "string",
"enum": [
"ModifierDefinition"
]
},
"overrides": {
"type": "null"
},
"parameters": {
"$ref": "#/definitions/ParameterList"
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"virtual": {
"type": "boolean"
},
"visibility": {
"$ref": "#/definitions/Visibility"
}
},
"required": [
"body",
"id",
"name",
"nodeType",
"parameters",
"src",
"virtual",
"visibility"
],
"title": "ModifierDefinition"
},
"InlineAssembly": {
"type": "object",
"additionalProperties": false,
"properties": {
"AST": {
"type": "object"
},
"evmVersion": {
"type": "string",
"enum": [
"homestead",
"tangerineWhistle",
"spuriousDragon",
"byzantium",
"constantinople",
"petersburg",
"istanbul",
"berlin"
]
},
"externalReferences": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"declaration": {
"type": "integer"
},
"isOffset": {
"type": "boolean"
},
"isSlot": {
"type": "boolean"
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"valueSize": {
"type": "integer"
}
},
"required": [
"declaration",
"isOffset",
"isSlot",
"src",
"valueSize"
]
}
},
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"InlineAssembly"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"AST",
"evmVersion",
"externalReferences",
"id",
"nodeType",
"src"
],
"title": "InlineAssembly"
},
"ImportDirective": {
"type": "object",
"additionalProperties": false,
"properties": {
"absolutePath": {
"type": "string"
},
"file": {
"type": "string"
},
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"ImportDirective"
]
},
"scope": {
"type": "integer"
},
"sourceUnit": {
"type": "integer"
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"symbolAliases": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"foreign": {
"$ref": "#/definitions/Identifier"
},
"local": {
"anyOf": [
{ "type": "null" },
{ "type": "string" }
]
}
},
"required": [
"foreign"
]
}
},
"unitAlias": {
"type": "string"
}
},
"required": [
"absolutePath",
"file",
"id",
"nodeType",
"scope",
"sourceUnit",
"src",
"symbolAliases",
"unitAlias"
],
"title": "ImportDirective"
},
"PragmaDirective": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"PragmaDirective"
]
},
"literals": {
"type": "array",
"items": {
"type": "string"
}
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"id",
"nodeType",
"literals",
"src"
],
"title": "PragmaDirective"
},
"ContractDefinition": {
"type": "object",
"additionalProperties": false,
"properties": {
"abstract": {
"type": "boolean"
},
"baseContracts": {
"type": "array",
"items": {
"$ref": "#/definitions/InheritanceSpecifier"
}
},
"contractDependencies": {
"type": "array",
"items": {
"type": "integer"
}
},
"contractKind": {
"type": "string",
"enum": [
"contract",
"interface",
"library"
]
},
"documentation": {
"anyOf": [
{ "type": "null" },
{ "$ref": "#/definitions/StructuredDocumentation" }
]
},
"fullyImplemented": {
"type": "boolean"
},
"id": {
"type": "integer"
},
"linearizedBaseContracts": {
"type": "array",
"items": {
"type": "integer"
}
},
"name": {
"type": "string"
},
"nodeType": {
"type": "string",
"enum": [
"ContractDefinition"
]
},
"nodes": {
"type": "array",
"items": {
"anyOf": [
{ "$ref": "#/definitions/EnumDefinition" },
{ "$ref": "#/definitions/EventDefinition" },
{ "$ref": "#/definitions/FunctionDefinition" },
{ "$ref": "#/definitions/ModifierDefinition" },
{ "$ref": "#/definitions/StructDefinition" },
{ "$ref": "#/definitions/UsingForDirective" },
{ "$ref": "#/definitions/VariableDeclaration" }
]
}
},
"scope": {
"type": "integer"
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"abstract",
"baseContracts",
"contractDependencies",
"contractKind",
"fullyImplemented",
"id",
"linearizedBaseContracts",
"name",
"nodeType",
"nodes",
"scope",
"src"
],
"title": "ContractDefinition"
},
"Return": {
"type": "object",
"additionalProperties": false,
"properties": {
"expression": {
"anyOf": [
{ "$ref": "#/definitions/Expression" },
{ "type": "null" }
]
},
"functionReturnParameters": {
"type": "integer"
},
"id": {
"type": "integer"
},
"nodeType": {
"type": "string",
"enum": [
"Return"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
}
},
"required": [
"expression",
"functionReturnParameters",
"id",
"nodeType",
"src"
],
"title": "Return"
},
"StructDefinition": {
"type": "object",
"additionalProperties": false,
"properties": {
"canonicalName": {
"type": "string"
},
"id": {
"type": "integer"
},
"members": {
"type": "array",
"items": {
"$ref": "#/definitions/VariableDeclaration"
}
},
"name": {
"type": "string"
},
"nodeType": {
"type": "string",
"enum": [
"StructDefinition"
]
},
"scope": {
"type": "integer"
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"visibility": {
"$ref": "#/definitions/Visibility"
}
},
"required": [
"canonicalName",
"id",
"members",
"name",
"nodeType",
"scope",
"src",
"visibility"
],
"title": "StructDefinition"
},
"UsingForDirective": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer"
},
"libraryName": {
"$ref": "#/definitions/UserDefinedTypeName"
},
"nodeType": {
"type": "string",
"enum": [
"UsingForDirective"
]
},
"src": {
"$ref": "#/definitions/SourceLocation"
},
"typeName": {
"$ref": "#/definitions/TypeName"
}
},
"required": [
"id",
"libraryName",
"nodeType",
"src",
"typeName"
],
"title": "UsingForDirective"
},
"VariableDeclaration": {
"type": "object",
"additionalProperties": false,
"properties": {
"constant": {
"type": "boolean"
},
"functionSelector": {
"type": "string"
},
"id": {