import * as Posterior from 'posterior';
import * as DOM from './DOM';
import * as SOAP from './SOAP';
import * as XML from './XML';
export declare class Client {
    url: string;
    Base: Posterior.Requester;
    WSDL: Posterior.Requester & {
        [Sub: string]: Posterior.Requester;
    };
    Query: Posterior.Requester & {
        [Sub: string]: Posterior.Requester;
    };
    Edit: Posterior.Requester & {
        [Sub: string]: Posterior.Requester;
    };
    config: Posterior.InputConfig;
    constructor(url: string, cfg?: Posterior.InputConfig);
}
export interface RequestConstructor {
    new (action: string, url: string, namespaces?: string[]): Request;
}
export declare function adapter(ReqCtor: RequestConstructor, action: string, url: string, defaultName?: string, namespaces?: string[]): (data?: Params | undefined) => string;
export declare type ParamValue = XML.Element | DOM.JSONObject | string | number | boolean;
export interface Params {
    [name: string]: ParamValue;
}
export declare abstract class Request extends SOAP.Request {
    action: string;
    url: string;
    static BODIES: {
        [action: string]: string;
    };
    request: SOAP.Element;
    constructor(action: string, url: string, namespaces?: string[]);
    setRequestBody(xml: string): void;
    param(name: string, value?: ParamValue): this;
    params(params?: Params): this;
}
