import * as IGXD from "./IGXD";
/**
 * Used to be IGXM interface
 *
 * @export
 * @interface IData
 */
export interface IData {
    Registry: IRegistry;
    Definitions: IDefinitions;
    Instances: IInstances;
    Parents: IParents;
    Categories: ICategories;
    AttachPoints: IAttachPoints;
    Resources: IResource;
    Actions: IActions;
    FilterBehaviour: IFilterBehaviour;
}
/** Package registry information. */
export interface IRegistry {
    Catalog: string;
    CatalogPackage: string;
    CatalogRootPath: string;
}
export declare enum EDefinitionType {
    String = 0,
    Numeric = 1
}
export declare enum EDefinitionUnit {
    m = 100,
    cm = 101,
    mm = 102
}
export interface IDefinitionInformation {
    Type: EDefinitionType;
    Unit?: EDefinitionUnit | string;
    Decimals?: number;
}
export interface IDefinitions {
    [multiArticle: string]: Array<string> | {
        [definition: string]: IDefinitionInformation;
    };
}
export interface IInstances {
    [multiArticle: string]: {
        [instance: string]: {
            [property: string]: string;
        };
    };
}
export interface IParents {
    [multiArticle: string]: string;
}
export interface ICategories {
    [multiArticle: string]: {
        [category: string]: string;
    };
}
export interface IAttachPoints {
    [multiArticle: string]: Array<IGXD.AttachPoint>;
}
export declare type TCaption = string | Array<string> | {
    [langid: string]: string | Array<string>;
};
export interface IResource {
    [multiArticle: string]: {
        Caption?: TCaption;
        Image?: string;
    };
}
export interface IActions {
    [multiArticle: string]: Array<ISingleAction>;
}
export interface ISingleAction {
    Mode: "ParentDependency" | "SpatialDependency" | "NeighborDependency";
    Rules: Array<IActionRule>;
}
export interface IActionRule {
    Condition?: string;
    Parameter: string;
    Value: string;
    GhostParameter?: "Width" | "Height" | "Depth";
}
export interface IFilterBehaviour {
    [concreteArticleId: string]: string;
}
