{"version":3,"file":"fluig-api.mjs","sources":["../../../projects/fluig-api/src/lib/fluig-api.config.ts","../../../projects/fluig-api/src/lib/fluig-api.external.ts","../../../projects/fluig-api/src/lib/fluig-api.provider.ts","../../../projects/fluig-api/src/lib/fluig-api.service.ts","../../../projects/fluig-api/src/lib/fluig-api.interceptor.ts","../../../projects/fluig-api/src/public-api.ts","../../../projects/fluig-api/src/fluig-api.ts"],"sourcesContent":["/** @format */\n\nimport { InjectionToken } from '@angular/core';\n\n// ---------------------------- Type Helpers ----------------------------------\n\n// AI slop that acctually works...\ntype Without<T, K> = { [P in Exclude<keyof T, keyof K>]?: never };\ntype XOR<T, U> = (Without<T, U> & U) | (Without<U, T> & T);\ntype Forbid<T> = { [K in keyof T]?: never };\n\n// ---------------------------- Config Types ----------------------------------\n\n/** Base configuration for Fluig authentication */\ntype OAuthBaseConfig = {\n  /** Application URL */\n  url: string;\n};\n\n/** Configuration for Fluig authentication using the Bearer token */\nexport interface BearerConfig extends OAuthBaseConfig {\n  /** OAuth token\n   *\n   * WARN: **Never** set this option in production!\n   * This option is meant to be used while **developing in a local environment only**.\n   * API calls in production injects the user token in the request header\n   * automatically. Set `local` to `false` instead.\n   */\n  token: string;\n}\n/** Configuration for Fluig authentication using OAuth */\nexport interface OAuthConfig extends OAuthBaseConfig {\n  /** OAuth secrets\n   *\n   * WARN: **Never** set these options in production!\n   * This options are meant to be used **while developing in a local environment only**.\n   * API calls in production injects the user token in the request header\n   * automatically. Set `local` to `false` instead.\n   */\n  oauth: {\n    /** Consumer key used for OAuth authentication */\n    consumerKey: string;\n    /** Consumer secret used for OAuth authentication */\n    consumerSecret: string;\n    /** Access token used for OAuth authentication */\n    accessToken: string;\n    /** Token secret used for OAuth authentication */\n    tokenSecret: string;\n  };\n}\n\n/** Configuration for Fluig authentication interceptor */\nexport interface InterceptorConfig extends OAuthBaseConfig {\n  /** List of API endpoints to intercept\n   *\n   * If the request URL starts with one of these endpoints, the interceptor\n   * will add the authentication token to the request header.\n   * If empty or omitted all requests will be intercepted.\n   */\n  endpoints?: string[];\n  /** Logs whenever a request is intercepted */\n  debug?: boolean;\n}\n\n/** Configuration for Fluig authentication */\ntype Auth = XOR<OAuthConfig, BearerConfig>;\n\n/** Environment configuration */\nexport interface Environment<L extends boolean> {\n  /** Are we in a local environment?\n   *\n   * WARN: **Never** set this to `true` in production, **NEVER**!\n   * API calls in production inject the user token in the request header\n   * automatically.\n   */\n  local: L;\n}\n\nexport type FluigAPIConfig =\n  | (Environment<false> & Forbid<OAuthBaseConfig & Auth & InterceptorConfig>)\n  | (Environment<true> & Auth & InterceptorConfig);\n\n/** Injection token for Fluig authentication configuration */\nexport const FLUIG_API_CONFIG = new InjectionToken<FluigAPIConfig>(\n  'FLUIG_API_CONFIG'\n);\n","/** @format */\n\nlet _OAuthCtor: any | null = null;\nlet _CryptoJS: any | null = null;\n\nexport function cacheExternalLibs(oauthMod: any, cryptoMod: any) {\n  _OAuthCtor = oauthMod?.default ?? oauthMod;\n  _CryptoJS = cryptoMod?.default ?? cryptoMod;\n}\n\nexport function getCryptoJS(): any {\n  if (!_CryptoJS)\n    throw new Error('crypto-js not loaded (config.local must be true).');\n  return _CryptoJS;\n}\n\nexport function getOAuthCtor(): any {\n  if (!_OAuthCtor)\n    throw new Error('oauth-1.0a not loaded (config.local must be true).');\n  return _OAuthCtor;\n}\n\nexport function hasOAuthLibs(): boolean {\n  return !!_OAuthCtor && !!_CryptoJS;\n}\n","/** @format */\n\nimport {\n  provideAppInitializer,\n  EnvironmentProviders,\n  Provider,\n} from '@angular/core';\n\nimport { FLUIG_API_CONFIG, FluigAPIConfig } from './fluig-api.config';\nimport { cacheExternalLibs } from './fluig-api.external';\n\nexport function provideFluigAPI(\n  config: FluigAPIConfig\n): (Provider | EnvironmentProviders)[] {\n  return [\n    { provide: FLUIG_API_CONFIG, useValue: config },\n    provideAppInitializer(() => {\n      if (config.local === true) {\n        return Promise.all([import('oauth-1.0a'), import('crypto-js')]).then(\n          ([oauth, crypto]) => cacheExternalLibs(oauth, crypto)\n        );\n      }\n      return;\n    }),\n  ];\n}\n","/** @format */\n\nimport {\n  HttpClient,\n  HttpContext,\n  HttpEvent,\n  HttpHeaders,\n  HttpParams,\n  HttpResponse,\n} from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport {\n  Environment,\n  OAuthConfig,\n  FLUIG_API_CONFIG,\n  FluigAPIConfig,\n  BearerConfig,\n} from './fluig-api.config';\nimport { Observable } from 'rxjs';\n\nimport { getOAuthCtor, getCryptoJS, hasOAuthLibs } from './fluig-api.external';\n\ntype LocalOAuth = Extract<FluigAPIConfig, Environment<true> & OAuthConfig>;\ntype LocalBearer = Extract<FluigAPIConfig, Environment<true> & BearerConfig>;\ntype RequestOptions = {\n  url: string;\n  method: string;\n  data?: any;\n  options?: {\n    headers?: HttpHeaders | Record<string, string | string[]>;\n    params?:\n      | HttpParams\n      | Record<\n          string,\n          string | number | boolean | ReadonlyArray<string | number | boolean>\n        >;\n  };\n  includeBodyHash?: boolean;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class FluigAPIService {\n  private readonly http = inject(HttpClient);\n  private readonly cfg = inject(FLUIG_API_CONFIG);\n\n  private readonly oauth = this.getOAuthClient();\n\n  private isOAuthConfig(cfg: FluigAPIConfig): cfg is LocalOAuth {\n    return cfg.local === true && 'oauth' in cfg && !('token' in cfg);\n  }\n  private isBearerConfig(cfg: FluigAPIConfig): cfg is LocalBearer {\n    return cfg.local === true && 'token' in cfg && !('oauth' in cfg);\n  }\n\n  private getOAuthClient() {\n    if (!this.isOAuthConfig(this.cfg) || !hasOAuthLibs()) return null;\n\n    const OAuth = getOAuthCtor();\n    const CryptoJS = getCryptoJS();\n\n    const bodyHash = (body: any): string => {\n      return CryptoJS.SHA1(body).toString(CryptoJS.enc.Base64);\n    };\n    const hashFunction = (base_string: string, key: string): string => {\n      return CryptoJS.HmacSHA1(base_string, key).toString(CryptoJS.enc.Base64);\n    };\n\n    return new OAuth({\n      consumer: {\n        key: this.cfg.oauth.consumerKey,\n        secret: this.cfg.oauth.consumerSecret,\n      },\n      signature_method: 'HMAC-SHA1',\n      body_hash_function: bodyHash,\n      hash_function: hashFunction,\n    });\n  }\n\n  private getAuthHeader(\n    request?: RequestOptions\n  ): HttpHeaders | Record<string, string | string[]> {\n    let headers = request?.options?.headers ?? new HttpHeaders();\n    if (!this.cfg || !this.cfg.local) return headers;\n\n    const oauthToken = this.getAuthToken(request);\n    if (typeof headers === 'object' && !(headers instanceof HttpHeaders)) {\n      return { ...headers, Authorization: oauthToken };\n    }\n    return headers.set('Authorization', oauthToken);\n  }\n\n  private getUrlWithParams(\n    url: string,\n    params?:\n      | HttpParams\n      | Record<\n          string,\n          string | number | boolean | ReadonlyArray<string | number | boolean>\n        >\n  ) {\n    if (params == null) return url;\n    const httpParams: HttpParams =\n      params instanceof HttpParams\n        ? params\n        : typeof params === 'string'\n          ? new HttpParams({ fromString: params })\n          : new HttpParams({ fromObject: params });\n    const paramString = httpParams.toString();\n    return paramString ? `${url}?${paramString}` : url;\n  }\n\n  private signRequest(request: RequestOptions) {\n    if (!this.oauth || !this.isOAuthConfig(this.cfg)) {\n      throw new Error('[FluigAPI] OAuth configuration is missing');\n    }\n\n    const url = new URL(\n      this.getUrlWithParams(request.url, request?.options?.params),\n      this.cfg.url\n    );\n\n    // OAuth 1.0a requires base URL (without query) + structured params\n    // to ensure signature base string matches server expectations exactly.\n    // Parsing query from full URL can cause subtle differences (empty values, duplicates).\n    const baseUrl = `${url.origin}${url.pathname}`;\n\n    const authOptions = {\n      url: baseUrl,\n      method: request.method.toUpperCase(),\n      includeBodyHash: false,\n      data: undefined,\n    };\n\n    if (['POST', 'PUT', 'PATCH'].includes(request.method)) {\n      authOptions.includeBodyHash = true;\n      authOptions.data = request.data;\n    } else {\n      const queryParams: Record<string, string | string[]> = {};\n      // Preserve existing query parameters in the URL\n      url.searchParams.forEach((value, key) => {\n        if (Object.prototype.hasOwnProperty.call(queryParams, key)) {\n          const prev = queryParams[key];\n          if (Array.isArray(prev)) prev.push(value);\n          else queryParams[key] = [prev as string, value];\n        } else {\n          queryParams[key] = value;\n        }\n      });\n\n      authOptions.data = Object.keys(queryParams).length\n        ? (queryParams as any)\n        : undefined;\n    }\n\n    return this.oauth.authorize(\n      {\n        url: authOptions.url,\n        method: authOptions.method,\n        includeBodyHash: authOptions.includeBodyHash,\n        data: authOptions.data,\n      },\n      {\n        key: this.cfg.oauth.accessToken,\n        secret: this.cfg.oauth.tokenSecret,\n      }\n    );\n  }\n\n  /** Get the `Authorization` token to be used in the request header\n   *\n   * If in a local environment, the token is generated using the OAuth\n   * configuration provided or the Bearer token.\n   *\n   * @param request The request options to be signed (required if using OAuth)\n   * @returns The authentication token to be used in the request header\n   */\n  public getAuthToken(request?: RequestOptions): string {\n    if (this.isBearerConfig(this.cfg)) return `Bearer ${this.cfg.token}`;\n\n    if (this.isOAuthConfig(this.cfg) && this.oauth && request) {\n      const header = this.oauth.toHeader(this.signRequest(request));\n      return header.Authorization;\n    }\n    throw new Error(\n      '[FluigAPI] Invalid configuration for authentication, token not generated.'\n    );\n  }\n\n  /**\n   * Constructs a `DELETE` request that interprets the body as an `ArrayBuffer`\n   *  and returns the response as an `ArrayBuffer`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return  An `Observable` of the response body as an `ArrayBuffer`.\n   */\n  delete(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      body?: any | null;\n    }\n  ): Observable<ArrayBuffer>;\n  /**\n   * Constructs a `DELETE` request that interprets the body as a `Blob` and returns\n   * the response as a `Blob`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the response body as a `Blob`.\n   */\n  delete(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<Blob>;\n  /**\n   * Constructs a `DELETE` request that interprets the body as a text string and returns\n   * a string.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the response, with the response body of type string.\n   */\n  delete(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<string>;\n  /**\n   * Constructs a `DELETE` request that interprets the body as an `ArrayBuffer`\n   *  and returns the full event stream.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of all `HttpEvent`s for the request,\n   * with response body as an `ArrayBuffer`.\n   */\n  delete(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<HttpEvent<ArrayBuffer>>;\n  /**\n   * Constructs a `DELETE` request that interprets the body as a `Blob`\n   *  and returns the full event stream.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of all the `HttpEvent`s for the request, with the response body as a\n   * `Blob`.\n   */\n  delete(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<HttpEvent<Blob>>;\n  /**\n   * Constructs a `DELETE` request that interprets the body as a text string\n   * and returns the full event stream.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of all `HttpEvent`s for the request, with the response\n   * body of type string.\n   */\n  delete(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<HttpEvent<string>>;\n  /**\n   * Constructs a `DELETE` request that interprets the body as JSON\n   * and returns the full event stream.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of all `HttpEvent`s for the request, with response body of\n   * type `Object`.\n   */\n  delete(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<HttpEvent<Object>>;\n  /**\n   * Constructs a `DELETE`request that interprets the body as JSON\n   * and returns the full event stream.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of all the `HttpEvent`s for the request, with a response\n   * body in the requested type.\n   */\n  delete<T>(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            string | number | boolean | (string | number | boolean)[]\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<HttpEvent<T>>;\n  /**\n   * Constructs a `DELETE` request that interprets the body as an `ArrayBuffer` and returns\n   *  the full `HttpResponse`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the full `HttpResponse`, with the response body as an `ArrayBuffer`.\n   */\n  delete(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<HttpResponse<ArrayBuffer>>;\n  /**\n   * Constructs a `DELETE` request that interprets the body as a `Blob` and returns the full\n   * `HttpResponse`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the `HttpResponse`, with the response body of type `Blob`.\n   */\n  delete(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<HttpResponse<Blob>>;\n  /**\n   * Constructs a `DELETE` request that interprets the body as a text stream and\n   *  returns the full `HttpResponse`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the full `HttpResponse`, with the response body of type string.\n   */\n  delete(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<HttpResponse<string>>;\n  /**\n   * Constructs a `DELETE` request the interprets the body as a JavaScript object and returns\n   * the full `HttpResponse`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the `HttpResponse`, with the response body of type `Object`.\n   *\n   */\n  delete(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<HttpResponse<Object>>;\n  /**\n   * Constructs a `DELETE` request that interprets the body as JSON\n   * and returns the full `HttpResponse`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the `HttpResponse`, with the response body of the requested type.\n   */\n  delete<T>(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<HttpResponse<T>>;\n  /**\n   * Constructs a `DELETE` request that interprets the body as JSON and\n   * returns the response body as an object parsed from JSON.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the response, with the response body of type `Object`.\n   */\n  delete(\n    url: string,\n    options?: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<Object>;\n  /**\n   * Constructs a DELETE request that interprets the body as JSON and returns\n   * the response in a given type.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the `HttpResponse`, with response body in the requested type.\n   */\n  delete<T>(\n    url: string,\n    options?: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n      body?: any | null;\n    }\n  ): Observable<T>;\n  /** Constructs a `DELETE` request and returns the response body in a given type. */\n  public delete<T>(url: string, params?: any): Observable<any> {\n    return this.http.delete<T>(url, {\n      ...params,\n      headers: this.getAuthHeader({\n        method: 'DELETE',\n        url,\n        options: {\n          headers: params?.headers,\n          params: params?.params,\n        },\n      }),\n    });\n  }\n\n  /**\n   * Constructs a `GET` request that interprets the body as an `ArrayBuffer` and returns the\n   * response in an `ArrayBuffer`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.\n   */\n  get(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<ArrayBuffer>;\n\n  /**\n   * Constructs a `GET` request that interprets the body as a `Blob`\n   * and returns the response as a `Blob`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the response, with the response body as a `Blob`.\n   */\n  get(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<Blob>;\n  /**\n   * Constructs a `GET` request that interprets the body as a text string\n   * and returns the response as a string value.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the response, with the response body of type string.\n   */\n  get(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<string>;\n  /**\n   * Constructs a `GET` request that interprets the body as an `ArrayBuffer` and returns\n   *  the full event stream.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of all `HttpEvent`s for the request, with the response\n   * body as an `ArrayBuffer`.\n   */\n  get(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<ArrayBuffer>>;\n  /**\n   * Constructs a `GET` request that interprets the body as a `Blob` and\n   * returns the full event stream.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the response, with the response body as a `Blob`.\n   */\n  get(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<Blob>>;\n  /**\n   * Constructs a `GET` request that interprets the body as a text string and returns\n   * the full event stream.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the response, with the response body of type string.\n   */\n  get(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<string>>;\n  /**\n   * Constructs a `GET` request that interprets the body as JSON\n   * and returns the full event stream.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the response, with the response body of type `Object`.\n   */\n  get(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<Object>>;\n  /**\n   * Constructs a `GET` request that interprets the body as JSON and returns the full\n   * event stream.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the response, with a response body in the requested type.\n   */\n  get<T>(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<T>>;\n  /**\n   * Constructs a `GET` request that interprets the body as an `ArrayBuffer` and\n   * returns the full `HttpResponse`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the `HttpResponse` for the request,\n   * with the response body as an `ArrayBuffer`.\n   */\n  get(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<ArrayBuffer>>;\n  /**\n   * Constructs a `GET` request that interprets the body as a `Blob` and\n   * returns the full `HttpResponse`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the `HttpResponse` for the request,\n   * with the response body as a `Blob`.\n   */\n  get(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<Blob>>;\n  /**\n   * Constructs a `GET` request that interprets the body as a text stream and\n   * returns the full `HttpResponse`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the `HttpResponse` for the request,\n   * with the response body of type string.\n   */\n  get(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<string>>;\n  /**\n   * Constructs a `GET` request that interprets the body as JSON and\n   * returns the full `HttpResponse`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the full `HttpResponse`,\n   * with the response body of type `Object`.\n   */\n  get(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<Object>>;\n  /**\n   * Constructs a `GET` request that interprets the body as JSON and\n   * returns the full `HttpResponse`.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the full `HttpResponse` for the request,\n   * with a response body in the requested type.\n   */\n  get<T>(\n    url: string,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<T>>;\n  /**\n   * Constructs a `GET` request that interprets the body as JSON and\n   * returns the response body as an object parsed from JSON.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   *\n   * @return An `Observable` of the response body as a JavaScript object.\n   */\n  get(\n    url: string,\n    options?: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<Object>;\n  /**\n   * Constructs a `GET` request that interprets the body as JSON and returns\n   * the response body in a given type.\n   *\n   * @param url     The endpoint URL.\n   * @param options The HTTP options to send with the request.\n   *\n   * @return An `Observable` of the `HttpResponse`, with a response body in the requested type.\n   */\n  get<T>(\n    url: string,\n    options?: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<T>;\n  /** Constructs a `GET` request and returns the response body in a given type. */\n  public get<T>(url: string, params: any = {}): Observable<any> {\n    return this.http.get<T>(url, {\n      ...params,\n      headers: this.getAuthHeader({\n        method: 'GET',\n        url,\n        options: {\n          headers: params?.headers,\n          params: params?.params,\n        },\n      }),\n    });\n  }\n\n  /**\n   * Constructs a `PATCH` request that interprets the body as an `ArrayBuffer` and returns\n   * the response as an `ArrayBuffer`.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.\n   */\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<ArrayBuffer>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as a `Blob` and returns the response\n   * as a `Blob`.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return An `Observable` of the response, with the response body as a `Blob`.\n   */\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<Blob>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as a text string and\n   * returns the response as a string value.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return An `Observable` of the response, with a response body of type string.\n   */\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<string>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as an `ArrayBuffer` and\n   *  returns the full event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return An `Observable` of all the `HttpEvent`s for the request,\n   * with the response body as an `ArrayBuffer`.\n   */\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<ArrayBuffer>>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as a `Blob`\n   *  and returns the full event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return An `Observable` of all the `HttpEvent`s for the request, with the\n   * response body as `Blob`.\n   */\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<Blob>>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as a text string and\n   * returns the full event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return An `Observable` of all the `HttpEvent`s for the request, with a\n   * response body of type string.\n   */\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<string>>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as JSON\n   * and returns the full event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return An `Observable` of all the `HttpEvent`s for the request,\n   * with a response body of type `Object`.\n   */\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<Object>>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as JSON\n   * and returns the full event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return An `Observable` of all the `HttpEvent`s for the request,\n   * with a response body in the requested type.\n   */\n  patch<T>(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<T>>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as an `ArrayBuffer`\n   *  and returns the full `HttpResponse`.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return  An `Observable` of the `HttpResponse` for the request,\n   * with the response body as an `ArrayBuffer`.\n   */\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<ArrayBuffer>>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as a `Blob` and returns the full\n   * `HttpResponse`.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return  An `Observable` of the `HttpResponse` for the request,\n   * with the response body as a `Blob`.\n   */\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<Blob>>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as a text stream and returns the\n   * full `HttpResponse`.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return  An `Observable` of the `HttpResponse` for the request,\n   * with a response body of type string.\n   */\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<string>>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as JSON\n   * and returns the full `HttpResponse`.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return An `Observable` of the `HttpResponse` for the request,\n   * with a response body in the requested type.\n   */\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<Object>>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as JSON\n   * and returns the full `HttpResponse`.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return An `Observable` of the `HttpResponse` for the request,\n   * with a response body in the given type.\n   */\n  patch<T>(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<T>>;\n  /**\n  \n     * Constructs a `PATCH` request that interprets the body as JSON and\n     * returns the response body as an object parsed from JSON.\n     *\n     * @param url The endpoint URL.\n     * @param body The resources to edit.\n     * @param options HTTP options.\n     *\n     * @return An `Observable` of the response, with the response body as an object parsed from JSON.\n     */\n  patch(\n    url: string,\n    body: any | null,\n    options?: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<Object>;\n  /**\n   * Constructs a `PATCH` request that interprets the body as JSON\n   * and returns the response in a given type.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to edit.\n   * @param options HTTP options.\n   *\n   * @return  An `Observable` of the `HttpResponse` for the request,\n   * with a response body in the given type.\n   */\n  patch<T>(\n    url: string,\n    body: any | null,\n    options?: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<T>;\n  /** Constructs a `PATCH` request and returns the response body in a given type. */\n  public patch<T>(url: string, body?: any, params?: any): Observable<any> {\n    return this.http.patch<T>(url, body, {\n      ...params,\n      headers: this.getAuthHeader({\n        method: 'PATCH',\n        url,\n        data: body,\n        options: {\n          headers: params?.headers,\n          params: params?.params,\n        },\n      }),\n    });\n  }\n\n  /**\n   * Constructs a `POST` request that interprets the body as an `ArrayBuffer` and returns\n   * an `ArrayBuffer`.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options.\n   *\n   * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.\n   */\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<ArrayBuffer>;\n  /**\n   * Constructs a `POST` request that interprets the body as a `Blob` and returns the\n   * response as a `Blob`.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the response, with the response body as a `Blob`.\n   */\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<Blob>;\n  /**\n   * Constructs a `POST` request that interprets the body as a text string and\n   * returns the response as a string value.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the response, with a response body of type string.\n   */\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<string>;\n  /**\n   * Constructs a `POST` request that interprets the body as an `ArrayBuffer` and\n   * returns the full event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of all `HttpEvent`s for the request,\n   * with the response body as an `ArrayBuffer`.\n   */\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<ArrayBuffer>>;\n  /**\n   * Constructs a `POST` request that interprets the body as a `Blob`\n   * and returns the response in an observable of the full event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of all `HttpEvent`s for the request, with the response body as `Blob`.\n   */\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<Blob>>;\n  /**\n   * Constructs a `POST` request that interprets the body as a text string and returns the full\n   * event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return  An `Observable` of all `HttpEvent`s for the request,\n   * with a response body of type string.\n   */\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<string>>;\n  /**\n   * Constructs a POST request that interprets the body as JSON and returns the full\n   * event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return  An `Observable` of all `HttpEvent`s for the request,\n   * with a response body of type `Object`.\n   */\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<Object>>;\n  /**\n   * Constructs a POST request that interprets the body as JSON and returns the full\n   * event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of all `HttpEvent`s for the request,\n   * with a response body in the requested type.\n   */\n  post<T>(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<T>>;\n  /**\n   * Constructs a POST request that interprets the body as an `ArrayBuffer`\n   *  and returns the full `HttpResponse`.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return  An `Observable` of the `HttpResponse` for the request, with the response body as an\n   * `ArrayBuffer`.\n   */\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<ArrayBuffer>>;\n  /**\n   * Constructs a `POST` request that interprets the body as a `Blob` and returns the full\n   * `HttpResponse`.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the `HttpResponse` for the request,\n   * with the response body as a `Blob`.\n   */\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<Blob>>;\n  /**\n   * Constructs a `POST` request that interprets the body as a text stream and returns\n   * the full `HttpResponse`.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return  An `Observable` of the `HttpResponse` for the request,\n   * with a response body of type string.\n   */\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<string>>;\n  /**\n   * Constructs a `POST` request that interprets the body as JSON\n   * and returns the full `HttpResponse`.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the `HttpResponse` for the request, with a response body of type\n   * `Object`.\n   */\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<Object>>;\n  /**\n   * Constructs a `POST` request that interprets the body as JSON and returns the\n   * full `HttpResponse`.\n   *\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the `HttpResponse` for the request, with a response body in the\n   * requested type.\n   */\n  post<T>(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<T>>;\n  /**\n   * Constructs a `POST` request that interprets the body as JSON\n   * and returns the response body as an object parsed from JSON.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the response, with the response body as an object parsed from JSON.\n   */\n  post(\n    url: string,\n    body: any | null,\n    options?: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<Object>;\n  /**\n   * Constructs a `POST` request that interprets the body as JSON\n   * and returns an observable of the response.\n   *\n   * @param url The endpoint URL.\n   * @param body The content to replace with.\n   * @param options HTTP options\n   *\n   * @return  An `Observable` of the `HttpResponse` for the request, with a response body in the\n   * requested type.\n   */\n  post<T>(\n    url: string,\n    body: any | null,\n    options?: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      transferCache?:\n        | {\n            includeHeaders?: string[];\n          }\n        | boolean;\n      timeout?: number;\n    }\n  ): Observable<T>;\n  /** Constructs a `POST` request and returns the response body in a given type. */\n  public post<T>(url: string, body?: any, params?: any): Observable<any> {\n    return this.http.post<T>(url, body, {\n      ...params,\n      headers: this.getAuthHeader({\n        method: 'POST',\n        url,\n        data: body,\n        options: {\n          headers: params?.headers,\n          params: params?.params,\n        },\n      }),\n    });\n  }\n\n  /**\n   * Constructs a `PUT` request that interprets the body as an `ArrayBuffer` and returns the\n   * response as an `ArrayBuffer`.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.\n   */\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<ArrayBuffer>;\n  /**\n   * Constructs a `PUT` request that interprets the body as a `Blob` and returns\n   * the response as a `Blob`.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the response, with the response body as a `Blob`.\n   */\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<Blob>;\n  /**\n   * Constructs a `PUT` request that interprets the body as a text string and\n   * returns the response as a string value.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the response, with a response body of type string.\n   */\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<string>;\n  /**\n   * Constructs a `PUT` request that interprets the body as an `ArrayBuffer` and\n   * returns the full event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of all `HttpEvent`s for the request,\n   * with the response body as an `ArrayBuffer`.\n   */\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<ArrayBuffer>>;\n  /**\n   * Constructs a `PUT` request that interprets the body as a `Blob` and returns the full event\n   * stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of all `HttpEvent`s for the request,\n   * with the response body as a `Blob`.\n   */\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<Blob>>;\n  /**\n   * Constructs a `PUT` request that interprets the body as a text string and returns the full event\n   * stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of all `HttpEvent`s for the request, with a response body\n   * of type string.\n   */\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<string>>;\n  /**\n   * Constructs a `PUT` request that interprets the body as JSON and returns the full\n   * event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of all `HttpEvent`s for the request, with a response body of\n   * type `Object`.\n   */\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<Object>>;\n  /**\n   * Constructs a `PUT` request that interprets the body as JSON and returns the\n   * full event stream.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of all `HttpEvent`s for the request,\n   * with a response body in the requested type.\n   */\n  put<T>(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpEvent<T>>;\n  /**\n   * Constructs a `PUT` request that interprets the body as an\n   * `ArrayBuffer` and returns an observable of the full HTTP response.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the `HttpResponse` for the request, with the response body as an\n   * `ArrayBuffer`.\n   */\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<ArrayBuffer>>;\n  /**\n   * Constructs a `PUT` request that interprets the body as a `Blob` and returns the\n   * full HTTP response.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the `HttpResponse` for the request,\n   * with the response body as a `Blob`.\n   */\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<Blob>>;\n  /**\n   * Constructs a `PUT` request that interprets the body as a text stream and returns the\n   * full HTTP response.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the `HttpResponse` for the request, with a response body of type\n   * string.\n   */\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<string>>;\n  /**\n   * Constructs a `PUT` request that interprets the body as JSON and returns the full\n   * HTTP response.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the `HttpResponse` for the request, with a response body\n   * of type 'Object`.\n   */\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<Object>>;\n  /**\n   * Constructs a `PUT` request that interprets the body as an instance of the requested type and\n   * returns the full HTTP response.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the `HttpResponse` for the request,\n   * with a response body in the requested type.\n   */\n  put<T>(\n    url: string,\n    body: any | null,\n    options: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<HttpResponse<T>>;\n  /**\n   * Constructs a `PUT` request that interprets the body as JSON\n   * and returns an observable of JavaScript object.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the response as a JavaScript object.\n   */\n  put(\n    url: string,\n    body: any | null,\n    options?: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<Object>;\n  /**\n   * Constructs a `PUT` request that interprets the body as an instance of the requested type\n   * and returns an observable of the requested type.\n   *\n   * @param url The endpoint URL.\n   * @param body The resources to add/update.\n   * @param options HTTP options\n   *\n   * @return An `Observable` of the requested type.\n   */\n  put<T>(\n    url: string,\n    body: any | null,\n    options?: {\n      headers?: HttpHeaders | Record<string, string | string[]>;\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | Record<\n            string,\n            | string\n            | number\n            | boolean\n            | ReadonlyArray<string | number | boolean>\n          >;\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      credentials?: RequestCredentials;\n      keepalive?: boolean;\n      priority?: RequestPriority;\n      cache?: RequestCache;\n      mode?: RequestMode;\n      redirect?: RequestRedirect;\n      referrer?: string;\n      integrity?: string;\n      timeout?: number;\n    }\n  ): Observable<T>;\n  /** Constructs a `PUT` request and returns the response body in a given type. */\n  public put<T>(url: string, body?: any, params?: any): Observable<any> {\n    return this.http.put<T>(url, body, {\n      ...params,\n      headers: this.getAuthHeader({\n        method: 'PUT',\n        url,\n        data: body,\n        options: {\n          headers: params?.headers,\n          params: params?.params,\n        },\n      }),\n    });\n  }\n}\n","/** @format */\n\nimport { inject } from '@angular/core';\nimport {\n  HttpEvent,\n  HttpHandlerFn,\n  HttpInterceptorFn,\n  HttpRequest,\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { FLUIG_API_CONFIG } from './fluig-api.config';\nimport { FluigAPIService } from './fluig-api.service';\n\nexport const fluigAPIInterceptor: HttpInterceptorFn = (\n  req: HttpRequest<unknown>,\n  next: HttpHandlerFn\n): Observable<HttpEvent<unknown>> => {\n  const config = inject(FLUIG_API_CONFIG);\n  if (!config || !config.local || !config.endpoints) return next(req);\n\n  const endpoints: string[] = 'endpoints' in config ? config.endpoints : [];\n  if (endpoints.length > 0) {\n    const matches = endpoints.filter((url) => req.url.startsWith(url));\n    if (matches.length === 0) return next(req);\n  }\n\n  const authToken = inject(FluigAPIService).getAuthToken({\n    url: req.urlWithParams,\n    method: req.method,\n    data: req.body,\n  });\n  const authHeader = req.headers.set('Authorization', authToken);\n  const signedRequest = req.clone({ headers: authHeader });\n\n  if ('debug' in config && config.debug) {\n    console.log(\n      `[FluigAPI] Request to ${req.url} intercepted. - Auth header added.`\n    );\n  }\n\n  return next(signedRequest);\n};\n","/** @format */\n\n/* Public API Surface of OAuth */\n\nexport { FLUIG_API_CONFIG, FluigAPIConfig } from './lib/fluig-api.config';\nexport * from './lib/fluig-api.provider';\nexport * from './lib/fluig-api.service';\nexport * from './lib/fluig-api.interceptor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}