/* tslint:disable */
/* eslint-disable */
/**
 * VerificationService
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 * Contact: info@affinidi.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import type { Configuration } from './configuration'
import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios'
import globalAxios 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'
import type { RequestArgs } from './base'
// @ts-ignore
import {
  BASE_PATH,
  COLLECTION_FORMATS,
  BaseAPI,
  RequiredError,
  operationServerMap,
} from './base'

/**
 *
 * @export
 * @interface InvalidParameterError
 */
export interface InvalidParameterError {
  /**
   *
   * @type {string}
   * @memberof InvalidParameterError
   */
  name: InvalidParameterErrorNameEnum
  /**
   *
   * @type {string}
   * @memberof InvalidParameterError
   */
  message: InvalidParameterErrorMessageEnum
  /**
   *
   * @type {number}
   * @memberof InvalidParameterError
   */
  httpStatusCode: InvalidParameterErrorHttpStatusCodeEnum
  /**
   *
   * @type {string}
   * @memberof InvalidParameterError
   */
  traceId: string
  /**
   *
   * @type {Array<NotFoundErrorDetailsInner>}
   * @memberof InvalidParameterError
   */
  details?: Array<NotFoundErrorDetailsInner>
}

export const InvalidParameterErrorNameEnum = {
  InvalidParameterError: 'InvalidParameterError',
} as const

export type InvalidParameterErrorNameEnum =
  (typeof InvalidParameterErrorNameEnum)[keyof typeof InvalidParameterErrorNameEnum]
export const InvalidParameterErrorMessageEnum = {
  InvalidParameterParam: 'Invalid parameter: ${param}.',
} as const

export type InvalidParameterErrorMessageEnum =
  (typeof InvalidParameterErrorMessageEnum)[keyof typeof InvalidParameterErrorMessageEnum]
export const InvalidParameterErrorHttpStatusCodeEnum = {
  NUMBER_400: 400,
} as const

export type InvalidParameterErrorHttpStatusCodeEnum =
  (typeof InvalidParameterErrorHttpStatusCodeEnum)[keyof typeof InvalidParameterErrorHttpStatusCodeEnum]

/**
 *
 * @export
 * @interface NotFoundError
 */
export interface NotFoundError {
  /**
   *
   * @type {string}
   * @memberof NotFoundError
   */
  name: NotFoundErrorNameEnum
  /**
   *
   * @type {string}
   * @memberof NotFoundError
   */
  message: NotFoundErrorMessageEnum
  /**
   *
   * @type {number}
   * @memberof NotFoundError
   */
  httpStatusCode: NotFoundErrorHttpStatusCodeEnum
  /**
   *
   * @type {string}
   * @memberof NotFoundError
   */
  traceId: string
  /**
   *
   * @type {Array<NotFoundErrorDetailsInner>}
   * @memberof NotFoundError
   */
  details?: Array<NotFoundErrorDetailsInner>
}

export const NotFoundErrorNameEnum = {
  NotFoundError: 'NotFoundError',
} as const

export type NotFoundErrorNameEnum =
  (typeof NotFoundErrorNameEnum)[keyof typeof NotFoundErrorNameEnum]
export const NotFoundErrorMessageEnum = {
  NotFoundParam: 'Not found: ${param}.',
} as const

export type NotFoundErrorMessageEnum =
  (typeof NotFoundErrorMessageEnum)[keyof typeof NotFoundErrorMessageEnum]
export const NotFoundErrorHttpStatusCodeEnum = {
  NUMBER_404: 404,
} as const

export type NotFoundErrorHttpStatusCodeEnum =
  (typeof NotFoundErrorHttpStatusCodeEnum)[keyof typeof NotFoundErrorHttpStatusCodeEnum]

/**
 *
 * @export
 * @interface NotFoundErrorDetailsInner
 */
export interface NotFoundErrorDetailsInner {
  /**
   *
   * @type {string}
   * @memberof NotFoundErrorDetailsInner
   */
  issue: string
  /**
   *
   * @type {string}
   * @memberof NotFoundErrorDetailsInner
   */
  field?: string
  /**
   *
   * @type {string}
   * @memberof NotFoundErrorDetailsInner
   */
  value?: string
  /**
   *
   * @type {string}
   * @memberof NotFoundErrorDetailsInner
   */
  location?: string
}
/**
 * Request model of /verify-vcs
 * @export
 * @interface VerifyCredentialInput
 */
