@simplito/privmx-webendpoint
Version:
PrivMX Web Endpoint library
151 lines (148 loc) • 7.31 kB
TypeScript
/*!
PrivMX Web Endpoint.
Copyright © 2024 Simplito sp. z o.o.
This file is part of the PrivMX Platform (https://privmx.dev).
This software is Licensed under the PrivMX Free License.
See the License for the specific language governing permissions and
limitations under the License.
*/
import { BaseApi } from "./BaseApi";
import { KvdbApiNative } from "../api/KvdbApiNative";
import { PagingQuery, PagingList, UserWithPubKey, Kvdb, ContainerPolicy, KvdbEntry, DeleteEntriesResult, KvdbEventSelectorType, KvdbEventType } from "../Types";
export declare class KvdbApi extends BaseApi {
protected native: KvdbApiNative;
constructor(native: KvdbApiNative, ptr: number);
/**
* Creates a new KVDB in given Context.
*
* @param {string} contextId ID of the Context to create the KVDB in
* @param {UserWithPubKey[]} users array of UserWithPubKey structs which indicates who will have access to the created KVDB
* @param {UserWithPubKey[]} managers array of UserWithPubKey structs which indicates who will have access (and management rights) to
* the created KVDB
* @param {Uint8Array} publicMeta public (unencrypted) metadata
* @param {Uint8Array} privateMeta private (encrypted) metadata
* @param {ContainerPolicy} policies KVDB's policies
* @returns {string} ID of the created KVDB
*/
createKvdb(contextId: string, users: UserWithPubKey[], managers: UserWithPubKey[], publicMeta: Uint8Array, privateMeta: Uint8Array, policies?: ContainerPolicy): Promise<string>;
/**
* Updates an existing KVDB.
*
* @param {string} kvdbId ID of the KVDB to update
* @param {UserWithPubKey[]} users array of UserWithPubKey structs which indicates who will have access to the created KVDB
* @param {UserWithPubKey[]} managers array of UserWithPubKey structs which indicates who will have access (and management rights) to
* the created KVDB
* @param {Uint8Array} publicMeta public (unencrypted) metadata
* @param {Uint8Array} privateMeta private (encrypted) metadata
* @param {number} version current version of the updated KVDB
* @param {boolean} force force update (without checking version)
* @param {boolean} forceGenerateNewKey force to regenerate a key for the KVDB
* @param {ContainerPolicy} policies KVDB's policies
*/
updateKvdb(kvdbId: string, users: UserWithPubKey[], managers: UserWithPubKey[], publicMeta: Uint8Array, privateMeta: Uint8Array, version: number, force: boolean, forceGenerateNewKey: boolean, policies?: ContainerPolicy): Promise<void>;
/**
* Deletes a KVDB by given KVDB ID.
*
* @param {string} kvdbId ID of the KVDB to delete
*/
deleteKvdb(kvdbId: string): Promise<void>;
/**
* Gets a KVDB by given KVDB ID.
*
* @param {string} kvdbId ID of KVDB to get
* @returns {Kvdb} containing info about the KVDB
*/
getKvdb(kvdbId: string): Promise<Kvdb>;
/**
* Gets a list of Kvdbs in given Context.
*
* @param {string} contextId ID of the Context to get the Kvdbs from
* @param {PagingQuery} pagingQuery with list query parameters
* @returns {PagingList<Kvdb>} containing a list of Kvdbs
*/
listKvdbs(contextId: string, pagingQuery: PagingQuery): Promise<PagingList<Kvdb>>;
/**
* Gets a KVDB entry by given KVDB entry key and KVDB ID.
*
* @param {string} kvdbId KVDB ID of the KVDB entry to get
* @param {string} key key of the KVDB entry to get
* @returns {KvdbEntry} containing the KVDB entry
*/
getEntry(kvdbId: string, key: string): Promise<KvdbEntry>;
/**
* Check whether the KVDB entry exists.
*
* @param {string} kvdbId KVDB ID of the KVDB entry to check
* @param {string} key key of the KVDB entry to check
* @returns {boolean} 'true' if the KVDB has an entry with given key, 'false' otherwise
*/
hasEntry(kvdbId: string, key: string): Promise<boolean>;
/**
* Gets a list of KVDB entries keys from a KVDB.
*
* @param {string} kvdbId ID of the KVDB to list KVDB entries from
* @param {PagingQuery} pagingQuery with list query parameters
* @returns {PagingList<string>} containing a list of KVDB entries
*/
listEntriesKeys(kvdbId: string, pagingQuery: PagingQuery): Promise<PagingList<string>>;
/**
* Gets a list of KVDB entries from a KVDB.
*
* @param {string} kvdbId ID of the KVDB to list KVDB entries from
* @param {PagingQuery} pagingQuery with list query parameters
* @returns {PagingList<KvdbEntry>} containing a list of KVDB entries
*/
listEntries(kvdbId: string, pagingQuery: PagingQuery): Promise<PagingList<KvdbEntry>>;
/**
* Sets a KVDB entry in the given KVDB.
* @param {string} kvdbId ID of the KVDB to set the entry to
* @param {string} key KVDB entry key
* @param {Uint8Array} publicMeta public KVDB entry metadata
* @param {Uint8Array} privateMeta private KVDB entry metadata
* @param {Uint8Array} data content of the KVDB entry
* @param {number} [version] KVDB entry version (when updating the entry)
* @returns {string} ID of the KVDB entry
*/
setEntry(kvdbId: string, key: string, publicMeta: Uint8Array, privateMeta: Uint8Array, data: Uint8Array, version?: number): Promise<void>;
/**
* Deletes a KVDB entry by given KVDB entry ID.
*
* @param {string} kvdbId KVDB ID of the KVDB entry to delete
* @param {string} key key of the KVDB entry to delete
*/
deleteEntry(kvdbId: string, key: string): Promise<void>;
/**
* Deletes KVDB entries by given KVDB IDs and the list of entry keys.
*
* @param {string} kvdbId ID of the KVDB database to delete from
* @param {string[]} keys keys of the KVDB entries to delete
* @returns {Map<string, boolean>} map with the statuses of deletion for every key
*/
deleteEntries(kvdbId: string, keys: string[]): Promise<DeleteEntriesResult>;
/**
* Subscribe for the KVDB events on the given subscription query.
*
* @param {string[]} subscriptionQueries list of queries
* @return list of subscriptionIds in maching order to subscriptionQueries
*/
subscribeFor(subscriptionQueries: string[]): Promise<string[]>;
/**
* Unsubscribe from events for the given subscriptionId.
* @param {string[]} subscriptionIds list of subscriptionId
*/
unsubscribeFrom(subscriptionIds: string[]): Promise<void>;
/**
* Generate subscription Query for the KVDB events.
* @param {EventType} eventType type of event which you listen for
* @param {EventSelectorType} selectorType scope on which you listen for events
* @param {string} selectorId ID of the selector
*/
buildSubscriptionQuery(eventType: KvdbEventType, selectorType: KvdbEventSelectorType, selectorId: string): Promise<string>;
/**
* Generate subscription Query for the KVDB events for single KvdbEntry.
* @param {EventType} eventType type of event which you listen for
* @param {string} kvdbId ID of the KVDB
* @param {string} kvdbEntryKey Key of Kvdb Entry
*/
buildSubscriptionQueryForSelectedEntry(eventType: KvdbEventType, kvdbId: string, kvdbEntryKey: string): Promise<string>;
}