/** * Analytics Types * * Server contract types for be-analytics-svc endpoints. * Covers events, links, leaders, ads, and URL mappings. */ /** Event names — matches server's EventNameTypes */ export type EventNameType = 'generated_link' | 'incoming_user' | 'identify_user' | 'visibility_on' | 'visibility_off' | 'page_hit' | 'sign_up' | 'game_view' | 'game_join' | 'game_result' | 'order_create' | 'order_result' | 'vouch_start' | 'vouch_attempt' | 'account_add_start' | 'account_add_result' | 'transaction_attempt' | 'transaction_result' | 'message_support' | 'room_view' | 'view_social' | 'ad_view' | 'ad_click' | 'view_market' | 'interact_social' | 'wallet_view' | 'redeem_code' | 'viewed_notification_prompt' | 'notification_enabled' | 'viewed_pwa_prompt' | 'pwa_installed' | (string & {}); /** Matches server's be_events table and POST /v1/events/event/create request body */ export interface BEEventProps { be_event_id?: string; event_name: EventNameType; generated_link_id?: string; company_ad_id?: string; distinct_id?: string; session_id?: string; reference_id?: string; player_id?: string; event_data: Record; source?: string; source_type?: 'client' | 'server'; device_data?: Record; ip_address?: string; coords?: Record; level: number; create_datetime?: string; last_update_datetime?: string; } /** POST /v1/events/event/create response */ export interface CreateEventResponse { message: string; result: 'success' | 'fail'; be_event_id?: string; } /** POST /v1/events/identify request body */ export interface IdentifyRequest { player_id: string; distinct_id: string; } /** POST /v1/events/identify response */ export interface IdentifyResponse { message: string; result: 'success' | 'fail'; } /** GET /v1/events/sessions/player/:player_id response */ export interface PlayerSessionsResponse { message: string; sessions: SessionProps[]; } export interface SessionProps { player_id: string; session_id: string; begin_datetime: string; end_datetime: string; be_events: BEEventProps[]; } export type LinkGenerator = 'player' | 'company' | 'tool'; export type LinkType = 'user_generated_link' | 'brand_generated_link' | 'bettoredge_tool' | 'marketing' | 'widget'; export type LinkSubType = 'league_link' | 'user_referral_link' | 'h2h_share_link' | 'social_post_link' | 'podcast_link' | 'competition_link' | 'bracket_link' | 'squares_link' | 'room_link' | 'poll_link' | 'team_contest_link'; /** Matches server's generated_links table */ export interface GeneratedLinkProps { generated_link_id?: string; visible_id?: string; redirect_url: string; generator_id?: string; name?: string; status?: string; generator: LinkGenerator; link_type: LinkType; link_sub_type: LinkSubType; type_id?: string; company_id?: string; distinct_id?: string; create_datetime?: string; last_update_datetime?: string; } /** POST /v1/links/redirect/generate response */ export interface GenerateLinkResponse { message: string; generated_link: GeneratedLinkProps; } /** POST /v1/links/redirect/available response */ export interface LinkAvailabilityResponse { message: string; is_available: boolean; } /** POST /v1/links/stats response */ export interface LinkStatsResponse { message?: string; link_stats: { total_clicks: number; unique_clicks: number; generated_link_stats: GeneratedLinkStatProps[]; player_ids: string[]; }; } export interface GeneratedLinkStatProps { generated_link_id: string; place: number; total_clicks: number; unique_clicks: number; player_ids: string[]; } export interface LeaderProps { leader_id: string; player_id: string; category_id: string; timerange_id: string; place: number; pinned?: boolean; leaderboard_eligible: boolean; not_eligible_reason?: string; market_type: string; category_score: number; active: boolean; create_datetime?: string; last_update_datetime?: string; } export interface CategoryProps { category_id: string; name: string; stat: string; league_id?: string; status: string; create_datetime?: string; last_update_datetime?: string; } export interface TimerangeProps { timerange_id: string; name: string; range_days: number; order_minimum: number; create_datetime?: string; last_update_datetime?: string; } export interface AdStatProps { company_ad_id: string; place: number; total_impressions: number; total_reach: number; total_clicks: number; unique_clicks: number; player_ids: string[]; } export interface AdStatsResponse { message: string; ad_stats: { total_impressions: number; total_reach: number; total_clicks: number; unique_clicks: number; ad_stats: AdStatProps[]; player_ids: string[]; }; } export interface URLMappingProps { url_mapping_id?: string; param: string; fallback_url: string; base_url: string; parse_params: string; conversion_function_name: string; conversion_description: string; destination_base_url: string; destination_params: string; query_vals_pass_through: boolean; status: 'active' | 'inactive' | 'pending'; create_datetime?: string; last_update_datetime?: string; } //# sourceMappingURL=analytics.types.d.ts.map