import { ClientKind } from './common';
import { ResourceBase, ResourceIdentifier, SiteVersionResponse } from './contracts/common';
import { ICreateRuntimeMapOptions, IMapGuideClient, IDescribeRuntimeMapOptions, IQueryMapFeaturesOptions } from './request-builder';
import { RuntimeMap } from './contracts/runtime-map';
import { QueryMapFeaturesResponse } from './contracts/query';
/**
 * The MapGuide HTTP client
 *
 * @export
 * @class Client
 * @implements {IMapGuideClient}
 */
export declare class Client implements IMapGuideClient {
    private builder;
    constructor(agentUri: string, kind: ClientKind);
    getText(url: string): Promise<string>;
    /**
     * Performs a generic GET request at the specified URL
     *
     * @template T The type of the object you are expecting to receive
     * @param {string} url The url to make the request to
     * @returns {Promise<T>} A promise for the value of the requested type
     *
     * @memberOf Client
     */
    get<T>(url: string): Promise<T>;
    /**
     * Performs a generic POST request at the specified URL
     *
     * @template T The type of the object you are expecting to receive
     * @param {string} url The url to make the request to
     * @param {*} data The POST form data
     * @returns {Promise<T>} A promise for the value of the requested type
     *
     * @memberOf Client
     */
    post<T>(url: string, data: any): Promise<T>;
    /**
     * Creates a new MapGuide session
     *
     * @param {string} username
     * @param {string} password
     * @returns {Promise<string>}
     *
     * @memberOf Client
     */
    createSession(username: string, password: string): Promise<string>;
    /**
     * Gets the server session timeout for the given session id
     *
     * @param {string} session
     * @returns {Promise<number>}
     *
     * @memberOf Client
     */
    getServerSessionTimeout(session: string): Promise<number>;
    /**
     * gets the MapGuide Server version
     *
     * @since 0.14
     */
    getSiteVersion(): Promise<SiteVersionResponse>;
    /**
     * Retrieves the requested resource
     *
     * @template T
     * @param {ResourceIdentifier} resourceId
     * @param {*} [args]
     * @returns {Promise<T>}
     *
     * @memberOf Client
     */
    getResource<T extends ResourceBase>(resourceId: ResourceIdentifier, args?: any): Promise<T>;
    /**
     * Creates a runtime map from the specified map definition. Issues a v3.0.0 request
     *
     * @param {ICreateRuntimeMapOptions} options
     * @returns {Promise<RuntimeMap>}
     *
     * @memberOf Client
     */
    createRuntimeMap(options: ICreateRuntimeMapOptions): Promise<RuntimeMap>;
    /**
     * Creates a runtime map from the specified map definition. Issues a v4.0.0 request
     *
     * @param {ICreateRuntimeMapOptions} options
     * @returns {Promise<RuntimeMap>}
     *
     * @memberOf Client
     * @since 0.14.8
     */
    createRuntimeMap_v4(options: ICreateRuntimeMapOptions): Promise<RuntimeMap>;
    /**
     * Describes a runtime map. Issues a v3.0.0 request
     *
     * @param {IDescribeRuntimeMapOptions} options
     * @returns {Promise<RuntimeMap>}
     *
     * @memberOf Client
     */
    describeRuntimeMap(options: IDescribeRuntimeMapOptions): Promise<RuntimeMap>;
    /**
     * Describes a runtime map. Issues a v4.0.0 request
     *
     * @param {IDescribeRuntimeMapOptions} options
     * @returns {Promise<RuntimeMap>}
     *
     * @memberOf Client
     * @since 0.14.8
     */
    describeRuntimeMap_v4(options: IDescribeRuntimeMapOptions): Promise<RuntimeMap>;
    /**
     * Performs a map selection query on the current map
     *
     * @param {IQueryMapFeaturesOptions} options
     * @returns {Promise<QueryMapFeaturesResponse>}
     *
     * @memberOf Client
     */
    queryMapFeatures(options: IQueryMapFeaturesOptions): Promise<QueryMapFeaturesResponse>;
    /**
     * Performs a map selection query on the current map. Only applicable for use in MapGuide Open Source
     * 4.0 and higher
     *
     * @param {IQueryMapFeaturesOptions} options
     * @returns {Promise<QueryMapFeaturesResponse>}
     *
     * @memberOf Client
     */
    queryMapFeatures_v4(options: IQueryMapFeaturesOptions): Promise<QueryMapFeaturesResponse>;
    /**
     * Gets the tile template URL used by the viewer to send tile requests
     *
     * @param {string} resourceId
     * @param {string} groupName
     * @param {string} xPlaceholder
     * @param {string} yPlaceholder
     * @param {string} zPlaceholder
     * @returns {string}
     *
     * @memberOf Client
     * @since 0.14.8 added isXYZ parameter
     */
    getTileTemplateUrl(resourceId: string, groupName: string, xPlaceholder: string, yPlaceholder: string, zPlaceholder: string, isXYZ: boolean): string;
}
