/**
 * Pure decision logic for runtime routing.
 *
 * Extracted from main.ts so that the full startup decision matrix can be
 * verified without spinning up the real agent, filesystem, or TUI.
 *
 * Every branch in main()'s startup sequence that gates on platform, newSheet,
 * Mog SDK availability, user/account eligibility, sourceCheckout, install state,
 * or sync result is encoded here as a pure function of its inputs.
 */
import type { StartupXllStatus } from './startup-xll.js';
export interface RuntimeRoutingInput {
    /** Current platform (process.platform). */
    platform: NodeJS.Platform;
    /** Whether the headless sheet engine is enabled (isNewSheetEnabled()). */
    newSheetEnabled: boolean;
    /** Whether @mog-sdk/node is installed and resolvable. */
    mogSdkAvailable: boolean;
    /** Whether the current user/account is allowed to use Mog. */
    mogAllowed: boolean;
    /** Whether running from a source checkout (isSourceCheckout()). */
    sourceCheckout: boolean;
    /** True when the installed marker is missing (!isInstalled()). */
    needsSetup: boolean;
    /** Dev-mode flag from settings. */
    devMode: boolean;
    /** Result of resolveStartupXll() — only meaningful when requiresLocalXll is true. */
    xllStatus: StartupXllStatus;
    /** Requested agent mode from CLI (--agent-mode). */
    agentMode?: string;
    /** Sandbox mode setting ('enabled' | 'disabled'). */
    sandboxMode: 'enabled' | 'disabled';
    /** Whether WSL2 sandbox is available (isWsl2Available() && isDistroInstalled()). */
    sandboxAvailable: boolean;
}
export type XllOutcome = {
    action: 'skip';
} | {
    action: 'ok';
    updated: number;
} | {
    action: 'hard-exit';
    reason: 'source-missing';
    missingPaths: string[];
} | {
    action: 'hard-exit';
    reason: 'install-failed';
} | {
    action: 'degraded-warning';
};
export type ExcelToolKind = 'new-sheet' | 'com';
export type BashToolKind = 'sandbox' | 'regular';
export type AgentKind = 'installation' | 'plan' | 'ask' | 'action';
export interface RuntimeRoutingResult {
    /** Whether the local XLL runtime is required at all. */
    requiresLocalXll: boolean;
    /** What to do about XLL resolution. */
    xllOutcome: XllOutcome;
    /** Which execute_code implementation to wire. */
    excelToolKind: ExcelToolKind;
    /** Which bash tool to wire. */
    bashToolKind: BashToolKind;
    /** Which agent to start with. */
    agentKind: AgentKind;
    /** Whether sandbox is active (enabled + available). */
    sandboxActive: boolean;
    /** Startup warnings to show the user. */
    warnings: string[];
}
export declare function resolveRuntimeRouting(input: RuntimeRoutingInput): RuntimeRoutingResult;
//# sourceMappingURL=runtime-routing.d.ts.map