/*!
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 { EventApiNative } from "../api/EventApiNative";
import { EventsEventSelectorType, UserWithPubKey } from "../Types";
export declare class EventApi extends BaseApi {
    private native;
    constructor(native: EventApiNative, ptr: number);
    /**
     * Emits the custom event on the given Context and channel.
     *
     * @param {string} contextId ID of the Context
     * @param {UserWithPubKey[]} users list of UserWithPubKey objects which defines the recipients of the event
     * @param {string} channelName name of the Channel
     * @param {Uint8Array} eventData event's data
     */
    emitEvent(contextId: string, users: UserWithPubKey[], channelName: string, eventData: Uint8Array): Promise<void>;
    /**
     * Subscribe for the custom 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 custom events.
     * @param {string} channelName name of the Channel
     * @param {EventSelectorType} selectorType scope on which you listen for events
     * @param {string} selectorId ID of the selector
     */
    buildSubscriptionQuery(channelName: string, selectorType: EventsEventSelectorType, selectorId: string): Promise<string>;
}
