import type { AndroidOnboardingStep } from '../android/types.js';
/** state → the set of input fields that legitimately answer it (in order). */
export declare const STEP_ALLOWED_FIELDS: Partial<Record<AndroidOnboardingStep, string[]>>;
/** The set of all android input keys we govern (for the extras check). */
export declare const ANDROID_INPUT_KEYS: string[];
/**
 * Validate an incoming next_step input against the step it answers.
 *
 * Returns { ok:true } when the input carries EXACTLY ONE of the step's allowed
 * fields and no other governed android key. Otherwise { ok:false } with the
 * allowed fields + the offending extra keys for a corrective message.
 *
 * Steps with no allowed-field entry (auto/sign-in/no-field) are not governed and
 * always pass — the strict gate only constrains interactive input steps.
 *
 * @param currentStep the resume step the user is currently on
 * @param input the next_step input object
 */
export declare function validateStepInput(currentStep: AndroidOnboardingStep, input: Record<string, unknown>): {
    ok: boolean;
    allowedFields?: string[];
    extras: string[];
};
/**
 * Content validation for the keystore store-password steps, mirroring the ink
 * TUI onSubmit guards in app.tsx so the stateless MCP path enforces the SAME
 * rule before a value is persisted (and before it can reach keystore-generating):
 *
 *   - keystore-new-store-password  → reject < 6 chars (app.tsx:2575,
 *     'Password must be at least 6 characters')
 *   - keystore-existing-store-password → reject empty (app.tsx:2455,
 *     'Store password cannot be empty')
 *
 * Returns { ok:true } when the value passes (or the step is not a store-password
 * step). On failure returns { ok:false, message } with the exact main wording so
 * the gate can re-render the current step with a corrective summary and persist
 * nothing.
 *
 * @param currentStep the resume step the user is currently on
 * @param storePassword the supplied keystoreStorePassword (or undefined/null)
 */
export declare function validateStorePassword(currentStep: AndroidOnboardingStep, storePassword: string | undefined | null): {
    ok: boolean;
    message?: string;
};
