@burdenoff/microfe-eventfullymanaged 2026.728.1 → 2026.731.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/eventfullymanaged/EventfullyManagedRoutes.d.ts.map +1 -1
- package/dist/eventfullymanaged/EventfullyManagedRoutes.js +60 -76
- package/dist/eventfullymanaged/EventfullyManagedRoutes.js.map +1 -1
- package/dist/eventfullymanaged/api/eventApi.d.ts +245 -1
- package/dist/eventfullymanaged/api/eventApi.d.ts.map +1 -1
- package/dist/eventfullymanaged/api/eventApi.js +482 -264
- package/dist/eventfullymanaged/api/eventApi.js.map +1 -1
- package/dist/eventfullymanaged/hooks/useEvmSubscription.d.ts +18 -0
- package/dist/eventfullymanaged/hooks/useEvmSubscription.d.ts.map +1 -0
- package/dist/eventfullymanaged/hooks/useEvmSubscription.js +110 -0
- package/dist/eventfullymanaged/hooks/useEvmSubscription.js.map +1 -0
- package/dist/eventfullymanaged/hooks/useVirtualCall.d.ts +47 -0
- package/dist/eventfullymanaged/hooks/useVirtualCall.d.ts.map +1 -0
- package/dist/eventfullymanaged/hooks/useVirtualCall.js +209 -0
- package/dist/eventfullymanaged/hooks/useVirtualCall.js.map +1 -0
- package/dist/eventfullymanaged/pages/events/EventDetailPage.d.ts.map +1 -1
- package/dist/eventfullymanaged/pages/events/EventDetailPage.js +79 -71
- package/dist/eventfullymanaged/pages/events/EventDetailPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/events/VirtualSessionPage.d.ts +2 -0
- package/dist/eventfullymanaged/pages/events/VirtualSessionPage.d.ts.map +1 -0
- package/dist/eventfullymanaged/pages/events/VirtualSessionPage.js +353 -0
- package/dist/eventfullymanaged/pages/events/VirtualSessionPage.js.map +1 -0
- package/dist/eventfullymanaged/pages/modules/IntegrationsPage.d.ts +2 -0
- package/dist/eventfullymanaged/pages/modules/IntegrationsPage.d.ts.map +1 -0
- package/dist/eventfullymanaged/pages/modules/IntegrationsPage.js +336 -0
- package/dist/eventfullymanaged/pages/modules/IntegrationsPage.js.map +1 -0
- package/dist/eventfullymanaged/pages/modules/NetworkingPage.d.ts.map +1 -1
- package/dist/eventfullymanaged/pages/modules/NetworkingPage.js +211 -177
- package/dist/eventfullymanaged/pages/modules/NetworkingPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/RegistrationPage.d.ts.map +1 -1
- package/dist/eventfullymanaged/pages/modules/RegistrationPage.js +204 -174
- package/dist/eventfullymanaged/pages/modules/RegistrationPage.js.map +1 -1
- package/dist/eventfullymanaged/utils/shellBridge.d.ts +46 -0
- package/dist/eventfullymanaged/utils/shellBridge.d.ts.map +1 -0
- package/dist/eventfullymanaged/utils/shellBridge.js +19 -0
- package/dist/eventfullymanaged/utils/shellBridge.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventApi.js","names":[],"sources":["../../../src/eventfullymanaged/api/eventApi.ts"],"sourcesContent":["import { gql, type ErrorLike } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nimport { notify } from '../lib/toast';\n\n/**\n * Shared mutation error sink. The gateway client runs with `errorPolicy: 'all'`,\n * so in-band GraphQL errors also invoke `onError`; wiring this on every write\n * mutation guarantees a failure is always surfaced to the user even if a caller\n * forgets to inspect the resolved result.\n */\nconst onMutationError = (error: ErrorLike): void => {\n notify.error('Something went wrong', error.message || 'Please try again.');\n};\n\ntype DashboardSummaryResponse = {\n dashboardSummary: {\n totalEvents: number;\n activeEvents: number;\n totalRegistrations: number;\n totalAttendees: number;\n totalVenues: number;\n totalSponsors: number;\n upcomingSessions: number;\n };\n};\n\nexport type EventGql = {\n id: string;\n name: string;\n};\n\nexport type VenueGql = {\n id: string;\n workspaceId: string;\n name: string;\n description?: string | null;\n addressLine1?: string | null;\n city?: string | null;\n state?: string | null;\n country?: string | null;\n postalCode?: string | null;\n capacity?: number | null;\n amenities: string[];\n pricing?: Record<string, unknown> | null;\n openingHours?: Record<string, unknown> | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type FloorPlanGql = {\n id: string;\n venueId: string;\n name: string;\n imageUrl?: string | null;\n dimensions?: Record<string, unknown> | null;\n interactiveAreas?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type TicketTypeGql = {\n id: string;\n eventId: string;\n name: string;\n description?: string | null;\n price: string;\n currency: string;\n capacity?: number | null;\n soldCount: number;\n salesStartAt?: string | null;\n salesEndAt?: string | null;\n isActive: boolean;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type PromoCodeGql = {\n id: string;\n eventId: string;\n code: string;\n description?: string | null;\n discountType: string;\n discountValue: string;\n maxUses?: number | null;\n usedCount: number;\n startsAt?: string | null;\n endsAt?: string | null;\n isActive: boolean;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type ExhibitorGql = {\n id: string;\n eventId: string;\n name: string;\n boothCode?: string | null;\n category?: string | null;\n contactName?: string | null;\n contactEmail?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type LeadGql = {\n id: string;\n eventId: string;\n sponsorId?: string | null;\n exhibitorId?: string | null;\n attendeeName: string;\n attendeeEmail: string;\n score?: number | null;\n status: string;\n notes?: string | null;\n capturedAt: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type CheckInRecordGql = {\n id: string;\n eventId: string;\n stationId?: string | null;\n attendeeId?: string | null;\n registrationId?: string | null;\n method: string;\n status: string;\n direction: string;\n recordedAt: string;\n // BOFF-4330 — the offline-queue idempotency key this scan was recorded\n // (or synced) with, if any.\n clientScanId?: string | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type NetworkingProfileGql = {\n id: string;\n eventId: string;\n attendeeId: string;\n interests: string[];\n lookingFor: string[];\n industry?: string | null;\n role?: string | null;\n visibility: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SponsorGql = {\n id: string;\n eventId: string;\n name: string;\n level: string;\n logoUrl?: string | null;\n website?: string | null;\n contactName?: string | null;\n contactEmail?: string | null;\n contactPhone?: string | null;\n metrics?: { value?: number; leads?: number } | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type EventDetailGql = {\n id: string;\n workspaceId: string;\n name: string;\n description?: string | null;\n type: string;\n status: string;\n timezone: string;\n startAt: string;\n endAt: string;\n visibility: string;\n capacity?: number | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type EventSessionGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n venueId?: string | null;\n title: string;\n description?: string | null;\n sessionType: string;\n track?: string | null;\n startsAt: string;\n endsAt: string;\n capacity?: number | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SpeakerGql = {\n id: string;\n workspaceId: string;\n fullName: string;\n title?: string | null;\n organization?: string | null;\n email?: string | null;\n phone?: string | null;\n bio?: string | null;\n avatarUrl?: string | null;\n socialLinks?: Record<string, unknown> | null;\n};\n\nexport type RegistrationGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n attendeeId?: string | null;\n ticketTypeId?: string | null;\n status: string;\n quantity: number;\n totalAmount?: string | null;\n promoCodeId?: string | null;\n currency: string;\n registeredAt: string;\n checkedInAt?: string | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type AttendeeGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n fullName: string;\n email: string;\n phone?: string | null;\n company?: string | null;\n role?: string | null;\n profile?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type CheckInStationGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n name: string;\n code: string;\n location?: string | null;\n isActive: boolean;\n kioskConfig?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type MeetingGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n title: string;\n startsAt: string;\n endsAt: string;\n location?: string | null;\n notes?: string | null;\n sourceProfileId?: string | null;\n targetProfileId?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type NetworkingMatchGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n sourceProfileId: string;\n targetProfileId: string;\n score: number;\n reason?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SimpleEntityGql = {\n id: string;\n workspaceId: string;\n eventId?: string | null;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n metadata?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type EntityTagInfoGql = {\n id: string;\n key?: string | null;\n label?: string | null;\n color?: string | null;\n};\n\nexport type EntityTagAssignmentGql = {\n id: string;\n tagId: string;\n entityId: string;\n entityType: string;\n source: string;\n tagInfo?: EntityTagInfoGql | null;\n};\n\nexport type AvailableTagGql = {\n id: string;\n key: string;\n label: string;\n color?: string | null;\n};\n\ntype EventsResponse = { events: { total: number; items: EventGql[] } };\ntype VenuesResponse = { venues: { total: number; items: VenueGql[] } };\ntype VenueResponse = { venue: VenueGql | null; floorPlans: { total: number; items: FloorPlanGql[] } };\ntype SponsorsResponse = { sponsors: { total: number; items: SponsorGql[] } };\ntype CreateVenueResponse = { createVenue: VenueGql };\ntype UpdateVenueResponse = { updateVenue: VenueGql };\ntype CreateSponsorResponse = { createSponsor: SponsorGql };\ntype UpdateSponsorResponse = { updateSponsor: SponsorGql };\ntype CreateFloorPlanResponse = { createFloorPlan: FloorPlanGql };\ntype UpdateFloorPlanResponse = { updateFloorPlan: FloorPlanGql };\ntype DeleteFloorPlanResponse = { deleteFloorPlan: boolean };\ntype TicketTypesResponse = { ticketTypes: { total: number; items: TicketTypeGql[] } };\ntype PromoCodesResponse = { promoCodes: { total: number; items: PromoCodeGql[] } };\ntype ExhibitorsResponse = { exhibitors: { total: number; items: ExhibitorGql[] } };\ntype LeadsResponse = { leads: { total: number; items: LeadGql[] } };\ntype CheckInRecordsResponse = { checkInRecords: { total: number; items: CheckInRecordGql[] } };\ntype NetworkingProfilesResponse = { networkingProfiles: { total: number; items: NetworkingProfileGql[] } };\ntype RegistrationsResponse = { registrations: { total: number; items: RegistrationGql[] } };\ntype AttendeesResponse = { attendees: { total: number; items: AttendeeGql[] } };\ntype EventSessionsResponse = { eventSessions: { total: number; items: EventSessionGql[] } };\ntype SpeakersResponse = { speakers: { total: number; items: SpeakerGql[] } };\ntype SimpleEntity = {\n id: string;\n workspaceId: string;\n eventId?: string | null;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n metadata?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\ntype SimpleEntityResponse = { total: number; items: SimpleEntity[] };\ntype CheckInStationsResponse = { checkInStations: SimpleEntityResponse };\ntype NetworkingMatchesResponse = { networkingMatches: SimpleEntityResponse };\ntype MeetingsResponse = { meetings: SimpleEntityResponse };\ntype AnnouncementsResponse = { announcements: SimpleEntityResponse };\ntype WorkflowTemplatesResponse = { workflowTemplates: SimpleEntityResponse };\ntype AutomationRulesResponse = { automationRules: SimpleEntityResponse };\ntype CommunicationCampaignsResponse = { communicationCampaigns: SimpleEntityResponse };\ntype AnalyticsSnapshotsResponse = { analyticsSnapshots: SimpleEntityResponse };\ntype UpsertSimpleEntityResponse = { [key: string]: SimpleEntity };\n\nexport const DASHBOARD_SUMMARY_QUERY = gql`\n query EventfullymanagedDashboardSummary {\n dashboardSummary: eventfullyManagedDashboardSummary {\n totalEvents\n activeEvents\n totalRegistrations\n totalAttendees\n totalVenues\n totalSponsors\n upcomingSessions\n }\n }\n`;\n\nexport const EVENTS_QUERY = gql`\n query EventfullymanagedEvents($search: String, $limit: Int, $offset: Int) {\n events: eventfullyManagedEvents(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n name\n description\n type\n status\n timezone\n startAt\n endAt\n visibility\n capacity\n metadata\n }\n }\n }\n`;\n\nexport const VENUES_QUERY = gql`\n query EventfullymanagedVenues($search: String, $limit: Int, $offset: Int) {\n venues: eventfullyManagedVenues(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n name\n description\n addressLine1\n city\n state\n country\n postalCode\n capacity\n amenities\n pricing\n openingHours\n status\n metadata\n }\n }\n }\n`;\n\nexport const VENUE_QUERY = gql`\n query EventfullymanagedVenue($id: ID!) {\n venue: eventfullyManagedVenue(id: $id) {\n id\n workspaceId\n name\n description\n addressLine1\n city\n state\n country\n postalCode\n capacity\n amenities\n pricing\n openingHours\n status\n metadata\n createdAt\n updatedAt\n }\n floorPlans: eventfullyManagedFloorPlans(venueId: $id, limit: 100, offset: 0) {\n total\n items {\n id\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n }\n }\n }\n`;\n\nexport const SPONSORS_QUERY = gql`\n query EventfullymanagedSponsors($search: String, $limit: Int, $offset: Int) {\n sponsors: eventfullyManagedSponsors(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n createdAt\n }\n }\n }\n`;\n\nexport const REGISTRATIONS_QUERY = gql`\n query EventfullymanagedRegistrations($eventId: ID, $limit: Int, $offset: Int) {\n registrations: eventfullyManagedRegistrations(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n attendeeId\n ticketTypeId\n status\n quantity\n totalAmount\n currency\n registeredAt\n checkedInAt\n }\n }\n }\n`;\n\nexport const ATTENDEES_QUERY = gql`\n query EventfullymanagedAttendees($eventId: ID, $limit: Int, $offset: Int) {\n attendees: eventfullyManagedAttendees(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n fullName\n email\n phone\n company\n role\n metadata\n }\n }\n }\n`;\n\nexport const EVENT_SESSIONS_QUERY = gql`\n query EventfullymanagedEventSessions($eventId: ID, $limit: Int, $offset: Int) {\n eventSessions: eventfullyManagedEventSessions(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n venueId\n title\n sessionType\n track\n startsAt\n endsAt\n status\n }\n }\n }\n`;\n\nexport const SPEAKERS_QUERY = gql`\n query EventfullymanagedSpeakers($limit: Int, $offset: Int) {\n speakers: eventfullyManagedSpeakers(limit: $limit, offset: $offset) {\n total\n items {\n id\n fullName\n title\n organization\n email\n }\n }\n }\n`;\n\nexport const TICKET_TYPES_QUERY = gql`\n query EventfullymanagedTicketTypes($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n ticketTypes: eventfullyManagedTicketTypes(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n description\n price\n currency\n capacity\n soldCount\n salesStartAt\n salesEndAt\n isActive\n metadata\n }\n }\n }\n`;\n\nexport const PROMO_CODES_QUERY = gql`\n query EventfullymanagedPromoCodes($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n promoCodes: eventfullyManagedPromoCodes(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n code\n description\n discountType\n discountValue\n maxUses\n usedCount\n startsAt\n endsAt\n isActive\n metadata\n }\n }\n }\n`;\n\nexport const EXHIBITORS_QUERY = gql`\n query EventfullymanagedExhibitors($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n exhibitors: eventfullyManagedExhibitors(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n boothCode\n category\n contactName\n contactEmail\n status\n metadata\n }\n }\n }\n`;\n\nexport const LEADS_QUERY = gql`\n query EventfullymanagedLeads($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n leads: eventfullyManagedLeads(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n sponsorId\n exhibitorId\n attendeeName\n attendeeEmail\n score\n status\n notes\n capturedAt\n metadata\n }\n }\n }\n`;\n\nexport const CHECKIN_RECORDS_QUERY = gql`\n query EventfullymanagedCheckInRecords($eventId: ID, $limit: Int, $offset: Int) {\n checkInRecords: eventfullyManagedCheckInRecords(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n stationId\n attendeeId\n registrationId\n sessionId\n method\n status\n direction\n recordedAt\n metadata\n }\n }\n }\n`;\n\n// BOFF-3999 — hourly check-in throughput for one event.\nexport const CHECK_IN_THROUGHPUT_QUERY = gql`\n query EventfullymanagedCheckInThroughput($eventId: ID!, $date: DateTime) {\n checkInThroughput: eventfullyManagedCheckInThroughput(eventId: $eventId, date: $date) {\n hour\n count\n }\n }\n`;\n\n// BOFF-4331 — agenda-conflict detection for one event.\nexport const SESSION_CONFLICTS_QUERY = gql`\n query EventfullymanagedSessionConflicts($eventId: ID!) {\n sessionConflicts: eventfullyManagedSessionConflicts(eventId: $eventId) {\n type\n sessionAId\n sessionATitle\n sessionBId\n sessionBTitle\n venueId\n speakerId\n message\n }\n }\n`;\n\nexport const NETWORKING_PROFILES_QUERY = gql`\n query EventfullymanagedNetworkingProfiles($eventId: ID, $limit: Int, $offset: Int) {\n networkingProfiles: eventfullyManagedNetworkingProfiles(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n attendeeId\n interests\n lookingFor\n industry\n role\n visibility\n metadata\n }\n }\n }\n`;\n\nexport const CHECKIN_STATIONS_QUERY = gql`\n query EventfullymanagedCheckInStations($eventId: ID, $limit: Int, $offset: Int) {\n checkInStations: eventfullyManagedCheckInStations(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const NETWORKING_MATCHES_QUERY = gql`\n query EventfullymanagedNetworkingMatches($eventId: ID, $limit: Int, $offset: Int) {\n networkingMatches: eventfullyManagedNetworkingMatches(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const MEETINGS_QUERY = gql`\n query EventfullymanagedMeetings($eventId: ID, $limit: Int, $offset: Int) {\n meetings: eventfullyManagedMeetings(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const ANNOUNCEMENTS_QUERY = gql`\n query EventfullymanagedAnnouncements($eventId: ID, $limit: Int, $offset: Int) {\n announcements: eventfullyManagedAnnouncements(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const WORKFLOW_TEMPLATES_QUERY = gql`\n query EventfullymanagedWorkflowTemplates($eventId: ID, $limit: Int, $offset: Int) {\n workflowTemplates: eventfullyManagedWorkflowTemplates(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const AUTOMATION_RULES_QUERY = gql`\n query EventfullymanagedAutomationRules($eventId: ID, $limit: Int, $offset: Int) {\n automationRules: eventfullyManagedAutomationRules(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const COMMUNICATION_CAMPAIGNS_QUERY = gql`\n query EventfullymanagedCommunicationCampaigns($eventId: ID, $limit: Int, $offset: Int) {\n communicationCampaigns: eventfullyManagedCommunicationCampaigns(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const ANALYTICS_SNAPSHOTS_QUERY = gql`\n query EventfullymanagedAnalyticsSnapshots($eventId: ID, $limit: Int, $offset: Int) {\n analyticsSnapshots: eventfullyManagedAnalyticsSnapshots(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const CREATE_VENUE_MUTATION = gql`\n mutation EventfullymanagedCreateVenue($input: EventfullyManagedVenueInput!) {\n createVenue: eventfullyManagedCreateVenue(input: $input) {\n id\n name\n description\n city\n state\n country\n capacity\n amenities\n status\n pricing\n openingHours\n metadata\n }\n }\n`;\n\nexport const UPDATE_VENUE_MUTATION = gql`\n mutation EventfullymanagedUpdateVenue($id: ID!, $input: EventfullyManagedVenueInput!) {\n updateVenue: eventfullyManagedUpdateVenue(id: $id, input: $input) {\n id\n name\n description\n city\n state\n country\n capacity\n amenities\n status\n pricing\n openingHours\n metadata\n }\n }\n`;\n\nexport const CREATE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedCreateSponsor($input: EventfullyManagedSponsorInput!) {\n createSponsor: eventfullyManagedCreateSponsor(input: $input) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\nexport const UPDATE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedUpdateSponsor($id: ID!, $input: EventfullyManagedSponsorInput!) {\n updateSponsor: eventfullyManagedUpdateSponsor(id: $id, input: $input) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\nexport const CREATE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedCreateFloorPlan($input: EventfullyManagedFloorPlanInput!) {\n createFloorPlan: eventfullyManagedCreateFloorPlan(input: $input) {\n id\n venueId\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPDATE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedUpdateFloorPlan($id: ID!, $input: EventfullyManagedFloorPlanInput!) {\n updateFloorPlan: eventfullyManagedUpdateFloorPlan(id: $id, input: $input) {\n id\n venueId\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const DELETE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedDeleteFloorPlan($id: ID!) {\n deleteFloorPlan: eventfullyManagedDeleteFloorPlan(id: $id)\n }\n`;\n\nexport const CREATE_EVENT_MUTATION = gql`\n mutation EventfullymanagedCreateEvent($input: EventfullyManagedEventInput!) {\n createEvent: eventfullyManagedCreateEvent(input: $input) {\n id\n name\n type\n status\n startAt\n endAt\n timezone\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const UPDATE_EVENT_MUTATION = gql`\n mutation EventfullymanagedUpdateEvent($id: ID!, $input: EventfullyManagedEventInput!) {\n updateEvent: eventfullyManagedUpdateEvent(id: $id, input: $input) {\n id\n name\n type\n status\n startAt\n endAt\n timezone\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const UPSERT_ANNOUNCEMENT_MUTATION = gql`\n mutation EventfullymanagedUpsertAnnouncement($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAnnouncement: eventfullyManagedUpsertAnnouncement(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_WORKFLOW_TEMPLATE_MUTATION = gql`\n mutation EventfullymanagedUpsertWorkflowTemplate($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertWorkflowTemplate: eventfullyManagedUpsertWorkflowTemplate(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_AUTOMATION_RULE_MUTATION = gql`\n mutation EventfullymanagedUpsertAutomationRule($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAutomationRule: eventfullyManagedUpsertAutomationRule(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_COMMUNICATION_CAMPAIGN_MUTATION = gql`\n mutation EventfullymanagedUpsertCommunicationCampaign($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertCommunicationCampaign: eventfullyManagedUpsertCommunicationCampaign(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_ANALYTICS_SNAPSHOT_MUTATION = gql`\n mutation EventfullymanagedUpsertAnalyticsSnapshot($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAnalyticsSnapshot: eventfullyManagedUpsertAnalyticsSnapshot(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const useDashboardSummaryQuery = () => useQuery<DashboardSummaryResponse>(DASHBOARD_SUMMARY_QUERY);\nexport const useEventsQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<EventsResponse, { search?: string; limit?: number; offset?: number }>(EVENTS_QUERY, { variables });\nexport const useVenuesQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<VenuesResponse, { search?: string; limit?: number; offset?: number }>(VENUES_QUERY, { variables });\nexport const useVenueQuery = (id: string) =>\n useQuery<VenueResponse, { id: string }>(VENUE_QUERY, { variables: { id }, skip: !id });\nexport const useSponsorsQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<SponsorsResponse, { search?: string; limit?: number; offset?: number }>(SPONSORS_QUERY, { variables });\nexport const useRegistrationsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<RegistrationsResponse, { eventId?: string; limit?: number; offset?: number }>(REGISTRATIONS_QUERY, {\n variables,\n });\nexport const useAttendeesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AttendeesResponse, { eventId?: string; limit?: number; offset?: number }>(ATTENDEES_QUERY, { variables });\nexport const useEventSessionsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<EventSessionsResponse, { eventId?: string; limit?: number; offset?: number }>(EVENT_SESSIONS_QUERY, {\n variables,\n });\nexport const useSpeakersQuery = (variables: { limit?: number; offset?: number }) =>\n useQuery<SpeakersResponse, { limit?: number; offset?: number }>(SPEAKERS_QUERY, { variables });\nexport const useTicketTypesQuery = (variables: {\n eventId?: string;\n search?: string;\n limit?: number;\n offset?: number;\n}) =>\n useQuery<TicketTypesResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n TICKET_TYPES_QUERY,\n {\n variables,\n }\n );\nexport const usePromoCodesQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<PromoCodesResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n PROMO_CODES_QUERY,\n {\n variables,\n }\n );\nexport const useExhibitorsQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<ExhibitorsResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n EXHIBITORS_QUERY,\n {\n variables,\n }\n );\nexport const useLeadsQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<LeadsResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(LEADS_QUERY, {\n variables,\n });\nexport const useCheckInStationsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CheckInStationsResponse, { eventId?: string; limit?: number; offset?: number }>(CHECKIN_STATIONS_QUERY, {\n variables,\n });\nexport const useCheckInRecordsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CheckInRecordsResponse, { eventId?: string; limit?: number; offset?: number }>(CHECKIN_RECORDS_QUERY, {\n variables,\n });\n\nexport type CheckInThroughputPointGql = { hour: string; count: number };\ntype CheckInThroughputResponse = { checkInThroughput: CheckInThroughputPointGql[] };\nexport const useCheckInThroughputQuery = (variables: { eventId?: string; date?: string }) =>\n useQuery<CheckInThroughputResponse, { eventId: string; date?: string }>(CHECK_IN_THROUGHPUT_QUERY, {\n variables: { eventId: variables.eventId ?? '', date: variables.date },\n skip: !variables.eventId,\n });\n\nexport type SessionConflictGql = {\n type: string;\n sessionAId: string;\n sessionATitle: string;\n sessionBId: string;\n sessionBTitle: string;\n venueId?: string | null;\n speakerId?: string | null;\n message: string;\n};\ntype SessionConflictsResponse = { sessionConflicts: SessionConflictGql[] };\nexport const useSessionConflictsQuery = (variables: { eventId?: string }) =>\n useQuery<SessionConflictsResponse, { eventId: string }>(SESSION_CONFLICTS_QUERY, {\n variables: { eventId: variables.eventId ?? '' },\n skip: !variables.eventId,\n });\nexport const useNetworkingProfilesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<NetworkingProfilesResponse, { eventId?: string; limit?: number; offset?: number }>(\n NETWORKING_PROFILES_QUERY,\n {\n variables,\n }\n );\nexport const useNetworkingMatchesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<NetworkingMatchesResponse, { eventId?: string; limit?: number; offset?: number }>(NETWORKING_MATCHES_QUERY, {\n variables,\n });\nexport const useMeetingsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<MeetingsResponse, { eventId?: string; limit?: number; offset?: number }>(MEETINGS_QUERY, { variables });\nexport const useAnnouncementsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AnnouncementsResponse, { eventId?: string; limit?: number; offset?: number }>(ANNOUNCEMENTS_QUERY, {\n variables,\n });\nexport const useWorkflowTemplatesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<WorkflowTemplatesResponse, { eventId?: string; limit?: number; offset?: number }>(WORKFLOW_TEMPLATES_QUERY, {\n variables,\n });\nexport const useAutomationRulesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AutomationRulesResponse, { eventId?: string; limit?: number; offset?: number }>(AUTOMATION_RULES_QUERY, {\n variables,\n });\nexport const useCommunicationCampaignsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CommunicationCampaignsResponse, { eventId?: string; limit?: number; offset?: number }>(\n COMMUNICATION_CAMPAIGNS_QUERY,\n {\n variables,\n }\n );\nexport const useAnalyticsSnapshotsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AnalyticsSnapshotsResponse, { eventId?: string; limit?: number; offset?: number }>(\n ANALYTICS_SNAPSHOTS_QUERY,\n {\n variables,\n }\n );\n\nexport const useCreateVenueMutation = () =>\n useMutation<CreateVenueResponse, { input: Record<string, unknown> }>(CREATE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useUpdateVenueMutation = () =>\n useMutation<UpdateVenueResponse, { id: string; input: Record<string, unknown> }>(UPDATE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useCreateSponsorMutation = () =>\n useMutation<CreateSponsorResponse, { input: Record<string, unknown> }>(CREATE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\nexport const useUpdateSponsorMutation = () =>\n useMutation<UpdateSponsorResponse, { id: string; input: Record<string, unknown> }>(UPDATE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\nexport const useCreateFloorPlanMutation = () =>\n useMutation<CreateFloorPlanResponse, { input: Record<string, unknown> }>(CREATE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useUpdateFloorPlanMutation = () =>\n useMutation<UpdateFloorPlanResponse, { id: string; input: Record<string, unknown> }>(UPDATE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useDeleteFloorPlanMutation = () =>\n useMutation<DeleteFloorPlanResponse, IdVar>(DELETE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useCreateEventMutation = () =>\n useMutation<{ createEvent: EventGql }, { input: Record<string, unknown> }>(CREATE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateEventMutation = () =>\n useMutation<{ updateEvent: EventGql }, { id: string; input: Record<string, unknown> }>(UPDATE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpsertAnnouncementMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_ANNOUNCEMENT_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANNOUNCEMENTS_QUERY }],\n }\n );\nexport const useUpsertWorkflowTemplateMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_WORKFLOW_TEMPLATE_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: WORKFLOW_TEMPLATES_QUERY }],\n }\n );\nexport const useUpsertAutomationRuleMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_AUTOMATION_RULE_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: AUTOMATION_RULES_QUERY }],\n }\n );\nexport const useUpsertCommunicationCampaignMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_COMMUNICATION_CAMPAIGN_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: COMMUNICATION_CAMPAIGNS_QUERY }],\n }\n );\nexport const useUpsertAnalyticsSnapshotMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_ANALYTICS_SNAPSHOT_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANALYTICS_SNAPSHOTS_QUERY }],\n }\n );\n\n// ---------------------------------------------------------------------------\n// Single-entity fetch queries (edit-form hydration).\n//\n// The supergraph only exposes single-entity reads for Event, Sponsor and Venue\n// (`eventfullyManagedEvent` / `eventfullyManagedSponsor` / `eventfullyManagedVenue`).\n// Edit forms for every OTHER entity derive their initial state from the matching\n// LIST query (see SponsorFormPage for the `.items.find(id)` pattern) because the\n// backend has no by-id resolver for them.\n// ---------------------------------------------------------------------------\n\nexport const EVENT_QUERY = gql`\n query EventfullymanagedEvent($id: ID!) {\n event: eventfullyManagedEvent(id: $id) {\n id\n workspaceId\n name\n description\n type\n status\n timezone\n startAt\n endAt\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const SPONSOR_QUERY = gql`\n query EventfullymanagedSponsor($id: ID!) {\n sponsor: eventfullyManagedSponsor(id: $id) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Entity tags (inline tagInfo, NOT the federated `tag {}` field).\n// ---------------------------------------------------------------------------\n\nexport const ENTITY_TAGS_QUERY = gql`\n query EventfullymanagedEntityTags($input: EventfullyManagedGetEntityTagsInput!) {\n eventfullyManagedEntityTags(input: $input) {\n id\n tagId\n entityId\n entityType\n source\n tagInfo {\n id\n key\n label\n color\n }\n }\n }\n`;\n\nexport const AVAILABLE_TAGS_QUERY = gql`\n query EventfullymanagedAvailableTags($limit: Int) {\n availableEventfullyManagedTags(limit: $limit) {\n id\n key\n label\n color\n }\n }\n`;\n\nexport const TAG_ENTITY_MUTATION = gql`\n mutation EventfullymanagedTagEntity($input: EventfullyManagedTagEntityInput!) {\n tagEventfullyManagedEntity(input: $input) {\n id\n tagId\n entityId\n entityType\n source\n tagInfo {\n id\n key\n label\n color\n }\n }\n }\n`;\n\nexport const UNTAG_ENTITY_MUTATION = gql`\n mutation EventfullymanagedUntagEntity($input: EventfullyManagedUntagEntityInput!) {\n untagEventfullyManagedEntity(input: $input)\n }\n`;\n\nexport const CREATE_ENTITY_TAG_MUTATION = gql`\n mutation EventfullymanagedCreateEntityTag($input: EventfullyManagedCreateEntityTagInput!) {\n createEventfullyManagedEntityTag(input: $input) {\n id\n key\n label\n color\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// EventSession — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst EVENT_SESSION_FIELDS = `\n id\n workspaceId\n eventId\n venueId\n title\n description\n sessionType\n track\n startsAt\n endsAt\n capacity\n status\n metadata\n`;\n\nexport const CREATE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedCreateEventSession($input: EventfullyManagedEventSessionInput!) {\n createEventSession: eventfullyManagedCreateEventSession(input: $input) {\n ${EVENT_SESSION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedUpdateEventSession($id: ID!, $input: EventfullyManagedEventSessionInput!) {\n updateEventSession: eventfullyManagedUpdateEventSession(id: $id, input: $input) {\n ${EVENT_SESSION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedDeleteEventSession($id: ID!) {\n deleteEventSession: eventfullyManagedDeleteEventSession(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Speaker — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst SPEAKER_FIELDS = `\n id\n workspaceId\n fullName\n title\n organization\n email\n phone\n bio\n avatarUrl\n socialLinks\n`;\n\nexport const CREATE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedCreateSpeaker($input: EventfullyManagedSpeakerInput!) {\n createSpeaker: eventfullyManagedCreateSpeaker(input: $input) {\n ${SPEAKER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedUpdateSpeaker($id: ID!, $input: EventfullyManagedSpeakerInput!) {\n updateSpeaker: eventfullyManagedUpdateSpeaker(id: $id, input: $input) {\n ${SPEAKER_FIELDS}\n }\n }\n`;\n\nexport const DELETE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedDeleteSpeaker($id: ID!) {\n deleteSpeaker: eventfullyManagedDeleteSpeaker(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// TicketType — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst TICKET_TYPE_FIELDS = `\n id\n workspaceId\n eventId\n name\n description\n price\n currency\n capacity\n soldCount\n salesStartAt\n salesEndAt\n isActive\n metadata\n`;\n\nexport const CREATE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedCreateTicketType($input: EventfullyManagedTicketTypeInput!) {\n createTicketType: eventfullyManagedCreateTicketType(input: $input) {\n ${TICKET_TYPE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedUpdateTicketType($id: ID!, $input: EventfullyManagedTicketTypeInput!) {\n updateTicketType: eventfullyManagedUpdateTicketType(id: $id, input: $input) {\n ${TICKET_TYPE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedDeleteTicketType($id: ID!) {\n deleteTicketType: eventfullyManagedDeleteTicketType(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// PromoCode — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst PROMO_CODE_FIELDS = `\n id\n workspaceId\n eventId\n code\n description\n discountType\n discountValue\n maxUses\n usedCount\n startsAt\n endsAt\n isActive\n metadata\n`;\n\nexport const CREATE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedCreatePromoCode($input: EventfullyManagedPromoCodeInput!) {\n createPromoCode: eventfullyManagedCreatePromoCode(input: $input) {\n ${PROMO_CODE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedUpdatePromoCode($id: ID!, $input: EventfullyManagedPromoCodeInput!) {\n updatePromoCode: eventfullyManagedUpdatePromoCode(id: $id, input: $input) {\n ${PROMO_CODE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedDeletePromoCode($id: ID!) {\n deletePromoCode: eventfullyManagedDeletePromoCode(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Registration — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst REGISTRATION_FIELDS = `\n id\n workspaceId\n eventId\n attendeeId\n ticketTypeId\n status\n quantity\n totalAmount\n promoCodeId\n currency\n registeredAt\n checkedInAt\n metadata\n`;\n\nexport const CREATE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedCreateRegistration($input: EventfullyManagedRegistrationInput!) {\n createRegistration: eventfullyManagedCreateRegistration(input: $input) {\n ${REGISTRATION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedUpdateRegistration($id: ID!, $input: EventfullyManagedRegistrationInput!) {\n updateRegistration: eventfullyManagedUpdateRegistration(id: $id, input: $input) {\n ${REGISTRATION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedDeleteRegistration($id: ID!) {\n deleteRegistration: eventfullyManagedDeleteRegistration(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Attendee — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst ATTENDEE_FIELDS = `\n id\n workspaceId\n eventId\n fullName\n email\n phone\n company\n role\n profile\n metadata\n`;\n\nexport const CREATE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedCreateAttendee($input: EventfullyManagedAttendeeInput!) {\n createAttendee: eventfullyManagedCreateAttendee(input: $input) {\n ${ATTENDEE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedUpdateAttendee($id: ID!, $input: EventfullyManagedAttendeeInput!) {\n updateAttendee: eventfullyManagedUpdateAttendee(id: $id, input: $input) {\n ${ATTENDEE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedDeleteAttendee($id: ID!) {\n deleteAttendee: eventfullyManagedDeleteAttendee(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Exhibitor — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst EXHIBITOR_FIELDS = `\n id\n workspaceId\n eventId\n name\n boothCode\n category\n contactName\n contactEmail\n status\n metadata\n`;\n\nexport const CREATE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedCreateExhibitor($input: EventfullyManagedExhibitorInput!) {\n createExhibitor: eventfullyManagedCreateExhibitor(input: $input) {\n ${EXHIBITOR_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedUpdateExhibitor($id: ID!, $input: EventfullyManagedExhibitorInput!) {\n updateExhibitor: eventfullyManagedUpdateExhibitor(id: $id, input: $input) {\n ${EXHIBITOR_FIELDS}\n }\n }\n`;\n\nexport const DELETE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedDeleteExhibitor($id: ID!) {\n deleteExhibitor: eventfullyManagedDeleteExhibitor(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Lead — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst LEAD_FIELDS = `\n id\n workspaceId\n eventId\n sponsorId\n exhibitorId\n attendeeName\n attendeeEmail\n score\n status\n notes\n capturedAt\n metadata\n`;\n\nexport const CREATE_LEAD_MUTATION = gql`\n mutation EventfullymanagedCreateLead($input: EventfullyManagedLeadInput!) {\n createLead: eventfullyManagedCreateLead(input: $input) {\n ${LEAD_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_LEAD_MUTATION = gql`\n mutation EventfullymanagedUpdateLead($id: ID!, $input: EventfullyManagedLeadInput!) {\n updateLead: eventfullyManagedUpdateLead(id: $id, input: $input) {\n ${LEAD_FIELDS}\n }\n }\n`;\n\nexport const DELETE_LEAD_MUTATION = gql`\n mutation EventfullymanagedDeleteLead($id: ID!) {\n deleteLead: eventfullyManagedDeleteLead(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// CheckInStation — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst CHECKIN_STATION_FIELDS = `\n id\n workspaceId\n eventId\n name\n code\n location\n isActive\n kioskConfig\n metadata\n`;\n\nexport const CREATE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedCreateCheckInStation($input: EventfullyManagedCheckInStationInput!) {\n createCheckInStation: eventfullyManagedCreateCheckInStation(input: $input) {\n ${CHECKIN_STATION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedUpdateCheckInStation($id: ID!, $input: EventfullyManagedCheckInStationInput!) {\n updateCheckInStation: eventfullyManagedUpdateCheckInStation(id: $id, input: $input) {\n ${CHECKIN_STATION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedDeleteCheckInStation($id: ID!) {\n deleteCheckInStation: eventfullyManagedDeleteCheckInStation(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// CheckInRecord — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst CHECKIN_RECORD_FIELDS = `\n id\n workspaceId\n eventId\n stationId\n attendeeId\n registrationId\n method\n status\n direction\n recordedAt\n clientScanId\n metadata\n`;\n\nexport const CREATE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedCreateCheckInRecord($input: EventfullyManagedCheckInRecordInput!) {\n createCheckInRecord: eventfullyManagedCreateCheckInRecord(input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedUpdateCheckInRecord($id: ID!, $input: EventfullyManagedCheckInRecordInput!) {\n updateCheckInRecord: eventfullyManagedUpdateCheckInRecord(id: $id, input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\nexport const DELETE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedDeleteCheckInRecord($id: ID!) {\n deleteCheckInRecord: eventfullyManagedDeleteCheckInRecord(id: $id)\n }\n`;\n\n// BOFF-4330 — kiosk QR scan path (signed token, offline-queue idempotent).\nexport const SCAN_CHECK_IN_MUTATION = gql`\n mutation EventfullymanagedScanCheckIn($input: EventfullyManagedScanCheckInInput!) {\n scanCheckIn: eventfullyManagedScanCheckIn(input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\n// BOFF-4330 — a registration's signed QR check-in token + rendered PNG.\nexport const CHECK_IN_TOKEN_QUERY = gql`\n query EventfullymanagedCheckInToken($registrationId: ID!) {\n checkInToken: eventfullyManagedCheckInToken(registrationId: $registrationId) {\n registrationId\n token\n qrDataUrl\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// NetworkingProfile — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst NETWORKING_PROFILE_FIELDS = `\n id\n workspaceId\n eventId\n attendeeId\n interests\n lookingFor\n industry\n role\n visibility\n metadata\n`;\n\nexport const CREATE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedCreateNetworkingProfile($input: EventfullyManagedNetworkingProfileInput!) {\n createNetworkingProfile: eventfullyManagedCreateNetworkingProfile(input: $input) {\n ${NETWORKING_PROFILE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedUpdateNetworkingProfile($id: ID!, $input: EventfullyManagedNetworkingProfileInput!) {\n updateNetworkingProfile: eventfullyManagedUpdateNetworkingProfile(id: $id, input: $input) {\n ${NETWORKING_PROFILE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedDeleteNetworkingProfile($id: ID!) {\n deleteNetworkingProfile: eventfullyManagedDeleteNetworkingProfile(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// NetworkingMatch — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst NETWORKING_MATCH_FIELDS = `\n id\n workspaceId\n eventId\n sourceProfileId\n targetProfileId\n score\n reason\n status\n metadata\n`;\n\nexport const CREATE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedCreateNetworkingMatch($input: EventfullyManagedNetworkingMatchInput!) {\n createNetworkingMatch: eventfullyManagedCreateNetworkingMatch(input: $input) {\n ${NETWORKING_MATCH_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedUpdateNetworkingMatch($id: ID!, $input: EventfullyManagedNetworkingMatchInput!) {\n updateNetworkingMatch: eventfullyManagedUpdateNetworkingMatch(id: $id, input: $input) {\n ${NETWORKING_MATCH_FIELDS}\n }\n }\n`;\n\nexport const DELETE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedDeleteNetworkingMatch($id: ID!) {\n deleteNetworkingMatch: eventfullyManagedDeleteNetworkingMatch(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Meeting — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst MEETING_FIELDS = `\n id\n workspaceId\n eventId\n title\n startsAt\n endsAt\n location\n notes\n sourceProfileId\n targetProfileId\n status\n metadata\n`;\n\nexport const CREATE_MEETING_MUTATION = gql`\n mutation EventfullymanagedCreateMeeting($input: EventfullyManagedMeetingInput!) {\n createMeeting: eventfullyManagedCreateMeeting(input: $input) {\n ${MEETING_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_MEETING_MUTATION = gql`\n mutation EventfullymanagedUpdateMeeting($id: ID!, $input: EventfullyManagedMeetingInput!) {\n updateMeeting: eventfullyManagedUpdateMeeting(id: $id, input: $input) {\n ${MEETING_FIELDS}\n }\n }\n`;\n\nexport const DELETE_MEETING_MUTATION = gql`\n mutation EventfullymanagedDeleteMeeting($id: ID!) {\n deleteMeeting: eventfullyManagedDeleteMeeting(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Delete-only for existing create/update entities (Event, Venue, Sponsor).\n// ---------------------------------------------------------------------------\n\nexport const DELETE_EVENT_MUTATION = gql`\n mutation EventfullymanagedDeleteEvent($id: ID!) {\n deleteEvent: eventfullyManagedDeleteEvent(id: $id)\n }\n`;\n\nexport const DELETE_VENUE_MUTATION = gql`\n mutation EventfullymanagedDeleteVenue($id: ID!) {\n deleteVenue: eventfullyManagedDeleteVenue(id: $id)\n }\n`;\n\nexport const DELETE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedDeleteSponsor($id: ID!) {\n deleteSponsor: eventfullyManagedDeleteSponsor(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Communications — publish announcement / send campaign.\n// ---------------------------------------------------------------------------\n\nexport const PUBLISH_ANNOUNCEMENT_MUTATION = gql`\n mutation EventfullymanagedPublishAnnouncement($id: ID!) {\n publishAnnouncement: eventfullyManagedPublishAnnouncement(id: $id) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const SEND_COMMUNICATION_CAMPAIGN_MUTATION = gql`\n mutation EventfullymanagedSendCommunicationCampaign($id: ID!) {\n sendCommunicationCampaign: eventfullyManagedSendCommunicationCampaign(id: $id) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\n// ===========================================================================\n// Response type aliases\n// ===========================================================================\n\ntype EventDetailResponse = { event: EventDetailGql | null };\ntype SponsorDetailResponse = { sponsor: SponsorGql | null };\ntype EntityTagsResponse = { eventfullyManagedEntityTags: EntityTagAssignmentGql[] };\ntype AvailableTagsResponse = { availableEventfullyManagedTags: AvailableTagGql[] };\ntype TagEntityResponse = { tagEventfullyManagedEntity: EntityTagAssignmentGql };\ntype UntagEntityResponse = { untagEventfullyManagedEntity: boolean };\ntype CreateEntityTagResponse = { createEventfullyManagedEntityTag: AvailableTagGql };\n\ntype CreateEventSessionResponse = { createEventSession: EventSessionGql };\ntype UpdateEventSessionResponse = { updateEventSession: EventSessionGql };\ntype DeleteEventSessionResponse = { deleteEventSession: boolean };\ntype CreateSpeakerResponse = { createSpeaker: SpeakerGql };\ntype UpdateSpeakerResponse = { updateSpeaker: SpeakerGql };\ntype DeleteSpeakerResponse = { deleteSpeaker: boolean };\ntype CreateTicketTypeResponse = { createTicketType: TicketTypeGql };\ntype UpdateTicketTypeResponse = { updateTicketType: TicketTypeGql };\ntype DeleteTicketTypeResponse = { deleteTicketType: boolean };\ntype CreatePromoCodeResponse = { createPromoCode: PromoCodeGql };\ntype UpdatePromoCodeResponse = { updatePromoCode: PromoCodeGql };\ntype DeletePromoCodeResponse = { deletePromoCode: boolean };\ntype CreateRegistrationResponse = { createRegistration: RegistrationGql };\ntype UpdateRegistrationResponse = { updateRegistration: RegistrationGql };\ntype DeleteRegistrationResponse = { deleteRegistration: boolean };\ntype CreateAttendeeResponse = { createAttendee: AttendeeGql };\ntype UpdateAttendeeResponse = { updateAttendee: AttendeeGql };\ntype DeleteAttendeeResponse = { deleteAttendee: boolean };\ntype CreateExhibitorResponse = { createExhibitor: ExhibitorGql };\ntype UpdateExhibitorResponse = { updateExhibitor: ExhibitorGql };\ntype DeleteExhibitorResponse = { deleteExhibitor: boolean };\ntype CreateLeadResponse = { createLead: LeadGql };\ntype UpdateLeadResponse = { updateLead: LeadGql };\ntype DeleteLeadResponse = { deleteLead: boolean };\ntype CreateCheckInStationResponse = { createCheckInStation: CheckInStationGql };\ntype UpdateCheckInStationResponse = { updateCheckInStation: CheckInStationGql };\ntype DeleteCheckInStationResponse = { deleteCheckInStation: boolean };\ntype CreateCheckInRecordResponse = { createCheckInRecord: CheckInRecordGql };\ntype UpdateCheckInRecordResponse = { updateCheckInRecord: CheckInRecordGql };\ntype DeleteCheckInRecordResponse = { deleteCheckInRecord: boolean };\n// BOFF-4330\ntype ScanCheckInResponse = { scanCheckIn: CheckInRecordGql };\ntype ScanCheckInVars = { input: Record<string, unknown> };\ntype CreateNetworkingProfileResponse = { createNetworkingProfile: NetworkingProfileGql };\ntype UpdateNetworkingProfileResponse = { updateNetworkingProfile: NetworkingProfileGql };\ntype DeleteNetworkingProfileResponse = { deleteNetworkingProfile: boolean };\ntype CreateNetworkingMatchResponse = { createNetworkingMatch: NetworkingMatchGql };\ntype UpdateNetworkingMatchResponse = { updateNetworkingMatch: NetworkingMatchGql };\ntype DeleteNetworkingMatchResponse = { deleteNetworkingMatch: boolean };\ntype CreateMeetingResponse = { createMeeting: MeetingGql };\ntype UpdateMeetingResponse = { updateMeeting: MeetingGql };\ntype DeleteMeetingResponse = { deleteMeeting: boolean };\ntype DeleteEventResponse = { deleteEvent: boolean };\ntype DeleteVenueResponse = { deleteVenue: boolean };\ntype DeleteSponsorResponse = { deleteSponsor: boolean };\ntype PublishAnnouncementResponse = { publishAnnouncement: SimpleEntityGql };\ntype SendCommunicationCampaignResponse = { sendCommunicationCampaign: SimpleEntityGql };\n\ntype CreateVars = { input: Record<string, unknown> };\ntype UpdateVars = { id: string; input: Record<string, unknown> };\ntype IdVar = { id: string };\n\n// ===========================================================================\n// Single-entity + tag query hooks\n// ===========================================================================\n\nexport const useEventQuery = (id: string) =>\n useQuery<EventDetailResponse, IdVar>(EVENT_QUERY, { variables: { id }, skip: !id });\nexport const useSponsorQuery = (id: string) =>\n useQuery<SponsorDetailResponse, IdVar>(SPONSOR_QUERY, { variables: { id }, skip: !id });\n\n// BOFF-4330 — a registration's signed QR check-in token + rendered PNG.\nexport type CheckInTokenGql = { registrationId: string; token: string; qrDataUrl: string };\ntype CheckInTokenResponse = { checkInToken: CheckInTokenGql };\nexport const useCheckInTokenQuery = (registrationId: string) =>\n useQuery<CheckInTokenResponse, { registrationId: string }>(CHECK_IN_TOKEN_QUERY, {\n variables: { registrationId },\n skip: !registrationId,\n });\n\nexport const useEntityTagsQuery = (variables: { input: { entityType: string; entityId: string } }) =>\n useQuery<EntityTagsResponse, { input: { entityType: string; entityId: string } }>(ENTITY_TAGS_QUERY, {\n variables,\n skip: !variables.input.entityId,\n });\nexport const useAvailableTagsQuery = (variables: { limit?: number } = {}) =>\n useQuery<AvailableTagsResponse, { limit?: number }>(AVAILABLE_TAGS_QUERY, { variables });\n\n// ===========================================================================\n// Tag mutation hooks\n// ===========================================================================\n\nexport const useTagEntityMutation = () =>\n useMutation<TagEntityResponse, { input: Record<string, unknown> }>(TAG_ENTITY_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useUntagEntityMutation = () =>\n useMutation<UntagEntityResponse, { input: Record<string, unknown> }>(UNTAG_ENTITY_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useCreateEntityTagMutation = () =>\n useMutation<CreateEntityTagResponse, { input: Record<string, unknown> }>(CREATE_ENTITY_TAG_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: AVAILABLE_TAGS_QUERY }],\n });\n\n// ===========================================================================\n// CRUD mutation hooks\n// ===========================================================================\n\nexport const useCreateEventSessionMutation = () =>\n useMutation<CreateEventSessionResponse, CreateVars>(CREATE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\nexport const useUpdateEventSessionMutation = () =>\n useMutation<UpdateEventSessionResponse, UpdateVars>(UPDATE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\nexport const useDeleteEventSessionMutation = () =>\n useMutation<DeleteEventSessionResponse, IdVar>(DELETE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\n\nexport const useCreateSpeakerMutation = () =>\n useMutation<CreateSpeakerResponse, CreateVars>(CREATE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\nexport const useUpdateSpeakerMutation = () =>\n useMutation<UpdateSpeakerResponse, UpdateVars>(UPDATE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\nexport const useDeleteSpeakerMutation = () =>\n useMutation<DeleteSpeakerResponse, IdVar>(DELETE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\n\nexport const useCreateTicketTypeMutation = () =>\n useMutation<CreateTicketTypeResponse, CreateVars>(CREATE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\nexport const useUpdateTicketTypeMutation = () =>\n useMutation<UpdateTicketTypeResponse, UpdateVars>(UPDATE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\nexport const useDeleteTicketTypeMutation = () =>\n useMutation<DeleteTicketTypeResponse, IdVar>(DELETE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\n\nexport const useCreatePromoCodeMutation = () =>\n useMutation<CreatePromoCodeResponse, CreateVars>(CREATE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\nexport const useUpdatePromoCodeMutation = () =>\n useMutation<UpdatePromoCodeResponse, UpdateVars>(UPDATE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\nexport const useDeletePromoCodeMutation = () =>\n useMutation<DeletePromoCodeResponse, IdVar>(DELETE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\n\nexport const useCreateRegistrationMutation = () =>\n useMutation<CreateRegistrationResponse, CreateVars>(CREATE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateRegistrationMutation = () =>\n useMutation<UpdateRegistrationResponse, UpdateVars>(UPDATE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }],\n });\nexport const useDeleteRegistrationMutation = () =>\n useMutation<DeleteRegistrationResponse, IdVar>(DELETE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\n\nexport const useCreateAttendeeMutation = () =>\n useMutation<CreateAttendeeResponse, CreateVars>(CREATE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateAttendeeMutation = () =>\n useMutation<UpdateAttendeeResponse, UpdateVars>(UPDATE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }],\n });\nexport const useDeleteAttendeeMutation = () =>\n useMutation<DeleteAttendeeResponse, IdVar>(DELETE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\n\nexport const useCreateExhibitorMutation = () =>\n useMutation<CreateExhibitorResponse, CreateVars>(CREATE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\nexport const useUpdateExhibitorMutation = () =>\n useMutation<UpdateExhibitorResponse, UpdateVars>(UPDATE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\nexport const useDeleteExhibitorMutation = () =>\n useMutation<DeleteExhibitorResponse, IdVar>(DELETE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\n\nexport const useCreateLeadMutation = () =>\n useMutation<CreateLeadResponse, CreateVars>(CREATE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\nexport const useUpdateLeadMutation = () =>\n useMutation<UpdateLeadResponse, UpdateVars>(UPDATE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\nexport const useDeleteLeadMutation = () =>\n useMutation<DeleteLeadResponse, IdVar>(DELETE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\n\nexport const useCreateCheckInStationMutation = () =>\n useMutation<CreateCheckInStationResponse, CreateVars>(CREATE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\nexport const useUpdateCheckInStationMutation = () =>\n useMutation<UpdateCheckInStationResponse, UpdateVars>(UPDATE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\nexport const useDeleteCheckInStationMutation = () =>\n useMutation<DeleteCheckInStationResponse, IdVar>(DELETE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\n\nexport const useCreateCheckInRecordMutation = () =>\n useMutation<CreateCheckInRecordResponse, CreateVars>(CREATE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\nexport const useUpdateCheckInRecordMutation = () =>\n useMutation<UpdateCheckInRecordResponse, UpdateVars>(UPDATE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\nexport const useDeleteCheckInRecordMutation = () =>\n useMutation<DeleteCheckInRecordResponse, IdVar>(DELETE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\n\n// BOFF-4330 — kiosk QR scan path. Deliberately has NO `onError` toast: callers\n// (interactive submit AND the background offline-queue sync loop) decide for\n// themselves how to react to a failure — a background sync retry failing\n// because the device is still offline should never pop an error toast.\nexport const useScanCheckInMutation = () =>\n useMutation<ScanCheckInResponse, ScanCheckInVars>(SCAN_CHECK_IN_MUTATION, {\n errorPolicy: 'all',\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\n\nexport const useCreateNetworkingProfileMutation = () =>\n useMutation<CreateNetworkingProfileResponse, CreateVars>(CREATE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\nexport const useUpdateNetworkingProfileMutation = () =>\n useMutation<UpdateNetworkingProfileResponse, UpdateVars>(UPDATE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\nexport const useDeleteNetworkingProfileMutation = () =>\n useMutation<DeleteNetworkingProfileResponse, IdVar>(DELETE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\n\nexport const useCreateNetworkingMatchMutation = () =>\n useMutation<CreateNetworkingMatchResponse, CreateVars>(CREATE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\nexport const useUpdateNetworkingMatchMutation = () =>\n useMutation<UpdateNetworkingMatchResponse, UpdateVars>(UPDATE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\nexport const useDeleteNetworkingMatchMutation = () =>\n useMutation<DeleteNetworkingMatchResponse, IdVar>(DELETE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\n\nexport const useCreateMeetingMutation = () =>\n useMutation<CreateMeetingResponse, CreateVars>(CREATE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\nexport const useUpdateMeetingMutation = () =>\n useMutation<UpdateMeetingResponse, UpdateVars>(UPDATE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\nexport const useDeleteMeetingMutation = () =>\n useMutation<DeleteMeetingResponse, IdVar>(DELETE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\n\nexport const useDeleteEventMutation = () =>\n useMutation<DeleteEventResponse, IdVar>(DELETE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useDeleteVenueMutation = () =>\n useMutation<DeleteVenueResponse, IdVar>(DELETE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useDeleteSponsorMutation = () =>\n useMutation<DeleteSponsorResponse, IdVar>(DELETE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\n\nexport const usePublishAnnouncementMutation = () =>\n useMutation<PublishAnnouncementResponse, IdVar>(PUBLISH_ANNOUNCEMENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANNOUNCEMENTS_QUERY }],\n });\nexport const useSendCommunicationCampaignMutation = () =>\n useMutation<SendCommunicationCampaignResponse, IdVar>(SEND_COMMUNICATION_CAMPAIGN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: COMMUNICATION_CAMPAIGNS_QUERY }],\n });\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eventApi.js","names":[],"sources":["../../../src/eventfullymanaged/api/eventApi.ts"],"sourcesContent":["import { gql, type ErrorLike } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nimport { notify } from '../lib/toast';\n\n/**\n * Shared mutation error sink. The gateway client runs with `errorPolicy: 'all'`,\n * so in-band GraphQL errors also invoke `onError`; wiring this on every write\n * mutation guarantees a failure is always surfaced to the user even if a caller\n * forgets to inspect the resolved result.\n */\nconst onMutationError = (error: ErrorLike): void => {\n notify.error('Something went wrong', error.message || 'Please try again.');\n};\n\ntype DashboardSummaryResponse = {\n dashboardSummary: {\n totalEvents: number;\n activeEvents: number;\n totalRegistrations: number;\n totalAttendees: number;\n totalVenues: number;\n totalSponsors: number;\n upcomingSessions: number;\n };\n};\n\nexport type EventGql = {\n id: string;\n name: string;\n};\n\nexport type VenueGql = {\n id: string;\n workspaceId: string;\n name: string;\n description?: string | null;\n addressLine1?: string | null;\n city?: string | null;\n state?: string | null;\n country?: string | null;\n postalCode?: string | null;\n capacity?: number | null;\n amenities: string[];\n pricing?: Record<string, unknown> | null;\n openingHours?: Record<string, unknown> | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type FloorPlanGql = {\n id: string;\n venueId: string;\n name: string;\n imageUrl?: string | null;\n dimensions?: Record<string, unknown> | null;\n interactiveAreas?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type TicketTypeGql = {\n id: string;\n eventId: string;\n name: string;\n description?: string | null;\n price: string;\n currency: string;\n capacity?: number | null;\n soldCount: number;\n salesStartAt?: string | null;\n salesEndAt?: string | null;\n isActive: boolean;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type PromoCodeGql = {\n id: string;\n eventId: string;\n code: string;\n description?: string | null;\n discountType: string;\n discountValue: string;\n maxUses?: number | null;\n usedCount: number;\n startsAt?: string | null;\n endsAt?: string | null;\n isActive: boolean;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type ExhibitorGql = {\n id: string;\n eventId: string;\n name: string;\n boothCode?: string | null;\n category?: string | null;\n contactName?: string | null;\n contactEmail?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type LeadGql = {\n id: string;\n eventId: string;\n sponsorId?: string | null;\n exhibitorId?: string | null;\n attendeeName: string;\n attendeeEmail: string;\n score?: number | null;\n status: string;\n notes?: string | null;\n capturedAt: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type CheckInRecordGql = {\n id: string;\n eventId: string;\n stationId?: string | null;\n attendeeId?: string | null;\n registrationId?: string | null;\n method: string;\n status: string;\n direction: string;\n recordedAt: string;\n // BOFF-4330 — the offline-queue idempotency key this scan was recorded\n // (or synced) with, if any.\n clientScanId?: string | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type NetworkingProfileGql = {\n id: string;\n eventId: string;\n attendeeId: string;\n interests: string[];\n lookingFor: string[];\n industry?: string | null;\n role?: string | null;\n visibility: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SponsorGql = {\n id: string;\n eventId: string;\n name: string;\n level: string;\n logoUrl?: string | null;\n website?: string | null;\n contactName?: string | null;\n contactEmail?: string | null;\n contactPhone?: string | null;\n metrics?: { value?: number; leads?: number } | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type EventDetailGql = {\n id: string;\n workspaceId: string;\n name: string;\n description?: string | null;\n type: string;\n status: string;\n timezone: string;\n startAt: string;\n endAt: string;\n visibility: string;\n capacity?: number | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type EventSessionGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n venueId?: string | null;\n title: string;\n description?: string | null;\n sessionType: string;\n track?: string | null;\n startsAt: string;\n endsAt: string;\n capacity?: number | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SpeakerGql = {\n id: string;\n workspaceId: string;\n fullName: string;\n title?: string | null;\n organization?: string | null;\n email?: string | null;\n phone?: string | null;\n bio?: string | null;\n avatarUrl?: string | null;\n socialLinks?: Record<string, unknown> | null;\n};\n\nexport type RegistrationGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n attendeeId?: string | null;\n ticketTypeId?: string | null;\n status: string;\n quantity: number;\n totalAmount?: string | null;\n promoCodeId?: string | null;\n currency: string;\n registeredAt: string;\n checkedInAt?: string | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type AttendeeGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n fullName: string;\n email: string;\n phone?: string | null;\n company?: string | null;\n role?: string | null;\n profile?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type CheckInStationGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n name: string;\n code: string;\n location?: string | null;\n isActive: boolean;\n kioskConfig?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type MeetingGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n title: string;\n startsAt: string;\n endsAt: string;\n location?: string | null;\n notes?: string | null;\n sourceProfileId?: string | null;\n targetProfileId?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type NetworkingMatchGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n sourceProfileId: string;\n targetProfileId: string;\n score: number;\n reason?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SimpleEntityGql = {\n id: string;\n workspaceId: string;\n eventId?: string | null;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n metadata?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type EntityTagInfoGql = {\n id: string;\n key?: string | null;\n label?: string | null;\n color?: string | null;\n};\n\nexport type EntityTagAssignmentGql = {\n id: string;\n tagId: string;\n entityId: string;\n entityType: string;\n source: string;\n tagInfo?: EntityTagInfoGql | null;\n};\n\nexport type AvailableTagGql = {\n id: string;\n key: string;\n label: string;\n color?: string | null;\n};\n\ntype EventsResponse = { events: { total: number; items: EventGql[] } };\ntype VenuesResponse = { venues: { total: number; items: VenueGql[] } };\ntype VenueResponse = { venue: VenueGql | null; floorPlans: { total: number; items: FloorPlanGql[] } };\ntype SponsorsResponse = { sponsors: { total: number; items: SponsorGql[] } };\ntype CreateVenueResponse = { createVenue: VenueGql };\ntype UpdateVenueResponse = { updateVenue: VenueGql };\ntype CreateSponsorResponse = { createSponsor: SponsorGql };\ntype UpdateSponsorResponse = { updateSponsor: SponsorGql };\ntype CreateFloorPlanResponse = { createFloorPlan: FloorPlanGql };\ntype UpdateFloorPlanResponse = { updateFloorPlan: FloorPlanGql };\ntype DeleteFloorPlanResponse = { deleteFloorPlan: boolean };\ntype TicketTypesResponse = { ticketTypes: { total: number; items: TicketTypeGql[] } };\ntype PromoCodesResponse = { promoCodes: { total: number; items: PromoCodeGql[] } };\ntype ExhibitorsResponse = { exhibitors: { total: number; items: ExhibitorGql[] } };\ntype LeadsResponse = { leads: { total: number; items: LeadGql[] } };\ntype CheckInRecordsResponse = { checkInRecords: { total: number; items: CheckInRecordGql[] } };\ntype NetworkingProfilesResponse = { networkingProfiles: { total: number; items: NetworkingProfileGql[] } };\ntype RegistrationsResponse = { registrations: { total: number; items: RegistrationGql[] } };\ntype AttendeesResponse = { attendees: { total: number; items: AttendeeGql[] } };\ntype EventSessionsResponse = { eventSessions: { total: number; items: EventSessionGql[] } };\ntype SpeakersResponse = { speakers: { total: number; items: SpeakerGql[] } };\ntype SimpleEntity = {\n id: string;\n workspaceId: string;\n eventId?: string | null;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n metadata?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\ntype SimpleEntityResponse = { total: number; items: SimpleEntity[] };\ntype CheckInStationsResponse = { checkInStations: SimpleEntityResponse };\ntype NetworkingMatchesResponse = { networkingMatches: { total: number; items: NetworkingMatchGql[] } };\ntype GenerateNetworkingMatchesResponse = {\n generateNetworkingMatches: { total: number; items: NetworkingMatchGql[] };\n};\ntype SuggestedConnectionsResponse = { suggestedConnections: { total: number; items: NetworkingMatchGql[] } };\ntype MeetingsResponse = { meetings: SimpleEntityResponse };\ntype AnnouncementsResponse = { announcements: SimpleEntityResponse };\ntype WorkflowTemplatesResponse = { workflowTemplates: SimpleEntityResponse };\ntype AutomationRulesResponse = { automationRules: SimpleEntityResponse };\ntype CommunicationCampaignsResponse = { communicationCampaigns: SimpleEntityResponse };\ntype AnalyticsSnapshotsResponse = { analyticsSnapshots: SimpleEntityResponse };\ntype UpsertSimpleEntityResponse = { [key: string]: SimpleEntity };\n\nexport const DASHBOARD_SUMMARY_QUERY = gql`\n query EventfullymanagedDashboardSummary {\n dashboardSummary: eventfullyManagedDashboardSummary {\n totalEvents\n activeEvents\n totalRegistrations\n totalAttendees\n totalVenues\n totalSponsors\n upcomingSessions\n }\n }\n`;\n\nexport const EVENTS_QUERY = gql`\n query EventfullymanagedEvents($search: String, $limit: Int, $offset: Int) {\n events: eventfullyManagedEvents(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n name\n description\n type\n status\n timezone\n startAt\n endAt\n visibility\n capacity\n metadata\n }\n }\n }\n`;\n\nexport const VENUES_QUERY = gql`\n query EventfullymanagedVenues($search: String, $limit: Int, $offset: Int) {\n venues: eventfullyManagedVenues(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n name\n description\n addressLine1\n city\n state\n country\n postalCode\n capacity\n amenities\n pricing\n openingHours\n status\n metadata\n }\n }\n }\n`;\n\nexport const VENUE_QUERY = gql`\n query EventfullymanagedVenue($id: ID!) {\n venue: eventfullyManagedVenue(id: $id) {\n id\n workspaceId\n name\n description\n addressLine1\n city\n state\n country\n postalCode\n capacity\n amenities\n pricing\n openingHours\n status\n metadata\n createdAt\n updatedAt\n }\n floorPlans: eventfullyManagedFloorPlans(venueId: $id, limit: 100, offset: 0) {\n total\n items {\n id\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n }\n }\n }\n`;\n\nexport const SPONSORS_QUERY = gql`\n query EventfullymanagedSponsors($search: String, $limit: Int, $offset: Int) {\n sponsors: eventfullyManagedSponsors(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n createdAt\n }\n }\n }\n`;\n\nexport const REGISTRATIONS_QUERY = gql`\n query EventfullymanagedRegistrations($eventId: ID, $limit: Int, $offset: Int) {\n registrations: eventfullyManagedRegistrations(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n attendeeId\n ticketTypeId\n status\n quantity\n totalAmount\n currency\n registeredAt\n checkedInAt\n }\n }\n }\n`;\n\nexport const ATTENDEES_QUERY = gql`\n query EventfullymanagedAttendees($eventId: ID, $limit: Int, $offset: Int) {\n attendees: eventfullyManagedAttendees(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n fullName\n email\n phone\n company\n role\n metadata\n }\n }\n }\n`;\n\nexport const EVENT_SESSIONS_QUERY = gql`\n query EventfullymanagedEventSessions($eventId: ID, $limit: Int, $offset: Int) {\n eventSessions: eventfullyManagedEventSessions(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n venueId\n title\n sessionType\n track\n startsAt\n endsAt\n status\n }\n }\n }\n`;\n\nexport const SPEAKERS_QUERY = gql`\n query EventfullymanagedSpeakers($limit: Int, $offset: Int) {\n speakers: eventfullyManagedSpeakers(limit: $limit, offset: $offset) {\n total\n items {\n id\n fullName\n title\n organization\n email\n }\n }\n }\n`;\n\nexport const TICKET_TYPES_QUERY = gql`\n query EventfullymanagedTicketTypes($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n ticketTypes: eventfullyManagedTicketTypes(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n description\n price\n currency\n capacity\n soldCount\n salesStartAt\n salesEndAt\n isActive\n metadata\n }\n }\n }\n`;\n\nexport const PROMO_CODES_QUERY = gql`\n query EventfullymanagedPromoCodes($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n promoCodes: eventfullyManagedPromoCodes(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n code\n description\n discountType\n discountValue\n maxUses\n usedCount\n startsAt\n endsAt\n isActive\n metadata\n }\n }\n }\n`;\n\nexport const EXHIBITORS_QUERY = gql`\n query EventfullymanagedExhibitors($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n exhibitors: eventfullyManagedExhibitors(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n boothCode\n category\n contactName\n contactEmail\n status\n metadata\n }\n }\n }\n`;\n\nexport const LEADS_QUERY = gql`\n query EventfullymanagedLeads($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n leads: eventfullyManagedLeads(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n sponsorId\n exhibitorId\n attendeeName\n attendeeEmail\n score\n status\n notes\n capturedAt\n metadata\n }\n }\n }\n`;\n\nexport const CHECKIN_RECORDS_QUERY = gql`\n query EventfullymanagedCheckInRecords($eventId: ID, $limit: Int, $offset: Int) {\n checkInRecords: eventfullyManagedCheckInRecords(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n stationId\n attendeeId\n registrationId\n sessionId\n method\n status\n direction\n recordedAt\n metadata\n }\n }\n }\n`;\n\n// BOFF-3999 — hourly check-in throughput for one event.\nexport const CHECK_IN_THROUGHPUT_QUERY = gql`\n query EventfullymanagedCheckInThroughput($eventId: ID!, $date: DateTime) {\n checkInThroughput: eventfullyManagedCheckInThroughput(eventId: $eventId, date: $date) {\n hour\n count\n }\n }\n`;\n\n// BOFF-4331 — agenda-conflict detection for one event.\nexport const SESSION_CONFLICTS_QUERY = gql`\n query EventfullymanagedSessionConflicts($eventId: ID!) {\n sessionConflicts: eventfullyManagedSessionConflicts(eventId: $eventId) {\n type\n sessionAId\n sessionATitle\n sessionBId\n sessionBTitle\n venueId\n speakerId\n message\n }\n }\n`;\n\nexport const NETWORKING_PROFILES_QUERY = gql`\n query EventfullymanagedNetworkingProfiles($eventId: ID, $limit: Int, $offset: Int) {\n networkingProfiles: eventfullyManagedNetworkingProfiles(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n attendeeId\n interests\n lookingFor\n industry\n role\n visibility\n metadata\n }\n }\n }\n`;\n\nexport const CHECKIN_STATIONS_QUERY = gql`\n query EventfullymanagedCheckInStations($eventId: ID, $limit: Int, $offset: Int) {\n checkInStations: eventfullyManagedCheckInStations(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\n// BOFF-4321 — typed fields (score/reason are real columns; the list resolver\n// no longer routes through the generic simple-entity projection that dropped\n// them).\nexport const NETWORKING_MATCHES_QUERY = gql`\n query EventfullymanagedNetworkingMatches($eventId: ID, $limit: Int, $offset: Int) {\n networkingMatches: eventfullyManagedNetworkingMatches(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n sourceProfileId\n targetProfileId\n score\n reason\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\n// BOFF-4321 — deterministic matchmaking engine: bulk (organizer) generation\n// and attendee-facing top-N suggestions.\nexport const GENERATE_NETWORKING_MATCHES_MUTATION = gql`\n mutation EventfullymanagedGenerateNetworkingMatches($eventId: ID!) {\n generateNetworkingMatches: eventfullyManagedGenerateNetworkingMatches(eventId: $eventId) {\n total\n items {\n id\n workspaceId\n eventId\n sourceProfileId\n targetProfileId\n score\n reason\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const SUGGESTED_CONNECTIONS_QUERY = gql`\n query EventfullymanagedSuggestedConnections($eventId: ID!, $attendeeId: ID!, $limit: Int) {\n suggestedConnections: eventfullyManagedSuggestedConnections(\n eventId: $eventId\n attendeeId: $attendeeId\n limit: $limit\n ) {\n total\n items {\n id\n workspaceId\n eventId\n sourceProfileId\n targetProfileId\n score\n reason\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const MEETINGS_QUERY = gql`\n query EventfullymanagedMeetings($eventId: ID, $limit: Int, $offset: Int) {\n meetings: eventfullyManagedMeetings(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const ANNOUNCEMENTS_QUERY = gql`\n query EventfullymanagedAnnouncements($eventId: ID, $limit: Int, $offset: Int) {\n announcements: eventfullyManagedAnnouncements(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const WORKFLOW_TEMPLATES_QUERY = gql`\n query EventfullymanagedWorkflowTemplates($eventId: ID, $limit: Int, $offset: Int) {\n workflowTemplates: eventfullyManagedWorkflowTemplates(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const AUTOMATION_RULES_QUERY = gql`\n query EventfullymanagedAutomationRules($eventId: ID, $limit: Int, $offset: Int) {\n automationRules: eventfullyManagedAutomationRules(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const COMMUNICATION_CAMPAIGNS_QUERY = gql`\n query EventfullymanagedCommunicationCampaigns($eventId: ID, $limit: Int, $offset: Int) {\n communicationCampaigns: eventfullyManagedCommunicationCampaigns(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const ANALYTICS_SNAPSHOTS_QUERY = gql`\n query EventfullymanagedAnalyticsSnapshots($eventId: ID, $limit: Int, $offset: Int) {\n analyticsSnapshots: eventfullyManagedAnalyticsSnapshots(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const CREATE_VENUE_MUTATION = gql`\n mutation EventfullymanagedCreateVenue($input: EventfullyManagedVenueInput!) {\n createVenue: eventfullyManagedCreateVenue(input: $input) {\n id\n name\n description\n city\n state\n country\n capacity\n amenities\n status\n pricing\n openingHours\n metadata\n }\n }\n`;\n\nexport const UPDATE_VENUE_MUTATION = gql`\n mutation EventfullymanagedUpdateVenue($id: ID!, $input: EventfullyManagedVenueInput!) {\n updateVenue: eventfullyManagedUpdateVenue(id: $id, input: $input) {\n id\n name\n description\n city\n state\n country\n capacity\n amenities\n status\n pricing\n openingHours\n metadata\n }\n }\n`;\n\nexport const CREATE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedCreateSponsor($input: EventfullyManagedSponsorInput!) {\n createSponsor: eventfullyManagedCreateSponsor(input: $input) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\nexport const UPDATE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedUpdateSponsor($id: ID!, $input: EventfullyManagedSponsorInput!) {\n updateSponsor: eventfullyManagedUpdateSponsor(id: $id, input: $input) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\nexport const CREATE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedCreateFloorPlan($input: EventfullyManagedFloorPlanInput!) {\n createFloorPlan: eventfullyManagedCreateFloorPlan(input: $input) {\n id\n venueId\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPDATE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedUpdateFloorPlan($id: ID!, $input: EventfullyManagedFloorPlanInput!) {\n updateFloorPlan: eventfullyManagedUpdateFloorPlan(id: $id, input: $input) {\n id\n venueId\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const DELETE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedDeleteFloorPlan($id: ID!) {\n deleteFloorPlan: eventfullyManagedDeleteFloorPlan(id: $id)\n }\n`;\n\nexport const CREATE_EVENT_MUTATION = gql`\n mutation EventfullymanagedCreateEvent($input: EventfullyManagedEventInput!) {\n createEvent: eventfullyManagedCreateEvent(input: $input) {\n id\n name\n type\n status\n startAt\n endAt\n timezone\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const UPDATE_EVENT_MUTATION = gql`\n mutation EventfullymanagedUpdateEvent($id: ID!, $input: EventfullyManagedEventInput!) {\n updateEvent: eventfullyManagedUpdateEvent(id: $id, input: $input) {\n id\n name\n type\n status\n startAt\n endAt\n timezone\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const UPSERT_ANNOUNCEMENT_MUTATION = gql`\n mutation EventfullymanagedUpsertAnnouncement($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAnnouncement: eventfullyManagedUpsertAnnouncement(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_WORKFLOW_TEMPLATE_MUTATION = gql`\n mutation EventfullymanagedUpsertWorkflowTemplate($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertWorkflowTemplate: eventfullyManagedUpsertWorkflowTemplate(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_AUTOMATION_RULE_MUTATION = gql`\n mutation EventfullymanagedUpsertAutomationRule($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAutomationRule: eventfullyManagedUpsertAutomationRule(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_COMMUNICATION_CAMPAIGN_MUTATION = gql`\n mutation EventfullymanagedUpsertCommunicationCampaign($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertCommunicationCampaign: eventfullyManagedUpsertCommunicationCampaign(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_ANALYTICS_SNAPSHOT_MUTATION = gql`\n mutation EventfullymanagedUpsertAnalyticsSnapshot($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAnalyticsSnapshot: eventfullyManagedUpsertAnalyticsSnapshot(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const useDashboardSummaryQuery = () => useQuery<DashboardSummaryResponse>(DASHBOARD_SUMMARY_QUERY);\nexport const useEventsQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<EventsResponse, { search?: string; limit?: number; offset?: number }>(EVENTS_QUERY, { variables });\nexport const useVenuesQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<VenuesResponse, { search?: string; limit?: number; offset?: number }>(VENUES_QUERY, { variables });\nexport const useVenueQuery = (id: string) =>\n useQuery<VenueResponse, { id: string }>(VENUE_QUERY, { variables: { id }, skip: !id });\nexport const useSponsorsQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<SponsorsResponse, { search?: string; limit?: number; offset?: number }>(SPONSORS_QUERY, { variables });\nexport const useRegistrationsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<RegistrationsResponse, { eventId?: string; limit?: number; offset?: number }>(REGISTRATIONS_QUERY, {\n variables,\n });\nexport const useAttendeesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AttendeesResponse, { eventId?: string; limit?: number; offset?: number }>(ATTENDEES_QUERY, { variables });\nexport const useEventSessionsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<EventSessionsResponse, { eventId?: string; limit?: number; offset?: number }>(EVENT_SESSIONS_QUERY, {\n variables,\n });\nexport const useSpeakersQuery = (variables: { limit?: number; offset?: number }) =>\n useQuery<SpeakersResponse, { limit?: number; offset?: number }>(SPEAKERS_QUERY, { variables });\nexport const useTicketTypesQuery = (variables: {\n eventId?: string;\n search?: string;\n limit?: number;\n offset?: number;\n}) =>\n useQuery<TicketTypesResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n TICKET_TYPES_QUERY,\n {\n variables,\n }\n );\nexport const usePromoCodesQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<PromoCodesResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n PROMO_CODES_QUERY,\n {\n variables,\n }\n );\nexport const useExhibitorsQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<ExhibitorsResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n EXHIBITORS_QUERY,\n {\n variables,\n }\n );\nexport const useLeadsQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<LeadsResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(LEADS_QUERY, {\n variables,\n });\nexport const useCheckInStationsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CheckInStationsResponse, { eventId?: string; limit?: number; offset?: number }>(CHECKIN_STATIONS_QUERY, {\n variables,\n });\nexport const useCheckInRecordsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CheckInRecordsResponse, { eventId?: string; limit?: number; offset?: number }>(CHECKIN_RECORDS_QUERY, {\n variables,\n });\n\nexport type CheckInThroughputPointGql = { hour: string; count: number };\ntype CheckInThroughputResponse = { checkInThroughput: CheckInThroughputPointGql[] };\nexport const useCheckInThroughputQuery = (variables: { eventId?: string; date?: string }) =>\n useQuery<CheckInThroughputResponse, { eventId: string; date?: string }>(CHECK_IN_THROUGHPUT_QUERY, {\n variables: { eventId: variables.eventId ?? '', date: variables.date },\n skip: !variables.eventId,\n });\n\nexport type SessionConflictGql = {\n type: string;\n sessionAId: string;\n sessionATitle: string;\n sessionBId: string;\n sessionBTitle: string;\n venueId?: string | null;\n speakerId?: string | null;\n message: string;\n};\ntype SessionConflictsResponse = { sessionConflicts: SessionConflictGql[] };\nexport const useSessionConflictsQuery = (variables: { eventId?: string }) =>\n useQuery<SessionConflictsResponse, { eventId: string }>(SESSION_CONFLICTS_QUERY, {\n variables: { eventId: variables.eventId ?? '' },\n skip: !variables.eventId,\n });\nexport const useNetworkingProfilesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<NetworkingProfilesResponse, { eventId?: string; limit?: number; offset?: number }>(\n NETWORKING_PROFILES_QUERY,\n {\n variables,\n }\n );\nexport const useNetworkingMatchesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<NetworkingMatchesResponse, { eventId?: string; limit?: number; offset?: number }>(NETWORKING_MATCHES_QUERY, {\n variables,\n });\nexport const useSuggestedConnectionsQuery = (variables: { eventId?: string; attendeeId?: string; limit?: number }) =>\n useQuery<SuggestedConnectionsResponse, { eventId?: string; attendeeId?: string; limit?: number }>(\n SUGGESTED_CONNECTIONS_QUERY,\n { variables, skip: !variables.eventId || !variables.attendeeId }\n );\nexport const useMeetingsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<MeetingsResponse, { eventId?: string; limit?: number; offset?: number }>(MEETINGS_QUERY, { variables });\nexport const useAnnouncementsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AnnouncementsResponse, { eventId?: string; limit?: number; offset?: number }>(ANNOUNCEMENTS_QUERY, {\n variables,\n });\nexport const useWorkflowTemplatesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<WorkflowTemplatesResponse, { eventId?: string; limit?: number; offset?: number }>(WORKFLOW_TEMPLATES_QUERY, {\n variables,\n });\nexport const useAutomationRulesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AutomationRulesResponse, { eventId?: string; limit?: number; offset?: number }>(AUTOMATION_RULES_QUERY, {\n variables,\n });\nexport const useCommunicationCampaignsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CommunicationCampaignsResponse, { eventId?: string; limit?: number; offset?: number }>(\n COMMUNICATION_CAMPAIGNS_QUERY,\n {\n variables,\n }\n );\nexport const useAnalyticsSnapshotsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AnalyticsSnapshotsResponse, { eventId?: string; limit?: number; offset?: number }>(\n ANALYTICS_SNAPSHOTS_QUERY,\n {\n variables,\n }\n );\n\nexport const useCreateVenueMutation = () =>\n useMutation<CreateVenueResponse, { input: Record<string, unknown> }>(CREATE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useUpdateVenueMutation = () =>\n useMutation<UpdateVenueResponse, { id: string; input: Record<string, unknown> }>(UPDATE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useCreateSponsorMutation = () =>\n useMutation<CreateSponsorResponse, { input: Record<string, unknown> }>(CREATE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\nexport const useUpdateSponsorMutation = () =>\n useMutation<UpdateSponsorResponse, { id: string; input: Record<string, unknown> }>(UPDATE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\nexport const useCreateFloorPlanMutation = () =>\n useMutation<CreateFloorPlanResponse, { input: Record<string, unknown> }>(CREATE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useUpdateFloorPlanMutation = () =>\n useMutation<UpdateFloorPlanResponse, { id: string; input: Record<string, unknown> }>(UPDATE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useDeleteFloorPlanMutation = () =>\n useMutation<DeleteFloorPlanResponse, IdVar>(DELETE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useCreateEventMutation = () =>\n useMutation<{ createEvent: EventGql }, { input: Record<string, unknown> }>(CREATE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateEventMutation = () =>\n useMutation<{ updateEvent: EventGql }, { id: string; input: Record<string, unknown> }>(UPDATE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpsertAnnouncementMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_ANNOUNCEMENT_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANNOUNCEMENTS_QUERY }],\n }\n );\nexport const useUpsertWorkflowTemplateMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_WORKFLOW_TEMPLATE_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: WORKFLOW_TEMPLATES_QUERY }],\n }\n );\nexport const useUpsertAutomationRuleMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_AUTOMATION_RULE_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: AUTOMATION_RULES_QUERY }],\n }\n );\nexport const useUpsertCommunicationCampaignMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_COMMUNICATION_CAMPAIGN_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: COMMUNICATION_CAMPAIGNS_QUERY }],\n }\n );\nexport const useUpsertAnalyticsSnapshotMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_ANALYTICS_SNAPSHOT_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANALYTICS_SNAPSHOTS_QUERY }],\n }\n );\n\n// ---------------------------------------------------------------------------\n// Single-entity fetch queries (edit-form hydration).\n//\n// The supergraph only exposes single-entity reads for Event, Sponsor and Venue\n// (`eventfullyManagedEvent` / `eventfullyManagedSponsor` / `eventfullyManagedVenue`).\n// Edit forms for every OTHER entity derive their initial state from the matching\n// LIST query (see SponsorFormPage for the `.items.find(id)` pattern) because the\n// backend has no by-id resolver for them.\n// ---------------------------------------------------------------------------\n\nexport const EVENT_QUERY = gql`\n query EventfullymanagedEvent($id: ID!) {\n event: eventfullyManagedEvent(id: $id) {\n id\n workspaceId\n name\n description\n type\n status\n timezone\n startAt\n endAt\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const SPONSOR_QUERY = gql`\n query EventfullymanagedSponsor($id: ID!) {\n sponsor: eventfullyManagedSponsor(id: $id) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Entity tags (inline tagInfo, NOT the federated `tag {}` field).\n// ---------------------------------------------------------------------------\n\nexport const ENTITY_TAGS_QUERY = gql`\n query EventfullymanagedEntityTags($input: EventfullyManagedGetEntityTagsInput!) {\n eventfullyManagedEntityTags(input: $input) {\n id\n tagId\n entityId\n entityType\n source\n tagInfo {\n id\n key\n label\n color\n }\n }\n }\n`;\n\nexport const AVAILABLE_TAGS_QUERY = gql`\n query EventfullymanagedAvailableTags($limit: Int) {\n availableEventfullyManagedTags(limit: $limit) {\n id\n key\n label\n color\n }\n }\n`;\n\nexport const TAG_ENTITY_MUTATION = gql`\n mutation EventfullymanagedTagEntity($input: EventfullyManagedTagEntityInput!) {\n tagEventfullyManagedEntity(input: $input) {\n id\n tagId\n entityId\n entityType\n source\n tagInfo {\n id\n key\n label\n color\n }\n }\n }\n`;\n\nexport const UNTAG_ENTITY_MUTATION = gql`\n mutation EventfullymanagedUntagEntity($input: EventfullyManagedUntagEntityInput!) {\n untagEventfullyManagedEntity(input: $input)\n }\n`;\n\nexport const CREATE_ENTITY_TAG_MUTATION = gql`\n mutation EventfullymanagedCreateEntityTag($input: EventfullyManagedCreateEntityTagInput!) {\n createEventfullyManagedEntityTag(input: $input) {\n id\n key\n label\n color\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// EventSession — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst EVENT_SESSION_FIELDS = `\n id\n workspaceId\n eventId\n venueId\n title\n description\n sessionType\n track\n startsAt\n endsAt\n capacity\n status\n metadata\n`;\n\nexport const CREATE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedCreateEventSession($input: EventfullyManagedEventSessionInput!) {\n createEventSession: eventfullyManagedCreateEventSession(input: $input) {\n ${EVENT_SESSION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedUpdateEventSession($id: ID!, $input: EventfullyManagedEventSessionInput!) {\n updateEventSession: eventfullyManagedUpdateEventSession(id: $id, input: $input) {\n ${EVENT_SESSION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedDeleteEventSession($id: ID!) {\n deleteEventSession: eventfullyManagedDeleteEventSession(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Speaker — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst SPEAKER_FIELDS = `\n id\n workspaceId\n fullName\n title\n organization\n email\n phone\n bio\n avatarUrl\n socialLinks\n`;\n\nexport const CREATE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedCreateSpeaker($input: EventfullyManagedSpeakerInput!) {\n createSpeaker: eventfullyManagedCreateSpeaker(input: $input) {\n ${SPEAKER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedUpdateSpeaker($id: ID!, $input: EventfullyManagedSpeakerInput!) {\n updateSpeaker: eventfullyManagedUpdateSpeaker(id: $id, input: $input) {\n ${SPEAKER_FIELDS}\n }\n }\n`;\n\nexport const DELETE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedDeleteSpeaker($id: ID!) {\n deleteSpeaker: eventfullyManagedDeleteSpeaker(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// TicketType — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst TICKET_TYPE_FIELDS = `\n id\n workspaceId\n eventId\n name\n description\n price\n currency\n capacity\n soldCount\n salesStartAt\n salesEndAt\n isActive\n metadata\n`;\n\nexport const CREATE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedCreateTicketType($input: EventfullyManagedTicketTypeInput!) {\n createTicketType: eventfullyManagedCreateTicketType(input: $input) {\n ${TICKET_TYPE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedUpdateTicketType($id: ID!, $input: EventfullyManagedTicketTypeInput!) {\n updateTicketType: eventfullyManagedUpdateTicketType(id: $id, input: $input) {\n ${TICKET_TYPE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedDeleteTicketType($id: ID!) {\n deleteTicketType: eventfullyManagedDeleteTicketType(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// PromoCode — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst PROMO_CODE_FIELDS = `\n id\n workspaceId\n eventId\n code\n description\n discountType\n discountValue\n maxUses\n usedCount\n startsAt\n endsAt\n isActive\n metadata\n`;\n\nexport const CREATE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedCreatePromoCode($input: EventfullyManagedPromoCodeInput!) {\n createPromoCode: eventfullyManagedCreatePromoCode(input: $input) {\n ${PROMO_CODE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedUpdatePromoCode($id: ID!, $input: EventfullyManagedPromoCodeInput!) {\n updatePromoCode: eventfullyManagedUpdatePromoCode(id: $id, input: $input) {\n ${PROMO_CODE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedDeletePromoCode($id: ID!) {\n deletePromoCode: eventfullyManagedDeletePromoCode(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Registration — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst REGISTRATION_FIELDS = `\n id\n workspaceId\n eventId\n attendeeId\n ticketTypeId\n status\n quantity\n totalAmount\n promoCodeId\n currency\n registeredAt\n checkedInAt\n metadata\n`;\n\nexport const CREATE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedCreateRegistration($input: EventfullyManagedRegistrationInput!) {\n createRegistration: eventfullyManagedCreateRegistration(input: $input) {\n ${REGISTRATION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedUpdateRegistration($id: ID!, $input: EventfullyManagedRegistrationInput!) {\n updateRegistration: eventfullyManagedUpdateRegistration(id: $id, input: $input) {\n ${REGISTRATION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedDeleteRegistration($id: ID!) {\n deleteRegistration: eventfullyManagedDeleteRegistration(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Attendee — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst ATTENDEE_FIELDS = `\n id\n workspaceId\n eventId\n fullName\n email\n phone\n company\n role\n profile\n metadata\n`;\n\nexport const CREATE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedCreateAttendee($input: EventfullyManagedAttendeeInput!) {\n createAttendee: eventfullyManagedCreateAttendee(input: $input) {\n ${ATTENDEE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedUpdateAttendee($id: ID!, $input: EventfullyManagedAttendeeInput!) {\n updateAttendee: eventfullyManagedUpdateAttendee(id: $id, input: $input) {\n ${ATTENDEE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedDeleteAttendee($id: ID!) {\n deleteAttendee: eventfullyManagedDeleteAttendee(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Exhibitor — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst EXHIBITOR_FIELDS = `\n id\n workspaceId\n eventId\n name\n boothCode\n category\n contactName\n contactEmail\n status\n metadata\n`;\n\nexport const CREATE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedCreateExhibitor($input: EventfullyManagedExhibitorInput!) {\n createExhibitor: eventfullyManagedCreateExhibitor(input: $input) {\n ${EXHIBITOR_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedUpdateExhibitor($id: ID!, $input: EventfullyManagedExhibitorInput!) {\n updateExhibitor: eventfullyManagedUpdateExhibitor(id: $id, input: $input) {\n ${EXHIBITOR_FIELDS}\n }\n }\n`;\n\nexport const DELETE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedDeleteExhibitor($id: ID!) {\n deleteExhibitor: eventfullyManagedDeleteExhibitor(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Lead — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst LEAD_FIELDS = `\n id\n workspaceId\n eventId\n sponsorId\n exhibitorId\n attendeeName\n attendeeEmail\n score\n status\n notes\n capturedAt\n metadata\n`;\n\nexport const CREATE_LEAD_MUTATION = gql`\n mutation EventfullymanagedCreateLead($input: EventfullyManagedLeadInput!) {\n createLead: eventfullyManagedCreateLead(input: $input) {\n ${LEAD_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_LEAD_MUTATION = gql`\n mutation EventfullymanagedUpdateLead($id: ID!, $input: EventfullyManagedLeadInput!) {\n updateLead: eventfullyManagedUpdateLead(id: $id, input: $input) {\n ${LEAD_FIELDS}\n }\n }\n`;\n\nexport const DELETE_LEAD_MUTATION = gql`\n mutation EventfullymanagedDeleteLead($id: ID!) {\n deleteLead: eventfullyManagedDeleteLead(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// CheckInStation — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst CHECKIN_STATION_FIELDS = `\n id\n workspaceId\n eventId\n name\n code\n location\n isActive\n kioskConfig\n metadata\n`;\n\nexport const CREATE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedCreateCheckInStation($input: EventfullyManagedCheckInStationInput!) {\n createCheckInStation: eventfullyManagedCreateCheckInStation(input: $input) {\n ${CHECKIN_STATION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedUpdateCheckInStation($id: ID!, $input: EventfullyManagedCheckInStationInput!) {\n updateCheckInStation: eventfullyManagedUpdateCheckInStation(id: $id, input: $input) {\n ${CHECKIN_STATION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedDeleteCheckInStation($id: ID!) {\n deleteCheckInStation: eventfullyManagedDeleteCheckInStation(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// CheckInRecord — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst CHECKIN_RECORD_FIELDS = `\n id\n workspaceId\n eventId\n stationId\n attendeeId\n registrationId\n method\n status\n direction\n recordedAt\n clientScanId\n metadata\n`;\n\nexport const CREATE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedCreateCheckInRecord($input: EventfullyManagedCheckInRecordInput!) {\n createCheckInRecord: eventfullyManagedCreateCheckInRecord(input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedUpdateCheckInRecord($id: ID!, $input: EventfullyManagedCheckInRecordInput!) {\n updateCheckInRecord: eventfullyManagedUpdateCheckInRecord(id: $id, input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\nexport const DELETE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedDeleteCheckInRecord($id: ID!) {\n deleteCheckInRecord: eventfullyManagedDeleteCheckInRecord(id: $id)\n }\n`;\n\n// BOFF-4330 — kiosk QR scan path (signed token, offline-queue idempotent).\nexport const SCAN_CHECK_IN_MUTATION = gql`\n mutation EventfullymanagedScanCheckIn($input: EventfullyManagedScanCheckInInput!) {\n scanCheckIn: eventfullyManagedScanCheckIn(input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\n// BOFF-4330 — a registration's signed QR check-in token + rendered PNG.\nexport const CHECK_IN_TOKEN_QUERY = gql`\n query EventfullymanagedCheckInToken($registrationId: ID!) {\n checkInToken: eventfullyManagedCheckInToken(registrationId: $registrationId) {\n registrationId\n token\n qrDataUrl\n }\n }\n`;\n\n// BOFF-4322 — on-demand badge PDF (base64-encoded `application/pdf` bytes).\n// Fetched via a one-off `apollo.query()` call (see `downloadBase64Pdf` /\n// `useApolloClient` usage in RegistrationPage), same pattern as\n// wspace-timecampus-svc's invoice PDF download — no generated lazy-query hook\n// needed for a rarely-used, heavy payload.\nexport const BADGE_PDF_QUERY = gql`\n query EventfullymanagedBadgePdf($registrationId: ID!) {\n badgePdf: eventfullyManagedBadgePdf(registrationId: $registrationId)\n }\n`;\n\n/** Downloads a base64-encoded PDF payload as a file in the browser. */\nexport function downloadBase64Pdf(base64: string, filename: string): void {\n const bytes = atob(base64);\n const buffer = new Uint8Array(bytes.length);\n for (let i = 0; i < bytes.length; i += 1) buffer[i] = bytes.charCodeAt(i);\n const blob = new Blob([buffer], { type: 'application/pdf' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n link.remove();\n URL.revokeObjectURL(url);\n}\n\n// ---------------------------------------------------------------------------\n// Virtual sessions — bounded browser-native WebRTC core (BOFF-4318).\n// ---------------------------------------------------------------------------\n\nexport type VirtualParticipantGql = {\n id: string;\n workspaceId: string;\n sessionId: string;\n actorId: string;\n role: 'HOST' | 'PRESENTER' | 'ATTENDEE';\n muted: boolean;\n videoEnabled: boolean;\n joinedAt: string;\n leftAt?: string | null;\n};\n\nexport type VirtualSessionGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n eventSessionId?: string | null;\n mode: 'MEETING' | 'WEBINAR';\n status: 'ACTIVE' | 'ENDED';\n hostId: string;\n startedAt: string;\n endedAt?: string | null;\n participantCount: number;\n maxParticipants: number;\n participants: VirtualParticipantGql[];\n createdAt: string;\n updatedAt: string;\n};\n\nconst VIRTUAL_PARTICIPANT_FIELDS = `\n id\n workspaceId\n sessionId\n actorId\n role\n muted\n videoEnabled\n joinedAt\n leftAt\n`;\n\nconst VIRTUAL_SESSION_FIELDS = `\n id\n workspaceId\n eventId\n eventSessionId\n mode\n status\n hostId\n startedAt\n endedAt\n participantCount\n maxParticipants\n participants {\n ${VIRTUAL_PARTICIPANT_FIELDS}\n }\n createdAt\n updatedAt\n`;\n\nexport const VIRTUAL_SESSION_QUERY = gql`\n query EventfullymanagedVirtualSession($eventId: ID!, $eventSessionId: ID) {\n virtualSession: eventfullyManagedVirtualSession(eventId: $eventId, eventSessionId: $eventSessionId) {\n ${VIRTUAL_SESSION_FIELDS}\n }\n }\n`;\n\nexport const VIRTUAL_SESSIONS_QUERY = gql`\n query EventfullymanagedVirtualSessions($eventId: ID!, $limit: Int, $offset: Int) {\n virtualSessions: eventfullyManagedVirtualSessions(eventId: $eventId, limit: $limit, offset: $offset) {\n ${VIRTUAL_SESSION_FIELDS}\n }\n }\n`;\n\nexport const HOST_VIRTUAL_SESSION_MUTATION = gql`\n mutation EventfullymanagedHostVirtualSession($eventId: ID!, $eventSessionId: ID, $mode: EventfullyManagedVirtualSessionMode!) {\n hostVirtualSession: eventfullyManagedHostVirtualSession(eventId: $eventId, eventSessionId: $eventSessionId, mode: $mode) {\n ${VIRTUAL_SESSION_FIELDS}\n }\n }\n`;\n\nexport const JOIN_VIRTUAL_SESSION_MUTATION = gql`\n mutation EventfullymanagedJoinVirtualSession($eventId: ID!, $eventSessionId: ID) {\n joinVirtualSession: eventfullyManagedJoinVirtualSession(eventId: $eventId, eventSessionId: $eventSessionId) {\n ${VIRTUAL_SESSION_FIELDS}\n }\n }\n`;\n\nexport const LEAVE_VIRTUAL_SESSION_MUTATION = gql`\n mutation EventfullymanagedLeaveVirtualSession($sessionId: ID!) {\n leaveVirtualSession: eventfullyManagedLeaveVirtualSession(sessionId: $sessionId)\n }\n`;\n\nexport const END_VIRTUAL_SESSION_MUTATION = gql`\n mutation EventfullymanagedEndVirtualSession($sessionId: ID!) {\n endVirtualSession: eventfullyManagedEndVirtualSession(sessionId: $sessionId) {\n ${VIRTUAL_SESSION_FIELDS}\n }\n }\n`;\n\nexport const SET_VIRTUAL_MUTE_MUTATION = gql`\n mutation EventfullymanagedSetVirtualMute($sessionId: ID!, $muted: Boolean!) {\n setVirtualMute: eventfullyManagedSetVirtualMute(sessionId: $sessionId, muted: $muted) {\n ${VIRTUAL_PARTICIPANT_FIELDS}\n }\n }\n`;\n\nexport const SET_VIRTUAL_VIDEO_MUTATION = gql`\n mutation EventfullymanagedSetVirtualVideo($sessionId: ID!, $videoEnabled: Boolean!) {\n setVirtualVideo: eventfullyManagedSetVirtualVideo(sessionId: $sessionId, videoEnabled: $videoEnabled) {\n ${VIRTUAL_PARTICIPANT_FIELDS}\n }\n }\n`;\n\nexport const PROMOTE_VIRTUAL_PRESENTER_MUTATION = gql`\n mutation EventfullymanagedPromoteVirtualPresenter($sessionId: ID!, $actorId: ID!) {\n promoteVirtualPresenter: eventfullyManagedPromoteVirtualPresenter(sessionId: $sessionId, actorId: $actorId) {\n ${VIRTUAL_PARTICIPANT_FIELDS}\n }\n }\n`;\n\nexport const SEND_VIRTUAL_SIGNAL_MUTATION = gql`\n mutation EventfullymanagedSendVirtualSignal(\n $sessionId: ID!\n $toActorId: ID!\n $signalType: EventfullyManagedVirtualSignalType!\n $payload: JSON!\n ) {\n sendVirtualSignal: eventfullyManagedSendVirtualSignal(\n sessionId: $sessionId\n toActorId: $toActorId\n signalType: $signalType\n payload: $payload\n )\n }\n`;\n\n// Raw SDL strings (not `gql`-tagged) — consumed by `useEvmSubscription`'s\n// graphql-ws client, which takes a plain document string, not an Apollo\n// DocumentNode.\nexport const VIRTUAL_SIGNAL_SUBSCRIPTION_SDL = `\n subscription EventfullymanagedVirtualSignal($sessionId: ID!) {\n eventfullyManagedVirtualSignal(sessionId: $sessionId) {\n sessionId\n fromActorId\n toActorId\n signalType\n payload\n }\n }\n`;\n\nexport const VIRTUAL_PARTICIPANTS_CHANGED_SUBSCRIPTION_SDL = `\n subscription EventfullymanagedVirtualParticipantsChanged($sessionId: ID!) {\n eventfullyManagedVirtualParticipantsChanged(sessionId: $sessionId) {\n ${VIRTUAL_SESSION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Integration connectors — bounded CRM/marketing-automation catalog (BOFF-4324).\n// ---------------------------------------------------------------------------\n\nexport type IntegrationConnectorGql = {\n id: string;\n workspaceId: string;\n provider: 'HUBSPOT';\n name: string;\n status: 'PENDING' | 'CONNECTED' | 'ERROR' | 'DISCONNECTED';\n externalAccountId?: string | null;\n externalAccountName?: string | null;\n lastSyncedAt?: string | null;\n lastError?: string | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type IntegrationSyncRunGql = {\n id: string;\n workspaceId: string;\n connectorId: string;\n eventId?: string | null;\n status: 'RUNNING' | 'SUCCESS' | 'FAILED';\n recordsSynced: number;\n recordsFailed: number;\n errorMessage?: string | null;\n startedAt: string;\n completedAt?: string | null;\n};\n\nconst INTEGRATION_CONNECTOR_FIELDS = `\n id\n workspaceId\n provider\n name\n status\n externalAccountId\n externalAccountName\n lastSyncedAt\n lastError\n createdAt\n updatedAt\n`;\n\nconst INTEGRATION_SYNC_RUN_FIELDS = `\n id\n workspaceId\n connectorId\n eventId\n status\n recordsSynced\n recordsFailed\n errorMessage\n startedAt\n completedAt\n`;\n\nexport const INTEGRATION_CONNECTORS_QUERY = gql`\n query EventfullymanagedIntegrationConnectors($limit: Int, $offset: Int) {\n integrationConnectors: eventfullyManagedIntegrationConnectors(limit: $limit, offset: $offset) {\n ${INTEGRATION_CONNECTOR_FIELDS}\n }\n }\n`;\n\nexport const INTEGRATION_SYNC_RUNS_QUERY = gql`\n query EventfullymanagedIntegrationSyncRuns($connectorId: ID!, $limit: Int, $offset: Int) {\n integrationSyncRuns: eventfullyManagedIntegrationSyncRuns(connectorId: $connectorId, limit: $limit, offset: $offset) {\n ${INTEGRATION_SYNC_RUN_FIELDS}\n }\n }\n`;\n\nexport const CREATE_INTEGRATION_CONNECTOR_MUTATION = gql`\n mutation EventfullymanagedCreateIntegrationConnector($input: EventfullyManagedCreateIntegrationConnectorInput!) {\n createIntegrationConnector: eventfullyManagedCreateIntegrationConnector(input: $input) {\n ${INTEGRATION_CONNECTOR_FIELDS}\n }\n }\n`;\n\nexport const DELETE_INTEGRATION_CONNECTOR_MUTATION = gql`\n mutation EventfullymanagedDeleteIntegrationConnector($id: ID!) {\n deleteIntegrationConnector: eventfullyManagedDeleteIntegrationConnector(id: $id)\n }\n`;\n\nexport const SYNC_ATTENDEES_TO_CONNECTOR_MUTATION = gql`\n mutation EventfullymanagedSyncAttendeesToConnector($connectorId: ID!, $eventId: ID!) {\n syncAttendeesToConnector: eventfullyManagedSyncAttendeesToConnector(connectorId: $connectorId, eventId: $eventId) {\n ${INTEGRATION_SYNC_RUN_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// NetworkingProfile — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst NETWORKING_PROFILE_FIELDS = `\n id\n workspaceId\n eventId\n attendeeId\n interests\n lookingFor\n industry\n role\n visibility\n metadata\n`;\n\nexport const CREATE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedCreateNetworkingProfile($input: EventfullyManagedNetworkingProfileInput!) {\n createNetworkingProfile: eventfullyManagedCreateNetworkingProfile(input: $input) {\n ${NETWORKING_PROFILE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedUpdateNetworkingProfile($id: ID!, $input: EventfullyManagedNetworkingProfileInput!) {\n updateNetworkingProfile: eventfullyManagedUpdateNetworkingProfile(id: $id, input: $input) {\n ${NETWORKING_PROFILE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedDeleteNetworkingProfile($id: ID!) {\n deleteNetworkingProfile: eventfullyManagedDeleteNetworkingProfile(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// NetworkingMatch — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst NETWORKING_MATCH_FIELDS = `\n id\n workspaceId\n eventId\n sourceProfileId\n targetProfileId\n score\n reason\n status\n metadata\n`;\n\nexport const CREATE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedCreateNetworkingMatch($input: EventfullyManagedNetworkingMatchInput!) {\n createNetworkingMatch: eventfullyManagedCreateNetworkingMatch(input: $input) {\n ${NETWORKING_MATCH_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedUpdateNetworkingMatch($id: ID!, $input: EventfullyManagedNetworkingMatchInput!) {\n updateNetworkingMatch: eventfullyManagedUpdateNetworkingMatch(id: $id, input: $input) {\n ${NETWORKING_MATCH_FIELDS}\n }\n }\n`;\n\nexport const DELETE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedDeleteNetworkingMatch($id: ID!) {\n deleteNetworkingMatch: eventfullyManagedDeleteNetworkingMatch(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Meeting — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst MEETING_FIELDS = `\n id\n workspaceId\n eventId\n title\n startsAt\n endsAt\n location\n notes\n sourceProfileId\n targetProfileId\n status\n metadata\n`;\n\nexport const CREATE_MEETING_MUTATION = gql`\n mutation EventfullymanagedCreateMeeting($input: EventfullyManagedMeetingInput!) {\n createMeeting: eventfullyManagedCreateMeeting(input: $input) {\n ${MEETING_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_MEETING_MUTATION = gql`\n mutation EventfullymanagedUpdateMeeting($id: ID!, $input: EventfullyManagedMeetingInput!) {\n updateMeeting: eventfullyManagedUpdateMeeting(id: $id, input: $input) {\n ${MEETING_FIELDS}\n }\n }\n`;\n\nexport const DELETE_MEETING_MUTATION = gql`\n mutation EventfullymanagedDeleteMeeting($id: ID!) {\n deleteMeeting: eventfullyManagedDeleteMeeting(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Delete-only for existing create/update entities (Event, Venue, Sponsor).\n// ---------------------------------------------------------------------------\n\nexport const DELETE_EVENT_MUTATION = gql`\n mutation EventfullymanagedDeleteEvent($id: ID!) {\n deleteEvent: eventfullyManagedDeleteEvent(id: $id)\n }\n`;\n\nexport const DELETE_VENUE_MUTATION = gql`\n mutation EventfullymanagedDeleteVenue($id: ID!) {\n deleteVenue: eventfullyManagedDeleteVenue(id: $id)\n }\n`;\n\nexport const DELETE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedDeleteSponsor($id: ID!) {\n deleteSponsor: eventfullyManagedDeleteSponsor(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Communications — publish announcement / send campaign.\n// ---------------------------------------------------------------------------\n\nexport const PUBLISH_ANNOUNCEMENT_MUTATION = gql`\n mutation EventfullymanagedPublishAnnouncement($id: ID!) {\n publishAnnouncement: eventfullyManagedPublishAnnouncement(id: $id) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const SEND_COMMUNICATION_CAMPAIGN_MUTATION = gql`\n mutation EventfullymanagedSendCommunicationCampaign($id: ID!) {\n sendCommunicationCampaign: eventfullyManagedSendCommunicationCampaign(id: $id) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\n// ===========================================================================\n// Response type aliases\n// ===========================================================================\n\ntype EventDetailResponse = { event: EventDetailGql | null };\ntype SponsorDetailResponse = { sponsor: SponsorGql | null };\ntype EntityTagsResponse = { eventfullyManagedEntityTags: EntityTagAssignmentGql[] };\ntype AvailableTagsResponse = { availableEventfullyManagedTags: AvailableTagGql[] };\ntype TagEntityResponse = { tagEventfullyManagedEntity: EntityTagAssignmentGql };\ntype UntagEntityResponse = { untagEventfullyManagedEntity: boolean };\ntype CreateEntityTagResponse = { createEventfullyManagedEntityTag: AvailableTagGql };\n\ntype CreateEventSessionResponse = { createEventSession: EventSessionGql };\ntype UpdateEventSessionResponse = { updateEventSession: EventSessionGql };\ntype DeleteEventSessionResponse = { deleteEventSession: boolean };\ntype CreateSpeakerResponse = { createSpeaker: SpeakerGql };\ntype UpdateSpeakerResponse = { updateSpeaker: SpeakerGql };\ntype DeleteSpeakerResponse = { deleteSpeaker: boolean };\ntype CreateTicketTypeResponse = { createTicketType: TicketTypeGql };\ntype UpdateTicketTypeResponse = { updateTicketType: TicketTypeGql };\ntype DeleteTicketTypeResponse = { deleteTicketType: boolean };\ntype CreatePromoCodeResponse = { createPromoCode: PromoCodeGql };\ntype UpdatePromoCodeResponse = { updatePromoCode: PromoCodeGql };\ntype DeletePromoCodeResponse = { deletePromoCode: boolean };\ntype CreateRegistrationResponse = { createRegistration: RegistrationGql };\ntype UpdateRegistrationResponse = { updateRegistration: RegistrationGql };\ntype DeleteRegistrationResponse = { deleteRegistration: boolean };\ntype CreateAttendeeResponse = { createAttendee: AttendeeGql };\ntype UpdateAttendeeResponse = { updateAttendee: AttendeeGql };\ntype DeleteAttendeeResponse = { deleteAttendee: boolean };\ntype CreateExhibitorResponse = { createExhibitor: ExhibitorGql };\ntype UpdateExhibitorResponse = { updateExhibitor: ExhibitorGql };\ntype DeleteExhibitorResponse = { deleteExhibitor: boolean };\ntype CreateLeadResponse = { createLead: LeadGql };\ntype UpdateLeadResponse = { updateLead: LeadGql };\ntype DeleteLeadResponse = { deleteLead: boolean };\ntype CreateCheckInStationResponse = { createCheckInStation: CheckInStationGql };\ntype UpdateCheckInStationResponse = { updateCheckInStation: CheckInStationGql };\ntype DeleteCheckInStationResponse = { deleteCheckInStation: boolean };\ntype CreateCheckInRecordResponse = { createCheckInRecord: CheckInRecordGql };\ntype UpdateCheckInRecordResponse = { updateCheckInRecord: CheckInRecordGql };\ntype DeleteCheckInRecordResponse = { deleteCheckInRecord: boolean };\n// BOFF-4330\ntype ScanCheckInResponse = { scanCheckIn: CheckInRecordGql };\ntype ScanCheckInVars = { input: Record<string, unknown> };\ntype CreateNetworkingProfileResponse = { createNetworkingProfile: NetworkingProfileGql };\ntype UpdateNetworkingProfileResponse = { updateNetworkingProfile: NetworkingProfileGql };\ntype DeleteNetworkingProfileResponse = { deleteNetworkingProfile: boolean };\ntype CreateNetworkingMatchResponse = { createNetworkingMatch: NetworkingMatchGql };\ntype UpdateNetworkingMatchResponse = { updateNetworkingMatch: NetworkingMatchGql };\ntype DeleteNetworkingMatchResponse = { deleteNetworkingMatch: boolean };\ntype CreateMeetingResponse = { createMeeting: MeetingGql };\ntype UpdateMeetingResponse = { updateMeeting: MeetingGql };\ntype DeleteMeetingResponse = { deleteMeeting: boolean };\ntype DeleteEventResponse = { deleteEvent: boolean };\ntype DeleteVenueResponse = { deleteVenue: boolean };\ntype DeleteSponsorResponse = { deleteSponsor: boolean };\ntype PublishAnnouncementResponse = { publishAnnouncement: SimpleEntityGql };\ntype SendCommunicationCampaignResponse = { sendCommunicationCampaign: SimpleEntityGql };\n\n// BOFF-4318 — virtual session responses.\ntype VirtualSessionResponse = { virtualSession: VirtualSessionGql | null };\ntype VirtualSessionsResponse = { virtualSessions: VirtualSessionGql[] };\ntype HostVirtualSessionResponse = { hostVirtualSession: VirtualSessionGql };\ntype JoinVirtualSessionResponse = { joinVirtualSession: VirtualSessionGql };\ntype LeaveVirtualSessionResponse = { leaveVirtualSession: boolean };\ntype EndVirtualSessionResponse = { endVirtualSession: VirtualSessionGql };\ntype SetVirtualMuteResponse = { setVirtualMute: VirtualParticipantGql };\ntype SetVirtualVideoResponse = { setVirtualVideo: VirtualParticipantGql };\ntype PromoteVirtualPresenterResponse = { promoteVirtualPresenter: VirtualParticipantGql };\ntype SendVirtualSignalResponse = { sendVirtualSignal: boolean };\n\n// BOFF-4324 — integration connector responses.\ntype IntegrationConnectorsResponse = { integrationConnectors: IntegrationConnectorGql[] };\ntype IntegrationSyncRunsResponse = { integrationSyncRuns: IntegrationSyncRunGql[] };\ntype CreateIntegrationConnectorResponse = { createIntegrationConnector: IntegrationConnectorGql };\ntype DeleteIntegrationConnectorResponse = { deleteIntegrationConnector: boolean };\ntype SyncAttendeesToConnectorResponse = { syncAttendeesToConnector: IntegrationSyncRunGql };\n\ntype CreateVars = { input: Record<string, unknown> };\ntype UpdateVars = { id: string; input: Record<string, unknown> };\ntype IdVar = { id: string };\n\n// ===========================================================================\n// Single-entity + tag query hooks\n// ===========================================================================\n\nexport const useEventQuery = (id: string) =>\n useQuery<EventDetailResponse, IdVar>(EVENT_QUERY, { variables: { id }, skip: !id });\nexport const useSponsorQuery = (id: string) =>\n useQuery<SponsorDetailResponse, IdVar>(SPONSOR_QUERY, { variables: { id }, skip: !id });\n\n// BOFF-4330 — a registration's signed QR check-in token + rendered PNG.\nexport type CheckInTokenGql = { registrationId: string; token: string; qrDataUrl: string };\ntype CheckInTokenResponse = { checkInToken: CheckInTokenGql };\nexport const useCheckInTokenQuery = (registrationId: string) =>\n useQuery<CheckInTokenResponse, { registrationId: string }>(CHECK_IN_TOKEN_QUERY, {\n variables: { registrationId },\n skip: !registrationId,\n });\n\nexport const useEntityTagsQuery = (variables: { input: { entityType: string; entityId: string } }) =>\n useQuery<EntityTagsResponse, { input: { entityType: string; entityId: string } }>(ENTITY_TAGS_QUERY, {\n variables,\n skip: !variables.input.entityId,\n });\nexport const useAvailableTagsQuery = (variables: { limit?: number } = {}) =>\n useQuery<AvailableTagsResponse, { limit?: number }>(AVAILABLE_TAGS_QUERY, { variables });\n\n// ===========================================================================\n// Tag mutation hooks\n// ===========================================================================\n\nexport const useTagEntityMutation = () =>\n useMutation<TagEntityResponse, { input: Record<string, unknown> }>(TAG_ENTITY_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useUntagEntityMutation = () =>\n useMutation<UntagEntityResponse, { input: Record<string, unknown> }>(UNTAG_ENTITY_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useCreateEntityTagMutation = () =>\n useMutation<CreateEntityTagResponse, { input: Record<string, unknown> }>(CREATE_ENTITY_TAG_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: AVAILABLE_TAGS_QUERY }],\n });\n\n// ===========================================================================\n// CRUD mutation hooks\n// ===========================================================================\n\nexport const useCreateEventSessionMutation = () =>\n useMutation<CreateEventSessionResponse, CreateVars>(CREATE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\nexport const useUpdateEventSessionMutation = () =>\n useMutation<UpdateEventSessionResponse, UpdateVars>(UPDATE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\nexport const useDeleteEventSessionMutation = () =>\n useMutation<DeleteEventSessionResponse, IdVar>(DELETE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\n\nexport const useCreateSpeakerMutation = () =>\n useMutation<CreateSpeakerResponse, CreateVars>(CREATE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\nexport const useUpdateSpeakerMutation = () =>\n useMutation<UpdateSpeakerResponse, UpdateVars>(UPDATE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\nexport const useDeleteSpeakerMutation = () =>\n useMutation<DeleteSpeakerResponse, IdVar>(DELETE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\n\nexport const useCreateTicketTypeMutation = () =>\n useMutation<CreateTicketTypeResponse, CreateVars>(CREATE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\nexport const useUpdateTicketTypeMutation = () =>\n useMutation<UpdateTicketTypeResponse, UpdateVars>(UPDATE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\nexport const useDeleteTicketTypeMutation = () =>\n useMutation<DeleteTicketTypeResponse, IdVar>(DELETE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\n\nexport const useCreatePromoCodeMutation = () =>\n useMutation<CreatePromoCodeResponse, CreateVars>(CREATE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\nexport const useUpdatePromoCodeMutation = () =>\n useMutation<UpdatePromoCodeResponse, UpdateVars>(UPDATE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\nexport const useDeletePromoCodeMutation = () =>\n useMutation<DeletePromoCodeResponse, IdVar>(DELETE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\n\nexport const useCreateRegistrationMutation = () =>\n useMutation<CreateRegistrationResponse, CreateVars>(CREATE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateRegistrationMutation = () =>\n useMutation<UpdateRegistrationResponse, UpdateVars>(UPDATE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }],\n });\nexport const useDeleteRegistrationMutation = () =>\n useMutation<DeleteRegistrationResponse, IdVar>(DELETE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\n\nexport const useCreateAttendeeMutation = () =>\n useMutation<CreateAttendeeResponse, CreateVars>(CREATE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateAttendeeMutation = () =>\n useMutation<UpdateAttendeeResponse, UpdateVars>(UPDATE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }],\n });\nexport const useDeleteAttendeeMutation = () =>\n useMutation<DeleteAttendeeResponse, IdVar>(DELETE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\n\nexport const useCreateExhibitorMutation = () =>\n useMutation<CreateExhibitorResponse, CreateVars>(CREATE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\nexport const useUpdateExhibitorMutation = () =>\n useMutation<UpdateExhibitorResponse, UpdateVars>(UPDATE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\nexport const useDeleteExhibitorMutation = () =>\n useMutation<DeleteExhibitorResponse, IdVar>(DELETE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\n\nexport const useCreateLeadMutation = () =>\n useMutation<CreateLeadResponse, CreateVars>(CREATE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\nexport const useUpdateLeadMutation = () =>\n useMutation<UpdateLeadResponse, UpdateVars>(UPDATE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\nexport const useDeleteLeadMutation = () =>\n useMutation<DeleteLeadResponse, IdVar>(DELETE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\n\nexport const useCreateCheckInStationMutation = () =>\n useMutation<CreateCheckInStationResponse, CreateVars>(CREATE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\nexport const useUpdateCheckInStationMutation = () =>\n useMutation<UpdateCheckInStationResponse, UpdateVars>(UPDATE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\nexport const useDeleteCheckInStationMutation = () =>\n useMutation<DeleteCheckInStationResponse, IdVar>(DELETE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\n\nexport const useCreateCheckInRecordMutation = () =>\n useMutation<CreateCheckInRecordResponse, CreateVars>(CREATE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\nexport const useUpdateCheckInRecordMutation = () =>\n useMutation<UpdateCheckInRecordResponse, UpdateVars>(UPDATE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\nexport const useDeleteCheckInRecordMutation = () =>\n useMutation<DeleteCheckInRecordResponse, IdVar>(DELETE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\n\n// BOFF-4330 — kiosk QR scan path. Deliberately has NO `onError` toast: callers\n// (interactive submit AND the background offline-queue sync loop) decide for\n// themselves how to react to a failure — a background sync retry failing\n// because the device is still offline should never pop an error toast.\nexport const useScanCheckInMutation = () =>\n useMutation<ScanCheckInResponse, ScanCheckInVars>(SCAN_CHECK_IN_MUTATION, {\n errorPolicy: 'all',\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\n\nexport const useCreateNetworkingProfileMutation = () =>\n useMutation<CreateNetworkingProfileResponse, CreateVars>(CREATE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\nexport const useUpdateNetworkingProfileMutation = () =>\n useMutation<UpdateNetworkingProfileResponse, UpdateVars>(UPDATE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\nexport const useDeleteNetworkingProfileMutation = () =>\n useMutation<DeleteNetworkingProfileResponse, IdVar>(DELETE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\n\nexport const useGenerateNetworkingMatchesMutation = () =>\n useMutation<GenerateNetworkingMatchesResponse, { eventId: string }>(GENERATE_NETWORKING_MATCHES_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\nexport const useCreateNetworkingMatchMutation = () =>\n useMutation<CreateNetworkingMatchResponse, CreateVars>(CREATE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\nexport const useUpdateNetworkingMatchMutation = () =>\n useMutation<UpdateNetworkingMatchResponse, UpdateVars>(UPDATE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\nexport const useDeleteNetworkingMatchMutation = () =>\n useMutation<DeleteNetworkingMatchResponse, IdVar>(DELETE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\n\nexport const useCreateMeetingMutation = () =>\n useMutation<CreateMeetingResponse, CreateVars>(CREATE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\nexport const useUpdateMeetingMutation = () =>\n useMutation<UpdateMeetingResponse, UpdateVars>(UPDATE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\nexport const useDeleteMeetingMutation = () =>\n useMutation<DeleteMeetingResponse, IdVar>(DELETE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\n\nexport const useDeleteEventMutation = () =>\n useMutation<DeleteEventResponse, IdVar>(DELETE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useDeleteVenueMutation = () =>\n useMutation<DeleteVenueResponse, IdVar>(DELETE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useDeleteSponsorMutation = () =>\n useMutation<DeleteSponsorResponse, IdVar>(DELETE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\n\nexport const usePublishAnnouncementMutation = () =>\n useMutation<PublishAnnouncementResponse, IdVar>(PUBLISH_ANNOUNCEMENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANNOUNCEMENTS_QUERY }],\n });\nexport const useSendCommunicationCampaignMutation = () =>\n useMutation<SendCommunicationCampaignResponse, IdVar>(SEND_COMMUNICATION_CAMPAIGN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: COMMUNICATION_CAMPAIGNS_QUERY }],\n });\n\n// ===========================================================================\n// Virtual session hooks (BOFF-4318)\n// ===========================================================================\n\nexport const useVirtualSessionQuery = (variables: { eventId?: string; eventSessionId?: string | null }) =>\n useQuery<VirtualSessionResponse, { eventId?: string; eventSessionId?: string | null }>(VIRTUAL_SESSION_QUERY, {\n variables,\n skip: !variables.eventId,\n });\nexport const useVirtualSessionsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<VirtualSessionsResponse, { eventId?: string; limit?: number; offset?: number }>(VIRTUAL_SESSIONS_QUERY, {\n variables,\n skip: !variables.eventId,\n });\n\nexport const useHostVirtualSessionMutation = () =>\n useMutation<\n HostVirtualSessionResponse,\n { eventId: string; eventSessionId?: string | null; mode: 'MEETING' | 'WEBINAR' }\n >(HOST_VIRTUAL_SESSION_MUTATION, { errorPolicy: 'all', onError: onMutationError });\nexport const useJoinVirtualSessionMutation = () =>\n useMutation<JoinVirtualSessionResponse, { eventId: string; eventSessionId?: string | null }>(\n JOIN_VIRTUAL_SESSION_MUTATION,\n { errorPolicy: 'all', onError: onMutationError }\n );\nexport const useLeaveVirtualSessionMutation = () =>\n useMutation<LeaveVirtualSessionResponse, { sessionId: string }>(LEAVE_VIRTUAL_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useEndVirtualSessionMutation = () =>\n useMutation<EndVirtualSessionResponse, { sessionId: string }>(END_VIRTUAL_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useSetVirtualMuteMutation = () =>\n useMutation<SetVirtualMuteResponse, { sessionId: string; muted: boolean }>(SET_VIRTUAL_MUTE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useSetVirtualVideoMutation = () =>\n useMutation<SetVirtualVideoResponse, { sessionId: string; videoEnabled: boolean }>(SET_VIRTUAL_VIDEO_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const usePromoteVirtualPresenterMutation = () =>\n useMutation<PromoteVirtualPresenterResponse, { sessionId: string; actorId: string }>(\n PROMOTE_VIRTUAL_PRESENTER_MUTATION,\n { errorPolicy: 'all', onError: onMutationError }\n );\n/**\n * Signal mutations fire many times per second during ICE negotiation — no\n * `onMutationError` toast spam; the calling hook decides how (or whether) to\n * surface a transport failure to the user.\n */\nexport const useSendVirtualSignalMutation = () =>\n useMutation<\n SendVirtualSignalResponse,\n { sessionId: string; toActorId: string; signalType: 'OFFER' | 'ANSWER' | 'ICE_CANDIDATE'; payload: unknown }\n >(SEND_VIRTUAL_SIGNAL_MUTATION, { errorPolicy: 'all' });\n\n// ===========================================================================\n// Integration connector hooks (BOFF-4324)\n// ===========================================================================\n\nexport const useIntegrationConnectorsQuery = (variables: { limit?: number; offset?: number } = {}) =>\n useQuery<IntegrationConnectorsResponse, { limit?: number; offset?: number }>(INTEGRATION_CONNECTORS_QUERY, {\n variables,\n });\nexport const useIntegrationSyncRunsQuery = (variables: { connectorId?: string; limit?: number; offset?: number }) =>\n useQuery<IntegrationSyncRunsResponse, { connectorId?: string; limit?: number; offset?: number }>(\n INTEGRATION_SYNC_RUNS_QUERY,\n { variables, skip: !variables.connectorId }\n );\n\nexport const useCreateIntegrationConnectorMutation = () =>\n useMutation<CreateIntegrationConnectorResponse, CreateVars>(CREATE_INTEGRATION_CONNECTOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: INTEGRATION_CONNECTORS_QUERY }],\n });\nexport const useDeleteIntegrationConnectorMutation = () =>\n useMutation<DeleteIntegrationConnectorResponse, IdVar>(DELETE_INTEGRATION_CONNECTOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: INTEGRATION_CONNECTORS_QUERY }],\n });\nexport const useSyncAttendeesToConnectorMutation = () =>\n useMutation<SyncAttendeesToConnectorResponse, { connectorId: string; eventId: string }>(\n SYNC_ATTENDEES_TO_CONNECTOR_MUTATION,\n { errorPolicy: 'all', onError: onMutationError }\n );\n"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface UseEvmSubscriptionArgs<TData> {
|
|
2
|
+
/** GraphQL subscription document (string SDL). */
|
|
3
|
+
query: string;
|
|
4
|
+
/** Variables for the subscription. */
|
|
5
|
+
variables?: Record<string, unknown>;
|
|
6
|
+
/** Stable identifier for this subscription, used in error context. */
|
|
7
|
+
operationName: string;
|
|
8
|
+
/** Called for each payload received from the subscription. */
|
|
9
|
+
onData: (data: TData) => void;
|
|
10
|
+
/** Polling fallback invoked when subscription is unavailable / failed. */
|
|
11
|
+
pollFn: () => Promise<void> | void;
|
|
12
|
+
/** Polling interval in ms (default 5s — signaling/roster is latency-sensitive). */
|
|
13
|
+
pollIntervalMs?: number;
|
|
14
|
+
/** Whether to enable the hook at all. */
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function useEvmSubscription<TData = unknown>({ query, variables, operationName, onData, pollFn, pollIntervalMs, enabled, }: UseEvmSubscriptionArgs<TData>): void;
|
|
18
|
+
//# sourceMappingURL=useEvmSubscription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEvmSubscription.d.ts","sourceRoot":"","sources":["../../../src/eventfullymanaged/hooks/useEvmSubscription.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,sBAAsB,CAAC,KAAK;IAC3C,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,sEAAsE;IACtE,aAAa,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,0EAA0E;IAC1E,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAmBD,wBAAgB,kBAAkB,CAAC,KAAK,GAAG,OAAO,EAAE,EAClD,KAAK,EACL,SAAS,EACT,aAAa,EACb,MAAM,EACN,MAAM,EACN,cAAsB,EACtB,OAAc,GACf,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,IAAI,CAiHtC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { getGraphqlWsClient as e, reportShellError as t } from "../utils/shellBridge.js";
|
|
2
|
+
import { useEffect as n, useMemo as r, useRef as i } from "react";
|
|
3
|
+
//#region src/eventfullymanaged/hooks/useEvmSubscription.ts
|
|
4
|
+
function a(e) {
|
|
5
|
+
let t = (e instanceof Error ? e.message : typeof e == "string" ? e : e?.message ?? "").toLowerCase();
|
|
6
|
+
return t.includes("cannot query field") || t.includes("unknown field") || t.includes("subscription not supported") || t.includes("not implemented");
|
|
7
|
+
}
|
|
8
|
+
function o({ query: o, variables: s, operationName: c, onData: l, pollFn: u, pollIntervalMs: d = 5e3, enabled: f = !0 }) {
|
|
9
|
+
let p = i(l), m = i(u), h = i(s);
|
|
10
|
+
n(() => {
|
|
11
|
+
p.current = l, m.current = u, h.current = s;
|
|
12
|
+
}, [
|
|
13
|
+
l,
|
|
14
|
+
u,
|
|
15
|
+
s
|
|
16
|
+
]), n(() => {
|
|
17
|
+
if (!f) return;
|
|
18
|
+
let n = e(), r = null, i = null, s = !1, l = () => {
|
|
19
|
+
r ||= (Promise.resolve(m.current()).catch(() => {}), setInterval(() => {
|
|
20
|
+
s || Promise.resolve(m.current()).catch(() => {});
|
|
21
|
+
}, d));
|
|
22
|
+
};
|
|
23
|
+
if (!n) return l(), () => {
|
|
24
|
+
s = !0, r && clearInterval(r);
|
|
25
|
+
};
|
|
26
|
+
try {
|
|
27
|
+
i = n.subscribe({
|
|
28
|
+
query: o,
|
|
29
|
+
variables: h.current,
|
|
30
|
+
operationName: c
|
|
31
|
+
}, {
|
|
32
|
+
next: (e) => {
|
|
33
|
+
if (!s) {
|
|
34
|
+
if (e?.errors && e.errors.length > 0) {
|
|
35
|
+
if (e.errors.some(a)) {
|
|
36
|
+
if (i) {
|
|
37
|
+
try {
|
|
38
|
+
i();
|
|
39
|
+
} catch {}
|
|
40
|
+
i = null;
|
|
41
|
+
}
|
|
42
|
+
l();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
t(/* @__PURE__ */ Error(`Subscription ${c} returned errors`), {
|
|
46
|
+
module: "eventfullymanaged",
|
|
47
|
+
context: {
|
|
48
|
+
operationName: c,
|
|
49
|
+
errors: e.errors
|
|
50
|
+
}
|
|
51
|
+
}, `[eventfullymanaged] subscription ${c} errors`);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (e?.data) try {
|
|
55
|
+
p.current(e.data);
|
|
56
|
+
} catch (e) {
|
|
57
|
+
t(e, {
|
|
58
|
+
module: "eventfullymanaged",
|
|
59
|
+
context: {
|
|
60
|
+
operationName: c,
|
|
61
|
+
phase: "handler"
|
|
62
|
+
}
|
|
63
|
+
}, `[eventfullymanaged] subscription ${c} handler threw`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
error: (e) => {
|
|
68
|
+
if (a(e)) {
|
|
69
|
+
l();
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
t(e, {
|
|
73
|
+
module: "eventfullymanaged",
|
|
74
|
+
context: {
|
|
75
|
+
operationName: c,
|
|
76
|
+
phase: "transport"
|
|
77
|
+
}
|
|
78
|
+
}, `[eventfullymanaged] subscription ${c} transport error`), l();
|
|
79
|
+
},
|
|
80
|
+
complete: () => {
|
|
81
|
+
s || l();
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
} catch (e) {
|
|
85
|
+
t(e, {
|
|
86
|
+
module: "eventfullymanaged",
|
|
87
|
+
context: {
|
|
88
|
+
operationName: c,
|
|
89
|
+
phase: "subscribe"
|
|
90
|
+
}
|
|
91
|
+
}, `[eventfullymanaged] subscription ${c} subscribe threw`), l();
|
|
92
|
+
}
|
|
93
|
+
return () => {
|
|
94
|
+
if (s = !0, i) try {
|
|
95
|
+
i();
|
|
96
|
+
} catch {}
|
|
97
|
+
r && clearInterval(r);
|
|
98
|
+
};
|
|
99
|
+
}, [
|
|
100
|
+
f,
|
|
101
|
+
o,
|
|
102
|
+
c,
|
|
103
|
+
r(() => JSON.stringify(s ?? {}), [s]),
|
|
104
|
+
d
|
|
105
|
+
]);
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
export { o as useEvmSubscription };
|
|
109
|
+
|
|
110
|
+
//# sourceMappingURL=useEvmSubscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEvmSubscription.js","names":[],"sources":["../../../src/eventfullymanaged/hooks/useEvmSubscription.ts"],"sourcesContent":["/**\n * useEvmSubscription (BOFF-4318)\n *\n * Defensive subscription wrapper for the EventfullyManaged live surfaces\n * (`eventfullyManagedVirtualSignal`, `eventfullyManagedVirtualParticipantsChanged`).\n * Probes the shell-provided graphql-ws client\n * (`globalThis.__burdenoffShell.graphqlWsClient`); if present, opens a\n * subscription over the real WS transport and dispatches each payload to\n * `onData`. If absent — or if the subscription errors with a clear\n * \"unknown field\"/\"not implemented\" signal (the operation isn't on the\n * federated gateway yet, e.g. before this ticket's backend deploy has\n * reconciled) — falls back to a polling loop driven by the caller's\n * `pollFn` at `pollIntervalMs`, so the page never breaks, only degrades.\n *\n * Ported from `microfe-comradecircle/src/comradecircle/hooks/useComSubscription.ts`\n * (BOFF-4455's reference defensive-subscription pattern), generic type\n * unchanged.\n */\nimport { useEffect, useMemo, useRef } from 'react';\n\nimport { getGraphqlWsClient, reportShellError } from '../utils/shellBridge';\n\nexport interface UseEvmSubscriptionArgs<TData> {\n /** GraphQL subscription document (string SDL). */\n query: string;\n /** Variables for the subscription. */\n variables?: Record<string, unknown>;\n /** Stable identifier for this subscription, used in error context. */\n operationName: string;\n /** Called for each payload received from the subscription. */\n onData: (data: TData) => void;\n /** Polling fallback invoked when subscription is unavailable / failed. */\n pollFn: () => Promise<void> | void;\n /** Polling interval in ms (default 5s — signaling/roster is latency-sensitive). */\n pollIntervalMs?: number;\n /** Whether to enable the hook at all. */\n enabled?: boolean;\n}\n\n/** Best-effort detector for \"subscription field not found\" errors. */\nfunction isUnknownFieldError(err: unknown): boolean {\n const msg =\n err instanceof Error\n ? err.message\n : typeof err === 'string'\n ? err\n : ((err as { message?: string } | null)?.message ?? '');\n const lower = msg.toLowerCase();\n return (\n lower.includes('cannot query field') ||\n lower.includes('unknown field') ||\n lower.includes('subscription not supported') ||\n lower.includes('not implemented')\n );\n}\n\nexport function useEvmSubscription<TData = unknown>({\n query,\n variables,\n operationName,\n onData,\n pollFn,\n pollIntervalMs = 5_000,\n enabled = true,\n}: UseEvmSubscriptionArgs<TData>): void {\n const onDataRef = useRef(onData);\n const pollFnRef = useRef(pollFn);\n const variablesRef = useRef(variables);\n useEffect(() => {\n onDataRef.current = onData;\n pollFnRef.current = pollFn;\n variablesRef.current = variables;\n }, [onData, pollFn, variables]);\n\n const variablesKey = useMemo(() => JSON.stringify(variables ?? {}), [variables]);\n\n useEffect(() => {\n if (!enabled) return;\n\n const wsClient = getGraphqlWsClient();\n let pollTimer: ReturnType<typeof setInterval> | null = null;\n let unsubSub: (() => void) | null = null;\n let cancelled = false;\n\n const startPolling = () => {\n if (pollTimer) return;\n void Promise.resolve(pollFnRef.current()).catch(() => {});\n pollTimer = setInterval(() => {\n if (cancelled) return;\n void Promise.resolve(pollFnRef.current()).catch(() => {});\n }, pollIntervalMs);\n };\n\n if (!wsClient) {\n startPolling();\n return () => {\n cancelled = true;\n if (pollTimer) clearInterval(pollTimer);\n };\n }\n\n try {\n unsubSub = wsClient.subscribe(\n { query, variables: variablesRef.current, operationName },\n {\n next: (msg) => {\n if (cancelled) return;\n if (msg?.errors && msg.errors.length > 0) {\n if (msg.errors.some(isUnknownFieldError)) {\n if (unsubSub) {\n try {\n unsubSub();\n } catch {\n /* noop */\n }\n unsubSub = null;\n }\n startPolling();\n return;\n }\n reportShellError(\n new Error(`Subscription ${operationName} returned errors`),\n { module: 'eventfullymanaged', context: { operationName, errors: msg.errors } },\n `[eventfullymanaged] subscription ${operationName} errors`\n );\n return;\n }\n if (msg?.data) {\n try {\n onDataRef.current(msg.data as TData);\n } catch (handlerErr) {\n reportShellError(\n handlerErr,\n { module: 'eventfullymanaged', context: { operationName, phase: 'handler' } },\n `[eventfullymanaged] subscription ${operationName} handler threw`\n );\n }\n }\n },\n error: (err) => {\n if (isUnknownFieldError(err)) {\n startPolling();\n return;\n }\n reportShellError(\n err,\n { module: 'eventfullymanaged', context: { operationName, phase: 'transport' } },\n `[eventfullymanaged] subscription ${operationName} transport error`\n );\n startPolling();\n },\n complete: () => {\n if (!cancelled) startPolling();\n },\n }\n );\n } catch (err) {\n reportShellError(\n err,\n { module: 'eventfullymanaged', context: { operationName, phase: 'subscribe' } },\n `[eventfullymanaged] subscription ${operationName} subscribe threw`\n );\n startPolling();\n }\n\n return () => {\n cancelled = true;\n if (unsubSub) {\n try {\n unsubSub();\n } catch {\n /* noop */\n }\n }\n if (pollTimer) clearInterval(pollTimer);\n };\n }, [enabled, query, operationName, variablesKey, pollIntervalMs]);\n}\n"],"mappings":";;;AAwCA,SAAS,EAAoB,GAAuB;CAOlD,IAAM,KALJ,aAAe,QACX,EAAI,UACJ,OAAO,KAAQ,WACb,IACE,GAAqC,WAAW,IACxC,aAAa;AAC/B,QACE,EAAM,SAAS,qBAAqB,IACpC,EAAM,SAAS,gBAAgB,IAC/B,EAAM,SAAS,6BAA6B,IAC5C,EAAM,SAAS,kBAAkB;;AAIrC,SAAgB,EAAoC,EAClD,UACA,cACA,kBACA,WACA,WACA,oBAAiB,KACjB,aAAU,MAC4B;CACtC,IAAM,IAAY,EAAO,EAAO,EAC1B,IAAY,EAAO,EAAO,EAC1B,IAAe,EAAO,EAAU;AAStC,CARA,QAAgB;AAGd,EAFA,EAAU,UAAU,GACpB,EAAU,UAAU,GACpB,EAAa,UAAU;IACtB;EAAC;EAAQ;EAAQ;EAAU,CAAC,EAI/B,QAAgB;AACd,MAAI,CAAC,EAAS;EAEd,IAAM,IAAW,GAAoB,EACjC,IAAmD,MACnD,IAAgC,MAChC,IAAY,IAEV,UAAqB;AACrB,GAEJ,OADK,QAAQ,QAAQ,EAAU,SAAS,CAAC,CAAC,YAAY,GAAG,EAC7C,kBAAkB;AACxB,SACC,QAAQ,QAAQ,EAAU,SAAS,CAAC,CAAC,YAAY,GAAG;MACxD,EAAe;;AAGpB,MAAI,CAAC,EAEH,QADA,GAAc,QACD;AAEX,GADA,IAAY,IACR,KAAW,cAAc,EAAU;;AAI3C,MAAI;AACF,OAAW,EAAS,UAClB;IAAE;IAAO,WAAW,EAAa;IAAS;IAAe,EACzD;IACE,OAAO,MAAQ;AACT,aACJ;UAAI,GAAK,UAAU,EAAI,OAAO,SAAS,GAAG;AACxC,WAAI,EAAI,OAAO,KAAK,EAAoB,EAAE;AACxC,YAAI,GAAU;AACZ,aAAI;AACF,aAAU;iBACJ;AAGR,aAAW;;AAEb,WAAc;AACd;;AAEF,SACE,gBAAI,MAAM,gBAAgB,EAAc,kBAAkB,EAC1D;QAAE,QAAQ;QAAqB,SAAS;SAAE;SAAe,QAAQ,EAAI;SAAQ;QAAE,EAC/E,oCAAoC,EAAc,SACnD;AACD;;AAEF,UAAI,GAAK,KACP,KAAI;AACF,SAAU,QAAQ,EAAI,KAAc;eAC7B,GAAY;AACnB,SACE,GACA;QAAE,QAAQ;QAAqB,SAAS;SAAE;SAAe,OAAO;SAAW;QAAE,EAC7E,oCAAoC,EAAc,gBACnD;;;;IAIP,QAAQ,MAAQ;AACd,SAAI,EAAoB,EAAI,EAAE;AAC5B,SAAc;AACd;;AAOF,KALA,EACE,GACA;MAAE,QAAQ;MAAqB,SAAS;OAAE;OAAe,OAAO;OAAa;MAAE,EAC/E,oCAAoC,EAAc,kBACnD,EACD,GAAc;;IAEhB,gBAAgB;AACd,KAAK,KAAW,GAAc;;IAEjC,CACF;WACM,GAAK;AAMZ,GALA,EACE,GACA;IAAE,QAAQ;IAAqB,SAAS;KAAE;KAAe,OAAO;KAAa;IAAE,EAC/E,oCAAoC,EAAc,kBACnD,EACD,GAAc;;AAGhB,eAAa;AAEX,OADA,IAAY,IACR,EACF,KAAI;AACF,OAAU;WACJ;AAIV,GAAI,KAAW,cAAc,EAAU;;IAExC;EAAC;EAAS;EAAO;EAtGC,QAAc,KAAK,UAAU,KAAa,EAAE,CAAC,EAAE,CAAC,EAAU,CAAC;EAsG/B;EAAe,CAAC"}
|