/*!
 * 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 { GenericResponse, PutResponse } from '../../model/response';
import { Thing } from '../../model/things.model';
import { FieldsOptions, GetThingsOptions, MatchOptions } from '../../options/request.options';
import { RequestSender, RequestSenderFactory } from '../request-factory/request-sender';
import { HttpThingsHandle, WebSocketThingsHandle } from './things.interfaces';
/**
 * Handle to send Things requests.
 */
export declare class DefaultThingsHandle implements WebSocketThingsHandle, HttpThingsHandle {
    protected readonly requestFactory: RequestSender;
    protected constructor(requestFactory: RequestSender);
    /**
     * returns an instance of DefaultThingsHandle using the provided RequestSender.
     *
     * @param builder - The builder for the RequestSender to work with.
     * @returns The DefaultThingsHandle
     */
    static getInstance(builder: RequestSenderFactory): DefaultThingsHandle;
    getThing(thingId: string, options?: FieldsOptions): Promise<Thing>;
    getAttributes(thingId: string, options?: FieldsOptions): Promise<object>;
    getAttribute(thingId: string, attributePath: string, options?: MatchOptions): Promise<any>;
    getPolicyId(thingId: string, options?: MatchOptions): Promise<string>;
    getDefinition(thingId: string, options?: MatchOptions): Promise<string>;
    deleteThing(thingId: string, options?: MatchOptions): Promise<GenericResponse>;
    deleteAttributes(thingId: string, options?: MatchOptions): Promise<GenericResponse>;
    deleteAttribute(thingId: string, attributePath: string, options?: MatchOptions): Promise<GenericResponse>;
    deleteDefinition(thingId: string, options?: MatchOptions): Promise<GenericResponse>;
    getThings(thingIds: string[], options?: GetThingsOptions): Promise<Thing[]>;
    postThing(thingWithoutId: Object): Promise<Thing>;
    putThing(thing: Thing, options?: MatchOptions): Promise<PutResponse<Thing>>;
    createThing(thing: Thing, options?: MatchOptions): Promise<PutResponse<Thing>>;
    patchThing(thing: Thing, options?: MatchOptions | undefined): Promise<PutResponse<Thing>>;
    putAttributes(thingId: string, attributes: object, options?: MatchOptions): Promise<PutResponse<object>>;
    putAttribute(thingId: string, attributePath: string, attributeValue: any, options?: MatchOptions): Promise<PutResponse<any>>;
    patchAttributes(thingId: string, attributes: object, options?: MatchOptions): Promise<PutResponse<object>>;
    patchAttribute(thingId: string, attributePath: string, attributeValue: any, options?: MatchOptions): Promise<PutResponse<any>>;
    putPolicyId(thingId: string, policyId: string, options?: MatchOptions): Promise<PutResponse<string>>;
    patchPolicyId(thingId: string, policyId: string, options?: MatchOptions): Promise<PutResponse<string>>;
    putDefinition(thingId: string, definition: string, options?: MatchOptions): Promise<PutResponse<string>>;
    patchDefinition(thingId: string, definition: string, options?: MatchOptions): Promise<PutResponse<string>>;
    private changeThing;
    getStringAtPath(thingId: string, path: string, options?: MatchOptions): Promise<string>;
    deleteItemAtPath(thingId: string, path: string, options?: MatchOptions): Promise<GenericResponse>;
}
//# sourceMappingURL=things.d.ts.map