import * as Core from "@intelligentgraphics/ig.gfx.core";
export interface IMultiArticleAction {
    isActive: boolean;
    property: string | undefined;
    value: string | undefined;
    ghostProperty?: "Width" | "Depth" | "Height";
}
/** A package of Multi Articles. */
export declare class Package {
    /** The registry. */
    Registry: Core.IGXM.IRegistry;
    /** The definitions. */
    Definitions: Core.IGXM.IDefinitions;
    /** The instances. */
    Instances: Core.IGXM.IInstances;
    /** The back-routing. */
    Parents: Core.IGXM.IParents;
    /** The categories. */
    Categories: Core.IGXM.ICategories;
    /** The attachment points. */
    AttachPoints: Core.IGXM.IAttachPoints;
    /** The actions. */
    Actions: Core.IGXM.IActions;
    FilterBehaviour: Core.IGXM.IFilterBehaviour;
    private allMultiArticles;
    private descendants;
    /** The constructor */
    constructor(data: Core.IGXM.IData);
    /** Get the immediate property keys of the given type.
     * @param type A type.
     * @returns The list of properties.
     */
    getProperties(type: string): Array<string>;
    /**
     * Get the information that belongs to the property of the type or undefined if none exist.
     * @param type
     * @param property
     * @returns {IDefinitionInformation}
     */
    getPropertyInformation(type: string, property: string): Core.IGXM.IDefinitionInformation | undefined;
    /**
     * Gets all properties of the type that are available
     * @param type
     * @returns {Array}
     */
    accumulatedProperties(type: string): string[];
    /** Get the property values for the specified property.
     * @param type A type.
     * @param property A property key.
     * @returns List of collected property values, or null.
     */
    getPropertyValues(type: string, property: string): string[];
    /** Resolve the configuration to go to the next level.
     * @param type A type.
     * @param configuration A configuration state.
     * @param incomplete If set, ignore properties not set in configuration.
     * @returns List of matching types, or null.
     */
    resolveConfiguration(type: string, configuration: {
        [property: string]: string;
    }, incomplete: boolean): string[];
    /** Get the accumulated configuration state for the given type.
     * @param type Pseudo or real type.
     * @returns The accumulated configuration.
     */
    getConfiguration(type: string): {
        [property: string]: string;
    };
    /** Get the accumulated categories for the given type.
     * @param type Pseudo or real type.
     * @returns List of categories, each with a validity rule.
     */
    getCategories(type: string): {
        [category: string]: string;
    };
    /**
     * Check if the MA matches the configuration.
     * That is, if the MA implements all set values of the configuration the same way.
     * @param type
     * @param configuration
     * @returns {boolean}
     */
    matchesConfiguration(type: string, configuration: Record<string, string>): boolean;
    /**
     * Check if the MA matches the configuration, but remove own properties from the configuration first.
     * @param type
     * @param configuration
     * @returns {boolean}
     */
    matchesConfigExceptForOwnProperties(type: string, configuration: Record<string, string>): boolean;
    /** Get the accumulated attachment points for the given type.
     * @param type Pseudo or real type.
     * @returns List of attachment points.
     */
    getAttachPoints(type: string): Core.IGXD.AttachPoint[];
    getRootAncestor(type: string): string;
    /** Get the path of the passed type.
     * @param type Pseudo or real type.
     * @returns Path from top to down.
     */
    private getPath;
    isDescendant(descendant: string, type: string): boolean;
    /**
     * Gets all children of a Multi Article, that is all MA that have this as their parent.
     * @param type
     * @returns {string[]}
     */
    getChildren(type: string): string[];
    /**
     * Get all the descendants, i.e.
     * @param type
     */
    getDescendants(type: string): string[];
    /**
     * Get all multi articles, without concrete articles
     * @returns {T[]}
     */
    getAllMultiArticles(): string[];
    /**
     * Get all concrete articles
     * @returns {string[]}
     */
    getAllConcreteArticles(): Array<string>;
    isConcreteArticle(type: string): boolean;
    /**
     * Get all root artilces.
     * @returns {string[]}
     */
    getRootMultiArticles(): Array<string>;
    getActions(type: string): Core.IGXM.ISingleAction[];
}
