import { NamespaceContext } from '../nscontext';
import { IOptions } from '../types';
import * as elements from './elements';
interface IInitializedOptions extends IOptions {
    ignoredNamespaces?: string[];
}
export declare class WSDL {
    ignoredNamespaces: string[];
    ignoreBaseNameSpaces: boolean;
    valueKey: string;
    xmlKey: string;
    xmlnsInEnvelope: string;
    uri: string;
    definitions: elements.DefinitionsElement;
    options: IInitializedOptions;
    private callback;
    private services;
    private xml;
    private _includesWsdl;
    private _originalIgnoredNamespaces;
    constructor(definition: any, uri: string, options: IOptions);
    onReady(callback: (err: Error) => void): void;
    processIncludes(callback: any): void;
    describeServices(): {};
    toXML(): string;
    xmlToObject(xml: any, callback?: any): any;
    /**
     * Look up a XSD type or element by namespace URI and name
     * @param {String} nsURI Namespace URI
     * @param {String} qname Local or qualified name
     * @returns {*} The XSD type/element definition
     */
    findSchemaObject(nsURI: string, qname: string): any;
    /**
     * Create document style xml string from the parameters
     * @param {String} name
     * @param {*} params
     * @param {String} nsPrefix
     * @param {String} nsURI
     * @param {String} type
     */
    objectToDocumentXML(name: string, params: any, nsPrefix: string, nsURI?: string, type?: string): any;
    /**
     * Create RPC style xml string from the parameters
     * @param {String} name
     * @param {*} params
     * @param {String} nsPrefix
     * @param {String} nsURI
     * @returns {string}
     */
    objectToRpcXML(name: string, params: any, nsPrefix: string, nsURI: string, isParts?: boolean): string;
    isIgnoredNameSpace(ns: string): boolean;
    filterOutIgnoredNameSpace(ns: string): string;
    /**
     * Convert an object to XML.  This is a recursive method as it calls itself.
     *
     * @param {Object} obj the object to convert.
     * @param {String} name the name of the element (if the object being traversed is
     * an element).
     * @param {String} nsPrefix the namespace prefix of the object I.E. xsd.
     * @param {String} nsURI the full namespace of the object I.E. http://w3.org/schema.
     * @param {Boolean} isFirst whether or not this is the first item being traversed.
     * @param {?} xmlnsAttr
     * @param {?} parameterTypeObject
     * @param {NamespaceContext} nsContext Namespace context
     */
    objectToXML(obj: any, name: string, nsPrefix: any, nsURI: string, isFirst?: boolean, xmlnsAttr?: any, schemaObject?: any, nsContext?: NamespaceContext): any;
    processAttributes(child: any, nsContext: NamespaceContext): string;
    /**
     * Look up a schema type definition
     * @param name
     * @param nsURI
     * @returns {*}
     */
    findSchemaType(name: any, nsURI: any): any;
    findChildSchemaObject(parameterTypeObj: any, childName: any, backtrace?: any): any;
    private _initializeOptions;
    private _processNextInclude;
    private _parse;
    private _fromXML;
    private _fromServices;
    private _xmlnsMap;
}
declare type WSDLCallback = (error: any, result?: WSDL) => any;
export declare function open_wsdl(uri: any, callback: WSDLCallback): any;
export declare function open_wsdl(uri: any, options: IOptions, callback: WSDLCallback): any;
export {};
