/*
Package engine contains the core, format-agnostic logic for generating Jdenticon
identicons. It is responsible for translating an input hash into a structured,
intermediate representation of the final image.

This package is internal to the jdenticon library and its API is not guaranteed
to be stable. Do not use it directly.

# Architectural Overview

The generation process follows a clear pipeline:

 1. Hashing: An input value (e.g., a username) is hashed into a byte slice. This
    is handled by the public `jdenticon` package.

 2. Generator: The `Generator` struct is the heart of the engine. It consumes the
    hash to deterministically select shapes, colors, and their transformations
    (rotation, position).

 3. Shape Selection: Based on bytes from the hash, specific shapes are chosen from
    the predefined shape catalog in `shapes.go`.

 4. Transform & Positioning: The `transform.go` file defines how shapes are
    positioned and rotated within the icon's grid. The center shape is
    handled separately from the outer shapes.

 5. Colorization: `color.go` uses the hash and the `Config` to determine the
    final hue, saturation, and lightness of the icon's foreground color.

The output of this engine is a `[]RenderedElement`, which is a list of
geometries and their associated colors. This intermediate representation is then
passed to a renderer (see the `internal/renderer` package) to produce the final
output (e.g., SVG or PNG). This separation of concerns allows the core generation
logic to remain independent of the output format.

# Key Components

- generator.go: Main generation algorithm and core deterministic logic
- shapes.go: Shape definitions and rendering with coordinate transformations
- color.go: Color theme generation using HSL color space
- config.go: Internal configuration structures and validation
- transform.go: Coordinate transformation utilities

# Hash-Based Determinism

The engine ensures deterministic output by using specific positions within the
input hash to drive shape selection, color generation, and transformations.
This guarantees that identical inputs always produce identical identicons while
maintaining visual variety across different inputs.
*/
package engine
