/*!
 * 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 { Feature, Features } from '../../model/things.model';
import { FieldsOptions, MatchOptions } from '../../options/request.options';
import { RequestSenderFactory } from '../request-factory/request-sender';
import { FeaturesHandle } from './features.interfaces';
/**
 * Handle to send Feature requests.
 */
export declare class DefaultFeaturesHandle implements FeaturesHandle {
    private readonly requestFactory;
    private readonly thingId;
    private constructor();
    /**
     * returns an instance of FeaturesHandle using the provided RequestSender.
     *
     * @param builder - The for the RequestSender to work with.
     * @param thingId - The ThingId to use.
     * @returns The FeaturesHandle
     */
    static getInstance(builder: RequestSenderFactory, thingId: string): DefaultFeaturesHandle;
    getFeatures(options?: FieldsOptions): Promise<Features>;
    getFeature(featureId: string, options?: FieldsOptions): Promise<Feature>;
    getDefinition(featureId: string, options?: MatchOptions): Promise<string[]>;
    getProperties(featureId: string, options?: FieldsOptions): Promise<Object>;
    getProperty(featureId: string, propertyPath: string, options?: MatchOptions): Promise<any>;
    deleteFeatures(options?: MatchOptions): Promise<GenericResponse>;
    deleteFeature(featureId: string, options?: MatchOptions): Promise<GenericResponse>;
    deleteDefinition(featureId: string, options?: MatchOptions): Promise<GenericResponse>;
    deleteProperties(featureId: string, options?: MatchOptions): Promise<GenericResponse>;
    deleteProperty(featureId: string, propertyPath: string, options?: MatchOptions): Promise<GenericResponse>;
    putFeatures(features: Features, options?: MatchOptions): Promise<PutResponse<Features>>;
    putFeature(feature: Feature, options?: MatchOptions): Promise<PutResponse<Feature>>;
    patchFeatures(features: Features, options?: MatchOptions): Promise<PutResponse<Features>>;
    patchFeature(feature: Feature, options?: MatchOptions): Promise<PutResponse<Feature>>;
    putDefinition(featureId: string, definition: string[], options?: MatchOptions): Promise<PutResponse<string[]>>;
    patchDefinition(featureId: string, definition: string[], options?: MatchOptions): Promise<PutResponse<string[]>>;
    putProperties(featureId: string, properties: object, options?: MatchOptions): Promise<PutResponse<Object>>;
    putProperty(featureId: string, propertyPath: string, property: any, options?: MatchOptions): Promise<PutResponse<any>>;
    patchProperties(featureId: string, properties: object, options?: MatchOptions): Promise<PutResponse<Object>>;
    patchProperty(featureId: string, propertyPath: string, property: any, options?: MatchOptions): Promise<PutResponse<any>>;
}
//# sourceMappingURL=features.d.ts.map