import { AbstractProtection, ActionResult, EDStatic, OwnLifetime, PolicyListRevision, PolicyRuleChange, ProtectedRoomsSet, Protection, ProtectionDescription } from "matrix-protection-suite";
import { DraupnirProtection } from "./Protection";
import { Draupnir } from "../Draupnir";
import { StringRoomID } from "@the-draupnir-project/matrix-basic-types";
declare const PolicyChangeNotificationSettings: import("@sinclair/typebox").TObject<{
    notificationRoomID: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TUnsafe<StringRoomID>, import("@sinclair/typebox").TUndefined]>>;
}>;
export type PolicyChangeNotificationSettings = EDStatic<typeof PolicyChangeNotificationSettings>;
export type PolicyChangeNotificationCapabilitites = Record<never, never>;
export type PolicyChangeNotificationProtectionDescription = ProtectionDescription<Draupnir, typeof PolicyChangeNotificationSettings, PolicyChangeNotificationCapabilitites>;
export declare class PolicyChangeNotification extends AbstractProtection<PolicyChangeNotificationProtectionDescription> implements DraupnirProtection<PolicyChangeNotificationProtectionDescription> {
    private readonly draupnir;
    readonly notificationRoomID: StringRoomID;
    constructor(description: PolicyChangeNotificationProtectionDescription, lifetime: OwnLifetime<Protection<PolicyChangeNotificationProtectionDescription>>, capabilities: PolicyChangeNotificationCapabilitites, protectedRoomsSet: ProtectedRoomsSet, draupnir: Draupnir, notificationRoomID: StringRoomID);
    handlePolicyChange(revision: PolicyListRevision, changes: PolicyRuleChange[]): Promise<ActionResult<void>>;
}
export {};
//# sourceMappingURL=PolicyChangeNotification.d.ts.map