/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
/* prettier-ignore */

{{#if imports}}
{{#each imports}}
import { {{{this}}} } from '../models/{{{this}}}';
{{/each}}
{{/if}}
import { ApiError, catchGenericError } from '../core/ApiError';
import { request as __request } from '../core/request';
import { OpenAPI } from '../core/OpenAPI';

export class {{{name}}} {

    {{#each operations}}
    /**
    {{#if deprecated}}
     * @deprecated
    {{/if}}
    {{#if summary}}
     * {{{summary}}}
    {{/if}}
    {{#if description}}
     * {{{description}}}
    {{/if}}
    {{#if parameters}}
    {{#each parameters}}
     * @param {{{name}}} {{{description}}}
    {{/each}}
    {{/if}}
    {{#each results}}
     * @result {{{type}}} {{{description}}}
    {{/each}}
     * @throws ApiError
     */
    public static async {{{name}}}({{>parameters}}): Promise<{{>result}}> {

        const result = await __request({
            method: '{{{method}}}',
            path: `{{{path}}}`,
            {{#if parametersCookie~}}
            cookies: {
                {{#each parametersCookie}}
                '{{{prop}}}': {{{name}}},
                {{/each}}
            },
            {{/if}}
            {{#if parametersHeader~}}
            headers: {
                {{#each parametersHeader}}
                '{{{prop}}}': {{{name}}},
                {{/each}}
            },
            {{/if}}
            {{#if parametersQuery~}}
            query: {
                {{#each parametersQuery}}
                '{{{prop}}}': {{{name}}},
                {{/each}}
            },
            {{/if}}
            {{#if parametersForm~}}
            formData: {
                {{#each parametersForm}}
                '{{{prop}}}': {{{name}}},
                {{/each}}
            },
            {{/if}}
            {{#if parametersBody~}}
            body: {{{parametersBody.name}}},
            {{/if}}
        });
        {{#if errors}}

        if (!result.ok) {
            switch (result.status) {
            {{#each errors}}
                case {{{code}}}: throw new ApiError(result, `{{{description}}}`);
            {{/each}}
            }
        }
        {{/if}}

        catchGenericError(result);

        return result.body;
    }

    {{/each}}
}
