/* eslint-disable @typescript-eslint/no-namespace */
/* eslint-disable no-redeclare */
/* eslint-disable @typescript-eslint/no-unused-vars */
/* eslint-disable import/order */

export { SpruceSchemas } from '@sprucelabs/spruce-core-schemas'

{{#if (hasNonCoreSchemaTemplateItems schemaTemplateItems)}}
import { default as SchemaEntity } from '@sprucelabs/schema'
{{/if}}


{{#if (hasNonCoreSchemaTemplateItems schemaTemplateItems)}}

{{#each imports}}
import * as {{importAs}} from '{{package}}'
{{/each}}

{{#each schemaImports}}
{{{this}}}
{{/each}}

declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schemas.types' {

	{{#each schemaTemplateItems}}

	namespace {{../globalSchemaNamespace}}.{{namespace}}{{#if (isDefined schema.version)}}.{{schema.version}}{{/if}} {

		{{#if schema.description}}/** {{schema.description}} */{{/if}}
		interface {{namePascal}}{{{schema.typeSuffix}}} {
			{{> schemaValues schema=schema renderAs="type" }}
		}

		interface {{namePascal}}Schema extends SpruceSchema.Schema {
			{{> schemaBody namespace=namespace schema=schema renderAs="type" }}
		}

		interface {{namePascal}}Entity extends SchemaEntity<{{../globalSchemaNamespace}}.{{namespace}}{{#if (isDefined schema.version)}}.{{schema.version}}{{/if}}.{{namePascal}}Schema> {}

	}

	{{/each}}
}
{{/if}}
