import type { Theme } from "../../../../../modes/interactive/theme/theme.ts";
import type { StatefulView } from "../stateful-view.ts";
export declare const SUBMIT_LABEL = "Submit answers";
export declare const CANCEL_LABEL = "Cancel";
/**
 * Per-tick projection of SubmitPicker state. The picker is a fixed 2-row
 * structure (Submit / Cancel) — labels are static, only the active marker
 * varies per tick. `selectSubmitPickerProps` precomputes `active` per row.
 */
export interface SubmitPickerProps {
    /** Per-row active flag. Length always 2: row 0 = Submit, row 1 = Cancel. */
    rows: ReadonlyArray<{
        active: boolean;
    }>;
}
/**
 * Static 2-row picker rendered on the Submit Tab. Row 0 = "Submit answers", Row 1 = "Cancel".
 *
 * - Active pointer (❯) follows `props.rows[i].active` per tick.
 * - Both rows render in normal style at all times — D1 (revised) allows partial submission,
 *   so Submit is never dimmed or visually marked as unselectable. The warning header in
 *   `buildSubmitContainer` is the sole signal of incompleteness.
 * - `naturalHeight(width)` is state-INDEPENDENT and returns a constant 2, so the
 *   chrome-mirror layout in `buildSubmitContainer` can subtract a fixed 2 lines without
 *   re-rendering.
 */
export declare class SubmitPicker implements StatefulView<SubmitPickerProps> {
    private props;
    private readonly theme;
    constructor(theme: Theme);
    setProps(props: SubmitPickerProps): void;
    handleInput(_data: string): void;
    invalidate(): void;
    naturalHeight(_width: number): number;
    render(width: number): string[];
}
//# sourceMappingURL=submit-picker.d.ts.map