import { MergableObjectEventArgs } from '../../MergableSet';
import { MarkupProperty } from '../MarkupEntityTypes';
import { MarkupEntityBase } from './MarkupEntityBase';
import { MarkupSheet2D } from './MarkupSheet2D';
/**
 * Super class for markup entities in the markup API.
 */
export declare abstract class MarkupEntity extends MarkupEntityBase {
    private _sheet;
    private _enabled;
    /**
     * Do not use. Use {@link MarkupSheet2D.add} instead.
     * @hidden
     */
    constructor(id: string, _sheet: MarkupSheet2D, properties?: Map<string, MarkupProperty>);
    /** @inheritDoc */
    abstract clone(): MarkupEntityBase;
    /** @inheritDoc */
    abstract isEqual(o: MarkupEntityBase): boolean;
    /**
     * Copy the entity to another markup sheet.
     * @param sheet Markup sheet to copy the entity to.
     * @returns The new markup entity.
     */
    abstract copyTo(sheet: MarkupSheet2D): MarkupEntity;
    /** Returns the markup sheet that the entity is attached to */
    get sheet(): MarkupSheet2D;
    /** @inheritDoc */
    get isEnabled(): boolean;
    /** @inheritDoc */
    set isEnabled(b: boolean);
    /** @inheritDoc */
    onAdded(o: MergableObjectEventArgs<MarkupEntity>): void;
    /** @inheritDoc */
    onUpdate(o: MergableObjectEventArgs<MarkupEntity>): void;
    /** @inheritDoc */
    onDelete(o: MergableObjectEventArgs<MarkupEntity>): void;
    private detectParentSheetConflicts;
    private assignParentSheet;
    /** @inheritDoc */
    markAsDeleted(): boolean;
    /** @inheritDoc */
    markAsUpdated(): boolean;
}
export interface MarkupEntityConstructorArgs {
    id: string;
    sheet: MarkupSheet2D;
    properties?: Map<string, MarkupProperty>;
}
//# sourceMappingURL=MarkupEntity.d.ts.map