import React from "react"; export type BulkParticipationAction = "CONFIRM" | "DECLINE"; export interface ActivityParticipationEntry { activityId: string; title: string; description?: string; status: "CONFIRMED" | "DECLINED"; declineReason?: string; } export interface BulkParticipationPayload { eventId: string; memberId: string; event: { status: "CONFIRMED" | "DECLINED"; declineReason?: string; }; activities: Array<{ activityId: string; status: "CONFIRMED" | "DECLINED"; declineReason?: string; }>; } export interface ActivityParticipationDialogProps { open: boolean; eventId: string; eventName: string; memberId: string; activities: Array<{ id: string; title: string; description?: string; }>; /** Initial event confirmation state — true for confirm flow, false for decline flow */ initialEventConfirmed?: boolean; onClose: () => void; onSubmit: (payload: BulkParticipationPayload) => void; } type ActivityState = { confirmed: boolean; declineReason: string; }; export declare const buildInitialBulkState: ({ activities, action, }: { activities: Array<{ id: string; }>; action: BulkParticipationAction; }) => { eventConfirmed: boolean; eventDeclineReason: string; activityStates: Record; }; /** * ActivityParticipationDialog — shown when a medium confirms presence on an event * that has linked activities. Allows per-activity confirmation/decline. * * Flow: * 1. Event confirmation toggle (default: true) — if declined, requires reason * 2. Per-activity switches — each can be confirmed or declined independently from the event * 3. Declining an activity requires a reason (min 10 chars) * 4. A medium may decline the event but still confirm individual activities * 5. Submit → bulk payload sent to API */ declare const ActivityParticipationDialog: React.FC; export default ActivityParticipationDialog;