// ************
// Types
// ************

import '@dev.hiconic/gm_root-model';
import '@dev.hiconic/devrock.cicd_step-api-model';
import '@dev.hiconic/gm_reason-model';
import '@dev.hiconic/gm_essential-reason-model';
import '@dev.hiconic/gm_gm-core-api';

import { T } from '@dev.hiconic/hc-js-base';

export declare namespace meta {
	const groupId: string;
	const artifactId: string;
	const version: string;
}

export import GitHubLabelAttachmentFailed = T.devrock.cicd.github.notification.model.api.reason.GitHubLabelAttachmentFailed;
export import GitHubNotificationConfigurationError = T.devrock.cicd.github.notification.model.api.reason.GitHubNotificationConfigurationError;
export import GitHubNotificationConnection = T.devrock.cicd.github.notification.model.api.GitHubNotificationConnection;
export import GitHubNotificationMapping = T.devrock.cicd.github.notification.model.api.GitHubNotificationMapping;
export import RequestLabelMapping = T.devrock.cicd.github.notification.model.api.RequestLabelMapping;

declare module '@dev.hiconic/hc-js-base' {

	namespace T.devrock.cicd.github.notification.model.api {

		const GitHubNotificationConnection: hc.reflection.EntityType<GitHubNotificationConnection>;
		interface GitHubNotificationConnection extends T.com.braintribe.model.generic.GenericEntity {
			gitHubToken: string;
			issue: string;
			organization: string;
			repository: string;
		}

		const GitHubNotificationMapping: hc.reflection.EntityType<GitHubNotificationMapping>;
		interface GitHubNotificationMapping extends T.com.braintribe.model.generic.GenericEntity {
			ensureLabels: boolean;
			requestLabelMappings: list<RequestLabelMapping>;
		}

		const RequestLabelMapping: hc.reflection.EntityType<RequestLabelMapping>;
		interface RequestLabelMapping extends T.com.braintribe.model.generic.GenericEntity {
			color: string;
			description: string;
			label: string;
			request: string;
		}

	}

	namespace T.devrock.cicd.github.notification.model.api.reason {

		const GitHubLabelAttachmentFailed: hc.reflection.EntityType<GitHubLabelAttachmentFailed>;
		interface GitHubLabelAttachmentFailed extends T.com.braintribe.gm.model.reason.essential.ConfigurationError {
		}

		const GitHubNotificationConfigurationError: hc.reflection.EntityType<GitHubNotificationConfigurationError>;
		interface GitHubNotificationConfigurationError extends T.com.braintribe.gm.model.reason.essential.ConfigurationError {
		}

	}

}
