# riichi v0.2.0 - Table of Contents

> Riichi Mahjong engine

## Pages

- [Riichi](readme.md)

## Modules

- [Riichi](Riichi.md)
- [Riichi.Action](Riichi.Action.md): Definition of engine input types, which we call Actions.
They represent all operations a player can perform.
- [Riichi.Action.Ankan](Riichi.Action.Ankan.md)
- [Riichi.Action.Chii](Riichi.Action.Chii.md)
- [Riichi.Action.Daiminkan](Riichi.Action.Daiminkan.md)
- [Riichi.Action.Discard](Riichi.Action.Discard.md)
- [Riichi.Action.Dora](Riichi.Action.Dora.md)
- [Riichi.Action.Kakan](Riichi.Action.Kakan.md)
- [Riichi.Action.NineTerminalDraw](Riichi.Action.NineTerminalDraw.md)
- [Riichi.Action.Pon](Riichi.Action.Pon.md)
- [Riichi.Action.RiichiPassed](Riichi.Action.RiichiPassed.md)
- [Riichi.Action.Ron](Riichi.Action.Ron.md)
- [Riichi.Action.Skip](Riichi.Action.Skip.md)
- [Riichi.Action.Tsumo](Riichi.Action.Tsumo.md)
- [Riichi.Actor](Riichi.Actor.md)
- [Riichi.Decomposer](Riichi.Decomposer.md): Implementation of the hand decomposition algorithm.
- [Riichi.Decomposer.RegularHand](Riichi.Decomposer.RegularHand.md)
- [Riichi.Decomposer.SevenPairs](Riichi.Decomposer.SevenPairs.md)
- [Riichi.Decomposer.ThirteenOrphans](Riichi.Decomposer.ThirteenOrphans.md)
- [Riichi.Engine](Riichi.Engine.md): **Internal**
Implements the game state machine.

- [Riichi.Engine.ActionPredicate](Riichi.Engine.ActionPredicate.md): **Internal**
Contains functions listing allowed actions for given engine state.
Serves as the backbone for validating submitted actions.

- [Riichi.Engine.State](Riichi.Engine.State.md): **Internal**
Defines the structure of the state backing the game state machine

- [Riichi.Engine.State.RoundResult](Riichi.Engine.State.RoundResult.md)
- [Riichi.Event](Riichi.Event.md): Definition of engine output types, which we call Events.
They represent everything that can happen in the game.

- [Riichi.Event.Ankan](Riichi.Event.Ankan.md)
- [Riichi.Event.Chii](Riichi.Event.Chii.md)
- [Riichi.Event.Daiminkan](Riichi.Event.Daiminkan.md)
- [Riichi.Event.Discard](Riichi.Event.Discard.md)
- [Riichi.Event.Dora](Riichi.Event.Dora.md)
- [Riichi.Event.Draw](Riichi.Event.Draw.md)
- [Riichi.Event.GameEnd](Riichi.Event.GameEnd.md)
- [Riichi.Event.GameStart](Riichi.Event.GameStart.md)
- [Riichi.Event.Kakan](Riichi.Event.Kakan.md)
- [Riichi.Event.Pon](Riichi.Event.Pon.md)
- [Riichi.Event.RiichiPassed](Riichi.Event.RiichiPassed.md)
- [Riichi.Event.RoundEnd](Riichi.Event.RoundEnd.md)
- [Riichi.Event.RoundEnd.ReadyHand](Riichi.Event.RoundEnd.ReadyHand.md)
- [Riichi.Event.RoundStart](Riichi.Event.RoundStart.md)
- [Riichi.Hand](Riichi.Hand.md)
- [Riichi.Hand.Meld](Riichi.Hand.Meld.md)
- [Riichi.Hand.Meld.Ankan](Riichi.Hand.Meld.Ankan.md)
- [Riichi.Hand.Meld.Chii](Riichi.Hand.Meld.Chii.md)
- [Riichi.Hand.Meld.Daiminkan](Riichi.Hand.Meld.Daiminkan.md)
- [Riichi.Hand.Meld.Kakan](Riichi.Hand.Meld.Kakan.md)
- [Riichi.Hand.Meld.Pon](Riichi.Hand.Meld.Pon.md)
- [Riichi.Player](Riichi.Player.md)
- [Riichi.Player.FuritenFlags](Riichi.Player.FuritenFlags.md)
- [Riichi.Player.RiichiFlags](Riichi.Player.RiichiFlags.md)
- [Riichi.Round](Riichi.Round.md)
- [Riichi.Rules](Riichi.Rules.md)
- [Riichi.Scoring](Riichi.Scoring.md)
- [Riichi.Scoring.Fu](Riichi.Scoring.Fu.md)
- [Riichi.Scoring.Input](Riichi.Scoring.Input.md)
- [Riichi.Scoring.Yaku](Riichi.Scoring.Yaku.md): **Internal**
Yaku detection algorithm.
- [Riichi.Tile](Riichi.Tile.md)
- [Riichi.TileSet](Riichi.TileSet.md)
- [Riichi.Util](Riichi.Util.md)
- [Riichi.Wall](Riichi.Wall.md)

