module ProAbstract.Metadata.HasMetadata
    ( HasMetadata (..), Metadata
    ) where

import ProAbstract.Metadata.MetadataType (Metadata)

class HasMetadata x where
    type MetadataOpticKind x
    metadata :: Optic' (MetadataOpticKind x) NoIx x Metadata

instance HasMetadata Metadata where
    type MetadataOpticKind Metadata = An_Iso
    metadata :: Optic' (MetadataOpticKind Metadata) NoIx Metadata Metadata
metadata = Optic An_Iso NoIx Metadata Metadata Metadata Metadata
-> Optic An_Iso NoIx Metadata Metadata Metadata Metadata
forall destKind srcKind (is :: IxList) s t a b.
Is srcKind destKind =>
Optic srcKind is s t a b -> Optic destKind is s t a b
castOptic Optic An_Iso NoIx Metadata Metadata Metadata Metadata
forall a. Iso' a a
simple