import { SessionAttendeeSideFilter, SessionAttendeeSideFilterOption } from '../interfaces/zoom-analytics.interface';
export declare const ATTENDEE_ATTENDANCE_STATE_OPTIONS: SessionAttendeeSideFilterOption[];
export declare const ATTENDEE_USER_TYPE_OPTIONS: SessionAttendeeSideFilterOption[];
export declare const ATTENDEE_ATTENDANCE_OUTCOME_OPTIONS: SessionAttendeeSideFilterOption[];
export declare const ATTENDEE_SIDE_FILTER_SETS: Record<string, SessionAttendeeSideFilter[]>;
export declare const ATTENDEE_SIDE_FILTER_CONTEXTUAL_FILTERS: Record<string, string[]>;
export declare const ZOOM_ANALYTICS_ENV_KEYS: {
    readonly ENABLE: "ENABLE_ZOOM_ANALYTICS";
    readonly ENABLE_LIVE_POLL: "ENABLE_ZOOM_ANALYTICS_LIVE_POLL";
    readonly WEBHOOK_SECRET_TOKEN: "ZOOM_ANALYTICS_WEBHOOK_SECRET_TOKEN";
    readonly LATE_JOIN_THRESHOLD_SECONDS: "ZOOM_ANALYTICS_LATE_JOIN_THRESHOLD_SECONDS";
};
export declare const ZOOM_ANALYTICS_DEFAULTS: {
    readonly LIVE_POLL_INTERVAL_MS: 60000;
    readonly LATE_JOIN_THRESHOLD_SECONDS: 0;
    readonly DROPOFF_GRACE_SECONDS: 0;
    readonly JOURNEY_STEP_LADDER_MINUTES: readonly number[];
    readonly JOURNEY_TARGET_BUCKETS: 24;
    readonly JOURNEY_MAX_BUCKETS: 96;
    readonly JOURNEY_LEAD_IN_MINUTES: 15;
    readonly ELIGIBILITY_THRESHOLD_SESSIONS: 11;
};
export declare const ZOOM_ANALYTICS_LATE_COMER_BUCKETS: readonly {
    label: string;
    maxMs: number;
}[];
export declare const ZOOM_SINCERITY_MAP_BAND_LABELS: readonly string[];
export declare const ZOOM_ANALYTICS_DROP_OFF_REASONS: {
    readonly USER_LEFT: "User Manually Left";
    readonly REMOVED_BY_HOST: "Removed by Host";
    readonly NETWORK_ISSUE: "Connection Lost / Network Issue";
    readonly HOST_ENDED: "Session Ended by Host";
    readonly UNKNOWN: "Unknown";
};
export declare const ZOOM_ANALYTICS_FOLLOW_UP: {
    readonly REASON_NOT_JOINED: "Did not join the session";
    readonly REASON_FREQUENT_DROPOFFS: "Frequent connectivity drop-offs during the session";
    readonly REASON_DROPPED_ONCE: "Dropped off during the session";
};
export declare const ZOOM_ANALYTICS_API_PATHS: {
    readonly REPORT_WEBINAR: (webinarId: string) => string;
    readonly REPORT_MEETING: (meetingId: string) => string;
    readonly DASHBOARD_WEBINAR_PARTICIPANTS: (webinarId: string) => string;
    readonly DASHBOARD_MEETING_PARTICIPANTS: (meetingId: string) => string;
};
export declare const ZOOM_ANALYTICS_HTTP_STATUS: {
    readonly BAD_REQUEST: 400;
    readonly UNAUTHORIZED: 401;
    readonly FORBIDDEN: 403;
    readonly NOT_FOUND: 404;
};
export declare const ZOOM_ANALYTICS_API_CODE: {
    readonly PAST_DATA_NOT_READY: 3001;
    readonly SCOPES_MISSING: 4711;
};
export declare const ZOOM_ANALYTICS_WEBHOOK_HEADER: {
    readonly SIGNATURE: "x-zm-signature";
    readonly TIMESTAMP: "x-zm-request-timestamp";
};
export declare const ZOOM_ANALYTICS_WEBHOOK_HMAC: {
    readonly ALGORITHM: "sha256";
    readonly ENCODING: "hex";
    readonly MESSAGE_PREFIX: "v0";
    readonly SIGNATURE_PREFIX: "v0=";
};
export declare const ZOOM_ANALYTICS_WEBHOOK_MAX_AGE_SECONDS = 300;
export declare const ZOOM_ANALYTICS_WEBHOOK_LOG_MODULE = "zoom-webhook";
export declare const ZOOM_ANALYTICS_SWAGGER: {
    readonly TAG: "analytics";
    readonly GET_KPIS: "Admin: the 8 header KPIs for a reconciled webinar session";
    readonly GET_LIVE: "Admin: live join/leave snapshot for a webinar currently in progress";
    readonly GET_ATTENDEES: "Admin: paginated per-seeker attendance table for a session";
    readonly RECONCILE: "Admin: pull the latest data from Zoom for a session and recompute analytics";
    readonly MARK_ATTENDANCE: "Admin: mark a seeker's RM or Coordinator attendance for a session";
    readonly WEBHOOK: "Receive Zoom webinar webhook events (live tracking + lifecycle)";
};
export declare const ZOOM_ANALYTICS_LOG: {
    readonly WEBHOOK_RECEIVED: "Zoom analytics webhook received";
    readonly WEBHOOK_IGNORED_DISABLED: "Zoom analytics webhook received while ENABLE_ZOOM_ANALYTICS is off — ignoring";
    readonly WEBHOOK_REJECTED_SIGNATURE: "Rejected Zoom analytics webhook with invalid signature";
    readonly WEBHOOK_REJECTED_STALE: "Rejected Zoom analytics webhook with stale/replayed timestamp";
    readonly RECONCILIATION_STARTED: "Zoom analytics reconciliation started";
    readonly RECONCILIATION_COMPLETED: "Zoom analytics reconciliation completed";
    readonly LIVE_POLL_UNAVAILABLE: "Zoom Dashboard API unavailable for live poll — check Business+ plan and dashboard:read:list_meeting_participants:admin / dashboard:read:list_webinar_participants:admin scopes";
    readonly REPORT_UNAVAILABLE: "Zoom Report API unavailable — session start/duration will fall back to local data until report:read:meeting:admin / report:read:webinar:admin scopes exist";
    readonly BACKGROUND_RECONCILE_FAILED: "Background Zoom analytics reconcile failed";
    readonly WEBHOOK_EVENT_MISSING_DATA: "Zoom analytics webhook event missing required data";
    readonly WEBHOOK_SESSION_NOT_FOUND: "Zoom analytics webhook: no session found for reported resource";
    readonly WEBHOOK_PARTICIPANT_UNMATCHED: "Zoom analytics webhook: participant email did not match any roster seeker";
    readonly WEBHOOK_OCCURRENCE_ID_UNMATCHED: "Zoom analytics webhook: occurrence_id did not match any known sibling session";
    readonly WEBHOOK_OCCURRENCE_AMBIGUOUS: "Zoom analytics webhook: could not disambiguate sibling session by occurrence_id or active time window, attached to first match";
};
