import { Change, Deletion, Document, EdgeBehaviour, Insertion, JSON } from "./internals"; export interface AnnotationJSON { id?: string; type: string; start: number; end: number; attributes: JSON; } export type AttributesOf = AnnotationClass extends Annotation ? Attributes : never; export type ConcreteAnnotation> = T; export interface AnnotationConstructor { vendorPrefix: string; type: string; subdocuments: { [key: string]: typeof Document; }; edgeBehaviour: { leading: EdgeBehaviour; trailing: EdgeBehaviour; }; new (attributes: { id?: string; start: number; end: number; attributes?: Attributes; }): T; hydrate(attrs: { id?: string; start: number; end: number; attributes: JSON; }): T; } export declare abstract class Annotation { static vendorPrefix: string; static type: string; static subdocuments: { [key: string]: typeof Document; }; static edgeBehaviour: { leading: EdgeBehaviour; trailing: EdgeBehaviour; }; static hydrate(attrs: { id?: string; start: number; end: number; attributes: JSON; }): any; readonly type: string; readonly vendorPrefix: string; abstract get rank(): number; id: string; start: number; end: number; attributes: Attributes; constructor(attrs: { id?: string; start: number; end: number; attributes?: Attributes; }); getAnnotationConstructor>(this: T): AnnotationConstructor; isAlignedWith(annotation: Annotation): boolean; equals(annotationToCompare: Annotation): boolean; handleChange(change: Change): void; handleDeletion(change: Deletion): void; handleInsertion(change: Insertion): void; clone(): this; withStableIds(ids: Map): this; toJSON(): { id: string; type: string; start: number; end: number; attributes: any; }; } //# sourceMappingURL=annotation.d.ts.map