/**
* A Label holds the uniquely identifying name of a type.
*
* It consists of an optional 'scope', and a 'name', represented "scope:name".
* The scope is used only used to distinguish between role-types of the same name declared in different relation types.
*/
export declare class Label {
private readonly _scope;
private readonly _name;
/** @ignore */
constructor(scope: string, label: string);
/** Returns the (possibly null) scope part of the label. */
get scope(): string;
/** Returns the name part of the label. */
get name(): string;
/** Returns the string representation of the scoped name. */
get scopedName(): string;
/** Printable string */
toString(): string;
/** Compares this label to that label.
* @param that - The label to compare to.
*/
equals(that: Label): boolean;
}
export declare namespace Label {
/** Creates an unscoped scoped label from the name
* @param name - The type name.
*/
function of(name: string): Label;
/** Creates an unscoped scoped label from the name
* @param scope - The scope part of the type name.
* @param name - The type name.
*/
function scoped(scope: string, name: string): Label;
}