import { InsightRepository } from "./repository";
import { QueryRequest, QueryResponseItem, Resource, ResourceMetadata } from "./types";
export declare class InsightResourceRepository extends InsightRepository<Resource> {
    getByName(name: string): Promise<QueryResponseItem>;
    query(query: QueryRequest): AsyncGenerator<QueryResponseItem, undefined, undefined>;
    queryAll(query: QueryRequest): Promise<QueryResponseItem[]>;
    getMetadata(resourceID: string, namespace?: string): Promise<ResourceMetadata>;
    setMetadata(resourceID: string, metadata: ResourceMetadata): Promise<void>;
    addMetadata(resourceIDs: string[], metadata: ResourceMetadata): Promise<void>;
    removeMetadata(resourceIDs: string[], namespace: string, keys: string[]): Promise<void>;
    /**
     *  Convert metadata to metadataApiItem[] for buildling API requests.
     *
     *  @params {key1: value1, key2: value2}
     *  @returns [
     *      {key: key1, value: value1, value_type: text},
     *      {key: key2, value: value2, value_type: text}
     *   ]
     */
    private buildMetadataApiItems;
    /**
    *  Convert metadataApiItem[] to {key:value} for parsing API responses.
    *
    *  @params [
    *      {key: key1, value: value1, value_type: text},
    *      {key: key2, value: value2, value_type: text}
    *  ]
    *  @returns {key1: value1, key2: value2}
    */
    private parseMetadataApiItems;
}
//# sourceMappingURL=resource.d.ts.map