/*!
 * Copyright (c) 2019 Contributors to the Eclipse Foundation
 *
 * See the NOTICE file(s) distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0
 *
 * SPDX-License-Identifier: EPL-2.0
 */
import { HttpThingsHandle } from './handles/things.interfaces';
import { FeaturesHandle } from './handles/features.interfaces';
import { HttpMessagesHandle } from './handles/messages-http';
import { SearchHandle } from './handles/search';
import { PoliciesHandle } from './handles/policies';
import { HttpRequestSenderBuilder } from './request-factory/http-request-sender';
import { AbstractDittoClient, DittoClient, DittoClientHandles } from './ditto-client';
import { CustomBuilderContext } from './builder-steps';
export interface DittoHttpClient extends DittoClient<HttpThingsHandle, FeaturesHandle> {
    /**
     * Builds a handle to handle Messages requests.
     *
     * @return a HttpMessagesHandle.
     */
    getMessagesHandle(customBuildContext?: CustomBuilderContext): HttpMessagesHandle;
    /**
     * Builds a handle to handle Search requests.
     *
     * @return a Search.
     */
    getSearchHandle(customBuildContext?: CustomBuilderContext): SearchHandle;
    /**
     * Builds a handle to handle Policies requests.
     *
     * @return a PoliciesHandle.
     */
    getPoliciesHandle(customBuildContext?: CustomBuilderContext): PoliciesHandle;
}
export interface DittoHttpClientHandles extends DittoClientHandles<HttpRequestSenderBuilder> {
    thingsHandle?: (requestSenderBuilder: HttpRequestSenderBuilder, customBuildContext?: CustomBuilderContext) => HttpThingsHandle;
    messagesHandle?: (requestSenderBuilder: HttpRequestSenderBuilder, customBuildContext?: CustomBuilderContext) => HttpMessagesHandle;
    searchHandle?: (requestSenderBuilder: HttpRequestSenderBuilder, customBuildContext?: CustomBuilderContext) => SearchHandle;
    policiesHandle?: (requestSenderBuilder: HttpRequestSenderBuilder, customBuildContext?: CustomBuilderContext) => PoliciesHandle;
}
export declare class DefaultDittoHttpClient extends AbstractDittoClient<HttpRequestSenderBuilder, DittoHttpClientHandles> implements DittoHttpClient {
    private constructor();
    /**
     * Returns an instance of DittoClient based on the context provided.
     *
     * @param builder - The request sender builder to build on.
     * @param customHandles - Custom handles to use instead of the default ones.
     * @return the DittoClient instance.
     */
    static getInstance(builder: HttpRequestSenderBuilder, customHandles?: DittoHttpClientHandles): DefaultDittoHttpClient;
    getFeaturesHandle(thingId: string, customBuildContext?: CustomBuilderContext): FeaturesHandle;
    getThingsHandle(customBuildContext?: CustomBuilderContext): HttpThingsHandle;
    getMessagesHandle(customBuildContext?: CustomBuilderContext): HttpMessagesHandle;
    getPoliciesHandle(customBuildContext?: CustomBuilderContext): PoliciesHandle;
    getSearchHandle(customBuildContext?: CustomBuilderContext): SearchHandle;
}
//# sourceMappingURL=ditto-client-http.d.ts.map