import { ListOptions, Message, PagingList, Thread, UserWithPubKey } from '../../types'; import { EventsByChannel, SubscribeForChannel, ThreadMessageEvents } from '../../types/events'; import { ThreadMessagePayload } from '../../types/thread'; import { ThreadClient } from '../ThreadClient'; export declare class GenericThread { private _threadClient; constructor(_threadClient: ThreadClient); /** * Deletes Thread. * @returns {Promise} */ delete(): Promise; /** * Fetches info about Thread. * @returns {Promise} {@link Thread `Thread`} object */ info(): Promise; /** * Updates Thread by overriding fields with new ones. * While updating, the Bridge will check version number. Updates of Thread with different * version number will be rejected. * Version number is incremented after every update. * * @param {Object} updatedData * @param {UserWithPubKey[]} updatedData.users - list of users with access to the Thread * @param {UserWithPubKey[]} updatedData.managers - list of users with permissions to modify the Thread * @param {Uint8Array} updatedData.publicMeta public (unencrypted) metadata * @param {Uint8Array} updatedData.privateMeta (encrypted) metadata * @param {Object} updatedData.options * @param {boolean} [updatedData.options.force] - optional flag to generate a new key ID for the Thread * @param {boolean} [updatedData.options.forceGenerateNewKey] - optional flag allowing new users to access old data * * @returns {Promise} void */ update(updatedData: { users: UserWithPubKey[]; managers: UserWithPubKey[]; publicMeta?: Uint8Array; privateMeta?: Uint8Array; version: number; options?: { force?: boolean; forceGenerateNewKey?: boolean; }; }): Promise; /** * Returns a list of messages inside Thread. * @param {number} pageIndex * @param {ListOptions} options optional {@link ListOptions options} object * @returns {Promise>} {@link PagingList `PagingList`} */ getMessages(pageIndex?: number, options?: ListOptions): Promise>; /** * Sends a message to Thread. * @param {ThreadMessagePayload} newMessage {@link ThreadMessagePayload `ThreadMessagePayload`} * @returns {Promise} Id of new message * */ sendMessage(newMessage: ThreadMessagePayload): Promise; /** * Subscribes to message events in given Thread: * - `threadNewMessage` * - `threadMessageDeleted` * - `threadMessageUpdated` * @returns {Promise>} {@link SubscribeForChannel<'threadMessages'> `Promise>`} */ subscribeToMessageEvents(): Promise>; /** * Unsubscribes and removes all callbacks from message-related events in the Thread. * @returns {Promise} a promise that resolves with void */ unsubscribeFromMessageEvents(): Promise; /** * Returns ID of Thread. * @returns {string} ID of current Thread */ id(): string; /** * Registers an event listener for Thread message-related events. * * @template T * @param {T & EventsByChannel<'threadMessages'>} eventType - type of event to listen for * @param {function(Extract): void} callback - callback function to execute when the event occurs * @returns {Promise<{on: SubscribeForChannel<'threadMessages'>, removeEventListener: function() void}>} object containing the `on` function for chaining and `removeEventListener` to unregister the event listener */ on>(eventType: T, callback: (payload: Extract) => void): SubscribeForChannel<'threadMessages'> & { removeEventListener: () => void; }; }