module Text.IPv6Addr.Types where

import qualified Data.Text as T

data IPv6Addr = IPv6Addr !T.Text

instance Show IPv6Addr where
  show (IPv6Addr a) = T.unpack a

data IPv6AddrToken
  = SixteenBit !T.Text  -- ^ A four hexadecimal digits group representing a 16-Bit chunk
  | AllZeros            -- ^ An all zeros 16-Bit chunk
  | Colon               -- ^ A separator between 16-Bit chunks
  | DoubleColon         -- ^ A double-colon stands for a unique compression of many consecutive 16-Bit chunks
  | IPv4Addr !T.Text    -- ^ An embedded IPv4 address as representation of the last 32-Bit
  deriving (Eq, Show)