import { type RoutingDecision } from '../routing/routing.js'; /** Routing snapshot returned to the passthrough caller for banner emission. */ interface RoutingSnapshot { decision: RoutingDecision | null; /** True when we actually flipped the active account inside the snapshot * lock. False for: same-as-active, 0-match warnings, isolated-target * (which gets its own hint instead). */ flipped: boolean; /** Set when routing wanted to flip but the target is `defaultIsolated` * — we emit a hint suggesting the user run the profile flow rather * than silently overriding their isolation intent. */ isolatedHint?: string; } export interface RoutingForPassthroughInput { accountsDirPath: string; claudeJsonPath: string; cwd: string; initialEmail: string | null; savedEmails: string[]; } /** * Resolve routing INSIDE the passthrough snapshot lock and, if the resolver * decides on a different account, perform the in-lock swap by directly * calling `save` + `load` (the primitives `switchTo` wraps). We can't call * `switchTo` itself because it acquires its own `withLock`, and we already * hold the accounts-dir lock here. * * Skip rules: * - CLAUDE_CONFIG_DIR set externally → user is in a profile, don't override * - resolver returns null → no opinion, caller proceeds with active * - target email == active → resolver matched the active, silent * - target email not saved → defensive guard (resolver should already * have filtered, but listing can race with this read in pathological * cases) * - target has `defaultIsolated: true` → emit hint, do NOT flip */ export declare function resolveRoutingForPassthrough(input: RoutingForPassthroughInput): RoutingSnapshot; export {};