import type { NewSessionSelectionHistory } from "@opengeni/sdk"; import { type ComputeTarget } from "../lib/session-create.js"; import type { SandboxBackend } from "../types.js"; type PersistedProjectProvenance = { selectedProjectChannelId?: string | null | undefined; }; export type NewSessionProjectLaunchIntent = { generation: number; kind: "initial_omitted"; } | { generation: number; kind: "explicit"; channelId: string | null; } | { generation: number; kind: "omitted_after_explicit"; }; export declare function initialNewSessionProjectLaunchIntent(launchChannelId: string | null | undefined): NewSessionProjectLaunchIntent; export declare function nextNewSessionProjectLaunchIntent(current: NewSessionProjectLaunchIntent, previousLaunchChannelId: string | null | undefined, launchChannelId: string | null | undefined): NewSessionProjectLaunchIntent; export declare function nextFocusedNewSessionProjectLaunchIntent(current: NewSessionProjectLaunchIntent, channelId: string | null | undefined): NewSessionProjectLaunchIntent; /** * Resolve the route's ambient project-selection effect. Undefined means the * effect must not mutate an authority already installed by remote hydration; * an explicit-to-omitted route transition is a new ordinary launch intent. */ export declare function resolveAmbientNewSessionProjectChannelId(input: { launchChannelId: string | null | undefined; previousLaunchChannelId: string | null | undefined; recentChannelId: string | null; remoteDraftHydrated: boolean; }): string | null | undefined; /** Apply a project change without leaving compute from the prior project behind. */ export declare function newSessionProjectSelection(history: NewSessionSelectionHistory, channelId: string | null, currentSelection: { /** Undefined means the current compute came from a draft with unknown project provenance. */ channelId: string | null | undefined; compute: ComputeTarget; }, defaultSandboxBackend?: SandboxBackend): { channelId: string | null; compute: ComputeTarget; }; export declare function resolveHydratedNewSessionProjectSelection(input: { launchIntent: NewSessionProjectLaunchIntent; remote: PersistedProjectProvenance; history: NewSessionSelectionHistory; restoredCompute: ComputeTarget; defaultSandboxBackend?: SandboxBackend | undefined; }): { channelId: string | null; compute: ComputeTarget; }; export declare function hydratedNewSessionProjectProvenancePresent(launchIntent: NewSessionProjectLaunchIntent, remote: PersistedProjectProvenance): boolean; export {};