/**
 * @namespace Document
 * @description Full Feature
 */
import { ImbricateCommonQueryOriginActionsOutcome, ImbricateCommonQueryOriginActionsQuery, ImbricateOriginActionInput, ImbricateOriginActionOutcome } from "../../common/action";
import { ImbricatePropertyKey } from "../../property/definition";
import { ImbricatePropertiesDrafter } from "../../property/map";
import { DocumentAnnotationValue, DocumentAnnotations, DocumentEditRecord, ImbricateDocumentAuditOptions } from "../definition";
import { IMBRICATE_DOCUMENT_FEATURE } from "../feature";
import { IImbricateDocument } from "../interface";
import { ImbricateDocumentAddEditRecordsOutcome, ImbricateDocumentDeleteAnnotationOutcome, ImbricateDocumentGetEditRecordsOutcome, ImbricateDocumentGetPropertiesOutcome, ImbricateDocumentGetPropertyOutcome, ImbricateDocumentPutAnnotationOutcome, ImbricateDocumentPutPropertyOutcome } from "../outcome";
export declare abstract class ImbricateDocumentFullFeatureWithActionBase implements IImbricateDocument {
    abstract readonly uniqueIdentifier: string;
    abstract readonly documentVersion: string;
    abstract readonly annotations: DocumentAnnotations;
    readonly supportedFeatures: IMBRICATE_DOCUMENT_FEATURE[];
    abstract getProperties(): ImbricateDocumentGetPropertiesOutcome;
    abstract getProperty(key: ImbricatePropertyKey): ImbricateDocumentGetPropertyOutcome;
    abstract mergeProperties(propertiesDrafter: ImbricatePropertiesDrafter, auditOptions?: ImbricateDocumentAuditOptions): Promise<ImbricateDocumentPutPropertyOutcome>;
    abstract replaceProperties(propertiesDrafter: ImbricatePropertiesDrafter, auditOptions?: ImbricateDocumentAuditOptions): Promise<ImbricateDocumentPutPropertyOutcome>;
    abstract putAnnotation(namespace: string, identifier: string, value: DocumentAnnotationValue, auditOptions?: ImbricateDocumentAuditOptions): Promise<ImbricateDocumentPutAnnotationOutcome>;
    abstract deleteAnnotation(namespace: string, identifier: string, auditOptions?: ImbricateDocumentAuditOptions): Promise<ImbricateDocumentDeleteAnnotationOutcome>;
    abstract addEditRecords(records: DocumentEditRecord[]): Promise<ImbricateDocumentAddEditRecordsOutcome>;
    abstract getEditRecords(): Promise<ImbricateDocumentGetEditRecordsOutcome>;
    abstract queryOriginActions(query: ImbricateCommonQueryOriginActionsQuery): PromiseLike<ImbricateCommonQueryOriginActionsOutcome>;
    abstract executeOriginAction(input: ImbricateOriginActionInput): Promise<ImbricateOriginActionOutcome>;
}
