import { LogLevel } from "@vector-im/matrix-bot-sdk";
import { IConfig } from "../config";
import { MatrixSendClient } from "matrix-protection-suite-for-matrix-bot-sdk";
import { StringRoomID, StringUserID, MatrixRoomID } from "@the-draupnir-project/matrix-basic-types";
import { ManagementRoomDetail } from "./ManagementRoomDetail";
export interface ManagementRoomOutput {
    managementRoom: MatrixRoomID;
    managementRoomID: StringRoomID;
    /**
     * Log a message to the management room and the console, replaces any room ids in additionalRoomIds with pills.
     * @param level Used to determine whether to hide the message or not depending on `config.logLevel`.
     * @param module Used to help find where in the source the message is coming from (when logging to the console).
     * @param message The message we want to log.
     * @param additionalRoomIds The roomIds in the message that we want to be replaced by room pills.
     * @param isRecursive Whether logMessage is being called from logMessage.
     * @deprecated This is a legacy method i would really avoid using it if you can.
     */
    logMessage(level: LogLevel, module: string, message: string, additionalRoomIds?: string[] | string | null, isRecursive?: boolean): Promise<void>;
}
/**
 * Allows the different componenets of draupnir to send messages back to the management room without introducing a dependency on the entirity of a `Draupnir` instance.
 */
export default class StandardManagementRoomOutput implements ManagementRoomOutput {
    private readonly managementRoomDetail;
    private readonly clientUserID;
    private readonly client;
    private readonly config;
    private isSuccessfullySendingMessages;
    constructor(managementRoomDetail: ManagementRoomDetail, clientUserID: StringUserID, client: MatrixSendClient, config: IConfig);
    get managementRoom(): MatrixRoomID;
    get managementRoomID(): StringRoomID;
    private maybeWarnAboutPublicManagementRoom;
    /**
     * Take an arbitrary string and a set of room IDs, and return a
     * TextualMessageEventContent whose plaintext component replaces those room
     * IDs with their canonical aliases, and whose html component replaces those
     * room IDs with their matrix.to room pills.
     *
     * @param client The matrix client on which to query for room aliases
     * @param text An arbitrary string to rewrite with room aliases and pills
     * @param roomIds A set of room IDs to find and replace in `text`
     * @param msgtype The desired message type of the returned TextualMessageEventContent
     * @returns A TextualMessageEventContent with replaced room IDs
     */
    private replaceRoomIdsWithPills;
    logMessage(level: LogLevel, module: string, message: string, additionalRoomIds?: string[] | string | null, isRecursive?: boolean): Promise<void>;
}
//# sourceMappingURL=ManagementRoomOutput.d.ts.map