OxinionDevelopers
Reference

Event Types

Complete reference for all events emitted by the Oxinion SDK event bus.

OxinionEventMap

All events are typed via the OxinionEventMap discriminated union exported from @oxinion/core.

typescript
1import type { OxinionEventMap } from '@oxinion/core';
2
3// Handler receives the correct payload type automatically
4oxinion.geofencing.listen('enter', (event: OxinionEventMap['geofence.entered']) => {
5 // event is fully typed
6});

All event types

geofence.entered
geofencing
typescript
{ geofenceId: string; userId: string; location: { lat: number; lng: number }; timestamp: string }
geofence.exited
geofencing
typescript
{ geofenceId: string; userId: string; location: { lat: number; lng: number }; timestamp: string }
geofence.dwelled
geofencing
typescript
{ geofenceId: string; userId: string; dwellMs: number; timestamp: string }
place.entered
places
typescript
{ place: { id: string; name: string; category: string }; userId: string; timestamp: string }
place.exited
places
typescript
{ place: { id: string; name: string }; userId: string; timestamp: string }
indoor.moved
indoor
typescript
{ zoneId: string; floor: number; confidence: 1 | 2 | 3; source: 'ble' | 'wifi' | 'uwb' | 'qr'; accuracyMeters: number }
rewards.issued
rewards
typescript
{ rewardId: string; userId: string; type: 'points' | 'coupon'; amount: number; reason: string }
rewards.redeemed
rewards
typescript
{ rewardId: string; userId: string; redeemedAt: string }
dooh.impression
dooh
typescript
{ screenId: string; campaignId: string; userId?: string; location: { lat: number; lng: number }; timestamp: string }
ar.session.started
ar
typescript
{ sessionId: string; anchorId: string; userId: string; timestamp: string }
ar.session.ended
ar
typescript
{ sessionId: string; durationMs: number; timestamp: string }