import { HttpService } from "@nestjs/axios";
import { ConfigService } from "@nestjs/config";
import { ActionCode, Attachment, EmailType, IGroupRequestType, NotificationType } from "./push-notification.service";
export interface PushNotiMobileV2 {
    title: string;
    message: string;
    module_code: string;
    app: string;
    payload: Record<string, unknown>;
    note?: string;
    description?: string;
}
export interface InappNotiEmailV2 {
    emailType: EmailType;
    subject: string;
    title: string;
    previewText: string;
    callToActionURL?: string;
    callToActionText?: string;
    content?: string;
    listRequests?: IGroupRequestType[];
    description?: string;
    tag?: string;
    attachments?: Attachment[];
    footerMessage?: string;
}
export interface RequiredActionV2 {
    task_target_id: string;
    due_date?: string;
}
export interface CompleteRequiredActionV2 {
    hostname: string;
    user_id: number;
    app?: string;
    action_code: string;
    task_target_id: string;
}
export interface PushInappNotiV2 {
    hostname: string;
    send_to_user_id: number;
    student_id?: number;
    action_code: ActionCode;
    notification_type?: NotificationType;
    call_to_action_url?: string;
    mobile_push?: {
        enabled: true;
        data: PushNotiMobileV2;
    } | {
        enabled: false;
    };
    email_push?: {
        enabled: true;
        data: InappNotiEmailV2;
    } | {
        enabled: false;
    };
    create_required_action?: {
        enabled: true;
        data: RequiredActionV2;
    } | {
        enabled: false;
    };
}
export declare class PHXPushNotificationServiceV2 {
    private readonly httpService;
    private readonly configService;
    private readonly logger;
    constructor(httpService: HttpService, configService: ConfigService);
    private pushNoti;
    private complete;
    send(payload: PushInappNotiV2): Promise<{
        status: string;
        message: string;
    }>;
    completeRequireAction(payload: CompleteRequiredActionV2): Promise<{
        status: string;
        message: string;
    }>;
}
