import {
  Client as SoapClient,
  createClientAsync as soapCreateClientAsync,
  IExOptions as ISoapExOptions,
} from 'soap'
import { GetMcmSupplyChainDiagnosticsDownloadUrl } from './definitions/GetMcmSupplyChainDiagnosticsDownloadUrl'
import { GetMcmSupplyChainDiagnosticsDownloadUrlResponse } from './definitions/GetMcmSupplyChainDiagnosticsDownloadUrlResponse'
import { AdsTxtService } from './services/AdsTxtService'

export interface AdsTxtServiceClient extends SoapClient {
  AdsTxtService: AdsTxtService
  getMcmSupplyChainDiagnosticsDownloadUrlAsync(
    getMcmSupplyChainDiagnosticsDownloadUrl: GetMcmSupplyChainDiagnosticsDownloadUrl,
    options?: ISoapExOptions,
  ): Promise<
    [
      result: GetMcmSupplyChainDiagnosticsDownloadUrlResponse,
      rawResponse: any,
      soapHeader: any,
      rawRequest: any,
    ]
  >
}

/** Create AdsTxtServiceClient */
export function createClientAsync(
  ...args: Parameters<typeof soapCreateClientAsync>
): Promise<AdsTxtServiceClient> {
  return soapCreateClientAsync(args[0], args[1], args[2]) as any
}
