syntax = "proto3"; package camino; import "google/protobuf/descriptor.proto"; import "camino/schema.proto"; import "quixos/refs.proto"; extend google.protobuf.FileOptions { string schema_namespace = 51000; string schema_version = 51001; } extend google.protobuf.MessageOptions { ClassOptions class = 51010; repeated MethodOptions method = 51011; repeated MigrationOptions migration = 51012; InterfaceOptions interface = 51013; repeated ImplementsOptions implements = 51014; ConstructorOptions constructor = 51015; } extend google.protobuf.FieldOptions { ConflictStrategy conflict = 51020; EdgeOptions edge = 51021; FieldStorage field_storage = 51022; FieldOps field_ops = 51023; InterfaceFieldContract interface_field = 51024; bool display_label = 51025; } extend google.protobuf.MethodOptions { quixos.FunctionRef impl = 51030; } message ClassOptions { uint32 version = 1; SymbolRef id = 2; } message InterfaceOptions { uint32 version = 1; SymbolRef id = 2; } message ImplementsOptions { SymbolRef interface = 1; repeated TypeBinding type_binding = 2; } message ConstructorOptions { quixos.FunctionRef function = 1; } message EdgeOptions { SymbolRef id = 1; // Shorthand for other_endpoint.class. SymbolRef target = 2; // Shorthand for this_endpoint.cardinality. Cardinality cardinality = 3; // Shorthand for other_endpoint.projection. string inverse = 4; EdgeEndpointOptions this_endpoint = 5; EdgeEndpointOptions other_endpoint = 6; repeated SymbolRef tag = 7; repeated SymbolRef implements = 8; bool undirected = 9; } message EdgeEndpointOptions { SymbolRef class = 1; SymbolRef interface = 2; string projection = 3; Cardinality cardinality = 4; bool indexed = 5; EdgeMaterializationOptions materialize = 6; } message EdgeMaterializationOptions { SymbolRef class = 1; string connect_projection = 2; } message MethodOptions { string name = 1; quixos.FunctionRef function = 2; } message MigrationOptions { uint32 from_version = 1; uint32 to_version = 2; quixos.FunctionRef function = 3; }