import { MatrixEvent, EventType, MatrixClient, Room } from "matrix-js-sdk/src/matrix";
export default class PinningUtils {
    /**
     * Event types that may be pinned.
     */
    static readonly PINNABLE_EVENT_TYPES: (EventType | string)[];
    /**
     * Determines if the given event can be pinned.
     * This is a simple check to see if the event is of a type that can be pinned.
     * @param {MatrixEvent} event The event to check.
     * @return {boolean} True if the event may be pinned, false otherwise.
     */
    static isPinnable(event: MatrixEvent): boolean;
    /**
     * Determines if the given event may be unpinned.
     * @param {MatrixEvent} event The event to check.
     * @return {boolean} True if the event may be unpinned, false otherwise.
     */
    static isUnpinnable(event: MatrixEvent): boolean;
    /**
     * Determines if the given event is pinned.
     * @param matrixClient
     * @param mxEvent
     */
    static isPinned(matrixClient: MatrixClient, mxEvent: MatrixEvent): boolean;
    /**
     * Determines if the given event may be pinned or unpinned by the current user
     * It doesn't check if the event is pinnable or unpinnable.
     * @param matrixClient
     * @param mxEvent
     * @private
     */
    private static canPinOrUnpin;
    /**
     * Determines if the given event may be pinned by the current user.
     * This checks if the user has the necessary permissions to pin or unpin the event, and if the event is pinnable.
     * @param matrixClient
     * @param mxEvent
     */
    static canPin(matrixClient: MatrixClient, mxEvent: MatrixEvent): boolean;
    /**
     * Determines if the given event may be unpinned by the current user.
     * This checks if the user has the necessary permissions to pin or unpin the event, and if the event is unpinnable.
     * @param matrixClient
     * @param mxEvent
     */
    static canUnpin(matrixClient: MatrixClient, mxEvent: MatrixEvent): boolean;
    /**
     * Determines if the current user has permission to pin or unpin events in the given room.
     * @param matrixClient
     * @param room
     */
    static userHasPinOrUnpinPermission(matrixClient: MatrixClient, room: Room): boolean;
    /**
     * Pin or unpin the given event.
     * @param matrixClient
     * @param mxEvent
     */
    static pinOrUnpinEvent(matrixClient: MatrixClient, mxEvent: MatrixEvent): Promise<void>;
    /**
     * Unpin all events in the given room.
     * @param matrixClient
     * @param roomId
     */
    static unpinAllEvents(matrixClient: MatrixClient, roomId: string): Promise<void>;
}
