In XYK pool implementation - there is a new pool created for each asset pair. In HDX, we have only one pool.
Therefore, storage needed is little different:
PoolAddress Pool account which must be set in genesis state.
Assets Assets in the pool.
This holds all the information for an asset in the pool. The value is a tuple (AssetId, Balance) where the first element is ID assigned by asset registry, and the select element is current weight of the asset in the pool.
Add new token to the pool with initial liquidity given by amount and initial price.
Add and remove liquidity are easy to understand.
Sell and buy extrinsics are actually the same as the ones in xyk pallet.