/* tslint:disable */
/* eslint-disable */
/**
 * Printer
 * Сервис печати шаблонов
 *
 * The version of the OpenAPI document: 1.7.11-SNAPSHOT (222)
 * Contact: akurako@inpromconsult.ru
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
// @ts-nocheck


import { Configuration } from './configuration';
import globalAxios, { AxiosPromise, AxiosInstance } from 'axios';
// Some imports not used depending on template conditions
// @ts-ignore
import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from './common';
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from './base';


/**
 *
 * @export
 * @interface Response
 */
export interface Response {
    /**
     * true - если операция завершилась успешно
     * @type {boolean}
     * @memberof Response
     */
    success: boolean;
    /**
     * Сообщение об ошибке или успешном выполнении
     * @type {string}
     * @memberof Response
     */
    message: string;
    /**
     * Детали ошибок
     * @type {Array<string>}
     * @memberof Response
     */
    details?: Array<string>;
}
/**
 *
 * @export
 * @interface StatusResponse
 */
export interface StatusResponse {
    /**
     *
     * @type {boolean}
     * @memberof StatusResponse
     */
    success?: boolean;
    /**
     *
     * @type {string}
     * @memberof StatusResponse
     */
    message?: string;
}
/**
 *
 * @export
 * @interface UserContext
 */
export interface UserContext {
    /**
     *
     * @type {string}
     * @memberof UserContext
     */
    userId?: string;
    /**
     *
     * @type {string}
     * @memberof UserContext
     */
    traceId?: string;
    /**
     *
     * @type {string}
     * @memberof UserContext
     */
    domainId?: string;
    /**
     *
     * @type {string}
     * @memberof UserContext
     */
    wfmeta?: string;
    /**
     *
     * @type {string}
     * @memberof UserContext
     */
    sessionId?: string;
    /**
     *
     * @type {{ [key: string]: object; }}
     * @memberof UserContext
     */
    properties?: { [key: string]: object; };
    /**
     *
     * @type {Set<string>}
     * @memberof UserContext
     */
    permissions?: Set<string>;
}

/**
 * APIApi - axios parameter creator
 * @export
 */
