/**
 * Shell Card Management APIsLib
 *
 * This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
 */

import { BearerTokenManager } from './bearerTokenManager';
import { HttpClientOptions } from './clientAdapter';
import { OAuthToken } from './models/oAuthToken';

/** An interface for all configuration parameters required by the SDK. */
export interface Configuration {
  timeout: number;
  environment: Environment;
  basicAuthCredentials?: {
    username: string;
    password: string;
  };
  bearerTokenCredentials?: {
    oAuthClientId: string;
    oAuthClientSecret: string;
    oAuthToken?: OAuthToken;
    oAuthTokenProvider?: (
      lastOAuthToken: OAuthToken | undefined,
      authManager: BearerTokenManager
    ) => Promise<OAuthToken>;
    oAuthOnTokenUpdate?: (token: OAuthToken) => void;
    oAuthClockSkew?: number;
  };
  httpClientOptions?: Partial<HttpClientOptions>;
  unstable_httpClientOptions?: any;
}

/** Environments available for API */
export enum Environment {
  SIT = 'SIT',
  Production = 'Production',
}
