import type { SessionListPageOptions } from "@opengeni/sdk"; import { type SessionBrowseDateField, type SessionBrowseDateRange, type SessionRecencyGroup } from "./sessions-group.js"; import type { RailSession as Session } from "./session-list-entry.js"; type CreatorIdentity = Pick; export type SessionPaginationGroup = { key: string; label: string; kind: "channel"; channelId: string | null; } | { key: string; label: string; kind: "activity"; group: "active" | SessionRecencyGroup; } | { key: string; label: string; kind: "created"; group: SessionRecencyGroup; } | { key: string; label: string; kind: "creator"; creator: CreatorIdentity; } | { key: string; label: string; kind: "creatorDiscovery"; knownCreators: readonly CreatorIdentity[]; } | { key: string; label: string; kind: "results"; } | { key: string; label: string; kind: "archived"; }; /** Each project (including Default) owns a cursor independent of workspace recency. */ export declare function sessionPaginationProjectGroup(channelId: string | null, label: string): Extract; export type SessionPaginationBrowseFilter = { creator: CreatorIdentity | null; dateField: SessionBrowseDateField; dateRange: SessionBrowseDateRange; }; type SessionPaginationGroupQuery = Pick; /** Exact server filters for one independently paged visible rail group. */ export declare function sessionPaginationGroupQuery(group: SessionPaginationGroup, browse: SessionPaginationBrowseFilter, now?: Date): SessionPaginationGroupQuery | null; /** Client-side exact group check for filters the list API cannot derive cheaply. */ export declare function sessionMatchesPaginationGroup(session: Session, group: SessionPaginationGroup, now?: Date): boolean; /** The group-bound cursor generation rotates when the browser's local day changes. */ export declare function sessionPaginationLocalDateKey(now?: Date): string; export {};