import { WebPubSub } from "../operationsInterfaces/index.js";
import * as coreRestPipeline from "@azure/core-rest-pipeline";
import { GeneratedClient } from "../generatedClient.js";
import { AddToGroupsRequest, WebPubSubAddConnectionsToGroupsOptionalParams, WebPubSubCloseAllConnectionsOptionalParams, WebPubSubGenerateClientTokenOptionalParams, WebPubSubGenerateClientTokenResponse, RemoveFromGroupsRequest, WebPubSubRemoveConnectionsFromGroupsOptionalParams, ContentType, WebPubSubSendToAll$binaryOptionalParams, WebPubSubSendToAll$textOptionalParams, WebPubSubCloseConnectionOptionalParams, WebPubSubConnectionExistsOptionalParams, WebPubSubSendToConnection$binaryOptionalParams, WebPubSubSendToConnection$textOptionalParams, WebPubSubRemoveConnectionFromAllGroupsOptionalParams, WebPubSubGroupExistsOptionalParams, WebPubSubCloseGroupConnectionsOptionalParams, WebPubSubSendToGroup$binaryOptionalParams, WebPubSubSendToGroup$textOptionalParams, WebPubSubRemoveConnectionFromGroupOptionalParams, WebPubSubAddConnectionToGroupOptionalParams, WebPubSubPermission, WebPubSubRevokePermissionOptionalParams, WebPubSubCheckPermissionOptionalParams, WebPubSubGrantPermissionOptionalParams, WebPubSubUserExistsOptionalParams, WebPubSubCloseUserConnectionsOptionalParams, WebPubSubSendToUser$binaryOptionalParams, WebPubSubSendToUser$textOptionalParams, WebPubSubRemoveUserFromAllGroupsOptionalParams, WebPubSubRemoveUserFromGroupOptionalParams, WebPubSubAddUserToGroupOptionalParams } from "../models/index.js";
/** Class containing WebPubSub operations. */
export declare class WebPubSubImpl implements WebPubSub {
    private readonly client;
    /**
     * Initialize a new instance of the class WebPubSub class.
     * @param client Reference to the service client
     */
    constructor(client: GeneratedClient);
    /**
     * Add filtered connections to multiple groups.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param groupsToAdd Target groups and connection filter.
     * @param options The options parameters.
     */
    addConnectionsToGroups(hub: string, groupsToAdd: AddToGroupsRequest, options?: WebPubSubAddConnectionsToGroupsOptionalParams): Promise<void>;
    /**
     * Close the connections in the hub.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param options The options parameters.
     */
    closeAllConnections(hub: string, options?: WebPubSubCloseAllConnectionsOptionalParams): Promise<void>;
    /**
     * Generate token for the client to connect Azure Web PubSub service.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param options The options parameters.
     */
    generateClientToken(hub: string, options?: WebPubSubGenerateClientTokenOptionalParams): Promise<WebPubSubGenerateClientTokenResponse>;
    /**
     * Remove filtered connections from multiple groups.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param groupsToRemove Target groups and connection filter.
     * @param options The options parameters.
     */
    removeConnectionsFromGroups(hub: string, groupsToRemove: RemoveFromGroupsRequest, options?: WebPubSubRemoveConnectionsFromGroupsOptionalParams): Promise<void>;
    /**
     * Broadcast content inside request body to all the connected client connections.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param contentType Upload file type
     * @param message The payload body.
     * @param options The options parameters.
     */
    sendToAll(hub: string, contentType: ContentType, message: coreRestPipeline.RequestBodyType, options?: WebPubSubSendToAll$binaryOptionalParams): Promise<void>;
    /**
     * Broadcast content inside request body to all the connected client connections.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param contentType Upload file type
     * @param message The payload body.
     * @param options The options parameters.
     */
    sendToAll(hub: string, contentType: "text/plain", message: string, options?: WebPubSubSendToAll$textOptionalParams): Promise<void>;
    /**
     * Close the client connection.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param connectionId Target connection Id.
     * @param options The options parameters.
     */
    closeConnection(hub: string, connectionId: string, options?: WebPubSubCloseConnectionOptionalParams): Promise<void>;
    /**
     * Check if the connection with the given connectionId exists.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param connectionId The connection Id.
     * @param options The options parameters.
     */
    connectionExists(hub: string, connectionId: string, options?: WebPubSubConnectionExistsOptionalParams): Promise<void>;
    /**
     * Send content inside request body to the specific connection.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param connectionId The connection Id.
     * @param contentType Upload file type
     * @param message The payload body.
     * @param options The options parameters.
     */
    sendToConnection(hub: string, connectionId: string, contentType: ContentType, message: coreRestPipeline.RequestBodyType, options?: WebPubSubSendToConnection$binaryOptionalParams): Promise<void>;
    /**
     * Send content inside request body to the specific connection.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param connectionId The connection Id.
     * @param contentType Upload file type
     * @param message The payload body.
     * @param options The options parameters.
     */
    sendToConnection(hub: string, connectionId: string, contentType: "text/plain", message: string, options?: WebPubSubSendToConnection$textOptionalParams): Promise<void>;
    /**
     * Remove a connection from all groups.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param connectionId Target connection Id.
     * @param options The options parameters.
     */
    removeConnectionFromAllGroups(hub: string, connectionId: string, options?: WebPubSubRemoveConnectionFromAllGroupsOptionalParams): Promise<void>;
    /**
     * Check if there are any client connections inside the given group
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param group Target group name, which length should be greater than 0 and less than 1025.
     * @param options The options parameters.
     */
    groupExists(hub: string, group: string, options?: WebPubSubGroupExistsOptionalParams): Promise<void>;
    /**
     * Close connections in the specific group.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param group Target group name, which length should be greater than 0 and less than 1025.
     * @param options The options parameters.
     */
    closeGroupConnections(hub: string, group: string, options?: WebPubSubCloseGroupConnectionsOptionalParams): Promise<void>;
    /**
     * Send content inside request body to a group of connections.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param group Target group name, which length should be greater than 0 and less than 1025.
     * @param contentType Upload file type
     * @param message The payload body.
     * @param options The options parameters.
     */
    sendToGroup(hub: string, group: string, contentType: ContentType, message: coreRestPipeline.RequestBodyType, options?: WebPubSubSendToGroup$binaryOptionalParams): Promise<void>;
    /**
     * Send content inside request body to a group of connections.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param group Target group name, which length should be greater than 0 and less than 1025.
     * @param contentType Upload file type
     * @param message The payload body.
     * @param options The options parameters.
     */
    sendToGroup(hub: string, group: string, contentType: "text/plain", message: string, options?: WebPubSubSendToGroup$textOptionalParams): Promise<void>;
    /**
     * Remove a connection from the target group.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param group Target group name, which length should be greater than 0 and less than 1025.
     * @param connectionId Target connection Id.
     * @param options The options parameters.
     */
    removeConnectionFromGroup(hub: string, group: string, connectionId: string, options?: WebPubSubRemoveConnectionFromGroupOptionalParams): Promise<void>;
    /**
     * Add a connection to the target group.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param group Target group name, which length should be greater than 0 and less than 1025.
     * @param connectionId Target connection Id
     * @param options The options parameters.
     */
    addConnectionToGroup(hub: string, group: string, connectionId: string, options?: WebPubSubAddConnectionToGroupOptionalParams): Promise<void>;
    /**
     * Revoke permission for the connection.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param permission The permission: current supported actions are joinLeaveGroup and sendToGroup.
     * @param connectionId Target connection Id.
     * @param options The options parameters.
     */
    revokePermission(hub: string, permission: WebPubSubPermission, connectionId: string, options?: WebPubSubRevokePermissionOptionalParams): Promise<void>;
    /**
     * Check if a connection has permission to the specified action.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param permission The permission: current supported actions are joinLeaveGroup and sendToGroup.
     * @param connectionId Target connection Id.
     * @param options The options parameters.
     */
    checkPermission(hub: string, permission: WebPubSubPermission, connectionId: string, options?: WebPubSubCheckPermissionOptionalParams): Promise<void>;
    /**
     * Grant permission to the connection.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param permission The permission: current supported actions are joinLeaveGroup and sendToGroup.
     * @param connectionId Target connection Id.
     * @param options The options parameters.
     */
    grantPermission(hub: string, permission: WebPubSubPermission, connectionId: string, options?: WebPubSubGrantPermissionOptionalParams): Promise<void>;
    /**
     * Check if there are any client connections connected for the given user.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param userId Target user Id.
     * @param options The options parameters.
     */
    userExists(hub: string, userId: string, options?: WebPubSubUserExistsOptionalParams): Promise<void>;
    /**
     * Close connections for the specific user.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param userId The user Id.
     * @param options The options parameters.
     */
    closeUserConnections(hub: string, userId: string, options?: WebPubSubCloseUserConnectionsOptionalParams): Promise<void>;
    /**
     * Send content inside request body to the specific user.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param userId The user Id.
     * @param contentType Upload file type
     * @param message The payload body.
     * @param options The options parameters.
     */
    sendToUser(hub: string, userId: string, contentType: ContentType, message: coreRestPipeline.RequestBodyType, options?: WebPubSubSendToUser$binaryOptionalParams): Promise<void>;
    /**
     * Send content inside request body to the specific user.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param userId The user Id.
     * @param contentType Upload file type
     * @param message The payload body.
     * @param options The options parameters.
     */
    sendToUser(hub: string, userId: string, contentType: "text/plain", message: string, options?: WebPubSubSendToUser$textOptionalParams): Promise<void>;
    /**
     * Remove a user from all groups.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param userId Target user Id.
     * @param options The options parameters.
     */
    removeUserFromAllGroups(hub: string, userId: string, options?: WebPubSubRemoveUserFromAllGroupsOptionalParams): Promise<void>;
    /**
     * Remove a user from the target group.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param group Target group name, which length should be greater than 0 and less than 1025.
     * @param userId Target user Id.
     * @param options The options parameters.
     */
    removeUserFromGroup(hub: string, group: string, userId: string, options?: WebPubSubRemoveUserFromGroupOptionalParams): Promise<void>;
    /**
     * Add a user to the target group.
     * @param hub Target hub name, which should start with alphabetic characters and only contain
     *            alpha-numeric characters or underscore.
     * @param group Target group name, which length should be greater than 0 and less than 1025.
     * @param userId Target user Id.
     * @param options The options parameters.
     */
    addUserToGroup(hub: string, group: string, userId: string, options?: WebPubSubAddUserToGroupOptionalParams): Promise<void>;
}
//# sourceMappingURL=webPubSub.d.ts.map