UNPKG

solidity-ast

Version:
2,238 lines (2,237 loc) 54.5 kB
{ "$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": {