import { ObjectAccessor } from "./ObjectAccessor.js";
import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor.js";
import { IfcTypeObjectAccessor } from "./IfcTypeObjectAccessor.js";
import { IfcPropertyAccessor } from "./IfcPropertyAccessor.js";
import { ExpressionValue } from "../value/ExpressionValue.js";
import { IfcPropertySetAccessor } from "./IfcPropertySetAccessor.js";
export declare abstract class IfcElementAccessor extends IfcRootObjectAccessor {
    getNestedObjectAccessor(name: string): ObjectAccessor | undefined;
    getAttribute(name: string): ExpressionValue | undefined;
    abstract getIfcClass(): string;
    listNestedObjects(): Array<string>;
    listAttributes(): Array<string>;
    abstract listIfcPropertyNames(): Array<string>;
    abstract listIfcPropertySetNames(): Array<string>;
    abstract getIfcTypeObjectAccessor(): IfcTypeObjectAccessor | undefined;
    abstract getIfcPropertyAccessor(propertyName: string): IfcPropertyAccessor | undefined;
    abstract getIfcPropertySetAccessor(name: string): IfcPropertySetAccessor | undefined;
}
export declare function isIfcElementAccessor(arg: any): arg is IfcElementAccessor;
