import { MatrixRoomID, StringUserID } from "@the-draupnir-project/matrix-basic-types";
import { ActionResult, EntityAccess, PolicyRoomManager, RoomJoiner } from "matrix-protection-suite";
/**
 * Utility to manage which users have access to the application service,
 * meaning whether a user is able to provision a draupnir or continue to use one.
 * Internally we use a policy list within matrix to determine who has access via the `AccessControlUnit`.
 */
export declare class AccessControl {
    private readonly accessControlRevisionIssuer;
    private readonly editor;
    private constructor();
    /**
     * Construct and initialize access control for the `MjolnirAppService`.
     * @param accessControlListId The room id of a policy list used to manage access to the appservice (who can provision & use draupnir)
     * @param bridge The matrix-appservice-bridge, used to get the appservice bot.
     * @returns A new instance of `AccessControl` to be used by `MjolnirAppService`.
     */
    static setupAccessControlForRoom(
    /** The room id for the access control list. */
    accessControlRoom: MatrixRoomID, policyRoomManager: PolicyRoomManager, bridgeBotJoiner: RoomJoiner): Promise<ActionResult<AccessControl>>;
    getUserAccess(mxid: StringUserID): EntityAccess;
    allow(mxid: StringUserID, reason?: string): Promise<ActionResult<void>>;
    remove(mxid: StringUserID): Promise<ActionResult<void>>;
}
//# sourceMappingURL=AccessControl.d.ts.map