{
"Duration": {
"STRUCT": [
{
"nanos": "U64"
}
]
},
"Effect": {
"ENUM": {
"0": {
"Time": {
"NEWTYPE": {
"TYPENAME": "TimeRequest"
}
}
},
"1": {
"Render": {
"NEWTYPE": {
"TYPENAME": "RenderOperation"
}
}
},
"2": {
"PubSub": {
"NEWTYPE": {
"TYPENAME": "PubSubOperation"
}
}
},
"3": {
"KeyValue": {
"NEWTYPE": {
"TYPENAME": "KeyValueOperation"
}
}
}
}
},
"Event": {
"ENUM": {
"0": {
"Open": "UNIT"
},
"1": {
"Insert": {
"NEWTYPE": "STR"
}
},
"2": {
"Replace": {
"TUPLE": [
"U64",
"U64",
"STR"
]
}
},
"3": {
"MoveCursor": {
"NEWTYPE": "U64"
}
},
"4": {
"Select": {
"TUPLE": [
"U64",
"U64"
]
}
},
"5": {
"Backspace": "UNIT"
},
"6": {
"Delete": "UNIT"
},
"7": {
"ReceiveChanges": {
"NEWTYPE": {
"SEQ": "U8"
}
}
}
}
},
"Instant": {
"STRUCT": [
{
"seconds": "U64"
},
{
"nanos": "U32"
}
]
},
"KeyValueError": {
"ENUM": {
"0": {
"io": {
"STRUCT": [
{
"message": "STR"
}
]
}
},
"1": {
"timeout": "UNIT"
},
"2": {
"cursorNotFound": "UNIT"
},
"3": {
"other": {
"STRUCT": [
{
"message": "STR"
}
]
}
}
}
},
"KeyValueOperation": {
"ENUM": {
"0": {
"Get": {
"STRUCT": [
{
"key": "STR"
}
]
}
},
"1": {
"Set": {
"STRUCT": [
{
"key": "STR"
},
{
"value": "BYTES"
}
]
}
},
"2": {
"Delete": {
"STRUCT": [
{
"key": "STR"
}
]
}
},
"3": {
"Exists": {
"STRUCT": [
{
"key": "STR"
}
]
}
},
"4": {
"ListKeys": {
"STRUCT": [
{
"prefix": "STR"
},
{
"cursor": "U64"
}
]
}
}
}
},
"KeyValueResponse": {
"ENUM": {
"0": {
"Get": {
"STRUCT": [
{
"value": {
"TYPENAME": "Value"
}
}
]
}
},
"1": {
"Set": {
"STRUCT": [
{
"previous": {
"TYPENAME": "Value"
}
}
]
}
},
"2": {
"Delete": {
"STRUCT": [
{
"previous": {
"TYPENAME": "Value"
}
}
]
}
},
"3": {
"Exists": {
"STRUCT": [
{
"is_present": "BOOL"
}
]
}
},
"4": {
"ListKeys": {
"STRUCT": [
{
"keys": {
"SEQ": "STR"
}
},
{
"next_cursor": "U64"
}
]
}
}
}
},
"KeyValueResult": {
"ENUM": {
"0": {
"Ok": {
"STRUCT": [
{
"response": {
"TYPENAME": "KeyValueResponse"
}
}
]
}
},
"1": {
"Err": {
"STRUCT": [
{
"error": {
"TYPENAME": "KeyValueError"
}
}
]
}
}
}
},
"Message": {
"NEWTYPESTRUCT": {
"SEQ": "U8"
}
},
"PubSubOperation": {
"ENUM": {
"0": {
"Publish": {
"NEWTYPE": {
"SEQ": "U8"
}
}
},
"1": {
"Subscribe": "UNIT"
}
}
},
"Range": {
"STRUCT": [
{
"start": "U64"
},
{
"end": "U64"
}
]
},
"RenderOperation": "UNITSTRUCT",
"Request": {
"STRUCT": [
{
"id": "U32"
},
{
"effect": {
"TYPENAME": "Effect"
}
}
]
},
"TextCursor": {
"ENUM": {
"0": {
"Position": {
"NEWTYPE": "U64"
}
},
"1": {
"Selection": {
"NEWTYPE": {
"TYPENAME": "Range"
}
}
}
}
},
"TimeRequest": {
"ENUM": {
"0": {
"now": "UNIT"
},
"1": {
"notifyAt": {
"STRUCT": [
{
"id": {
"TYPENAME": "TimerId"
}
},
{
"instant": {
"TYPENAME": "Instant"
}
}
]
}
},
"2": {
"notifyAfter": {
"STRUCT": [
{
"id": {
"TYPENAME": "TimerId"
}
},
{
"duration": {
"TYPENAME": "Duration"
}
}
]
}
},
"3": {
"clear": {
"STRUCT": [
{
"id": {
"TYPENAME": "TimerId"
}
}
]
}
}
}
},
"TimeResponse": {
"ENUM": {
"0": {
"now": {
"STRUCT": [
{
"instant": {
"TYPENAME": "Instant"
}
}
]
}
},
"1": {
"instantArrived": {
"STRUCT": [
{
"id": {
"TYPENAME": "TimerId"
}
}
]
}
},
"2": {
"durationElapsed": {
"STRUCT": [
{
"id": {
"TYPENAME": "TimerId"
}
}
]
}
},
"3": {
"cleared": {
"STRUCT": [
{
"id": {
"TYPENAME": "TimerId"
}
}
]
}
}
}
},
"TimerId": {
"NEWTYPESTRUCT": "U64"
},
"Value": {
"ENUM": {
"0": {
"None": "UNIT"
},
"1": {
"Bytes": {
"NEWTYPE": "BYTES"
}
}
}
},
"ViewModel": {
"STRUCT": [
{
"text": "STR"
},
{
"cursor": {
"TYPENAME": "TextCursor"
}
}
]
}
}