export interface VerifyCredentialInput {
  /**
   * List of VCs
   * @type {Array<object>}
   * @memberof VerifyCredentialInput
   */
  verifiableCredentials: Array<object>
  /**
   * Dynamic model
   * @type {{ [key: string]: any; }}
   * @memberof VerifyCredentialInput
   */
  issuerDidDocument?: { [key: string]: any }
}
/**
 * Response model of /verify-vcs
 * @export
 * @interface VerifyCredentialOutput
 */
export interface VerifyCredentialOutput {
  /**
   * Errors of the VCs failed verification
   * @type {Array<string>}
   * @memberof VerifyCredentialOutput
   */
  errors: Array<string>
  /**
   * Verification result
   * @type {boolean}
   * @memberof VerifyCredentialOutput
   */
  isValid: boolean
}
/**
 * Request model of /v2/verify-vcs
 * @export
 * @interface VerifyCredentialV2Input
 */
export interface VerifyCredentialV2Input {
  /**
   * List of JWT VC strings
   * @type {Array<string>}
   * @memberof VerifyCredentialV2Input
   */
  jwtVcs?: Array<string>
  /**
   * List of LDP VC objects
   * @type {Array<{ [key: string]: any; }>}
   * @memberof VerifyCredentialV2Input
   */
  ldpVcs?: Array<{ [key: string]: any }>
}
/**
 * Request model of /verify-vp
 * @export
 * @interface VerifyPresentationInput
 */
export interface VerifyPresentationInput {
  /**
   *
   * @type {object}
   * @memberof VerifyPresentationInput
   */
  verifiablePresentation?: object
  /**
   *
   * @type {object}
   * @memberof VerifyPresentationInput
   */
  signedPresentation?: object
  /**
   *
   * @type {object}
   * @memberof VerifyPresentationInput
   */
  presentationDefinition?: object
  /**
   *
   * @type {object}
   * @memberof VerifyPresentationInput
   */
  presentationSubmission?: object
  /**
   *
   * @type {object}
   * @memberof VerifyPresentationInput
   */
  dcqlQuery?: object
  /**
   *
   * @type {string}
   * @memberof VerifyPresentationInput
   */
  challenge?: string
}
/**
 * Response model of /verify-vp
 * @export
 * @interface VerifyPresentationOutput
 */
export interface VerifyPresentationOutput {
  /**
   * Error of the verification
   * @type {Array<string>}
   * @memberof VerifyPresentationOutput
   */
  errors: Array<string>
  /**
   * Verification result
   * @type {boolean}
   * @memberof VerifyPresentationOutput
   */
  isValid: boolean
}
/**
 * Request model of /v2/verify-vp
 * @export
 * @interface VerifyPresentationV2Input
 */
export interface VerifyPresentationV2Input {
  /**
   *
   * @type {object}
   * @memberof VerifyPresentationV2Input
   */
  verifiablePresentation?: object
  /**
   *
   * @type {VerifyPresentationV2InputPexQuery}
   * @memberof VerifyPresentationV2Input
   */
  pexQuery?: VerifyPresentationV2InputPexQuery
  /**
   * DCQL (Digital Credentials Query Language) Query used to verify that the credentials in the Verifiable Presentation match the specified query requirements. Currently supports only ldp_vc format credentials. Developers should implement additional business rule validation on top of the verification results returned by this service.
   * @type {{ [key: string]: any; }}
   * @memberof VerifyPresentationV2Input
   */
  dcqlQuery?: { [key: string]: any }
  /**
   * Optional challenge string for domain/challenge verification
   * @type {string}
   * @memberof VerifyPresentationV2Input
   */
  challenge?: string
  /**
   * Optional domain for verification. Array of domain strings as per W3C VP standard
   * @type {Array<string>}
   * @memberof VerifyPresentationV2Input
   */
  domain?: Array<string>
}
/**
 * Presentation Exchange Query containing presentation definition and submission
 * @export
 * @interface VerifyPresentationV2InputPexQuery
 */
export interface VerifyPresentationV2InputPexQuery {
  /**
   * Presentation definition for the verification request
   * @type {object}
   * @memberof VerifyPresentationV2InputPexQuery
   */
  presentationDefinition?: object
  /**
   * Presentation submission for the verification request
   * @type {object}
   * @memberof VerifyPresentationV2InputPexQuery
   */
  presentationSubmission?: object
}

