import interface ReadingOwner; import interface ReadingReader; external interface ReadingJob revision "interface:reading:job@1"; external atom ReadingDocumentObject id "atom:reading:document"; external atom ReadingJobObject id "atom:reading:job"; external atom ReadingFeatureObject id "atom:reading:feature"; type DocumentData = record {title:string;text:string;sourceRevision:string;source:string;url:string;attribution:string;}; interface ReadingDocument id "interface:reading:document" revision "interface:reading:document@1" { queryable relation reader id "reading:document:reader" : optional-one interface ReadingReader {resolve id "reading:document:reader:resolve" execution snapshot;connect id "reading:document:reader:connect" execution transaction;} queryable relation canonical id "reading:document:canonical" : optional-one interface ReadingDocument {resolve id "reading:document:canonical:resolve" execution snapshot;} queryable value adaptation id "reading:document:adaptation" : string {get id "reading:document:adaptation:get" execution snapshot;} operation prepareVariant id "reading:document:prepare-adaptation" : record {createdAt:string;retry:bool;} -> optional> {call id "reading:document:prepare-adaptation:call" execution transaction;} operation applyVariant id "reading:document:apply-adaptation" : record {sourceRevision:string;start:uint32;end:uint32;text:string;} -> unit {call id "reading:document:apply-adaptation:call" execution transaction;} queryable value archived id "reading:document:archived" : bool {get id "reading:document:archived:get" execution snapshot;set id "reading:document:archived:set" execution transaction;} queryable value data id "reading:document:data" : DocumentData {get id "reading:document:data:get" execution snapshot;} queryable relation library id "reading:document:library" : exactly-one interface ReadingOwner {resolve id "reading:document:library:resolve" execution snapshot;} queryable relation jobs id "reading:document:jobs" : many-unique interface ReadingJob {resolve id "reading:document:jobs:resolve" execution snapshot;} queryable relation results id "reading:document:results" : many interface ReadingJob keyed "string" {resolve id "reading:document:results:resolve" execution snapshot;} operation recordResult id "reading:document:record-result" : interface-ref -> unit {call id "reading:document:record-result:call" execution transaction;} operation plan id "reading:document:plan" : record {feature:atom-ref;start:uint32;end:uint32;visibleStart:uint32;visibleEnd:uint32;kind:string;} -> list {call id "reading:document:plan:call" execution snapshot;} operation generate id "reading:document:generate" : record {feature:atom-ref;start:uint32;end:uint32;createdAt:string;retry:bool;} -> atom-ref {call id "reading:document:generate:call" execution transaction;} operation rewrite id "reading:document:rewrite" : record {difficulty:string;createdAt:string;} -> atom-ref {call id "reading:document:rewrite:call" execution transaction;} operation remove id "reading:document:remove" : unit -> unit {call id "reading:document:remove:call" execution transaction;} }