import { ComponentType } from 'react';
import type { CategoryConfig } from '../../CheckBoxGroup/index';
import type { FetchStudentsByFiltersFunction } from '../../utils/studentTypes';
export type { RecipientItem } from '../useAlertForm/index';
export type { CategoryConfig } from '../../CheckBoxGroup/index';
export type { Item } from '../../CheckBoxGroup/index';
export interface StepConfig {
    id: string;
    label: string;
    component?: ComponentType<StepComponentProps>;
    validate?: (formData: unknown) => boolean | string;
    shouldShow?: (formData: unknown) => boolean;
}
export interface StepComponentProps {
    onNext?: () => void;
    onPrevious?: () => void;
    formData?: unknown;
}
export interface LabelsConfig {
    pageTitle?: string;
    modalTitle?: string;
    sendButton?: string;
    cancelButton?: string;
    nextButton?: string;
    previousButton?: string;
    finishButton?: string;
    titleLabel?: string;
    titlePlaceholder?: string;
    messageLabel?: string;
    messagePlaceholder?: string;
    imageLabel?: string;
    recipientsTitle?: string;
    recipientsDescription?: string;
    dateLabel?: string;
    timeLabel?: string;
    sendTodayLabel?: string;
    sendCopyToEmailLabel?: string;
    previewTitle?: string;
    previewWarning?: string;
    noRecipientsSelected?: string;
    titleNotDefined?: string;
    messageNotDefined?: string;
    dateNotDefined?: string;
}
export interface AlertsConfig {
    categories: CategoryConfig[];
    steps?: StepConfig[];
    labels?: LabelsConfig;
    behavior?: {
        showAlertsTable?: boolean;
        allowImageAttachment?: boolean;
        allowScheduling?: boolean;
        allowEmailCopy?: boolean;
        onSendAlert?: (alertData: AlertData) => Promise<void>;
        fetchStudentsByFilters?: FetchStudentsByFiltersFunction;
    };
}
export interface AlertData {
    title: string;
    message: string;
    image?: string | File | null;
    date: string;
    time: string;
    sendToday: boolean;
    /** Whether to also send a copy of the alert to each recipient's email. */
    sendCopyToEmail?: boolean;
    recipientCategories: Record<string, {
        selectedIds: string[];
        allSelected: boolean;
    }>;
}
export interface AlertTableItem {
    id: string;
    title: string;
    sentAt: string;
    recipientsCount?: number;
}
//# sourceMappingURL=types.d.ts.map