{
    "TypeResolution": {
        "version": 1,
        "uiName": "Test Node: Attribute Type Resolution",
        "description": [
            "Test node, explicitly constructed to make the attribute type resolution mechanism testable.",
            "It has output attributes with union and any types whose type will be resolved at runtime",
            "when they are connected to inputs with a fixed type. The extra string output provides the",
            "resolution information to the test script for verification"
        ],
        "icon": {
            "path": "TestNodeIcon.svg"
        },
        "categories": "internal:test",
        "scheduling": ["threadsafe"],
        "exclude": ["tests", "usd", "docs"],
        "inputs": {
            "anyValueIn": {
                "type": "any",
                "description": [
                    "Input that can resolve to any type.  Internally the node couples ",
                    "the types of inputs:anyValueIn -> outputs:anyValue.  Meaning if one is resolved it will",
                    "automatically resolve the other"
                ],
                "unvalidated": true
            }
        },
        "outputs": {
            "resolvedType": {
                "type": "token[]",
                "description": [
                    "Array of strings representing the output attribute's type resolutions.",
                    "The array items consist of comma-separated pairs of strings representing",
                    "the output attribute name and the type to which it is currently resolved.",
                    "e.g. if the attribute 'foo' is an integer there would be one entry in the array",
                    "with the string 'foo,int'"
                ]
            },
            "value": {
                "type": ["int", "int64", "uint", "uint64", "float", "double"],
                "description": "Output that only resolves to one of the numeric types.",
                "unvalidated": true
            },
            "arrayValue": {
                "type": ["int[]", "int64[]", "uint[]", "uint64[]", "float[]", "double[]"],
                "description": "Output that only resolves to one of the numeric array types.",
                "unvalidated": true
            },
            "tupleValue": {
                "type": ["int[3]", "float[3]", "double[3]"],
                "description": "Output that only resolves to one of the numeric tuple types.",
                "unvalidated": true
            },
            "tupleArrayValue": {
                "type": ["int[3][]", "float[3][]", "double[3][]"],
                "description": "Output that only resolves to one of the numeric tuple array types.",
                "unvalidated": true
            },
            "mixedValue": {
                "type": ["float", "float[]", "float[3]", "float[3][]"],
                "description": "Output that can resolve to data of different shapes.",
                "unvalidated": true
            },
            "anyValue" : {
                "type": "any",
                "description" : "Output that can resolve to any type at all",
                "unvalidated": true
            }
        }
    }
}
