import { CoreCollectorInterface } from "../CoreCollectorInterface";
import { RcsbFvRowConfigInterface } from "@rcsb/rcsb-saguaro";
import { AnnotationFeatures, Feature, QueryAnnotationsArgs, Source } from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/Types/Borrego/GqlTypes";
import { AnnotationTrack, FeaturePositionGaps } from "./AnnotationTrack";
import { ExternalTrackBuilderInterface } from "../FeatureTools/ExternalTrackBuilderInterface";
export declare type IncreaseAnnotationValueType = (feature: {
    type: string;
    targetId: string;
    positionKey: string;
    d: Feature;
    p: FeaturePositionGaps;
}) => number;
export interface AnnotationProcessingInterface {
    getAnnotationValue?: IncreaseAnnotationValueType;
    computeAnnotationValue?: (annotationTracks: Map<string, AnnotationTrack>) => void;
    addTrackElementCallback?: IncreaseAnnotationValueType;
}
interface CommonAnnotationInterface {
    annotationProcessing?: AnnotationProcessingInterface;
    externalAnnotationTrackBuilder?: ExternalTrackBuilderInterface;
}
export interface CollectAnnotationsInterface extends QueryAnnotationsArgs, CommonAnnotationInterface {
    addTargetInTitle?: Set<Source>;
    collectSwissModel?: boolean;
}
export declare type AnnotationCollectConfig = Partial<CollectAnnotationsInterface>;
export interface AnnotationCollectorInterface extends CoreCollectorInterface {
    collect(requestConfig: CollectAnnotationsInterface): Promise<Array<RcsbFvRowConfigInterface>>;
    getAnnotationConfigData(): Promise<Array<RcsbFvRowConfigInterface>>;
    getAnnotationFeatures(): Promise<Array<AnnotationFeatures>>;
    getFeatures(): Promise<Array<Feature>>;
}
export {};