export const APIApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Возвращает Swagger файл в формате YAML описывающий Rest API в формате Swagger (OpenAPI 3.0.1)
         * @summary Возвращает Swagger/OpenAPI файл
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getApi: async (options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/api`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;



            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * APIApi - functional programming interface
 * @export
 */
export const APIApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = APIApiAxiosParamCreator(configuration)
    return {
        /**
         * Возвращает Swagger файл в формате YAML описывающий Rest API в формате Swagger (OpenAPI 3.0.1)
         * @summary Возвращает Swagger/OpenAPI файл
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getApi(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getApi(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * APIApi - factory interface
 * @export
 */
export const APIApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = APIApiFp(configuration)
    return {
        /**
         * Возвращает Swagger файл в формате YAML описывающий Rest API в формате Swagger (OpenAPI 3.0.1)
         * @summary Возвращает Swagger/OpenAPI файл
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getApi(options?: any): AxiosPromise<void> {
            return localVarFp.getApi(options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * APIApi - object-oriented interface
 * @export
 * @class APIApi
 * @extends {BaseAPI}
 */
export class APIApi extends BaseAPI {
    /**
     * Возвращает Swagger файл в формате YAML описывающий Rest API в формате Swagger (OpenAPI 3.0.1)
     * @summary Возвращает Swagger/OpenAPI файл
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof APIApi
     */
    public getApi(options?: any) {
        return APIApiFp(this.configuration).getApi(options).then((request) => request(this.axios, this.basePath));
    }
}


/**
 * NormalizeApi - axios parameter creator
 * @export
 */
export const NormalizeApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Очищает плейсхолдеры в docx шаблоне от форматирования синхронно. Ворд может разбивать текст на отдельные блоки форматирования, ломая mustache. Метод вырезает все xml-теги между фигурными скобками, присваивая стиль всему плейсхолдеру, как у открывающейся скобки.
         * @summary Очищает плейсхолдеры в docx шаблоне от форматирования синхронно
         * @param {any} template Шаблон как файл
         * @param {object} parameters
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processSync: async (template: any, parameters: object, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'template' is not null or undefined
            assertParamExists('processSync', 'template', template)
            // verify required parameter 'parameters' is not null or undefined
            assertParamExists('processSync', 'parameters', parameters)
            const localVarPath = `/normalize`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)();

            // authentication printerAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "printerAuth", [], configuration)


            if (template !== undefined) {
                localVarFormParams.append('template', template as any);
            }

            if (parameters !== undefined) {
                localVarFormParams.append('parameters', new Blob([JSON.stringify(parameters)], { type: "application/json", }));
            }


            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * NormalizeApi - functional programming interface
 * @export
 */
export const NormalizeApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = NormalizeApiAxiosParamCreator(configuration)
    return {
        /**
         * Очищает плейсхолдеры в docx шаблоне от форматирования синхронно. Ворд может разбивать текст на отдельные блоки форматирования, ломая mustache. Метод вырезает все xml-теги между фигурными скобками, присваивая стиль всему плейсхолдеру, как у открывающейся скобки.
         * @summary Очищает плейсхолдеры в docx шаблоне от форматирования синхронно
         * @param {any} template Шаблон как файл
         * @param {object} parameters
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async processSync(template: any, parameters: object, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Blob>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.processSync(template, parameters, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * NormalizeApi - factory interface
 * @export
 */
export const NormalizeApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = NormalizeApiFp(configuration)
    return {
        /**
         * Очищает плейсхолдеры в docx шаблоне от форматирования синхронно. Ворд может разбивать текст на отдельные блоки форматирования, ломая mustache. Метод вырезает все xml-теги между фигурными скобками, присваивая стиль всему плейсхолдеру, как у открывающейся скобки.
         * @summary Очищает плейсхолдеры в docx шаблоне от форматирования синхронно
         * @param {any} template Шаблон как файл
         * @param {object} parameters
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processSync(template: any, parameters: object, options?: any): AxiosPromise<Blob> {
            return localVarFp.processSync(template, parameters, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * NormalizeApi - object-oriented interface
 * @export
 * @class NormalizeApi
 * @extends {BaseAPI}
 */
export class NormalizeApi extends BaseAPI {
    /**
     * Очищает плейсхолдеры в docx шаблоне от форматирования синхронно. Ворд может разбивать текст на отдельные блоки форматирования, ломая mustache. Метод вырезает все xml-теги между фигурными скобками, присваивая стиль всему плейсхолдеру, как у открывающейся скобки.
     * @summary Очищает плейсхолдеры в docx шаблоне от форматирования синхронно
     * @param {any} template Шаблон как файл
     * @param {object} parameters
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NormalizeApi
     */
    public processSync(template: any, parameters: object, options?: any) {
        return NormalizeApiFp(this.configuration).processSync(template, parameters, options).then((request) => request(this.axios, this.basePath));
    }
}


/**
 * PrintApi - axios parameter creator
 * @export
 */
export const PrintApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Принимает шаблон в асинхронную печать в указанном формате (input) и конвертирует его в указанный формат (output) и отсылает сообщение о статусе печати вместе с ссылкой на скачивание из S3 в Kafka Topic
         * @summary Принимает шаблон в асинхронную печать
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {any} template Шаблон как файл
         * @param {object} parameters
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        acceptAsync: async (input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: object, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'input' is not null or undefined
            assertParamExists('acceptAsync', 'input', input)
            // verify required parameter 'output' is not null or undefined
            assertParamExists('acceptAsync', 'output', output)
            // verify required parameter 'template' is not null or undefined
            assertParamExists('acceptAsync', 'template', template)
            // verify required parameter 'parameters' is not null or undefined
            assertParamExists('acceptAsync', 'parameters', parameters)
            const localVarPath = `/async/{input}/to/{output}`
                .replace(`{${"input"}}`, encodeURIComponent(String(input)))
                .replace(`{${"output"}}`, encodeURIComponent(String(output)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)();

            // authentication printerAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "printerAuth", [], configuration)


            if (template !== undefined) {
                localVarFormParams.append('template', template as any);
            }

            if (parameters !== undefined) {
                localVarFormParams.append('parameters', new Blob([JSON.stringify(parameters)], { type: "application/json", }));
            }


            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Печатает шаблон синхронно в указанном формате (input) и конвертирует его в указанный формат (output), немедленно возвращает распечатанный документ как файл в http ответе
         * @summary Печатает шаблон в указанном формате синхронно
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {any} template Шаблон как файл
         * @param {object} parameters
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processSync3: async (input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: object, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'input' is not null or undefined
            assertParamExists('processSync3', 'input', input)
            // verify required parameter 'output' is not null or undefined
            assertParamExists('processSync3', 'output', output)
            // verify required parameter 'template' is not null or undefined
            assertParamExists('processSync3', 'template', template)
            // verify required parameter 'parameters' is not null or undefined
            assertParamExists('processSync3', 'parameters', parameters)
            const localVarPath = `/sync/{input}/to/{output}`
                .replace(`{${"input"}}`, encodeURIComponent(String(input)))
                .replace(`{${"output"}}`, encodeURIComponent(String(output)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)();

            // authentication printerAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "printerAuth", [], configuration)


            if (template !== undefined) {
                localVarFormParams.append('template', template as any);
            }

            if (parameters !== undefined) {
                localVarFormParams.append('parameters', new Blob([JSON.stringify(parameters)], { type: "application/json", }));
            }


            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * PrintApi - functional programming interface
 * @export
 */
export const PrintApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = PrintApiAxiosParamCreator(configuration)
    return {
        /**
         * Принимает шаблон в асинхронную печать в указанном формате (input) и конвертирует его в указанный формат (output) и отсылает сообщение о статусе печати вместе с ссылкой на скачивание из S3 в Kafka Topic
         * @summary Принимает шаблон в асинхронную печать
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {any} template Шаблон как файл
         * @param {object} parameters
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async acceptAsync(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: object, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.acceptAsync(input, output, template, parameters, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Печатает шаблон синхронно в указанном формате (input) и конвертирует его в указанный формат (output), немедленно возвращает распечатанный документ как файл в http ответе
         * @summary Печатает шаблон в указанном формате синхронно
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {any} template Шаблон как файл
         * @param {object} parameters
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async processSync3(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: object, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Blob>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.processSync3(input, output, template, parameters, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * PrintApi - factory interface
 * @export
 */
export const PrintApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = PrintApiFp(configuration)
    return {
        /**
         * Принимает шаблон в асинхронную печать в указанном формате (input) и конвертирует его в указанный формат (output) и отсылает сообщение о статусе печати вместе с ссылкой на скачивание из S3 в Kafka Topic
         * @summary Принимает шаблон в асинхронную печать
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {any} template Шаблон как файл
         * @param {object} parameters
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        acceptAsync(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: object, options?: any): AxiosPromise<Response> {
            return localVarFp.acceptAsync(input, output, template, parameters, options).then((request) => request(axios, basePath));
        },
        /**
         * Печатает шаблон синхронно в указанном формате (input) и конвертирует его в указанный формат (output), немедленно возвращает распечатанный документ как файл в http ответе
         * @summary Печатает шаблон в указанном формате синхронно
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {any} template Шаблон как файл
         * @param {object} parameters
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processSync3(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: object, options?: any): AxiosPromise<Blob> {
            return localVarFp.processSync3(input, output, template, parameters, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * PrintApi - object-oriented interface
 * @export
 * @class PrintApi
 * @extends {BaseAPI}
 */
export class PrintApi extends BaseAPI {
    /**
     * Принимает шаблон в асинхронную печать в указанном формате (input) и конвертирует его в указанный формат (output) и отсылает сообщение о статусе печати вместе с ссылкой на скачивание из S3 в Kafka Topic
     * @summary Принимает шаблон в асинхронную печать
     * @param {'HTML' | 'PDF' | 'DOCX'} input
     * @param {'HTML' | 'PDF' | 'DOCX'} output
     * @param {any} template Шаблон как файл
     * @param {object} parameters
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PrintApi
     */
    public acceptAsync(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: object, options?: any) {
        return PrintApiFp(this.configuration).acceptAsync(input, output, template, parameters, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Печатает шаблон синхронно в указанном формате (input) и конвертирует его в указанный формат (output), немедленно возвращает распечатанный документ как файл в http ответе
     * @summary Печатает шаблон в указанном формате синхронно
     * @param {'HTML' | 'PDF' | 'DOCX'} input
     * @param {'HTML' | 'PDF' | 'DOCX'} output
     * @param {any} template Шаблон как файл
     * @param {object} parameters
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PrintApi
     */
    public processSync3(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: object, options?: any) {
        return PrintApiFp(this.configuration).processSync3(input, output, template, parameters, options).then((request) => request(this.axios, this.basePath));
    }
}


/**
 * PrintStampApi - axios parameter creator
 * @export
 */
export const PrintStampApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Принимает шаблон в асинхронную печать в указанном формате (input) и конвертирует его в указанный формат (output) и отсылает сообщение о статусе печати вместе с ссылкой на скачивание из S3 в Kafka Topic
         * @summary Принимает шаблон в асинхронную печать
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {any} template Шаблон как файл
         * @param {StampParameters} parameters
         * @param {*} [options] Override http request option.
         * @deprecated
         * @throws {RequiredError}
         */
        processSync1: async (input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: StampParameters, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'input' is not null or undefined
            assertParamExists('processSync1', 'input', input)
            // verify required parameter 'output' is not null or undefined
            assertParamExists('processSync1', 'output', output)
            // verify required parameter 'template' is not null or undefined
            assertParamExists('processSync1', 'template', template)
            // verify required parameter 'parameters' is not null or undefined
            assertParamExists('processSync1', 'parameters', parameters)
            const localVarPath = `/async/stamp-print/{input}/to/{output}`
                .replace(`{${"input"}}`, encodeURIComponent(String(input)))
                .replace(`{${"output"}}`, encodeURIComponent(String(output)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)();

            // authentication printerAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "printerAuth", [], configuration)


            if (template !== undefined) {
                localVarFormParams.append('template', template as any);
            }

            if (parameters !== undefined) {
                localVarFormParams.append('parameters', new Blob([JSON.stringify(parameters)], { type: "application/json", }));
            }


            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Печатает шаблон синхронно в указанном формате (input) и конвертирует его в указанный формат (output), немедленно возвращает распечатанный документ как файл в http ответе
         * @summary Печатает шаблон в указанном формате синхронно
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {any} template Шаблон как файл
         * @param {StampParameters} parameters
         * @param {*} [options] Override http request option.
         * @deprecated
         * @throws {RequiredError}
         */
        processSync2: async (input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: StampParameters, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'input' is not null or undefined
            assertParamExists('processSync2', 'input', input)
            // verify required parameter 'output' is not null or undefined
            assertParamExists('processSync2', 'output', output)
            // verify required parameter 'template' is not null or undefined
            assertParamExists('processSync2', 'template', template)
            // verify required parameter 'parameters' is not null or undefined
            assertParamExists('processSync2', 'parameters', parameters)
            const localVarPath = `/sync/stamp-print/{input}/to/{output}`
                .replace(`{${"input"}}`, encodeURIComponent(String(input)))
                .replace(`{${"output"}}`, encodeURIComponent(String(output)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)();

            // authentication printerAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "printerAuth", [], configuration)


            if (template !== undefined) {
                localVarFormParams.append('template', template as any);
            }

            if (parameters !== undefined) {
                localVarFormParams.append('parameters', new Blob([JSON.stringify(parameters)], { type: "application/json", }));
            }


            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * PrintStampApi - functional programming interface
 * @export
 */
export const PrintStampApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = PrintStampApiAxiosParamCreator(configuration)
    return {
        /**
         * Принимает шаблон в асинхронную печать в указанном формате (input) и конвертирует его в указанный формат (output) и отсылает сообщение о статусе печати вместе с ссылкой на скачивание из S3 в Kafka Topic
         * @summary Принимает шаблон в асинхронную печать
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {any} template Шаблон как файл
         * @param {StampParameters} parameters
         * @param {*} [options] Override http request option.
         * @deprecated
         * @throws {RequiredError}
         */
        async processSync1(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: StampParameters, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.processSync1(input, output, template, parameters, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Печатает шаблон синхронно в указанном формате (input) и конвертирует его в указанный формат (output), немедленно возвращает распечатанный документ как файл в http ответе
         * @summary Печатает шаблон в указанном формате синхронно
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {any} template Шаблон как файл
         * @param {StampParameters} parameters
         * @param {*} [options] Override http request option.
         * @deprecated
         * @throws {RequiredError}
         */
        async processSync2(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: StampParameters, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Blob>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.processSync2(input, output, template, parameters, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * PrintStampApi - factory interface
 * @export
 */
export const PrintStampApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = PrintStampApiFp(configuration)
    return {
        /**
         * Принимает шаблон в асинхронную печать в указанном формате (input) и конвертирует его в указанный формат (output) и отсылает сообщение о статусе печати вместе с ссылкой на скачивание из S3 в Kafka Topic
         * @summary Принимает шаблон в асинхронную печать
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {any} template Шаблон как файл
         * @param {StampParameters} parameters
         * @param {*} [options] Override http request option.
         * @deprecated
         * @throws {RequiredError}
         */
        processSync1(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: StampParameters, options?: any): AxiosPromise<Response> {
            return localVarFp.processSync1(input, output, template, parameters, options).then((request) => request(axios, basePath));
        },
        /**
         * Печатает шаблон синхронно в указанном формате (input) и конвертирует его в указанный формат (output), немедленно возвращает распечатанный документ как файл в http ответе
         * @summary Печатает шаблон в указанном формате синхронно
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {any} template Шаблон как файл
         * @param {StampParameters} parameters
         * @param {*} [options] Override http request option.
         * @deprecated
         * @throws {RequiredError}
         */
        processSync2(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: StampParameters, options?: any): AxiosPromise<Blob> {
            return localVarFp.processSync2(input, output, template, parameters, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * PrintStampApi - object-oriented interface
 * @export
 * @class PrintStampApi
 * @extends {BaseAPI}
 */
export class PrintStampApi extends BaseAPI {
    /**
     * Принимает шаблон в асинхронную печать в указанном формате (input) и конвертирует его в указанный формат (output) и отсылает сообщение о статусе печати вместе с ссылкой на скачивание из S3 в Kafka Topic
     * @summary Принимает шаблон в асинхронную печать
     * @param {'HTML' | 'PDF' | 'DOCX'} input
     * @param {'HTML' | 'PDF' | 'DOCX'} output
     * @param {any} template Шаблон как файл
     * @param {StampParameters} parameters
     * @param {*} [options] Override http request option.
     * @deprecated
     * @throws {RequiredError}
     * @memberof PrintStampApi
     */
    public processSync1(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: StampParameters, options?: any) {
        return PrintStampApiFp(this.configuration).processSync1(input, output, template, parameters, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Печатает шаблон синхронно в указанном формате (input) и конвертирует его в указанный формат (output), немедленно возвращает распечатанный документ как файл в http ответе
     * @summary Печатает шаблон в указанном формате синхронно
     * @param {'HTML' | 'PDF' | 'DOCX'} input
     * @param {'HTML' | 'PDF' | 'DOCX'} output
     * @param {any} template Шаблон как файл
     * @param {StampParameters} parameters
     * @param {*} [options] Override http request option.
     * @deprecated
     * @throws {RequiredError}
     * @memberof PrintStampApi
     */
    public processSync2(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', template: any, parameters: StampParameters, options?: any) {
        return PrintStampApiFp(this.configuration).processSync2(input, output, template, parameters, options).then((request) => request(this.axios, this.basePath));
    }
}


/**
 * StampApi - axios parameter creator
 * @export
 */
export const StampApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Принимает документ для асинхронной печати штампа в указанном формате (input) и конвертирует его в указанный формат (output) и отсылает сообщение о статусе печати вместе с ссылкой на скачивание из S3 в Kafka Topic
         * @summary Принимает документ для асинхронной печати штампа
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {string} certificate Certificate BASE64 encoded
         * @param {any} [document] Документ как файл
         * @param {StampParameters} [parameters]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        acceptAsync1: async (input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', certificate: string, document?: any, parameters?: StampParameters, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'input' is not null or undefined
            assertParamExists('acceptAsync1', 'input', input)
            // verify required parameter 'output' is not null or undefined
            assertParamExists('acceptAsync1', 'output', output)
            // verify required parameter 'certificate' is not null or undefined
            assertParamExists('acceptAsync1', 'certificate', certificate)
            const localVarPath = `/stamp/async/{input}/to/{output}`
                .replace(`{${"input"}}`, encodeURIComponent(String(input)))
                .replace(`{${"output"}}`, encodeURIComponent(String(output)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)();

            // authentication printerAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "printerAuth", [], configuration)


            if (document !== undefined) {
                localVarFormParams.append('document', document as any);
            }

            if (parameters !== undefined) {
                localVarFormParams.append('parameters', new Blob([JSON.stringify(parameters)], { type: "application/json", }));
            }

            if (certificate !== undefined) {
                localVarFormParams.append('certificate', certificate as any);
            }


            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Добавляет штамп в документ синхронно в указанном формате (input) и конвертирует его в указанный формат (output), немедленно возвращает распечатанный документ как файл в http ответе
         * @summary Добавляет штамп в документ синхронно
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {string} certificate Certificate BASE64 encoded
         * @param {any} [document] Документ как файл
         * @param {StampParameters} [parameters]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processSync4: async (input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', certificate: string, document?: any, parameters?: StampParameters, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'input' is not null or undefined
            assertParamExists('processSync4', 'input', input)
            // verify required parameter 'output' is not null or undefined
            assertParamExists('processSync4', 'output', output)
            // verify required parameter 'certificate' is not null or undefined
            assertParamExists('processSync4', 'certificate', certificate)
            const localVarPath = `/stamp/sync/{input}/to/{output}`
                .replace(`{${"input"}}`, encodeURIComponent(String(input)))
                .replace(`{${"output"}}`, encodeURIComponent(String(output)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)();

            // authentication printerAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "printerAuth", [], configuration)


            if (document !== undefined) {
                localVarFormParams.append('document', document as any);
            }

            if (parameters !== undefined) {
                localVarFormParams.append('parameters', new Blob([JSON.stringify(parameters)], { type: "application/json", }));
            }

            if (certificate !== undefined) {
                localVarFormParams.append('certificate', certificate as any);
            }


            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * StampApi - functional programming interface
 * @export
 */
export const StampApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = StampApiAxiosParamCreator(configuration)
    return {
        /**
         * Принимает документ для асинхронной печати штампа в указанном формате (input) и конвертирует его в указанный формат (output) и отсылает сообщение о статусе печати вместе с ссылкой на скачивание из S3 в Kafka Topic
         * @summary Принимает документ для асинхронной печати штампа
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {string} certificate Certificate BASE64 encoded
         * @param {any} [document] Документ как файл
         * @param {StampParameters} [parameters]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async acceptAsync1(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', certificate: string, document?: any, parameters?: StampParameters, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.acceptAsync1(input, output, certificate, document, parameters, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Добавляет штамп в документ синхронно в указанном формате (input) и конвертирует его в указанный формат (output), немедленно возвращает распечатанный документ как файл в http ответе
         * @summary Добавляет штамп в документ синхронно
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {string} certificate Certificate BASE64 encoded
         * @param {any} [document] Документ как файл
         * @param {StampParameters} [parameters]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async processSync4(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', certificate: string, document?: any, parameters?: StampParameters, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Blob>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.processSync4(input, output, certificate, document, parameters, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * StampApi - factory interface
 * @export
 */
export const StampApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = StampApiFp(configuration)
    return {
        /**
         * Принимает документ для асинхронной печати штампа в указанном формате (input) и конвертирует его в указанный формат (output) и отсылает сообщение о статусе печати вместе с ссылкой на скачивание из S3 в Kafka Topic
         * @summary Принимает документ для асинхронной печати штампа
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {string} certificate Certificate BASE64 encoded
         * @param {any} [document] Документ как файл
         * @param {StampParameters} [parameters]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        acceptAsync1(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', certificate: string, document?: any, parameters?: StampParameters, options?: any): AxiosPromise<Response> {
            return localVarFp.acceptAsync1(input, output, certificate, document, parameters, options).then((request) => request(axios, basePath));
        },
        /**
         * Добавляет штамп в документ синхронно в указанном формате (input) и конвертирует его в указанный формат (output), немедленно возвращает распечатанный документ как файл в http ответе
         * @summary Добавляет штамп в документ синхронно
         * @param {'HTML' | 'PDF' | 'DOCX'} input
         * @param {'HTML' | 'PDF' | 'DOCX'} output
         * @param {string} certificate Certificate BASE64 encoded
         * @param {any} [document] Документ как файл
         * @param {StampParameters} [parameters]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        processSync4(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', certificate: string, document?: any, parameters?: StampParameters, options?: any): AxiosPromise<Blob> {
            return localVarFp.processSync4(input, output, certificate, document, parameters, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * StampApi - object-oriented interface
 * @export
 * @class StampApi
 * @extends {BaseAPI}
 */
export class StampApi extends BaseAPI {
    /**
     * Принимает документ для асинхронной печати штампа в указанном формате (input) и конвертирует его в указанный формат (output) и отсылает сообщение о статусе печати вместе с ссылкой на скачивание из S3 в Kafka Topic
     * @summary Принимает документ для асинхронной печати штампа
     * @param {'HTML' | 'PDF' | 'DOCX'} input
     * @param {'HTML' | 'PDF' | 'DOCX'} output
     * @param {string} certificate Certificate BASE64 encoded
     * @param {any} [document] Документ как файл
     * @param {StampParameters} [parameters]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StampApi
     */
    public acceptAsync1(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', certificate: string, document?: any, parameters?: StampParameters, options?: any) {
        return StampApiFp(this.configuration).acceptAsync1(input, output, certificate, document, parameters, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Добавляет штамп в документ синхронно в указанном формате (input) и конвертирует его в указанный формат (output), немедленно возвращает распечатанный документ как файл в http ответе
     * @summary Добавляет штамп в документ синхронно
     * @param {'HTML' | 'PDF' | 'DOCX'} input
     * @param {'HTML' | 'PDF' | 'DOCX'} output
     * @param {string} certificate Certificate BASE64 encoded
     * @param {any} [document] Документ как файл
     * @param {StampParameters} [parameters]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StampApi
     */
    public processSync4(input: 'HTML' | 'PDF' | 'DOCX', output: 'HTML' | 'PDF' | 'DOCX', certificate: string, document?: any, parameters?: StampParameters, options?: any) {
        return StampApiFp(this.configuration).processSync4(input, output, certificate, document, parameters, options).then((request) => request(this.axios, this.basePath));
    }
}


