// Shared record definitions, repeated explicitly in independently locked resources. external atom Document id "atom:reader:document"; external atom Highlight id "atom:reader:highlight"; external atom Comment id "atom:reader:comment"; type SourceRange = record { sourceRevision: string; start: int32; end: int32; }; type CommentContent = record { text: string; tags: list; }; type DocumentSeed = record { document: record { sourceRevision: string; content: string; }; metadata: record { label: string; }; }; interface DocumentFactory id "interface:reader:document-factory" revision "interface:reader:document-factory@1" { static operation create id "document:create" : DocumentSeed -> atom-ref { call id "document:create:call" execution transaction; } }