import { IOptions } from 'soap'; import { IWSSecurityOptions } from 'soap/lib/security'; import { ModuleMetadata, Scope, Type } from '@nestjs/common/interfaces'; import { BASIC_AUTH, WSSECURITY_AUTH } from './soap-constants'; export { Client, IOptions } from 'soap'; interface Auth { type: typeof BASIC_AUTH | typeof WSSECURITY_AUTH; username: string; password: string; } export interface BasicAuth extends Auth { } export interface WSSecurityAuth extends Auth { options?: WSSecurityOptions; } export interface WSSecurityOptions extends IWSSecurityOptions { } export type SoapModuleOptions = { uri: string; clientName: string; auth?: BasicAuth | WSSecurityAuth; clientOptions?: IOptions; }; export type SoapModuleOptionsFactoryType = Omit; export interface SoapModuleOptionsFactory { createSoapModuleOptions(): Promise | SoapModuleOptionsFactoryType; } export interface SoapModuleAsyncOptions extends Pick { clientName: string; inject?: any[]; scope?: Scope; useClass?: Type; useExisting?: Type; useFactory?: (...args: any[]) => Promise | SoapModuleOptionsFactoryType; }