import { UAttribute } from "./attribute";
import { UFeature } from "./feature";
import { UModel } from "./model";
export declare class UModule {
    private _name;
    private _features;
    private _models;
    private _attributes;
    constructor(name: string);
    $name(): string;
    $features(features?: (UFeature | string)[]): UFeature[];
    $models(models?: (UModel | string)[]): UModel[];
    $attributes(): UAttribute<any>[];
    $attribute<Type>(attribute: UAttribute<Type> | string): UAttribute<any> | null;
    $attributeValue(name: string): any;
    $where(clause: (module: UFeature) => boolean): UFeature[];
    attributes(attributes: UAttribute<any>[]): this;
    models(models: UModel[]): this;
    features(features: UFeature[]): this;
    remove(features: UFeature[]): this;
    removeAttributes(attributes: UAttribute<any>[]): this;
    removeModels(models: UModel[]): this;
}
