/**
* A collection of graph properties in a schema.
*/
export declare class DataTypeCollection extends BaseCollection<DataType> {
private constructor();
/**
* Gets the schema that owns the collection.
*/
get schema(): GraphSchema;
/**
* Gets the number of properties in the collection.
*/
get size(): number;
/**
* Creates a subscription for a set of named events.
*/
subscribe(events: DataTypeCollectionEvents): EventSubscription;
/**
* Determines whether the collection contains the specified data type.
*/
has(type: DataTypeNameLike, packageQualifier?: string): boolean;
/**
* Determines whether the collection contains the specified data type.
*/
has(type: DataTypeNameLike | DataType): boolean;
/**
* Gets the data type with the specified id.
*/
get(name: DataTypeNameLike, packageQualifier?: string): DataType | undefined;
/**
* Gets the data type with the specified name. If one does not exist, a new
* data type is created.
*/
getOrCreate<V = any>(
name: DataTypeNameLike,
validator?: ((value: any) => value is V) | ((value: any) => boolean)
): DataType<V>;
/**
* Gets the data type with the specified name. If one does not exist, a new
* data type is created.
*/
getOrCreate<V = any>(
name: DataTypeNameLike,
packageQualifier?: string,
validator?: ((value: any) => value is V) | ((value: any) => boolean)
): DataType<V>;
/**
* Gets the data type for the provided class. If one does not exist, a new
* data type is created.
*/
getOrCreateClass<V = any>(ctor: new (...args: any) => V, packageQualifier?: string): DataType<V>;
/**
* Gets a data type that represents a union of multiple data types.
*/
union<A extends readonly DataType[]>(...dataTypes: A): DataType<A[number] extends DataType<infer T> ? T : never>;
/**
* Adds a data type to the collection.
*/
add(dataType: DataType): this;
/**
* Removes a data type from the collection.
*/
delete(dataType: DataType): boolean;
/**
* Removes a data type from the collection.
*/
delete(dataType: DataTypeNameLike, packageQualifier?: string): DataType | false;
/**
* Removes a data type from the collection.
*/
delete(dataType: DataType | DataTypeNameLike): DataType | boolean;
/**
* Removes all data types from the collection.
*/
clear(): void;
/**
* Gets the data types in the collection.
*/
values(): IterableIterator<DataType>;
/**
* Gets the data types in the collection.
*/
[Symbol.iterator](): IterableIterator<DataType>;
}