import { Result } from "../shared/core/Result";
import AdtException from "../shared/exceptions/adtException";
export type ObjectActivate = {
    messages?: ObjectMessages;
};
export type ObjectMessage = {
    shortText: string;
    type: string;
    pos: string;
    quickFix: boolean;
    sourceUri: string;
};
export type ObjectMessages = ObjectMessage[];
export type ObjectCheckRun = {
    statusText: string;
    status: string;
    triggeringUri: string;
    messagesList: ObjectMessages;
};
export type ArtifactCheckRun = {
    sourceUri: string;
    artifactContent: string;
};
export type ArtifactsCheckRun = ArtifactCheckRun[];
export type ObjectLock = {
    lockHandle: string;
    corrnr: string;
    corrtext: string;
    isLocal: boolean;
    isLinkUp: boolean;
    modificationSupport: string;
    linkUpMode: string;
    corrLocks: string;
    corrContents: string;
};
export type BlockInfoElement = {
    block?: string;
    startPos: string;
    endPos: string;
};
export type BlockInfoElements = BlockInfoElement[];
export type StructureElement = {
    name: string;
    type: string;
    typeDesc: string;
    visibility?: string;
    sourceUri: string;
    isEventHandlerMethod: boolean;
    isConstructor: boolean;
    isRedefinition: boolean;
    isReadOnly: boolean;
    isConstant: boolean;
    blockInfo: BlockInfoElements;
};
export type StructureElements = StructureElement[];
export type ObjectStructure = {
    name: string;
    type: string;
    typeDesc: string;
    structureElements: StructureElements;
};
export type ObjectElementInfoProperties = {
    visibility: string;
    kind: string;
    instantation: string;
    paramType: string;
    optional: boolean;
    byValue: boolean;
    preferrred: boolean;
    level: string;
};
export type ElementDocumentation = {
    type: string;
    text: string;
    rel: string;
};
export type ElementDocumentations = ElementDocumentation[];
export type ElementInfoDetail = {
    name: string;
    type: string;
    documentation: ElementDocumentations;
    properties?: ObjectElementInfoProperties;
};
export type ElementInfoDetails = ElementInfoDetail[];
export type ObjectElementInfo = {
    name: string;
    type: string;
    documentation: ElementDocumentations;
    properties?: ObjectElementInfoProperties;
    elementInfoDetail?: ElementInfoDetails;
};
export type ResultObjectStructure = Result<ObjectStructure> | Result<AdtException>;
export type ResultObjectCheck = Result<ObjectCheckRun> | Result<AdtException>;
export type ResultObjectLock = Result<ObjectLock> | Result<AdtException>;
export type ResultObjectUnlock = Result<void> | Result<AdtException>;
export type ResultObjectActivate = Result<ObjectActivate> | Result<AdtException>;
export type ResultObjectElementInfo = Result<ObjectElementInfo> | Result<AdtException>;
//# sourceMappingURL=abapObjectsTypes.d.ts.map