diff --git a/proto/camino/options.proto b/proto/camino/options.proto index 075f894..af92ce6 100644 --- a/proto/camino/options.proto +++ b/proto/camino/options.proto @@ -15,6 +15,8 @@ extend google.protobuf.MessageOptions { ClassOptions class = 51010; repeated MethodOptions method = 51011; repeated MigrationOptions migration = 51012; + InterfaceOptions interface = 51013; + repeated ImplementsOptions implements = 51014; } extend google.protobuf.FieldOptions { @@ -22,6 +24,7 @@ extend google.protobuf.FieldOptions { EdgeOptions edge = 51021; FieldStorage field_storage = 51022; FieldOps field_ops = 51023; + InterfaceFieldContract interface_field = 51024; } extend google.protobuf.MethodOptions { @@ -33,6 +36,16 @@ message ClassOptions { SymbolRef id = 2; } +message InterfaceOptions { + uint32 version = 1; + SymbolRef id = 2; +} + +message ImplementsOptions { + SymbolRef interface = 1; + repeated TypeBinding type_binding = 2; +} + message EdgeOptions { SymbolRef id = 1; SymbolRef target = 2; diff --git a/proto/camino/schema.proto b/proto/camino/schema.proto index 5d2d022..77642bc 100644 --- a/proto/camino/schema.proto +++ b/proto/camino/schema.proto @@ -79,6 +79,7 @@ message ClassSchema { string source_file = 7; string proto_message = 8; repeated OperationServiceSchema operation_services = 9; + repeated InterfaceImplementationSchema implements = 10; } message FieldSchema { @@ -90,6 +91,7 @@ message FieldSchema { bool optional = 6; FieldStorage storage = 7; FieldOps ops = 8; + InterfaceFieldContract interface_contract = 9; } message FieldStorage { @@ -103,6 +105,33 @@ message TypeRef { SymbolRef symbol = 2; } +message TypeBinding { + string name = 1; + TypeRef type = 2; +} + +message InterfaceFieldContract { + bool required = 1; + bool readable = 2; + bool writable = 3; + bool watchable = 4; + string type_param = 5; + TypeRef type = 6; +} + +message InterfaceImplementationSchema { + SymbolRef interface = 1; + repeated TypeBinding type_bindings = 2; +} + +message InterfaceSchema { + SymbolRef id = 1; + uint32 version = 2; + repeated FieldSchema fields = 3; + string source_file = 4; + string proto_message = 5; +} + enum FieldImplementation { FIELD_IMPLEMENTATION_UNSPECIFIED = 0; SERVICE = 1; diff --git a/src/gen/camino/options_pb.ts b/src/gen/camino/options_pb.ts index b039a4a..373d049 100644 --- a/src/gen/camino/options_pb.ts +++ b/src/gen/camino/options_pb.ts @@ -6,7 +6,7 @@ import type { GenExtension, GenFile, GenMessage } from "@bufbuild/protobuf/codeg import { extDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { FieldOptions, FileOptions, MessageOptions, MethodOptions as MethodOptions$1 } from "@bufbuild/protobuf/wkt"; import { file_google_protobuf_descriptor } from "@bufbuild/protobuf/wkt"; -import type { Cardinality, ConflictStrategy, FieldOps, FieldStorage, SymbolRef } from "./schema_pb.js"; +import type { Cardinality, ConflictStrategy, FieldOps, FieldStorage, InterfaceFieldContract, SymbolRef, TypeBinding } from "./schema_pb.js"; import { file_camino_schema } from "./schema_pb.js"; import type { FunctionRef } from "../quixos/refs_pb.js"; import { file_quixos_refs } from "../quixos/refs_pb.js"; @@ -16,7 +16,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file camino/options.proto. */ export const file_camino_options: GenFile = /*@__PURE__*/ - fileDesc("ChRjYW1pbm8vb3B0aW9ucy5wcm90bxIGY2FtaW5vIj4KDENsYXNzT3B0aW9ucxIPCgd2ZXJzaW9uGAEgASgNEh0KAmlkGAIgASgLMhEuY2FtaW5vLlN5bWJvbFJlZiKKAQoLRWRnZU9wdGlvbnMSHQoCaWQYASABKAsyES5jYW1pbm8uU3ltYm9sUmVmEiEKBnRhcmdldBgCIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSKAoLY2FyZGluYWxpdHkYAyABKA4yEy5jYW1pbm8uQ2FyZGluYWxpdHkSDwoHaW52ZXJzZRgEIAEoCSJECg1NZXRob2RPcHRpb25zEgwKBG5hbWUYASABKAkSJQoIZnVuY3Rpb24YAiABKAsyEy5xdWl4b3MuRnVuY3Rpb25SZWYiYwoQTWlncmF0aW9uT3B0aW9ucxIUCgxmcm9tX3ZlcnNpb24YASABKA0SEgoKdG9fdmVyc2lvbhgCIAEoDRIlCghmdW5jdGlvbhgDIAEoCzITLnF1aXhvcy5GdW5jdGlvblJlZjpJChBzY2hlbWFfbmFtZXNwYWNlEhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zGLiOAyABKAlSD3NjaGVtYU5hbWVzcGFjZTpFCg5zY2hlbWFfdmVyc2lvbhIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucxi5jgMgASgJUg1zY2hlbWFWZXJzaW9uOk0KBWNsYXNzEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGMKOAyABKAsyFC5jYW1pbm8uQ2xhc3NPcHRpb25zUgVjbGFzczpQCgZtZXRob2QSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYw44DIAMoCzIVLmNhbWluby5NZXRob2RPcHRpb25zUgZtZXRob2Q6WQoJbWlncmF0aW9uEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGMSOAyADKAsyGC5jYW1pbm8uTWlncmF0aW9uT3B0aW9uc1IJbWlncmF0aW9uOlUKCGNvbmZsaWN0Eh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjMjgMgASgOMhguY2FtaW5vLkNvbmZsaWN0U3RyYXRlZ3lSCGNvbmZsaWN0OkgKBGVkZ2USHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGM2OAyABKAsyEy5jYW1pbm8uRWRnZU9wdGlvbnNSBGVkZ2U6WgoNZmllbGRfc3RvcmFnZRIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYzo4DIAEoCzIULmNhbWluby5GaWVsZFN0b3JhZ2VSDGZpZWxkU3RvcmFnZTpOCglmaWVsZF9vcHMSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGM+OAyABKAsyEC5jYW1pbm8uRmllbGRPcHNSCGZpZWxkT3BzOkkKBGltcGwSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxjWjgMgASgLMhMucXVpeG9zLkZ1bmN0aW9uUmVmUgRpbXBsYgZwcm90bzM", [file_google_protobuf_descriptor, file_camino_schema, file_quixos_refs]); + fileDesc("ChRjYW1pbm8vb3B0aW9ucy5wcm90bxIGY2FtaW5vIj4KDENsYXNzT3B0aW9ucxIPCgd2ZXJzaW9uGAEgASgNEh0KAmlkGAIgASgLMhEuY2FtaW5vLlN5bWJvbFJlZiJCChBJbnRlcmZhY2VPcHRpb25zEg8KB3ZlcnNpb24YASABKA0SHQoCaWQYAiABKAsyES5jYW1pbm8uU3ltYm9sUmVmImQKEUltcGxlbWVudHNPcHRpb25zEiQKCWludGVyZmFjZRgBIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSKQoMdHlwZV9iaW5kaW5nGAIgAygLMhMuY2FtaW5vLlR5cGVCaW5kaW5nIooBCgtFZGdlT3B0aW9ucxIdCgJpZBgBIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSIQoGdGFyZ2V0GAIgASgLMhEuY2FtaW5vLlN5bWJvbFJlZhIoCgtjYXJkaW5hbGl0eRgDIAEoDjITLmNhbWluby5DYXJkaW5hbGl0eRIPCgdpbnZlcnNlGAQgASgJIkQKDU1ldGhvZE9wdGlvbnMSDAoEbmFtZRgBIAEoCRIlCghmdW5jdGlvbhgCIAEoCzITLnF1aXhvcy5GdW5jdGlvblJlZiJjChBNaWdyYXRpb25PcHRpb25zEhQKDGZyb21fdmVyc2lvbhgBIAEoDRISCgp0b192ZXJzaW9uGAIgASgNEiUKCGZ1bmN0aW9uGAMgASgLMhMucXVpeG9zLkZ1bmN0aW9uUmVmOkkKEHNjaGVtYV9uYW1lc3BhY2USHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMYuI4DIAEoCVIPc2NoZW1hTmFtZXNwYWNlOkUKDnNjaGVtYV92ZXJzaW9uEhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zGLmOAyABKAlSDXNjaGVtYVZlcnNpb246TQoFY2xhc3MSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYwo4DIAEoCzIULmNhbWluby5DbGFzc09wdGlvbnNSBWNsYXNzOlAKBm1ldGhvZBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjDjgMgAygLMhUuY2FtaW5vLk1ldGhvZE9wdGlvbnNSBm1ldGhvZDpZCgltaWdyYXRpb24SHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYxI4DIAMoCzIYLmNhbWluby5NaWdyYXRpb25PcHRpb25zUgltaWdyYXRpb246WQoJaW50ZXJmYWNlEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGMWOAyABKAsyGC5jYW1pbm8uSW50ZXJmYWNlT3B0aW9uc1IJaW50ZXJmYWNlOlwKCmltcGxlbWVudHMSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYxo4DIAMoCzIZLmNhbWluby5JbXBsZW1lbnRzT3B0aW9uc1IKaW1wbGVtZW50czpVCghjb25mbGljdBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYzI4DIAEoDjIYLmNhbWluby5Db25mbGljdFN0cmF0ZWd5Ughjb25mbGljdDpICgRlZGdlEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjNjgMgASgLMhMuY2FtaW5vLkVkZ2VPcHRpb25zUgRlZGdlOloKDWZpZWxkX3N0b3JhZ2USHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGM6OAyABKAsyFC5jYW1pbm8uRmllbGRTdG9yYWdlUgxmaWVsZFN0b3JhZ2U6TgoJZmllbGRfb3BzEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjPjgMgASgLMhAuY2FtaW5vLkZpZWxkT3BzUghmaWVsZE9wczpoCg9pbnRlcmZhY2VfZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGNCOAyABKAsyHi5jYW1pbm8uSW50ZXJmYWNlRmllbGRDb250cmFjdFIOaW50ZXJmYWNlRmllbGQ6SQoEaW1wbBIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGNaOAyABKAsyEy5xdWl4b3MuRnVuY3Rpb25SZWZSBGltcGxiBnByb3RvMw", [file_google_protobuf_descriptor, file_camino_schema, file_quixos_refs]); /** * @generated from message camino.ClassOptions @@ -40,6 +40,50 @@ export type ClassOptions = Message<"camino.ClassOptions"> & { export const ClassOptionsSchema: GenMessage = /*@__PURE__*/ messageDesc(file_camino_options, 0); +/** + * @generated from message camino.InterfaceOptions + */ +export type InterfaceOptions = Message<"camino.InterfaceOptions"> & { + /** + * @generated from field: uint32 version = 1; + */ + version: number; + + /** + * @generated from field: camino.SymbolRef id = 2; + */ + id?: SymbolRef | undefined; +}; + +/** + * Describes the message camino.InterfaceOptions. + * Use `create(InterfaceOptionsSchema)` to create a new message. + */ +export const InterfaceOptionsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_camino_options, 1); + +/** + * @generated from message camino.ImplementsOptions + */ +export type ImplementsOptions = Message<"camino.ImplementsOptions"> & { + /** + * @generated from field: camino.SymbolRef interface = 1; + */ + interface?: SymbolRef | undefined; + + /** + * @generated from field: repeated camino.TypeBinding type_binding = 2; + */ + typeBinding: TypeBinding[]; +}; + +/** + * Describes the message camino.ImplementsOptions. + * Use `create(ImplementsOptionsSchema)` to create a new message. + */ +export const ImplementsOptionsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_camino_options, 2); + /** * @generated from message camino.EdgeOptions */ @@ -70,7 +114,7 @@ export type EdgeOptions = Message<"camino.EdgeOptions"> & { * Use `create(EdgeOptionsSchema)` to create a new message. */ export const EdgeOptionsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_camino_options, 1); + messageDesc(file_camino_options, 3); /** * @generated from message camino.MethodOptions @@ -92,7 +136,7 @@ export type MethodOptions = Message<"camino.MethodOptions"> & { * Use `create(MethodOptionsSchema)` to create a new message. */ export const MethodOptionsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_camino_options, 2); + messageDesc(file_camino_options, 4); /** * @generated from message camino.MigrationOptions @@ -119,7 +163,7 @@ export type MigrationOptions = Message<"camino.MigrationOptions"> & { * Use `create(MigrationOptionsSchema)` to create a new message. */ export const MigrationOptionsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_camino_options, 3); + messageDesc(file_camino_options, 5); /** * @generated from extension: string schema_namespace = 51000; @@ -151,33 +195,51 @@ export const method: GenExtension = /*@__PURE__ export const migration: GenExtension = /*@__PURE__*/ extDesc(file_camino_options, 4); +/** + * @generated from extension: camino.InterfaceOptions interface = 51013; + */ +export const interface$: GenExtension = /*@__PURE__*/ + extDesc(file_camino_options, 5); + +/** + * @generated from extension: repeated camino.ImplementsOptions implements = 51014; + */ +export const implements$: GenExtension = /*@__PURE__*/ + extDesc(file_camino_options, 6); + /** * @generated from extension: camino.ConflictStrategy conflict = 51020; */ export const conflict: GenExtension = /*@__PURE__*/ - extDesc(file_camino_options, 5); + extDesc(file_camino_options, 7); /** * @generated from extension: camino.EdgeOptions edge = 51021; */ export const edge: GenExtension = /*@__PURE__*/ - extDesc(file_camino_options, 6); + extDesc(file_camino_options, 8); /** * @generated from extension: camino.FieldStorage field_storage = 51022; */ export const field_storage: GenExtension = /*@__PURE__*/ - extDesc(file_camino_options, 7); + extDesc(file_camino_options, 9); /** * @generated from extension: camino.FieldOps field_ops = 51023; */ export const field_ops: GenExtension = /*@__PURE__*/ - extDesc(file_camino_options, 8); + extDesc(file_camino_options, 10); + +/** + * @generated from extension: camino.InterfaceFieldContract interface_field = 51024; + */ +export const interface_field: GenExtension = /*@__PURE__*/ + extDesc(file_camino_options, 11); /** * @generated from extension: quixos.FunctionRef impl = 51030; */ export const impl: GenExtension = /*@__PURE__*/ - extDesc(file_camino_options, 9); + extDesc(file_camino_options, 12); diff --git a/src/gen/camino/schema_pb.ts b/src/gen/camino/schema_pb.ts index 09e6ea0..d993d75 100644 --- a/src/gen/camino/schema_pb.ts +++ b/src/gen/camino/schema_pb.ts @@ -12,7 +12,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file camino/schema.proto. */ export const file_camino_schema: GenFile = /*@__PURE__*/ - fileDesc("ChNjYW1pbm8vc2NoZW1hLnByb3RvEgZjYW1pbm8iSwoJU3ltYm9sUmVmEhEKCW5hbWVzcGFjZRgBIAEoCRIMCgRuYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSDAoEaGFzaBgEIAEoCSIYCgNSZWYSEQoJb2JqZWN0X2lkGAEgASgJIg0KC0N1c3RvbUZpZWxkIiQKEFdhdGNoU3RhcnRSZXN1bHQSEAoId2F0Y2hfaWQYASABKAkiJAoQV2F0Y2hTdG9wUmVxdWVzdBIQCgh3YXRjaF9pZBgBIAEoCSIRCg9XYXRjaFN0b3BSZXN1bHQiGwoIQ3JkdFRleHQSDwoHcGF5bG9hZBgBIAEoDCIfCgxDcmR0UmljaFRleHQSDwoHcGF5bG9hZBgBIAEoDCIbCghDcmR0SnNvbhIPCgdwYXlsb2FkGAEgASgMIr8CCgtDbGFzc1NjaGVtYRIdCgJpZBgBIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSDwoHdmVyc2lvbhgCIAEoDRIjCgZmaWVsZHMYAyADKAsyEy5jYW1pbm8uRmllbGRTY2hlbWESIQoFZWRnZXMYBCADKAsyEi5jYW1pbm8uRWRnZVNjaGVtYRIlCgdtZXRob2RzGAUgAygLMhQuY2FtaW5vLk1ldGhvZFNjaGVtYRIpCgptaWdyYXRpb25zGAYgAygLMhUuY2FtaW5vLk1pZ3JhdGlvblNwZWMSEwoLc291cmNlX2ZpbGUYByABKAkSFQoNcHJvdG9fbWVzc2FnZRgIIAEoCRI6ChJvcGVyYXRpb25fc2VydmljZXMYCSADKAsyHi5jYW1pbm8uT3BlcmF0aW9uU2VydmljZVNjaGVtYSLdAQoLRmllbGRTY2hlbWESDAoEbmFtZRgBIAEoCRILCgN0YWcYAiABKA0SHQoEdHlwZRgDIAEoCzIPLmNhbWluby5UeXBlUmVmEioKCGNvbmZsaWN0GAQgASgOMhguY2FtaW5vLkNvbmZsaWN0U3RyYXRlZ3kSEAoIcmVwZWF0ZWQYBSABKAgSEAoIb3B0aW9uYWwYBiABKAgSJQoHc3RvcmFnZRgHIAEoCzIULmNhbWluby5GaWVsZFN0b3JhZ2USHQoDb3BzGAggASgLMhAuY2FtaW5vLkZpZWxkT3BzImwKDEZpZWxkU3RvcmFnZRImCgRraW5kGAEgASgOMhguY2FtaW5vLkZpZWxkU3RvcmFnZUtpbmQSJQoIcmVzb2x2ZXIYAiABKAsyEy5xdWl4b3MuRnVuY3Rpb25SZWYSDQoFY2FjaGUYAyABKAgiQAoHVHlwZVJlZhISCgpwcm90b190eXBlGAEgASgJEiEKBnN5bWJvbBgCIAEoCzIRLmNhbWluby5TeW1ib2xSZWYiUAoIRmllbGRPcHMSMwoOaW1wbGVtZW50YXRpb24YASABKA4yGy5jYW1pbm8uRmllbGRJbXBsZW1lbnRhdGlvbhIPCgdzZXJ2aWNlGAIgASgJIu0BCgpFZGdlU2NoZW1hEh0KAmlkGAEgASgLMhEuY2FtaW5vLlN5bWJvbFJlZhIUCgxzb3VyY2VfZmllbGQYAiABKAkSJQoKZnJvbV9jbGFzcxgDIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSIwoIdG9fY2xhc3MYBCABKAsyES5jYW1pbm8uU3ltYm9sUmVmEigKC2NhcmRpbmFsaXR5GAUgASgOMhMuY2FtaW5vLkNhcmRpbmFsaXR5Eg8KB2ludmVyc2UYBiABKAkSIwoGZmllbGRzGAcgAygLMhMuY2FtaW5vLkZpZWxkU2NoZW1hIkMKDE1ldGhvZFNjaGVtYRIMCgRuYW1lGAEgASgJEiUKCGZ1bmN0aW9uGAIgASgLMhMucXVpeG9zLkZ1bmN0aW9uUmVmImAKDU1pZ3JhdGlvblNwZWMSFAoMZnJvbV92ZXJzaW9uGAEgASgNEhIKCnRvX3ZlcnNpb24YAiABKA0SJQoIZnVuY3Rpb24YAyABKAsyEy5xdWl4b3MuRnVuY3Rpb25SZWYikQEKD09wZXJhdGlvblNjaGVtYRIMCgRuYW1lGAEgASgJEiMKCmlucHV0X3R5cGUYAiABKAsyDy5jYW1pbm8uVHlwZVJlZhIkCgtvdXRwdXRfdHlwZRgDIAEoCzIPLmNhbWluby5UeXBlUmVmEiUKCGZ1bmN0aW9uGAQgASgLMhMucXVpeG9zLkZ1bmN0aW9uUmVmImYKFk9wZXJhdGlvblNlcnZpY2VTY2hlbWESDAoEbmFtZRgBIAEoCRIRCglmdWxsX25hbWUYAiABKAkSKwoKb3BlcmF0aW9ucxgDIAMoCzIXLmNhbWluby5PcGVyYXRpb25TY2hlbWEimwEKEURvY1JlZkRlY2xhcmF0aW9uEhIKCmxvY2FsX25hbWUYASABKAkSHwoEdHlwZRgCIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSJwoMdGFyZ2V0X2NsYXNzGAMgASgLMhEuY2FtaW5vLlN5bWJvbFJlZhIoCghzdHJlbmd0aBgEIAEoDjIWLmNhbWluby5Eb2NSZWZTdHJlbmd0aCpkChBDb25mbGljdFN0cmF0ZWd5EiEKHUNPTkZMSUNUX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASCwoHUkVQTEFDRRABEhYKElBSRVNFUlZFX0NPTkZMSUNUUxACEggKBENSRFQQAyp6CgtDYXJkaW5hbGl0eRIbChdDQVJESU5BTElUWV9VTlNQRUNJRklFRBAAEhAKDE9QVElPTkFMX09ORRABEg8KC0VYQUNUTFlfT05FEAISCAoETUFOWRADEg8KC01BTllfVU5JUVVFEAQSEAoMTUFOWV9PUkRFUkVEEAUqVAoORG9jUmVmU3RyZW5ndGgSIAocRE9DX1JFRl9TVFJFTkdUSF9VTlNQRUNJRklFRBAAEgwKCFNPRlRfUkVGEAESEgoOUFJPSkVDVEVEX0VER0UQAipnChBGaWVsZFN0b3JhZ2VLaW5kEiIKHkZJRUxEX1NUT1JBR0VfS0lORF9VTlNQRUNJRklFRBAAEgoKBlNUT1JFRBABEgsKB0RFUklWRUQQAhIICgRMQVpZEAMSDAoIRVhURVJOQUwQBCpIChNGaWVsZEltcGxlbWVudGF0aW9uEiQKIEZJRUxEX0lNUExFTUVOVEFUSU9OX1VOU1BFQ0lGSUVEEAASCwoHU0VSVklDRRABYgZwcm90bzM", [file_quixos_refs]); + fileDesc("ChNjYW1pbm8vc2NoZW1hLnByb3RvEgZjYW1pbm8iSwoJU3ltYm9sUmVmEhEKCW5hbWVzcGFjZRgBIAEoCRIMCgRuYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSDAoEaGFzaBgEIAEoCSIYCgNSZWYSEQoJb2JqZWN0X2lkGAEgASgJIg0KC0N1c3RvbUZpZWxkIiQKEFdhdGNoU3RhcnRSZXN1bHQSEAoId2F0Y2hfaWQYASABKAkiJAoQV2F0Y2hTdG9wUmVxdWVzdBIQCgh3YXRjaF9pZBgBIAEoCSIRCg9XYXRjaFN0b3BSZXN1bHQiGwoIQ3JkdFRleHQSDwoHcGF5bG9hZBgBIAEoDCIfCgxDcmR0UmljaFRleHQSDwoHcGF5bG9hZBgBIAEoDCIbCghDcmR0SnNvbhIPCgdwYXlsb2FkGAEgASgMIvoCCgtDbGFzc1NjaGVtYRIdCgJpZBgBIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSDwoHdmVyc2lvbhgCIAEoDRIjCgZmaWVsZHMYAyADKAsyEy5jYW1pbm8uRmllbGRTY2hlbWESIQoFZWRnZXMYBCADKAsyEi5jYW1pbm8uRWRnZVNjaGVtYRIlCgdtZXRob2RzGAUgAygLMhQuY2FtaW5vLk1ldGhvZFNjaGVtYRIpCgptaWdyYXRpb25zGAYgAygLMhUuY2FtaW5vLk1pZ3JhdGlvblNwZWMSEwoLc291cmNlX2ZpbGUYByABKAkSFQoNcHJvdG9fbWVzc2FnZRgIIAEoCRI6ChJvcGVyYXRpb25fc2VydmljZXMYCSADKAsyHi5jYW1pbm8uT3BlcmF0aW9uU2VydmljZVNjaGVtYRI5CgppbXBsZW1lbnRzGAogAygLMiUuY2FtaW5vLkludGVyZmFjZUltcGxlbWVudGF0aW9uU2NoZW1hIpkCCgtGaWVsZFNjaGVtYRIMCgRuYW1lGAEgASgJEgsKA3RhZxgCIAEoDRIdCgR0eXBlGAMgASgLMg8uY2FtaW5vLlR5cGVSZWYSKgoIY29uZmxpY3QYBCABKA4yGC5jYW1pbm8uQ29uZmxpY3RTdHJhdGVneRIQCghyZXBlYXRlZBgFIAEoCBIQCghvcHRpb25hbBgGIAEoCBIlCgdzdG9yYWdlGAcgASgLMhQuY2FtaW5vLkZpZWxkU3RvcmFnZRIdCgNvcHMYCCABKAsyEC5jYW1pbm8uRmllbGRPcHMSOgoSaW50ZXJmYWNlX2NvbnRyYWN0GAkgASgLMh4uY2FtaW5vLkludGVyZmFjZUZpZWxkQ29udHJhY3QibAoMRmllbGRTdG9yYWdlEiYKBGtpbmQYASABKA4yGC5jYW1pbm8uRmllbGRTdG9yYWdlS2luZBIlCghyZXNvbHZlchgCIAEoCzITLnF1aXhvcy5GdW5jdGlvblJlZhINCgVjYWNoZRgDIAEoCCJACgdUeXBlUmVmEhIKCnByb3RvX3R5cGUYASABKAkSIQoGc3ltYm9sGAIgASgLMhEuY2FtaW5vLlN5bWJvbFJlZiI6CgtUeXBlQmluZGluZxIMCgRuYW1lGAEgASgJEh0KBHR5cGUYAiABKAsyDy5jYW1pbm8uVHlwZVJlZiKUAQoWSW50ZXJmYWNlRmllbGRDb250cmFjdBIQCghyZXF1aXJlZBgBIAEoCBIQCghyZWFkYWJsZRgCIAEoCBIQCgh3cml0YWJsZRgDIAEoCBIRCgl3YXRjaGFibGUYBCABKAgSEgoKdHlwZV9wYXJhbRgFIAEoCRIdCgR0eXBlGAYgASgLMg8uY2FtaW5vLlR5cGVSZWYicQodSW50ZXJmYWNlSW1wbGVtZW50YXRpb25TY2hlbWESJAoJaW50ZXJmYWNlGAEgASgLMhEuY2FtaW5vLlN5bWJvbFJlZhIqCg10eXBlX2JpbmRpbmdzGAIgAygLMhMuY2FtaW5vLlR5cGVCaW5kaW5nIpIBCg9JbnRlcmZhY2VTY2hlbWESHQoCaWQYASABKAsyES5jYW1pbm8uU3ltYm9sUmVmEg8KB3ZlcnNpb24YAiABKA0SIwoGZmllbGRzGAMgAygLMhMuY2FtaW5vLkZpZWxkU2NoZW1hEhMKC3NvdXJjZV9maWxlGAQgASgJEhUKDXByb3RvX21lc3NhZ2UYBSABKAkiUAoIRmllbGRPcHMSMwoOaW1wbGVtZW50YXRpb24YASABKA4yGy5jYW1pbm8uRmllbGRJbXBsZW1lbnRhdGlvbhIPCgdzZXJ2aWNlGAIgASgJIu0BCgpFZGdlU2NoZW1hEh0KAmlkGAEgASgLMhEuY2FtaW5vLlN5bWJvbFJlZhIUCgxzb3VyY2VfZmllbGQYAiABKAkSJQoKZnJvbV9jbGFzcxgDIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSIwoIdG9fY2xhc3MYBCABKAsyES5jYW1pbm8uU3ltYm9sUmVmEigKC2NhcmRpbmFsaXR5GAUgASgOMhMuY2FtaW5vLkNhcmRpbmFsaXR5Eg8KB2ludmVyc2UYBiABKAkSIwoGZmllbGRzGAcgAygLMhMuY2FtaW5vLkZpZWxkU2NoZW1hIkMKDE1ldGhvZFNjaGVtYRIMCgRuYW1lGAEgASgJEiUKCGZ1bmN0aW9uGAIgASgLMhMucXVpeG9zLkZ1bmN0aW9uUmVmImAKDU1pZ3JhdGlvblNwZWMSFAoMZnJvbV92ZXJzaW9uGAEgASgNEhIKCnRvX3ZlcnNpb24YAiABKA0SJQoIZnVuY3Rpb24YAyABKAsyEy5xdWl4b3MuRnVuY3Rpb25SZWYikQEKD09wZXJhdGlvblNjaGVtYRIMCgRuYW1lGAEgASgJEiMKCmlucHV0X3R5cGUYAiABKAsyDy5jYW1pbm8uVHlwZVJlZhIkCgtvdXRwdXRfdHlwZRgDIAEoCzIPLmNhbWluby5UeXBlUmVmEiUKCGZ1bmN0aW9uGAQgASgLMhMucXVpeG9zLkZ1bmN0aW9uUmVmImYKFk9wZXJhdGlvblNlcnZpY2VTY2hlbWESDAoEbmFtZRgBIAEoCRIRCglmdWxsX25hbWUYAiABKAkSKwoKb3BlcmF0aW9ucxgDIAMoCzIXLmNhbWluby5PcGVyYXRpb25TY2hlbWEimwEKEURvY1JlZkRlY2xhcmF0aW9uEhIKCmxvY2FsX25hbWUYASABKAkSHwoEdHlwZRgCIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSJwoMdGFyZ2V0X2NsYXNzGAMgASgLMhEuY2FtaW5vLlN5bWJvbFJlZhIoCghzdHJlbmd0aBgEIAEoDjIWLmNhbWluby5Eb2NSZWZTdHJlbmd0aCpkChBDb25mbGljdFN0cmF0ZWd5EiEKHUNPTkZMSUNUX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASCwoHUkVQTEFDRRABEhYKElBSRVNFUlZFX0NPTkZMSUNUUxACEggKBENSRFQQAyp6CgtDYXJkaW5hbGl0eRIbChdDQVJESU5BTElUWV9VTlNQRUNJRklFRBAAEhAKDE9QVElPTkFMX09ORRABEg8KC0VYQUNUTFlfT05FEAISCAoETUFOWRADEg8KC01BTllfVU5JUVVFEAQSEAoMTUFOWV9PUkRFUkVEEAUqVAoORG9jUmVmU3RyZW5ndGgSIAocRE9DX1JFRl9TVFJFTkdUSF9VTlNQRUNJRklFRBAAEgwKCFNPRlRfUkVGEAESEgoOUFJPSkVDVEVEX0VER0UQAipnChBGaWVsZFN0b3JhZ2VLaW5kEiIKHkZJRUxEX1NUT1JBR0VfS0lORF9VTlNQRUNJRklFRBAAEgoKBlNUT1JFRBABEgsKB0RFUklWRUQQAhIICgRMQVpZEAMSDAoIRVhURVJOQUwQBCpIChNGaWVsZEltcGxlbWVudGF0aW9uEiQKIEZJRUxEX0lNUExFTUVOVEFUSU9OX1VOU1BFQ0lGSUVEEAASCwoHU0VSVklDRRABYgZwcm90bzM", [file_quixos_refs]); /** * @generated from message camino.SymbolRef @@ -222,6 +222,11 @@ export type ClassSchema = Message<"camino.ClassSchema"> & { * @generated from field: repeated camino.OperationServiceSchema operation_services = 9; */ operationServices: OperationServiceSchema[]; + + /** + * @generated from field: repeated camino.InterfaceImplementationSchema implements = 10; + */ + implements: InterfaceImplementationSchema[]; }; /** @@ -274,6 +279,11 @@ export type FieldSchema = Message<"camino.FieldSchema"> & { * @generated from field: camino.FieldOps ops = 8; */ ops?: FieldOps | undefined; + + /** + * @generated from field: camino.InterfaceFieldContract interface_contract = 9; + */ + interfaceContract?: InterfaceFieldContract | undefined; }; /** @@ -332,6 +342,129 @@ export type TypeRef = Message<"camino.TypeRef"> & { export const TypeRefSchema: GenMessage = /*@__PURE__*/ messageDesc(file_camino_schema, 12); +/** + * @generated from message camino.TypeBinding + */ +export type TypeBinding = Message<"camino.TypeBinding"> & { + /** + * @generated from field: string name = 1; + */ + name: string; + + /** + * @generated from field: camino.TypeRef type = 2; + */ + type?: TypeRef | undefined; +}; + +/** + * Describes the message camino.TypeBinding. + * Use `create(TypeBindingSchema)` to create a new message. + */ +export const TypeBindingSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_camino_schema, 13); + +/** + * @generated from message camino.InterfaceFieldContract + */ +export type InterfaceFieldContract = Message<"camino.InterfaceFieldContract"> & { + /** + * @generated from field: bool required = 1; + */ + required: boolean; + + /** + * @generated from field: bool readable = 2; + */ + readable: boolean; + + /** + * @generated from field: bool writable = 3; + */ + writable: boolean; + + /** + * @generated from field: bool watchable = 4; + */ + watchable: boolean; + + /** + * @generated from field: string type_param = 5; + */ + typeParam: string; + + /** + * @generated from field: camino.TypeRef type = 6; + */ + type?: TypeRef | undefined; +}; + +/** + * Describes the message camino.InterfaceFieldContract. + * Use `create(InterfaceFieldContractSchema)` to create a new message. + */ +export const InterfaceFieldContractSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_camino_schema, 14); + +/** + * @generated from message camino.InterfaceImplementationSchema + */ +export type InterfaceImplementationSchema = Message<"camino.InterfaceImplementationSchema"> & { + /** + * @generated from field: camino.SymbolRef interface = 1; + */ + interface?: SymbolRef | undefined; + + /** + * @generated from field: repeated camino.TypeBinding type_bindings = 2; + */ + typeBindings: TypeBinding[]; +}; + +/** + * Describes the message camino.InterfaceImplementationSchema. + * Use `create(InterfaceImplementationSchemaSchema)` to create a new message. + */ +export const InterfaceImplementationSchemaSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_camino_schema, 15); + +/** + * @generated from message camino.InterfaceSchema + */ +export type InterfaceSchema = Message<"camino.InterfaceSchema"> & { + /** + * @generated from field: camino.SymbolRef id = 1; + */ + id?: SymbolRef | undefined; + + /** + * @generated from field: uint32 version = 2; + */ + version: number; + + /** + * @generated from field: repeated camino.FieldSchema fields = 3; + */ + fields: FieldSchema[]; + + /** + * @generated from field: string source_file = 4; + */ + sourceFile: string; + + /** + * @generated from field: string proto_message = 5; + */ + protoMessage: string; +}; + +/** + * Describes the message camino.InterfaceSchema. + * Use `create(InterfaceSchemaSchema)` to create a new message. + */ +export const InterfaceSchemaSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_camino_schema, 16); + /** * @generated from message camino.FieldOps */ @@ -352,7 +485,7 @@ export type FieldOps = Message<"camino.FieldOps"> & { * Use `create(FieldOpsSchema)` to create a new message. */ export const FieldOpsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_camino_schema, 13); + messageDesc(file_camino_schema, 17); /** * @generated from message camino.EdgeSchema @@ -399,7 +532,7 @@ export type EdgeSchema = Message<"camino.EdgeSchema"> & { * Use `create(EdgeSchemaSchema)` to create a new message. */ export const EdgeSchemaSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_camino_schema, 14); + messageDesc(file_camino_schema, 18); /** * @generated from message camino.MethodSchema @@ -421,7 +554,7 @@ export type MethodSchema = Message<"camino.MethodSchema"> & { * Use `create(MethodSchemaSchema)` to create a new message. */ export const MethodSchemaSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_camino_schema, 15); + messageDesc(file_camino_schema, 19); /** * @generated from message camino.MigrationSpec @@ -448,7 +581,7 @@ export type MigrationSpec = Message<"camino.MigrationSpec"> & { * Use `create(MigrationSpecSchema)` to create a new message. */ export const MigrationSpecSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_camino_schema, 16); + messageDesc(file_camino_schema, 20); /** * @generated from message camino.OperationSchema @@ -480,7 +613,7 @@ export type OperationSchema = Message<"camino.OperationSchema"> & { * Use `create(OperationSchemaSchema)` to create a new message. */ export const OperationSchemaSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_camino_schema, 17); + messageDesc(file_camino_schema, 21); /** * @generated from message camino.OperationServiceSchema @@ -507,7 +640,7 @@ export type OperationServiceSchema = Message<"camino.OperationServiceSchema"> & * Use `create(OperationServiceSchemaSchema)` to create a new message. */ export const OperationServiceSchemaSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_camino_schema, 18); + messageDesc(file_camino_schema, 22); /** * @generated from message camino.DocRefDeclaration @@ -539,7 +672,7 @@ export type DocRefDeclaration = Message<"camino.DocRefDeclaration"> & { * Use `create(DocRefDeclarationSchema)` to create a new message. */ export const DocRefDeclarationSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_camino_schema, 19); + messageDesc(file_camino_schema, 23); /** * @generated from enum camino.ConflictStrategy