import { AbstractProtection, EDStatic, OwnLifetime, PolicyListRevision, PolicyRuleChange, ProtectedRoomsSet, Protection, ProtectionDescription } from "matrix-protection-suite";
import { UserRestrictionCapability } from "./UserRestrictionCapability";
import { Draupnir } from "../../Draupnir";
import { UserRestrictionAuditLog } from "./UserRestrictionAuditLog";
import { StringRoomID } from "@the-draupnir-project/matrix-basic-types";
import { MatrixGlob } from "@vector-im/matrix-bot-sdk";
import { Result } from "@gnuxie/typescript-result";
import { ConfirmationPromptSender } from "@the-draupnir-project/mps-interface-adaptor";
declare const HomeserverUserPolicyProtectionSettings: import("@sinclair/typebox").TObject<{}>;
type HomeserverUserPolicyProtectionSettings = EDStatic<typeof HomeserverUserPolicyProtectionSettings>;
type HomeserverUserPolicyProtectionCapabilities = {
    userRestrictionCapability: UserRestrictionCapability;
};
type HomeserverUserProtectionDescription = ProtectionDescription<Draupnir, typeof HomeserverUserPolicyProtectionSettings, HomeserverUserPolicyProtectionCapabilities>;
export declare class HomeserverUserPolicyProtection extends AbstractProtection<HomeserverUserProtectionDescription> implements Protection<HomeserverUserProtectionDescription> {
    private readonly policyApplication;
    constructor(description: HomeserverUserProtectionDescription, lifetime: OwnLifetime<HomeserverUserProtectionDescription>, capabilities: HomeserverUserPolicyProtectionCapabilities, protectedRoomsSet: ProtectedRoomsSet, auditLog: UserRestrictionAuditLog, automaticallyRedactForReasons: MatrixGlob[], managementRoomID: StringRoomID, confirmationPromptSender: ConfirmationPromptSender);
    handlePolicyChange(revision: PolicyListRevision, changes: PolicyRuleChange[]): Promise<Result<void>>;
}
export {};
//# sourceMappingURL=HomeserverUserPolicyProtection.d.ts.map