[
    {
        "name": "Objecthash",
        "comment": " Objecthash implementation.\n\nBased on the implementation from Ben Laurie <https://github.com/benlaurie/objecthash>\n\n@docs objecthash, fromJson\n\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "fromJson",
                "comment": " Hash a Common JSON blob and return it as a hexadecimal string\nrepresentation.\n\nIf you need more control over the JSON decoder, check the `Objecthash.Json`\nmodule.\n\n",
                "type": "String -> Result String String"
            },
            {
                "name": "objecthash",
                "comment": " Hash an `Objecthash.Value` and return it as a hexadecimal string\nrepresentation.\n\nIf you need more control over the hash, `Objecthash.Hash` offers a range of\nfunctions to operate on elm values and lists of bytes.\n\n",
                "type": "Value -> String"
            }
        ],
        "binops": []
    },
    {
        "name": "Objecthash.Hash",
        "comment": " Functions to hash values.\n\n\n# Types\n\n@docs ByteList\n\n\n# Convert from and to lists of bytes.\n\n@docs bytes, toHex\n\n\n# Primitives\n\n@docs unicode, redacted, null, int, float, bool\n\n\n# Collection primitives\n\n@docs list, set, dict\n\n",
        "unions": [],
        "aliases": [
            {
                "name": "ByteList",
                "comment": " A list of bytes.\n",
                "args": [],
                "type": "List Int"
            }
        ],
        "values": [
            {
                "name": "bool",
                "comment": " Hashes a boolean.\n\n    toHex (bool True) == \"7dc96f776c8423e57a2785489a3f9c43fb6e756876d6ad9a9cac4aa4e72ec193\"\n\n",
                "type": "Bool -> ByteList"
            },
            {
                "name": "bytes",
                "comment": " Hash an Objecthash Value.\n\n    bytes VNull == [27,22,177,223,83,139,161,45,195,249,126,219,184,92,170,112,80,212,108,20,129,52,41,15,235,168,15,130,54,200,61,185]\n\n",
                "type": "Value -> ByteList"
            },
            {
                "name": "dict",
                "comment": " Hahes a dictionary of ByteList.\n\n    Dict.fromList [(\"foo\", int 1)]\n        |> dict\n        |> toHex\n    == \"bf4c58f5e308e31e2cd64bdbf7a01b9b595a13602438be5e912c7d94f6d8177a\"\n\n",
                "type": "Dict String ByteList -> ByteList"
            },
            {
                "name": "float",
                "comment": " Hashes a float number. Note this function normalises values following the\nsame algorithm implemented in the original Objecthash implementation.\n\n    toHex (float 6.1) == \"43f5ebd1617989a69b819ed3a246c9e59468d6db90c29abdd3c8c1f17ffc365a\"\n\n",
                "type": "Float -> ByteList"
            },
            {
                "name": "int",
                "comment": " Hashes an integer.\n\n    toHex (int 6) == \"396ee89382efc154e95d7875976cce373a797fe93687ca8a27589116644c4bcd\"\n\n",
                "type": "Int -> ByteList"
            },
            {
                "name": "list",
                "comment": " Hashes a list of ByteList.\n\n    [unicode \"foo\", int 6]\n        |> list\n        |> toHex\n    == \"28dbb78890fb7b0462c62de04bcf165c69bd65b9f992f2edd89ae7369afa7005\"\n\n",
                "type": "List ByteList -> ByteList"
            },
            {
                "name": "null",
                "comment": " Hashes a null value.\n\n    toHex null == \"1b16b1df538ba12dc3f97edbb85caa7050d46c148134290feba80f8236c83db9\"\n\n",
                "type": "ByteList"
            },
            {
                "name": "redacted",
                "comment": " Hashes a redacted stringified list of bytes.\n\n    toHex (redacted \"**REDACTED**480499ec4efe0e177793c217c8227d4096d2352beee2d6816ba8f4e8a421a138\") == \"480499ec4efe0e177793c217c8227d4096d2352beee2d6816ba8f4e8a421a138\"\n\n",
                "type": "String -> ByteList"
            },
            {
                "name": "set",
                "comment": " Hashes a set of ByteList. Note that this function receives a `List` but\ntreats it as a Set (i.e. removes duplicates).\n\n    [unicode \"foo\", int 6]\n        |> set\n        |> toHex\n    == \"cf38664185ed5377fee384d0a37bdb36681a16d72480f21336e38a493a8851b9\"\n\n",
                "type": "List ByteList -> ByteList"
            },
            {
                "name": "toHex",
                "comment": " Transform a list of bytes into its hexadecimal string representation.\n\n    (toHex [27,22,177,223,83,139,161,45,195,249,126,219,184,92,170,112,80,212,108,20,129,52,41,15,235,168,15,130,54,200,61,185]) == \"1b16b1df538ba12dc3f97edbb85caa7050d46c148134290feba80f8236c83db9\"\n\n",
                "type": "ByteList -> String"
            },
            {
                "name": "unicode",
                "comment": " Hashes a unicode string.\n\n    toHex (unicode \"foo\") == \"a6a6e5e783c363cd95693ec189c2682315d956869397738679b56305f2095038\"\n\n",
                "type": "String -> ByteList"
            }
        ],
        "binops": []
    },
    {
        "name": "Objecthash.Json",
        "comment": " Helper functions to transform JSON to the Objecthash values.\n\n@docs decode, decodeWith\n\n\n# Decoders\n\n@docs dict, list, bool, float, int, null, set, string\n\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "bool",
                "comment": " ",
                "type": "Decoder Value"
            },
            {
                "name": "decode",
                "comment": " Expects a JSON string and returns the result of attempting to decode it\ninto an AST of `Objecthash.Value`.\n",
                "type": "String -> Result String Value"
            },
            {
                "name": "decodeWith",
                "comment": " Decodes a JSON string with the given decoder.\n",
                "type": "Decoder Value -> String -> Result String Value"
            },
            {
                "name": "dict",
                "comment": " TODO: Parametrise internal decoder\n",
                "type": "Decoder Value"
            },
            {
                "name": "float",
                "comment": " ",
                "type": "Decoder Value"
            },
            {
                "name": "int",
                "comment": " ",
                "type": "Decoder Value"
            },
            {
                "name": "list",
                "comment": " TODO: Parametrise internal decoder\n",
                "type": "Decoder Value"
            },
            {
                "name": "null",
                "comment": " ",
                "type": "Decoder Value"
            },
            {
                "name": "set",
                "comment": " TODO: Parametrise internal decoder\n",
                "type": "Decoder Value"
            },
            {
                "name": "string",
                "comment": " ",
                "type": "Decoder Value"
            }
        ],
        "binops": []
    },
    {
        "name": "Objecthash.Value",
        "comment": " Value operations.\n\n@docs Value\n\n@docs toString, toJsonValue\n\n@docs null, list, int, float, string, dict, bool\n\n",
        "unions": [
            {
                "name": "Value",
                "comment": " Objecthash Value.\n",
                "args": [],
                "cases": [
                    [
                        "VBool",
                        [
                            "Bool"
                        ]
                    ],
                    [
                        "VDict",
                        [
                            "Dict String Value"
                        ]
                    ],
                    [
                        "VFloat",
                        [
                            "Float"
                        ]
                    ],
                    [
                        "VInteger",
                        [
                            "Int"
                        ]
                    ],
                    [
                        "VList",
                        [
                            "List Value"
                        ]
                    ],
                    [
                        "VNull",
                        []
                    ],
                    [
                        "VSet",
                        [
                            "List Value"
                        ]
                    ],
                    [
                        "VString",
                        [
                            "String"
                        ]
                    ]
                ]
            }
        ],
        "aliases": [],
        "values": [
            {
                "name": "bool",
                "comment": " ",
                "type": "Bool -> Value"
            },
            {
                "name": "dict",
                "comment": " ",
                "type": "Dict String Value -> Value"
            },
            {
                "name": "float",
                "comment": " ",
                "type": "Float -> Value"
            },
            {
                "name": "int",
                "comment": " ",
                "type": "Int -> Value"
            },
            {
                "name": "list",
                "comment": " ",
                "type": "List Value -> Value"
            },
            {
                "name": "null",
                "comment": " ",
                "type": "Value"
            },
            {
                "name": "string",
                "comment": " ",
                "type": "String -> Value"
            },
            {
                "name": "toJsonValue",
                "comment": " ",
                "type": "Value -> Value"
            },
            {
                "name": "toString",
                "comment": " ",
                "type": "Value -> String"
            }
        ],
        "binops": []
    }
]