namespace _heimdall.notification_kinds
{
	
	/**
	 */
	export type type_notification_kind = {
		parameters_schema : (
			()
			=>
			_heimdall.helpers.json_schema.type_schema
		);
		normalize_order_node : (
			(node : any)
			=>
			any
		);
		notify : (
			(
				parameters : any,
				name : string,
				data : type_check,
				state : type_item_state,
				info : any
			)
			=>
			Promise<void>
		);
	};
	
	
	/**
	 */
	var _implementations : Record<string, type_notification_kind> = {};
	
	
	/**
	 */
	export function register_implementation(
		name : string,
		notification_kind : type_notification_kind
	) : void
	{
		_implementations[name] = notification_kind;
	}
	
	
	/**
	 */
	export function get_implementation(
		name : string
	) : type_notification_kind
	{
		return _implementations[name];
	}
	
	
	/**
	 */
	export function get_implementations(
	) : Record<string, type_notification_kind>
	{
		return _implementations;
	}
	
}
