/**
 * Folds the ordered event list to the avatar state of the latest relevant event.
 * Nothing relevant yet → idle.
 *
 * @param {Array<Record<string, unknown>>} events
 * @returns {AvatarState}
 */
export function avatarStateFromEvents(events: Array<Record<string, unknown>>): AvatarState;
/**
 * Decides whether the animated wireframe avatar applies. Phase 1 renders on a
 * plain 2D canvas (no WebGL), so the capability gate is "can we get a 2D
 * context"; reduced motion always routes to the static 2D fallback.
 *
 * @param {{ canvasSupported: boolean; reducedMotion: boolean }} capabilities
 * @returns {boolean}
 */
export function shouldUseAvatar(capabilities: {
    canvasSupported: boolean;
    reducedMotion: boolean;
}): boolean;
/**
 * Maps an avatar state to its stroke/animation parameters. Keeps the renderer
 * humble: every per-state visual decision lives here, not in the canvas loop.
 *
 * @param {AvatarState} state
 * @returns {AvatarVisual}
 */
export function avatarStateToVisual(state: AvatarState): AvatarVisual;
/**
 * @typedef {Object} Projection
 * @property {number} tilt Fixed X-axis tilt in radians.
 * @property {number} distance Camera distance for the perspective divide.
 * @property {number} scale Pixels per unit at the projection plane.
 * @property {number} centerX Canvas-space x offset.
 * @property {number} centerY Canvas-space y offset.
 */
/**
 * Projects a 3D vertex to a 2D canvas point: rotates around Y by
 * `rotationRadians`, applies the fixed X tilt, then a trivial perspective
 * divide and scale. Pure and deterministic.
 *
 * @param {Vertex} vertex
 * @param {number} rotationRadians
 * @param {Projection} projection
 * @returns {{ x: number; y: number }}
 */
export function projectVertex(vertex: Vertex, rotationRadians: number, projection: Projection): {
    x: number;
    y: number;
};
/**
 * Dashboard module — Setup Wizard wireframe avatar (SPEC-188, Phase 1).
 * Humble object: pure functions, no global state, no direct DOM access.
 * Holds ALL the avatar logic: maps the SPEC-183/187 wizard stream into one of
 * six avatar states, decides whether the avatar or the 2D fallback applies, and
 * projects the procedural wireframe geometry. The requestAnimationFrame canvas
 * loop lives in setupWizardAvatarRenderer.js and delegates every decision here.
 *
 * Visual DNA: "Agentic OS" — see project_agentic_os_design_dna.md.
 */
/**
 * @typedef {'idle' | 'working' | 'success' | 'error' | 'listening' | 'celebrating'} AvatarState
 */
/**
 * The six avatar states a wireframe core can be in, in narrative order.
 * @type {AvatarState[]}
 */
export const AVATAR_STATES: AvatarState[];
/**
 * @typedef {[number, number, number]} Vertex
 */
/**
 * The 12 vertices of a unit icosahedron (golden-ratio rectangles). A fixed,
 * abstract wireframe core — the six avatar states reuse this same geometry and
 * differ only by colour/line-width/rotation-speed/pulse.
 * @type {Vertex[]}
 */
export const WIREFRAME_VERTICES: Vertex[];
/**
 * The 30 edges of the icosahedron, as index pairs into WIREFRAME_VERTICES.
 * @type {Array<[number, number]>}
 */
export const WIREFRAME_EDGES: Array<[number, number]>;
export type Projection = {
    /**
     * Fixed X-axis tilt in radians.
     */
    tilt: number;
    /**
     * Camera distance for the perspective divide.
     */
    distance: number;
    /**
     * Pixels per unit at the projection plane.
     */
    scale: number;
    /**
     * Canvas-space x offset.
     */
    centerX: number;
    /**
     * Canvas-space y offset.
     */
    centerY: number;
};
export type AvatarState = "idle" | "working" | "success" | "error" | "listening" | "celebrating";
export type AvatarVisual = {
    /**
     * CSS custom-property name driving the stroke colour.
     */
    color: string;
    /**
     * Stroke width in device pixels.
     */
    lineWidth: number;
    /**
     * Radians per second of the Y rotation.
     */
    rotationSpeed: number;
    /**
     * Amplitude of the radius/opacity breathing envelope.
     */
    pulse: number;
};
export type Vertex = [number, number, number];
//# sourceMappingURL=setupWizardAvatar.d.ts.map