/**
 * DefaultApi - axios parameter creator
 * @export
 */
export const DefaultApiAxiosParamCreator = function (
  configuration?: Configuration,
) {
  return {
    /**
     * Verifying Verifiable Credentials (signatures)  `isValid` - true if all credentials verified `errors` contains list of error messages for invalid credentials.
     * @summary Verifying VC
     * @param {VerifyCredentialInput} verifyCredentialInput VerifyCredentials
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    verifyCredentials: async (
      verifyCredentialInput: VerifyCredentialInput,
      options: RawAxiosRequestConfig = {},
    ): Promise<RequestArgs> => {
      // verify required parameter 'verifyCredentialInput' is not null or undefined
      assertParamExists(
        'verifyCredentials',
        'verifyCredentialInput',
        verifyCredentialInput,
      )
      const localVarPath = `/v1/verifier/verify-vcs`
      // 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

      // authentication ProjectTokenAuth required
      await setApiKeyToObject(
        localVarHeaderParameter,
        'authorization',
        configuration,
      )

      localVarHeaderParameter['Content-Type'] = 'application/json'

      setSearchParams(localVarUrlObj, localVarQueryParameter)
      let headersFromBaseOptions =
        baseOptions && baseOptions.headers ? baseOptions.headers : {}
      localVarRequestOptions.headers = {
        ...localVarHeaderParameter,
        ...headersFromBaseOptions,
        ...options.headers,
      }
      localVarRequestOptions.data = serializeDataIfNeeded(
        verifyCredentialInput,
        localVarRequestOptions,
        configuration,
      )

      return {
        url: toPathString(localVarUrlObj),
        options: localVarRequestOptions,
      }
    },
    /**
     * Verifying Verifiable Credentials (signatures)  `isValid` - true if all credentials verified `errors` contains list of error messages for invalid credentials.
     * @summary Verifying VC
     * @param {VerifyCredentialV2Input} verifyCredentialV2Input Request body for verifying VCs with separate JWT and LDP arrays
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    verifyCredentialsV2: async (
      verifyCredentialV2Input: VerifyCredentialV2Input,
      options: RawAxiosRequestConfig = {},
    ): Promise<RequestArgs> => {
      // verify required parameter 'verifyCredentialV2Input' is not null or undefined
      assertParamExists(
        'verifyCredentialsV2',
        'verifyCredentialV2Input',
        verifyCredentialV2Input,
      )
      const localVarPath = `/v2/verifier/credentials`
      // 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

      // authentication ProjectTokenAuth required
      await setApiKeyToObject(
        localVarHeaderParameter,
        'authorization',
        configuration,
      )

      localVarHeaderParameter['Content-Type'] = 'application/json'

      setSearchParams(localVarUrlObj, localVarQueryParameter)
      let headersFromBaseOptions =
        baseOptions && baseOptions.headers ? baseOptions.headers : {}
      localVarRequestOptions.headers = {
        ...localVarHeaderParameter,
        ...headersFromBaseOptions,
        ...options.headers,
      }
      localVarRequestOptions.data = serializeDataIfNeeded(
        verifyCredentialV2Input,
        localVarRequestOptions,
        configuration,
      )

      return {
        url: toPathString(localVarUrlObj),
        options: localVarRequestOptions,
      }
    },
    /**
     * Verifying Verifiable Presentation (signatures)  `isValid` - true if presentation verified `error` verificaction error.
     * @summary Verifying VP
     * @param {VerifyPresentationInput} verifyPresentationInput VerifyPresentation
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    verifyPresentation: async (
      verifyPresentationInput: VerifyPresentationInput,
      options: RawAxiosRequestConfig = {},
    ): Promise<RequestArgs> => {
      // verify required parameter 'verifyPresentationInput' is not null or undefined
      assertParamExists(
        'verifyPresentation',
        'verifyPresentationInput',
        verifyPresentationInput,
      )
      const localVarPath = `/v1/verifier/verify-vp`
      // 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

      // authentication ProjectTokenAuth required
      await setApiKeyToObject(
        localVarHeaderParameter,
        'authorization',
        configuration,
      )

      localVarHeaderParameter['Content-Type'] = 'application/json'

      setSearchParams(localVarUrlObj, localVarQueryParameter)
      let headersFromBaseOptions =
        baseOptions && baseOptions.headers ? baseOptions.headers : {}
      localVarRequestOptions.headers = {
        ...localVarHeaderParameter,
        ...headersFromBaseOptions,
        ...options.headers,
      }
      localVarRequestOptions.data = serializeDataIfNeeded(
        verifyPresentationInput,
        localVarRequestOptions,
        configuration,
      )

      return {
        url: toPathString(localVarUrlObj),
        options: localVarRequestOptions,
      }
    },
    /**
     * Verifying Verifiable Presentation (signatures)  Uses Presentation Exchange Query (pexQuery) structure for presentation definition and submission. Supports optional domain and challenge verification as per W3C VP standard.  `isValid` - true if presentation verified `error` verificaction error.
     * @summary Verifying VP
     * @param {VerifyPresentationV2Input} verifyPresentationV2Input VerifyPresentationV2
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    verifyPresentationV2: async (
      verifyPresentationV2Input: VerifyPresentationV2Input,
      options: RawAxiosRequestConfig = {},
    ): Promise<RequestArgs> => {
      // verify required parameter 'verifyPresentationV2Input' is not null or undefined
      assertParamExists(
        'verifyPresentationV2',
        'verifyPresentationV2Input',
        verifyPresentationV2Input,
      )
      const localVarPath = `/v2/verifier/presentation`
      // 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

      // authentication ProjectTokenAuth required
      await setApiKeyToObject(
        localVarHeaderParameter,
        'authorization',
        configuration,
      )

      localVarHeaderParameter['Content-Type'] = 'application/json'

      setSearchParams(localVarUrlObj, localVarQueryParameter)
      let headersFromBaseOptions =
        baseOptions && baseOptions.headers ? baseOptions.headers : {}
      localVarRequestOptions.headers = {
        ...localVarHeaderParameter,
        ...headersFromBaseOptions,
        ...options.headers,
      }
      localVarRequestOptions.data = serializeDataIfNeeded(
        verifyPresentationV2Input,
        localVarRequestOptions,
        configuration,
      )

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

/**
 * DefaultApi - functional programming interface
 * @export
 */
export const DefaultApiFp = function (configuration?: Configuration) {
  const localVarAxiosParamCreator = DefaultApiAxiosParamCreator(configuration)
  return {
    /**
     * Verifying Verifiable Credentials (signatures)  `isValid` - true if all credentials verified `errors` contains list of error messages for invalid credentials.
     * @summary Verifying VC
     * @param {VerifyCredentialInput} verifyCredentialInput VerifyCredentials
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    async verifyCredentials(
      verifyCredentialInput: VerifyCredentialInput,
      options?: RawAxiosRequestConfig,
    ): Promise<
      (
        axios?: AxiosInstance,
        basePath?: string,
      ) => AxiosPromise<VerifyCredentialOutput>
    > {
      const localVarAxiosArgs =
        await localVarAxiosParamCreator.verifyCredentials(
          verifyCredentialInput,
          options,
        )
      const localVarOperationServerIndex = configuration?.serverIndex ?? 0
      const localVarOperationServerBasePath =
        operationServerMap['DefaultApi.verifyCredentials']?.[
          localVarOperationServerIndex
        ]?.url
      return (axios, basePath) =>
        createRequestFunction(
          localVarAxiosArgs,
          globalAxios,
          BASE_PATH,
          configuration,
        )(axios, localVarOperationServerBasePath || basePath)
    },
    /**
     * Verifying Verifiable Credentials (signatures)  `isValid` - true if all credentials verified `errors` contains list of error messages for invalid credentials.
     * @summary Verifying VC
     * @param {VerifyCredentialV2Input} verifyCredentialV2Input Request body for verifying VCs with separate JWT and LDP arrays
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    async verifyCredentialsV2(
      verifyCredentialV2Input: VerifyCredentialV2Input,
      options?: RawAxiosRequestConfig,
    ): Promise<
      (
        axios?: AxiosInstance,
        basePath?: string,
      ) => AxiosPromise<VerifyCredentialOutput>
    > {
      const localVarAxiosArgs =
        await localVarAxiosParamCreator.verifyCredentialsV2(
          verifyCredentialV2Input,
          options,
        )
      const localVarOperationServerIndex = configuration?.serverIndex ?? 0
      const localVarOperationServerBasePath =
        operationServerMap['DefaultApi.verifyCredentialsV2']?.[
          localVarOperationServerIndex
        ]?.url
      return (axios, basePath) =>
        createRequestFunction(
          localVarAxiosArgs,
          globalAxios,
          BASE_PATH,
          configuration,
        )(axios, localVarOperationServerBasePath || basePath)
    },
    /**
     * Verifying Verifiable Presentation (signatures)  `isValid` - true if presentation verified `error` verificaction error.
     * @summary Verifying VP
     * @param {VerifyPresentationInput} verifyPresentationInput VerifyPresentation
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    async verifyPresentation(
      verifyPresentationInput: VerifyPresentationInput,
      options?: RawAxiosRequestConfig,
    ): Promise<
      (
        axios?: AxiosInstance,
        basePath?: string,
      ) => AxiosPromise<VerifyPresentationOutput>
    > {
      const localVarAxiosArgs =
        await localVarAxiosParamCreator.verifyPresentation(
          verifyPresentationInput,
          options,
        )
      const localVarOperationServerIndex = configuration?.serverIndex ?? 0
      const localVarOperationServerBasePath =
        operationServerMap['DefaultApi.verifyPresentation']?.[
          localVarOperationServerIndex
        ]?.url
      return (axios, basePath) =>
        createRequestFunction(
          localVarAxiosArgs,
          globalAxios,
          BASE_PATH,
          configuration,
        )(axios, localVarOperationServerBasePath || basePath)
    },
    /**
     * Verifying Verifiable Presentation (signatures)  Uses Presentation Exchange Query (pexQuery) structure for presentation definition and submission. Supports optional domain and challenge verification as per W3C VP standard.  `isValid` - true if presentation verified `error` verificaction error.
     * @summary Verifying VP
     * @param {VerifyPresentationV2Input} verifyPresentationV2Input VerifyPresentationV2
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    async verifyPresentationV2(
      verifyPresentationV2Input: VerifyPresentationV2Input,
      options?: RawAxiosRequestConfig,
    ): Promise<
      (
        axios?: AxiosInstance,
        basePath?: string,
      ) => AxiosPromise<VerifyPresentationOutput>
    > {
      const localVarAxiosArgs =
        await localVarAxiosParamCreator.verifyPresentationV2(
          verifyPresentationV2Input,
          options,
        )
      const localVarOperationServerIndex = configuration?.serverIndex ?? 0
      const localVarOperationServerBasePath =
        operationServerMap['DefaultApi.verifyPresentationV2']?.[
          localVarOperationServerIndex
        ]?.url
      return (axios, basePath) =>
        createRequestFunction(
          localVarAxiosArgs,
          globalAxios,
          BASE_PATH,
          configuration,
        )(axios, localVarOperationServerBasePath || basePath)
    },
  }
}

/**
 * DefaultApi - factory interface
 * @export
 */
export const DefaultApiFactory = function (
  configuration?: Configuration,
  basePath?: string,
  axios?: AxiosInstance,
) {
  const localVarFp = DefaultApiFp(configuration)
  return {
    /**
     * Verifying Verifiable Credentials (signatures)  `isValid` - true if all credentials verified `errors` contains list of error messages for invalid credentials.
     * @summary Verifying VC
     * @param {VerifyCredentialInput} verifyCredentialInput VerifyCredentials
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    verifyCredentials(
      verifyCredentialInput: VerifyCredentialInput,
      options?: RawAxiosRequestConfig,
    ): AxiosPromise<VerifyCredentialOutput> {
      return localVarFp
        .verifyCredentials(verifyCredentialInput, options)
        .then((request) => request(axios, basePath))
    },
    /**
     * Verifying Verifiable Credentials (signatures)  `isValid` - true if all credentials verified `errors` contains list of error messages for invalid credentials.
     * @summary Verifying VC
     * @param {VerifyCredentialV2Input} verifyCredentialV2Input Request body for verifying VCs with separate JWT and LDP arrays
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    verifyCredentialsV2(
      verifyCredentialV2Input: VerifyCredentialV2Input,
      options?: RawAxiosRequestConfig,
    ): AxiosPromise<VerifyCredentialOutput> {
      return localVarFp
        .verifyCredentialsV2(verifyCredentialV2Input, options)
        .then((request) => request(axios, basePath))
    },
    /**
     * Verifying Verifiable Presentation (signatures)  `isValid` - true if presentation verified `error` verificaction error.
     * @summary Verifying VP
     * @param {VerifyPresentationInput} verifyPresentationInput VerifyPresentation
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    verifyPresentation(
      verifyPresentationInput: VerifyPresentationInput,
      options?: RawAxiosRequestConfig,
    ): AxiosPromise<VerifyPresentationOutput> {
      return localVarFp
        .verifyPresentation(verifyPresentationInput, options)
        .then((request) => request(axios, basePath))
    },
    /**
     * Verifying Verifiable Presentation (signatures)  Uses Presentation Exchange Query (pexQuery) structure for presentation definition and submission. Supports optional domain and challenge verification as per W3C VP standard.  `isValid` - true if presentation verified `error` verificaction error.
     * @summary Verifying VP
     * @param {VerifyPresentationV2Input} verifyPresentationV2Input VerifyPresentationV2
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    verifyPresentationV2(
      verifyPresentationV2Input: VerifyPresentationV2Input,
      options?: RawAxiosRequestConfig,
    ): AxiosPromise<VerifyPresentationOutput> {
      return localVarFp
        .verifyPresentationV2(verifyPresentationV2Input, options)
        .then((request) => request(axios, basePath))
    },
  }
}

/**
 * DefaultApi - object-oriented interface
 * @export
 * @class DefaultApi
 * @extends {BaseAPI}
 */
export class DefaultApi extends BaseAPI {
  /**
   * Verifying Verifiable Credentials (signatures)  `isValid` - true if all credentials verified `errors` contains list of error messages for invalid credentials.
   * @summary Verifying VC
   * @param {VerifyCredentialInput} verifyCredentialInput VerifyCredentials
   * @param {*} [options] Override http request option.
   * @throws {RequiredError}
   * @memberof DefaultApi
   */
  public verifyCredentials(
    verifyCredentialInput: VerifyCredentialInput,
    options?: RawAxiosRequestConfig,
  ) {
    return DefaultApiFp(this.configuration)
      .verifyCredentials(verifyCredentialInput, options)
      .then((request) => request(this.axios, this.basePath))
  }

  /**
   * Verifying Verifiable Credentials (signatures)  `isValid` - true if all credentials verified `errors` contains list of error messages for invalid credentials.
   * @summary Verifying VC
   * @param {VerifyCredentialV2Input} verifyCredentialV2Input Request body for verifying VCs with separate JWT and LDP arrays
   * @param {*} [options] Override http request option.
   * @throws {RequiredError}
   * @memberof DefaultApi
   */
  public verifyCredentialsV2(
    verifyCredentialV2Input: VerifyCredentialV2Input,
    options?: RawAxiosRequestConfig,
  ) {
    return DefaultApiFp(this.configuration)
      .verifyCredentialsV2(verifyCredentialV2Input, options)
      .then((request) => request(this.axios, this.basePath))
  }

  /**
   * Verifying Verifiable Presentation (signatures)  `isValid` - true if presentation verified `error` verificaction error.
   * @summary Verifying VP
   * @param {VerifyPresentationInput} verifyPresentationInput VerifyPresentation
   * @param {*} [options] Override http request option.
   * @throws {RequiredError}
   * @memberof DefaultApi
   */
  public verifyPresentation(
    verifyPresentationInput: VerifyPresentationInput,
    options?: RawAxiosRequestConfig,
  ) {
    return DefaultApiFp(this.configuration)
      .verifyPresentation(verifyPresentationInput, options)
      .then((request) => request(this.axios, this.basePath))
  }

  /**
   * Verifying Verifiable Presentation (signatures)  Uses Presentation Exchange Query (pexQuery) structure for presentation definition and submission. Supports optional domain and challenge verification as per W3C VP standard.  `isValid` - true if presentation verified `error` verificaction error.
   * @summary Verifying VP
   * @param {VerifyPresentationV2Input} verifyPresentationV2Input VerifyPresentationV2
   * @param {*} [options] Override http request option.
   * @throws {RequiredError}
   * @memberof DefaultApi
   */
  public verifyPresentationV2(
    verifyPresentationV2Input: VerifyPresentationV2Input,
    options?: RawAxiosRequestConfig,
  ) {
    return DefaultApiFp(this.configuration)
      .verifyPresentationV2(verifyPresentationV2Input, options)
      .then((request) => request(this.axios, this.basePath))
  }
}
