import { SequenceAnnotations, Features, QueryAnnotationsArgs, QueryGroup_AnnotationsArgs } from "@rcsb/rcsb-api-tools/lib/RcsbGraphQL/Types/Borrego/GqlTypes"; import { FeaturePositionGaps } from "../../RcsbFvWeb/RcsbFvFactories/RcsbFvBlockFactory/BlockManager/AnnotationTrackManager"; import { ExternalTrackBuilderInterface } from "../FeatureTools/ExternalTrackBuilderInterface"; import { PolymerEntityInstanceInterface } from "../DataCollectors/PolymerEntityInstancesCollector"; import { TrackManagerInterface } from "../../RcsbFvWeb/RcsbFvFactories/RcsbFvBlockFactory/BlockManager/TrackManagerInterface"; export type IncreaseAnnotationValueType = (feature: { type: string; targetId: string; positionKey: string; d: Features; p: FeaturePositionGaps; }) => number; export interface AnnotationProcessingInterface { getAnnotationValue?: IncreaseAnnotationValueType; computeAnnotationValue?: (annotationTracks: Map) => void; addTrackElementCallback?: IncreaseAnnotationValueType; } export interface CommonAnnotationInterface { rcsbContext?: Partial; annotationProcessing?: AnnotationProcessingInterface; externalTrackBuilder?: ExternalTrackBuilderInterface; annotationGenerator?(annotations: Array): Promise>; annotationFilter?(annotations: Array): Promise>; titleSuffix?(ann: SequenceAnnotations, d: Features): Promise; trackTitle?(ann: SequenceAnnotations, d: Features): Promise; typeSuffix?(ann: SequenceAnnotations, d: Features): Promise; } export interface AnnotationsCollectConfig extends QueryAnnotationsArgs, CommonAnnotationInterface { } export interface CollectGroupAnnotationsInterface extends QueryGroup_AnnotationsArgs, CommonAnnotationInterface { isSummary: boolean; } export type AnnotationRequestContext = Partial; export interface AnnotationCollectorInterface { collect(requestConfig: AnnotationsCollectConfig | CollectGroupAnnotationsInterface): Promise>; getAnnotationFeatures(): Promise>; getFeatures(): Promise>; }