import { WebinarDetails } from '../interfaces/online-details.interface';
import { ProvisionRegistrationStatus } from 'src/online-session/interfaces/online-session.interface';
export interface OnlineSessionTableHeader {
    key: string;
    label: string;
    sortable: boolean;
    filterable: boolean;
    type: string;
    order: string;
}
export interface OnlineSessionFilterChoice {
    label: string;
    value: string;
}
export interface OnlineSessionFilterOption {
    key: string;
    label: string;
    type: 'select' | 'checkbox' | 'boolean' | 'string' | 'number' | 'date' | 'dropdown';
    options?: OnlineSessionFilterChoice[];
}
export declare const WEBINAR_COLUMN_KEYS: (keyof WebinarDetails)[];
export declare const ONLINE_SESSION_RESPONSE: {
    readonly CREATED: "Online session created";
    readonly BULK_CREATED: "Online sessions processed";
    readonly SHARED_CREATED: "Shared online sessions created";
    readonly UPDATED: "Online session updated";
    readonly STATUS_UPDATED: "Online session status updated";
    readonly DELETED: "Online session deleted";
    readonly RETRIEVED: "Online session retrieved";
    readonly LIST_RETRIEVED: "Online sessions retrieved";
    readonly REGISTRATION_PROCESSED: "Registration processed";
    readonly BULK_REGISTRATION_STARTED: "Bulk registration started";
    readonly BULK_REGISTRATION_STATUS: "Bulk registration status";
    readonly BULK_REGISTRATION_FAILURES: "Bulk registration failures";
    readonly BULK_REGISTRATION_RETRY_STARTED: "Bulk registration retry started";
    readonly REGISTRATIONS_RETRIEVED: "Session registrations retrieved";
    readonly REGISTRATION_EXPORT_READY: "Registration export ready";
    readonly PROVISION_STATUS_RETRIEVED: "Provisioning status retrieved";
    readonly PROVISION_REGISTRATIONS_RETRIEVED: "Provisioning registrations retrieved";
    readonly ACTIVATION_UPDATED: "Registration activation status updated";
    readonly ELIGIBLE_COUNT_RETRIEVED: "Eligible count retrieved";
    readonly PROGRAM_ELIGIBLE_REGISTRATIONS_RETRIEVED: "Program's eligible registrations retrieved";
};
export declare const ONLINE_SESSION_LOG: {
    readonly CREATE_FAILED: "Failed to create online session";
    readonly BULK_CREATE_PARTIAL: (failed: number, total: number) => string;
    readonly UPDATE_FAILED: "Failed to update online session";
    readonly DELETE_FAILED: "Failed to delete online session";
    readonly GET_BY_ID_FAILED: "Error finding online session by id";
    readonly LIST_FAILED: "Error fetching online sessions";
    readonly COMPLETED_FETCH_FAILED: "Error fetching recently completed sessions";
    readonly PROVIDER_OVERWRITTEN: (key: string) => string;
    readonly PROVIDER_REGISTERED: (key: string) => string;
    readonly NO_PROVIDER_REGISTERED: (key: string) => string;
    readonly GENERAL_LINKS_SKIPPED_NOT_PROVISIONED: (programSessionId: number) => string;
};
export declare const ONLINE_SESSION_SWAGGER: {
    readonly TAG: "online-session";
    readonly CREATE: "Create an online session (provider + type from body)";
    readonly CREATE_BULK: "Create multiple online sessions in a single request";
    readonly CREATE_SHARED: "Provision ONE recurring webinar shared across several program sessions (\"same link\": one join link per registrant, valid for all sessions)";
    readonly LIST: "List online sessions";
    readonly GET: "Get an online session by id";
    readonly UPDATE: "Update an online session";
    readonly UPDATE_STATUS: "Update only the lifecycle status (local-only, no provider call)";
    readonly DELETE: "Delete an online session";
    readonly REGISTER: "Register/unregister/downgrade a registrant for an online session";
    readonly BULK_REGISTER: "Admin: bulk-register all confirmed registrants (by programId or sessionId) as a background job";
    readonly BULK_REGISTER_STATUS: "Admin: poll a bulk registration job — running counts and eligibility breakdown";
    readonly BULK_REGISTER_FAILURES: "Admin: paginated, enriched per-item failure list for a bulk registration job (registrant + session details, so failures can be acted on directly)";
    readonly BULK_REGISTER_RETRY: "Admin: re-run only the failed registrations of a bulk job as a fresh job (returns the new jobId)";
    readonly PROGRAM_REGISTER_FAILURES: "Admin: current registration failures for a program (optionally one session), merged across the program's job chain and de-staled — what is still failing, by program/session rather than by jobId";
    readonly PROGRAM_REGISTER_RETRY: "Admin: re-run the current registration failures of a program (optionally one session) as a fresh job (returns the new jobId)";
    readonly LIST_REGISTRATIONS: "Admin: list a session's eligible registrants with their join URL (paginated/searchable; download=true for Excel) — excludes registrants deactivated for this specific session";
    readonly PROVISION_STATUS: "Admin: per-session provisioning overview for a program (optionally one session) — total eligible, generated, failed, and yet-to-generate counts";
    readonly PROVISION_REGISTRATIONS: "Admin: per-session provisioning drilldown — the eligible registrations bucketed into generated / failed / yet-to-generate (optionally filtered to one bucket)";
    readonly SET_ACTIVATION: "Admin/RM/Shoba: toggle a registration active/inactive for ALL upcoming sessions of its program (past and currently-live sessions untouched) — deactivating removes their Zoom join links, reactivating re-provisions them. Rows are updated in place, never deleted.";
    readonly ELIGIBLE_COUNT: "Admin: live active/inactive breakdown of one session's eligible (provisioned) registrants";
    readonly PROGRAM_ELIGIBLE_REGISTRATIONS: "Admin: paginated/searchable list of a program's seat-allocated registrants with tableHeaders — no per-session joinUrl (that only means something scoped to one session; use the per-session registrations endpoint for that)";
};
export declare const PROGRAM_ELIGIBLE_REGISTRATIONS_TABLE_HEADERS: OnlineSessionTableHeader[];
export declare const PROVISION_REGISTRATIONS_TABLE_HEADERS: OnlineSessionTableHeader[];
export declare function getProvisionRegistrationsTableHeaders(status?: ProvisionRegistrationStatus): OnlineSessionTableHeader[];
export declare const PROGRAM_ELIGIBLE_REGISTRATIONS_STATIC_FILTERS: OnlineSessionFilterOption[];
export declare const ONLINE_SESSION_LIST_TABLE_HEADERS: OnlineSessionTableHeader[];
export declare const ONLINE_SESSION_LIST_DEFAULTS: {
    readonly LIMIT: 10;
    readonly OFFSET: 0;
};
