export interface PiElement {
    piId(): string;
    piLanguageConcept(): string;
    piContainer(): PiContainerDescriptor;
    piIsModel(): boolean;
    piIsExpression(): boolean;
    piIsBinaryExpression(): boolean;
}
export interface PiNamedElement extends PiElement {
    name: string;
}
export interface PiModel extends PiNamedElement {
    findUnit(name: string, metatype?: string): PiNamedElement;
    replaceUnit(oldUnit: PiNamedElement, newUnit: PiNamedElement): boolean;
    addUnit(newUnit: PiNamedElement): boolean;
    removeUnit(oldUnit: PiNamedElement): boolean;
    newUnit(typename: string): PiNamedElement;
    getUnits(): PiNamedElement[];
}
export interface PiExpression extends PiElement {
}
export interface PiBinaryExpression extends PiExpression {
    piLeft(): PiExpression;
    piSetLeft(left: PiExpression): void;
    piRight(): PiExpression;
    piSetRight(right: PiExpression): void;
    piPriority(): number;
}
export interface PiContainerDescriptor {
    container: PiElement;
    propertyName: string;
    propertyIndex?: number;
}
export declare function isPiModel(element: PiElement): element is PiModel;
export declare function isPiExpression(element: PiElement): element is PiExpression;
export declare function isPiBinaryExpression(element: PiElement): element is PiBinaryExpression;
//# sourceMappingURL=PiModel.d.ts.map