/**
 * Gemini driver for the hybrid wizard.
 *
 * Per-turn narrative: for each `narrative-then-prompt` state, instar
 * spawns Gemini's canonical one-shot CLI with a tightly-constrained
 * prompt asking Gemini to generate ONE warm 2-3 sentence intro paragraph. The structural
 * prompt (the question text) is printed verbatim by instar from the
 * state machine; Gemini never sees it. This means Gemini cannot reword
 * the question, can't add or remove options, and can't decide to
 * "execute the setup" — each per-turn invocation has nothing to
 * execute and a single bounded text job.
 *
 * Action states call existing instar CLI commands directly. Gemini is
 * never handed the Claude setup skill and is never asked to run shell,
 * write files, configure services, or drive browser automation.
 */
import { type WizardAnswers } from './state-machine.js';
export interface GeminiDriverOptions {
    geminiPath: string;
    projectDir: string;
    instarRoot: string;
    /**
     * When false, the driver suppresses narrative LLM calls and prints
     * a deterministic fallback intro for each step. Used in tests and
     * when the gemini binary returns an auth error.
     */
    enableNarrative?: boolean;
}
/**
 * Send the agent's personal "first hello" to the Lifeline topic
 * after the server has started. This is SKILL.md's "magic moment"
 * — the agent's first words to the user, in voice, using their
 * actual name + role + the user's name.
 *
 * Reads token + chatId + lifelineTopicId from the just-written
 * config.json. Silently no-ops if any are missing (Telegram wasn't
 * configured, or the manual backstop didn't write lifelineTopicId).
 *
 * Exported for testing.
 */
export declare function runSendLifelineGreeting(answers: WizardAnswers, options: GeminiDriverOptions): Promise<Partial<WizardAnswers>>;
/**
 * Entry point — runs the wizard from the initial state to completion.
 */
export declare function runGeminiWizard(options: GeminiDriverOptions): Promise<void>;
//# sourceMappingURL=gemini-driver.d.ts.map