export declare const protobufPackage = "materi.v1.shared"; /** Status enumeration (used across multiple events) */ export declare enum Status { STATUS_UNSPECIFIED = "STATUS_UNSPECIFIED", ACTIVE = "ACTIVE", INACTIVE = "INACTIVE", PENDING = "PENDING", ARCHIVED = "ARCHIVED", DELETED = "DELETED", UNRECOGNIZED = "UNRECOGNIZED" } export declare function statusFromJSON(object: any): Status; export declare function statusToJSON(object: Status): string; /** SourceService enumeration (all 7 services that publish events) */ export declare enum SourceService { SOURCE_SERVICE_UNSPECIFIED = "SOURCE_SERVICE_UNSPECIFIED", SHIELD = "SHIELD", API = "API", RELAY = "RELAY", ARIA = "ARIA", FOLIO = "FOLIO", PRINTERY = "PRINTERY", ARENA = "ARENA", UNRECOGNIZED = "UNRECOGNIZED" } export declare function sourceServiceFromJSON(object: any): SourceService; export declare function sourceServiceToJSON(object: SourceService): string; /** PermissionLevel enumeration (document permissions) */ export declare enum PermissionLevel { PERMISSION_LEVEL_UNSPECIFIED = "PERMISSION_LEVEL_UNSPECIFIED", PERMISSION_LEVEL_NONE = "PERMISSION_LEVEL_NONE", PERMISSION_LEVEL_READ = "PERMISSION_LEVEL_READ", PERMISSION_LEVEL_WRITE = "PERMISSION_LEVEL_WRITE", PERMISSION_LEVEL_ADMIN = "PERMISSION_LEVEL_ADMIN", UNRECOGNIZED = "UNRECOGNIZED" } export declare function permissionLevelFromJSON(object: any): PermissionLevel; export declare function permissionLevelToJSON(object: PermissionLevel): string; /** OperationType enumeration (collaborative editing operations) */ export declare enum OperationType { OPERATION_TYPE_UNSPECIFIED = "OPERATION_TYPE_UNSPECIFIED", OPERATION_TYPE_INSERT = "OPERATION_TYPE_INSERT", OPERATION_TYPE_DELETE = "OPERATION_TYPE_DELETE", OPERATION_TYPE_RETAIN = "OPERATION_TYPE_RETAIN", OPERATION_TYPE_FORMAT = "OPERATION_TYPE_FORMAT", UNRECOGNIZED = "UNRECOGNIZED" } export declare function operationTypeFromJSON(object: any): OperationType; export declare function operationTypeToJSON(object: OperationType): string; /** * EventMetadata enriches event messages with operational documentation * Used for: introspection, schema versioning, consumer routing, retention policies */ export interface EventMetadata { /** Canonical event type identifier (e.g., "user.created", "document.shared") */ eventType: string; /** Aggregate this event concerns (e.g., "user", "document", "collaboration_session") */ aggregateType: string; /** Redis Stream name where this event is published (e.g., "materi:events:user") */ streamName: string; /** Services that consume this event type */ consumers: string[]; /** Event retention period in days (0 = indefinite) */ retentionDays: number; /** Ordering guarantee: "unordered", "causally_ordered", "total_order" */ ordering: string; /** Deprecation notes (empty if active) */ deprecationNotes: string[]; /** Date this event type was first published (RFC3339) */ firstPublished: string; /** Estimated frequency at scale (events/second) */ frequency: string; /** Critical for auditing/compliance? */ isAuditable: boolean; /** Can this event be replayed safely? */ isReplayable: boolean; } /** AggregateMetadata documents aggregate types (entities your events concern) */ export interface AggregateMetadata { /** Aggregate type (e.g., "user", "document", "collaboration_session") */ aggregateType: string; /** Description of this aggregate */ description: string; /** Events that mutate this aggregate */ eventTypes: string[]; /** Partition key for stream sharding (usually aggregate_id) */ partitionKey: string; } /** SchemaMetadata documents the entire materi.proto schema */ export interface SchemaMetadata { /** Schema version (semver) */ version: string; /** Last update timestamp (RFC3339) */ updatedAt: string; /** Total number of event types defined */ totalEventTypes: number; /** Number of independent event streams */ totalStreams: number; /** High-level description */ description: string; /** Contact for schema questions */ maintainerEmail: string; /** Link to documentation */ documentationUrl: string; } export declare const EventMetadata: MessageFns; export declare const AggregateMetadata: MessageFns; export declare const SchemaMetadata: MessageFns; type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; export type DeepPartial = T extends Builtin ? T : T extends globalThis.Array ? globalThis.Array> : T extends ReadonlyArray ? ReadonlyArray> : T extends { $case: string; } ? { [K in keyof Omit]?: DeepPartial; } & { $case: T["$case"]; } : T extends {} ? { [K in keyof T]?: DeepPartial; } : Partial; type KeysOfUnion = T extends T ? keyof T : never; export type Exact = P extends Builtin ? P : P & { [K in keyof P]: Exact; } & { [K in Exclude>]: never; }; export interface MessageFns { fromJSON(object: any): T; toJSON(message: T): unknown; create, I>>(base?: I): T; fromPartial, I>>(object: I): T; } export {}; //# sourceMappingURL=v1.d.ts.map