import type { EnumTypeComposer, InputTypeComposer, ObjectTypeComposer, ScalarTypeComposer } from 'graphql-compose';
import type { Logger, MeshFetch } from '@graphql-mesh/types';
import type { WSDLDefinition, WSDLMessage, WSDLObject, XSComplexType, XSDObject, XSElement, XSSchema, XSSimpleType } from './types.js';
export interface SOAPLoaderOptions {
    subgraphName: string;
    fetch?: MeshFetch;
    logger?: Logger;
    schemaHeaders?: Record<string, string>;
    operationHeaders?: Record<string, string>;
    soapHeaders?: SOAPHeaders;
    endpoint?: string;
    cwd?: string;
    bodyAlias?: string;
    soapNamespace?: string;
}
export interface SOAPHeaders {
    /**
     * The namespace of the SOAP Header
     *
     * @example http://www.example.com/namespace
     */
    namespace: string;
    /**
     * The name of the alias to be used in the envelope
     *
     * @default header
     */
    alias?: string;
    /**
     * The content of the SOAP Header
     *
     * @example { "key": "value" }
     *
     * then the content will be `<key>value</key>` in XML
     */
    headers: unknown;
}
export declare class SOAPLoader {
    private schemaComposer;
    private namespaceDefinitionsMap;
    private namespaceComplexTypesMap;
    private namespaceSimpleTypesMap;
    private namespacePortTypesMap;
    private namespaceBindingMap;
    private namespaceMessageMap;
    private aliasMap;
    private messageOutputTCMap;
    private complexTypeInputTCMap;
    private complexTypeOutputTCMap;
    private simpleTypeTCMap;
    private namespaceTypePrefixMap;
    private namespaceElementRefMap;
    loadedLocations: Map<string, WSDLObject | XSDObject>;
    private schemaHeadersFactory;
    private fetchFn;
    private subgraphName;
    private logger;
    private endpoint?;
    private cwd;
    private soapHeaders;
    private bodyAlias?;
    private soapNamespace;
    constructor(options: SOAPLoaderOptions);
    loadXMLSchemaNamespace(): void;
    private getNamespaceDefinitions;
    private getNamespaceComplexTypeMap;
    private getNamespaceSimpleTypeMap;
    private getNamespacePortTypeMap;
    private getNamespaceBindingMap;
    private getNamespaceMessageMap;
    loadSchema(schemaObj: XSSchema, parentAliasMap?: Map<string, string>): Promise<void>;
    loadDefinition(definition: WSDLDefinition): Promise<void>;
    private xmlParser;
    fetchXSD(location: string, parentAliasMap?: Map<string, string>): Promise<void>;
    loadWSDL(wsdlText: string): Promise<WSDLObject>;
    fetchWSDL(location: string): Promise<void>;
    getAliasMapFromAttributes(attributes: XSSchema['attributes'] | WSDLDefinition['attributes']): Map<string, string>;
    getTypeForSimpleType(simpleType: XSSimpleType, simpleTypeNamespace: string): EnumTypeComposer | ScalarTypeComposer;
    getInputTypeForTypeNameInNamespace({ typeName, typeNamespace }: {
        typeName: string;
        typeNamespace: string;
    }): any;
    getInputTypeForComplexType(complexType: XSComplexType, complexTypeNamespace: string): InputTypeComposer<any> | ScalarTypeComposer<any>;
    getOutputFieldTypeFromElement(elementObj: XSElement, aliasMap: Map<string, string>, namespace: string, parentTypeName?: string): any;
    getOutputTypeForComplexType(complexType: XSComplexType, complexTypeNamespace: string): ObjectTypeComposer<any, any> | ScalarTypeComposer<any>;
    getOutputTypeForTypeNameInNamespace({ typeName, typeNamespace }: {
        typeName: string;
        typeNamespace: string;
    }): any;
    getOutputTypeForMessage(message: WSDLMessage): {
        type: () => ObjectTypeComposer | ScalarTypeComposer | EnumTypeComposer;
        elementName: string;
    };
    buildSchema(): import("graphql").GraphQLSchema;
}
