export type Identifier = Identifier.Interface | Identifier.Struct | Identifier.UserDefinedValueType; export declare namespace Identifier { interface Properties { name: string; scope?: string; } type Class = Struct.Class | Interface.Class | UserDefinedValueType.Class; interface Interface { class: Interface.Class; name: string; container?: never; } namespace Interface { type Class = "interface"; const create: ({ name }: Omit) => Identifier.Interface; type Reference = `${Identifier["class"]}--${Identifier["name"]}`; } interface Struct { class: Struct.Class; name: string; container?: Interface; } namespace Struct { type Class = "struct"; const create: ({ name, scope }: Properties) => Identifier.Struct; } interface UserDefinedValueType { class: UserDefinedValueType.Class; name: string; container?: Interface; } namespace UserDefinedValueType { type Class = "udvt"; const create: ({ name, scope }: Properties) => Identifier.UserDefinedValueType; } type Reference = `${Identifier["class"]}--${Identifier["name"]}` | `${Identifier["class"]}--${Identifier["name"]}--${Exclude["name"]}`; const toReference: (identifier: Identifier) => Reference; } //# sourceMappingURL=identifier.d.ts.map