/** * Analytics event catalog v1 — single source of truth shared across * backend, kiosk, customer PWA, and admin (where applicable). * * Plan §2.1 — core client events (17 universal + retail + donation + 2 kiosk) * plus server-side operational extensions (reconciliation, workers). * - All names are snake_case. * - Catalog version is `1` — `analytics_events.catalogVersion` must equal this. * - Unknown event names → HTTP 400 on ingest. * - No `KIOSK_*` legacy uppercase names — those constants are removed from * `rpapp-kiosk/.../kioskAnalyticsEvents.ts` per plan §2.1 / §10.2.3. */ export declare const ANALYTICS_EVENT_CATALOG_VERSION: 1; /** Per-event metadata schema versions accepted on ingest (plan G-S02 / AN-055). */ export declare const ANALYTICS_METADATA_SCHEMA_VERSIONS: readonly [1, 2]; export type AnalyticsMetadataSchemaVersion = (typeof ANALYTICS_METADATA_SCHEMA_VERSIONS)[number]; export declare const DEFAULT_ANALYTICS_METADATA_SCHEMA_VERSION: 1; export declare function isSupportedAnalyticsMetadataSchemaVersion(value: number): value is AnalyticsMetadataSchemaVersion; /** * Universal events (17). */ export declare const ANALYTICS_UNIVERSAL_EVENTS: { readonly SESSION_STARTED: "session_started"; readonly SESSION_COMPLETED: "session_completed"; readonly SESSION_ABANDONED: "session_abandoned"; readonly SESSION_RECOVERED: "session_recovered"; readonly SCREEN_VIEWED: "screen_viewed"; readonly CTA_CLICKED: "cta_clicked"; readonly BACK_CLICKED: "back_clicked"; readonly ERROR_SHOWN: "error_shown"; readonly CONSENT_BANNER_DISMISSED: "consent_banner_dismissed"; readonly AUTH_FLOW_STARTED: "auth_flow_started"; readonly IDENTITY_CREATED: "identity_created"; readonly ACCOUNT_LOGGED_IN: "account_logged_in"; readonly ACCOUNT_CREATED: "account_created"; readonly PAYMENT_STARTED: "payment_started"; readonly PAYMENT_METHOD_VIEWED: "payment_method_viewed"; readonly PAYMENT_QR_GENERATED: "payment_qr_generated"; readonly QR_REGENERATED: "qr_regenerated"; readonly PAYMENT_SUBMITTED: "payment_submitted"; readonly PAYMENT_CONFIRMED: "payment_confirmed"; readonly PAYMENT_FAILED: "payment_failed"; readonly RECEIPT_OPENED: "receipt_opened"; }; /** * Retail events (checkout funnel + order fulfillment §16). */ export declare const ANALYTICS_RETAIL_EVENTS: { readonly RETAIL_ORDER_PREPARED: "retail_order_prepared"; readonly RETAIL_ORDER_READY: "retail_order_ready"; readonly RETAIL_ORDER_COLLECTED: "retail_order_collected"; readonly RETAIL_TICKET_CREATED: "retail_ticket_created"; readonly RETAIL_PICKUP_SCHEDULED: "retail_pickup_scheduled"; readonly RETAIL_PICKUP_SLOT_MISSED: "retail_pickup_slot_missed"; readonly CHECKOUT_MODE_SELECTED: "checkout_mode_selected"; readonly PICKUP_QR_ISSUED: "pickup_qr_issued"; readonly PICKUP_QR_SCANNED: "pickup_qr_scanned"; readonly PICKUP_STAFF_MARK_PAID: "pickup_staff_mark_paid"; readonly CHECKOUT_HANDOFF_CREATED: "checkout_handoff_created"; readonly CHECKOUT_HANDOFF_EXPIRED: "checkout_handoff_expired"; readonly CHECKOUT_HANDOFF_COMPLETED: "checkout_handoff_completed"; readonly BUY_AGAIN_STARTED: "buy_again_started"; readonly BUY_AGAIN_TRIMMED: "buy_again_trimmed"; readonly BUY_AGAIN_FAILED_STOCK: "buy_again_failed_stock"; readonly SELF_SERVICE_SLA_NOTICE_SHOWN: "self_service_sla_notice_shown"; readonly CUSTOMER_PICKUP_ACK_INFORMATIONAL: "customer_pickup_ack_informational"; readonly PICKUP_PARTIAL_CONFIRM: "pickup_partial_confirm"; readonly PICKUP_FULFILLMENT_REFUSED: "pickup_fulfillment_refused"; readonly PICKUP_FULFILLMENT_HELD: "pickup_fulfillment_held"; readonly PICKUP_FULFILLMENT_HOLD_RELEASED: "pickup_fulfillment_hold_released"; readonly KIOSK_CASH_COMPLETE: "kiosk_cash_complete"; readonly CHECKOUT_COLLECT_CONFIGURED: "checkout_collect_configured"; readonly SLUG_LEGACY_REDIRECT: "slug_legacy_redirect"; readonly TENANT_SWITCHED: "tenant_switched"; readonly CATALOG_IMAGE_LOAD_FAILED: "catalog_image_load_failed"; readonly PRODUCT_ADDED: "product_added"; readonly PRODUCT_REMOVED: "product_removed"; readonly CART_VIEWED: "cart_viewed"; readonly CART_SHEET_OPENED: "cart_sheet_opened"; readonly CART_STICKY_PAY_CLICKED: "cart_sticky_pay_clicked"; readonly COLLECT_STEP_OPENED: "collect_step_opened"; readonly COLLECT_STEP_CONFIRMED: "collect_step_confirmed"; readonly CHECKOUT_STARTED: "checkout_started"; readonly GIFT_SURFACE_IMPRESSION: "gift_surface_impression"; readonly RETAIL_ORDER_PAID: "retail_order_paid"; readonly RETAIL_ORDER_ABANDONED: "retail_order_abandoned"; }; export declare const ANALYTICS_FUNNEL_EVENTS: { readonly QR_DISPLAYED: "qr_displayed"; readonly MENU_OPENED: "menu_opened"; readonly PRODUCT_SELECTED: "product_selected"; }; export declare const ANALYTICS_IDENTITY_EVENTS: { readonly IDENTITY_RECOGNIZED: "identity_recognized"; readonly IDENTITY_LINKED: "identity_linked"; readonly IDENTITY_MATCHED: "identity_matched"; readonly IDENTITY_DELETED: "identity_deleted"; readonly CUSTOMER_DELETED: "customer_deleted"; }; export declare const ANALYTICS_ACCOUNT_EVENTS: { readonly ACCOUNT_LOGGED_OUT: "account_logged_out"; readonly PROFILE_UPDATED: "profile_updated"; readonly RECEIPT_CREATED: "receipt_created"; readonly RECEIPT_DOWNLOADED: "receipt_downloaded"; }; /** * Donation events (9). */ export declare const ANALYTICS_DONATION_EVENTS: { readonly DONATION_STARTED: "donation_started"; readonly DONATION_AMOUNT_SELECTED: "donation_amount_selected"; readonly DONATION_CUSTOM_AMOUNT_ENTERED: "donation_custom_amount_entered"; readonly DONATION_PROJECT_SELECTED: "donation_project_selected"; readonly DONATION_IMPACT_OPENED: "donation_impact_opened"; readonly DONATION_TAX_RECEIPT_SELECTED: "donation_tax_receipt_selected"; readonly RECURRING_DONATION_SELECTED: "recurring_donation_selected"; readonly DONATION_COMPLETED: "donation_completed"; readonly DONATION_ABANDONED: "donation_abandoned"; }; /** * Kiosk events (2). */ export declare const ANALYTICS_KIOSK_EVENTS: { readonly KIOSK_WAKEUP: "kiosk_wakeup"; readonly KIOSK_TIMEOUT: "kiosk_timeout"; }; /** * PWA lifecycle events (install prompt + update prompt) — admin / pickup / customer. */ export declare const ANALYTICS_PWA_EVENTS: { readonly PWA_INSTALL_ACCEPTED: "pwa_install_accepted"; readonly PWA_INSTALL_DISMISSED: "pwa_install_dismissed"; readonly PWA_UPDATE_SHOWN: "pwa_update_shown"; readonly PWA_UPDATE_DEFERRED: "pwa_update_deferred"; readonly PWA_UPDATE_APPLIED: "pwa_update_applied"; }; export declare const ANALYTICS_BARCODE_OPS_EVENTS: { readonly PRODUCT_BARCODE_ASSIGNED: "product_barcode_assigned"; readonly PRODUCT_BARCODE_CLEARED: "product_barcode_cleared"; readonly PRODUCT_BARCODE_ALT_ADDED: "product_barcode_alt_added"; readonly PRODUCT_BARCODE_ALT_REMOVED: "product_barcode_alt_removed"; readonly PRODUCT_BARCODE_ALT_PROMOTED: "product_barcode_alt_promoted"; readonly PRODUCT_BARCODE_ASSIGN_CONFLICT: "product_barcode_assign_conflict"; readonly PRODUCT_BARCODE_LOOKUP_HIT: "product_barcode_lookup_hit"; readonly PRODUCT_BARCODE_LOOKUP_MISS: "product_barcode_lookup_miss"; readonly PHYSICAL_CARD_ISSUED: "physical_card_issued"; readonly PHYSICAL_CARD_REVOKED: "physical_card_revoked"; }; export declare const ANALYTICS_PROMO_EVENTS: { readonly PROMO_PREVIEW_EVALUATED: "promo_preview_evaluated"; readonly PROMO_REWARD_ACTIVATED: "promo_reward_activated"; readonly PROMO_REWARD_REDEEMED: "promo_reward_redeemed"; readonly PROMO_REWARD_ROLLED_BACK: "promo_reward_rolled_back"; readonly PROMO_PROGRESS_THRESHOLD_REACHED: "promo_progress_threshold_reached"; readonly PROMO_STACKING_REJECTED: "promo_stacking_rejected"; readonly PROMO_BUDGET_SOFT_STOP: "promo_budget_soft_stop"; readonly PROMO_BUDGET_EXHAUSTED: "promo_budget_exhausted"; /** Manual typed-code lifecycle (ADR-014). Never emit checkout `promo_code_validated`. */ readonly PROMO_CODE_REJECTED: "promo_code_rejected"; readonly PROMO_CODE_APPLIED: "promo_code_applied"; readonly PROMO_CODE_REMOVED: "promo_code_removed"; readonly PROMO_CODE_REDEEMED: "promo_code_redeemed"; readonly PROMO_CODE_RELEASED: "promo_code_released"; }; /** * Server-side operational events (workers, reconciliation) — no client emitter. */ export declare const ANALYTICS_SERVER_OPS_EVENTS: { readonly PROMO_PREVIEW_EVALUATED: "promo_preview_evaluated"; readonly PROMO_REWARD_ACTIVATED: "promo_reward_activated"; readonly PROMO_REWARD_REDEEMED: "promo_reward_redeemed"; readonly PROMO_REWARD_ROLLED_BACK: "promo_reward_rolled_back"; readonly PROMO_PROGRESS_THRESHOLD_REACHED: "promo_progress_threshold_reached"; readonly PROMO_STACKING_REJECTED: "promo_stacking_rejected"; readonly PROMO_BUDGET_SOFT_STOP: "promo_budget_soft_stop"; readonly PROMO_BUDGET_EXHAUSTED: "promo_budget_exhausted"; /** Manual typed-code lifecycle (ADR-014). Never emit checkout `promo_code_validated`. */ readonly PROMO_CODE_REJECTED: "promo_code_rejected"; readonly PROMO_CODE_APPLIED: "promo_code_applied"; readonly PROMO_CODE_REMOVED: "promo_code_removed"; readonly PROMO_CODE_REDEEMED: "promo_code_redeemed"; readonly PROMO_CODE_RELEASED: "promo_code_released"; readonly PRODUCT_BARCODE_ASSIGNED: "product_barcode_assigned"; readonly PRODUCT_BARCODE_CLEARED: "product_barcode_cleared"; readonly PRODUCT_BARCODE_ALT_ADDED: "product_barcode_alt_added"; readonly PRODUCT_BARCODE_ALT_REMOVED: "product_barcode_alt_removed"; readonly PRODUCT_BARCODE_ALT_PROMOTED: "product_barcode_alt_promoted"; readonly PRODUCT_BARCODE_ASSIGN_CONFLICT: "product_barcode_assign_conflict"; readonly PRODUCT_BARCODE_LOOKUP_HIT: "product_barcode_lookup_hit"; readonly PRODUCT_BARCODE_LOOKUP_MISS: "product_barcode_lookup_miss"; readonly PHYSICAL_CARD_ISSUED: "physical_card_issued"; readonly PHYSICAL_CARD_REVOKED: "physical_card_revoked"; readonly RECURRING_PAYMENT_MISSED: "recurring_payment_missed"; readonly RECURRING_PAYMENT_RECEIVED: "recurring_payment_received"; }; export declare const ANALYTICS_EVENT_NAMES: readonly ("session_started" | "session_completed" | "session_abandoned" | "session_recovered" | "error_shown" | "consent_banner_dismissed" | "auth_flow_started" | "identity_created" | "account_logged_in" | "account_created" | "payment_started" | "payment_qr_generated" | "qr_regenerated" | "payment_submitted" | "payment_confirmed" | "payment_failed" | "receipt_opened" | "recurring_payment_received" | "retail_order_paid" | "retail_order_prepared" | "retail_order_ready" | "retail_order_collected" | "retail_ticket_created" | "retail_pickup_scheduled" | "retail_pickup_slot_missed" | "pickup_qr_issued" | "pickup_qr_scanned" | "pickup_staff_mark_paid" | "checkout_mode_selected" | "self_service_sla_notice_shown" | "customer_pickup_ack_informational" | "slug_legacy_redirect" | "donation_completed" | "catalog_image_load_failed" | "qr_displayed" | "menu_opened" | "product_selected" | "pwa_install_accepted" | "pwa_install_dismissed" | "pwa_update_shown" | "pwa_update_deferred" | "pwa_update_applied" | "checkout_handoff_created" | "checkout_handoff_expired" | "checkout_handoff_completed" | "buy_again_started" | "buy_again_trimmed" | "buy_again_failed_stock" | "pickup_partial_confirm" | "pickup_fulfillment_refused" | "pickup_fulfillment_held" | "pickup_fulfillment_hold_released" | "kiosk_cash_complete" | "checkout_collect_configured" | "tenant_switched" | "screen_viewed" | "cta_clicked" | "back_clicked" | "payment_method_viewed" | "product_added" | "product_removed" | "cart_viewed" | "cart_sheet_opened" | "cart_sticky_pay_clicked" | "collect_step_opened" | "collect_step_confirmed" | "checkout_started" | "gift_surface_impression" | "retail_order_abandoned" | "identity_recognized" | "identity_linked" | "identity_matched" | "identity_deleted" | "customer_deleted" | "account_logged_out" | "profile_updated" | "receipt_created" | "receipt_downloaded" | "donation_started" | "donation_amount_selected" | "donation_custom_amount_entered" | "donation_project_selected" | "donation_impact_opened" | "donation_tax_receipt_selected" | "recurring_donation_selected" | "donation_abandoned" | "kiosk_wakeup" | "kiosk_timeout" | "product_barcode_assigned" | "product_barcode_cleared" | "product_barcode_alt_added" | "product_barcode_alt_removed" | "product_barcode_alt_promoted" | "product_barcode_assign_conflict" | "product_barcode_lookup_hit" | "product_barcode_lookup_miss" | "physical_card_issued" | "physical_card_revoked" | "promo_preview_evaluated" | "promo_reward_activated" | "promo_reward_redeemed" | "promo_reward_rolled_back" | "promo_progress_threshold_reached" | "promo_stacking_rejected" | "promo_budget_soft_stop" | "promo_budget_exhausted" | "promo_code_rejected" | "promo_code_applied" | "promo_code_removed" | "promo_code_redeemed" | "promo_code_released" | "recurring_payment_missed")[]; export type AnalyticsEventName = (typeof ANALYTICS_EVENT_NAMES)[number]; /** * Type-safe membership check. */ export declare function isAnalyticsEventName(name: string): name is AnalyticsEventName; /** * Telemetry classes — all v1 events default to OPERATIONAL (§1.9). * MARKETING is rejected on ingest for v1. */ export declare const ANALYTICS_TELEMETRY_CLASSES: { readonly OPERATIONAL: "OPERATIONAL"; readonly MARKETING: "MARKETING"; }; export type AnalyticsTelemetryClass = (typeof ANALYTICS_TELEMETRY_CLASSES)[keyof typeof ANALYTICS_TELEMETRY_CLASSES]; /** * Platform enum mirror (matches backend Prisma `AnalyticsPlatform`). */ export declare const ANALYTICS_PLATFORMS: { readonly KIOSK: "KIOSK"; readonly MOBILE: "MOBILE"; }; export type AnalyticsPlatform = (typeof ANALYTICS_PLATFORMS)[keyof typeof ANALYTICS_PLATFORMS]; /** * Flow enum mirror (matches backend Prisma `AnalyticsFlow`). */ export declare const ANALYTICS_FLOWS: { readonly RETAIL: "RETAIL"; readonly DONATION: "DONATION"; }; export type AnalyticsFlow = (typeof ANALYTICS_FLOWS)[keyof typeof ANALYTICS_FLOWS]; /** * Device type enum mirror (matches backend Prisma `AnalyticsDeviceType`). * MOBILE_WEB rows always have label `'default'` (§3.1). */ export declare const ANALYTICS_DEVICE_TYPES: { readonly KIOSK: "KIOSK"; readonly MOBILE_WEB: "MOBILE_WEB"; readonly STATIC_QR: "STATIC_QR"; }; export type AnalyticsDeviceType = (typeof ANALYTICS_DEVICE_TYPES)[keyof typeof ANALYTICS_DEVICE_TYPES]; export declare const ANALYTICS_MOBILE_WEB_DEFAULT_LABEL: "default"; /** * Snapshot kind for rollups (`analytics_daily_snapshots`). */ export declare const ANALYTICS_SNAPSHOT_KINDS: { readonly TENANT: "tenant"; readonly PLATFORM: "platform"; }; export type AnalyticsSnapshotKind = (typeof ANALYTICS_SNAPSHOT_KINDS)[keyof typeof ANALYTICS_SNAPSHOT_KINDS]; /** * System flag keys (Prisma `system_flags`). `analytics_rollup_initialized` * gates retention deletes until first nightly rollup succeeds (§3.4, §6.7). */ export declare const ANALYTICS_SYSTEM_FLAGS: { readonly ROLLUP_INITIALIZED: "analytics_rollup_initialized"; }; //# sourceMappingURL=analyticsEvents.d.ts.map