/**
 * Prompt sub-flows for WIZ.3 + WAB-SUB.3 — extracted from `chat_actions.ts`
 * to stay under the file-size budget.
 *
 * Each exported function maps to one WIZ.1 storyboard step that has more
 * than a single prompt:
 *   - runIdempotencyBranch (i) — keep / replace / test_only / cancel.
 *     Treats BOTH api and subscription modes as valid existing config
 *     (WAB-SUB.3 — old "subscription must be replaced" hard-block removed).
 *   - runModeChoice        (c.0) — api vs subscription. NO `initialValue`;
 *     the user explicitly picks. First substantive prompt in the flow.
 *   - runModelAliasPrompts (c)   — dispatches to api or subscription branch
 *     based on the prior mode choice. api → model + key + dest; subscription
 *     → cli + impl + args (no key prompt).
 *   - runPackPrompts       (d)   — pack selection + chat_agent.yaml authoring.
 *
 * Discipline: every `isCancel()` is checked. Every prompt that takes user
 * text input has a Zod-ish validator (we validate via clack's `validate:`
 * callback rather than re-parsing through Zod, because the callback returns
 * a string error message clack renders inline; Zod's error shape would need
 * an adapter layer).
 *
 * Mode-neutrality (WAB-SUB.3): neither api nor subscription is hardcoded as
 * default. The runtime dispatcher already accepts both modes (per WAB-SUB.2
 * pack_binding); the wizard now matches by letting the user pick at the
 * earliest shape-determining moment instead of pretending api is the only
 * supported mode.
 *
 * Imports from: @clack/prompts, node:path, ../../packs/schemas/chat_agent,
 *   ../../packs/schemas/models, ./chat_state.
 * Imported by: src/setup/cli/chat_actions.ts.
 */
import { type ChatAgentConfig } from '../../packs/schemas/chat_agent.js';
import type { ModelsState, PacksState } from './chat_state.js';
export type IdempotentChoice = 'keep' | 'replace' | 'test_only' | 'cancel';
export declare function runIdempotencyBranch(models: ModelsState): Promise<IdempotentChoice>;
export type ModeChoice = 'api' | 'subscription' | 'cancel';
export declare function runModeChoice(): Promise<ModeChoice>;
export { runModelAliasPrompts, type AliasResult } from './chat_actions_prompts_alias.js';
export interface PackResult {
    packId: string;
    packRoot: string;
    chatAgent: ChatAgentConfig;
    createPackManifest: boolean;
    /** FRS.B: user explicitly consented to activating the pack (active.json). */
    activatePack: boolean;
    customPromptPath?: string;
    customPromptBody?: string;
}
export declare function runPackPrompts(packs: PacksState, homeDir: string): Promise<PackResult | null>;
//# sourceMappingURL=chat_actions_prompts.d.ts.map