import { MUserWithNotificationSetting, UserNotificationModelForApi } from '../../../../types/models';
import { EmailPayload, UserNotificationSettingValue } from '../../../../../shared/models';
export declare abstract class AbstractNotification<T, U = MUserWithNotificationSetting> {
    protected readonly payload: T;
    constructor(payload: T);
    abstract prepare(): Promise<void>;
    abstract log(): void;
    abstract getSetting(user: U): UserNotificationSettingValue;
    abstract getTargetUsers(): U[];
    abstract createNotification(user: U): Promise<UserNotificationModelForApi>;
    abstract createEmail(to: string): EmailPayload | Promise<EmailPayload>;
    isDisabled(): boolean | Promise<boolean>;
}
//# sourceMappingURL=abstract-notification.d.ts.map