{{>header}}

import { Express } from 'express'
import { Api } from '../../models'

export interface {{className name}}Api {
	{{#each operations}}
	{{identifier name}}: ({{#each parameters}}{{identifier name}}: {{{nativeType}}}{{#unless required}} | undefined{{/unless}}{{#hasMore}}, {{/hasMore}}{{/each}}{{!--
	--}}{{#if requestBody.nativeType}}{{#if parameters}}, {{/if}}{{identifier requestBody.name}}: {{{requestBody.nativeType}}}{{#unless requestBody.required}} | undefined{{/unless}}{{/if}}{{!--
	--}}{{#if securityRequirements}}{{#or requestBody parameters}}, {{/or}}__user: any{{/if}}{{!--
	--}}) => Promise<{{className name}}Response>
	{{/each}}
}

{{#each operations}}
export type {{className name}}Response = {{!--
--}}{{#each responses}}{{className (concat ../name '_' code)}}Response{{#hasMore}} | {{/hasMore}}{{/each}}

{{#each responses}}
export interface {{className (concat ../name '_' code)}}Response {
	{{#unless isCatchAll}}
	status: {{code}}
	{{else}}
	/* Catch-all response */
	status: '{{code}}'
	actualStatus: number
	{{/unless}}
	{{#if defaultContent.mediaType.wildcard}}
	mediaType: {{{mediaType defaultContent.mediaType}}}
	{{/if}}
	{{#if defaultContent.nativeType}}
	body: {{{defaultContent.nativeType}}}
	{{else}}
	body?: never
	{{/if}}
	{{#if headers}}
	headers: {
		{{#each headers}}
		{{{stringLiteral name}}}: {{{nativeType}}}
		{{/each}}
	}
	{{else}}
	headers?: never
	{{/if}}
}

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