{"_id":"@hyperlane-xyz/hyperlane-token","_rev":"65-bed5f103a4dad186cb26fb1d95f37610","name":"@hyperlane-xyz/hyperlane-token","dist-tags":{"beta":"1.5.4-beta0","latest":"1.5.8"},"versions":{"1.0.0-beta1":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.0.0-beta1","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.0.0-beta1","maintainers":[{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"001ed11c5dde99866c1b8e934dad1b29a0edf823","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.0.0-beta1.tgz","fileCount":605,"integrity":"sha512-8axuqyonwsDlI2GRYOP9ZpBlI1h27eqFixyb9Ntw+A4sUXew18tSI1oIaZADp30iFhuFWY7H3XMl46NEyFAD9A==","signatures":[{"sig":"MEQCIGy3vfbIVPRHHzFUKUD+qihL/3Y6Q9teJSb9koOd4ujIAiAkOvHJqc2FcU/K1bQEq4G6KZoG4H1NXu2nqX1vMEogxQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2171712,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjnMhyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp23g/8DWYDLkuPn9KsdNNj80HU6N1KLm685j+cA68+megHIed8vcPU\r\nBPi5Je54e2+bHi/jYrdgOqodmMcnGvB/d69rWydHuJxST1e8zMQvlxhW5a0c\r\nNkdaNrzbMhMEv6QlpJQki+PM5S+H8IBXPKLJl/XjUhrKYZM0EN2JTnWvKARx\r\nwoY6TOfDR/y+AzvBDUlOPz3F6ta1+9TalsUMA2scSeEtsscdZRmuMykHyC8X\r\nCW2d25zAQVmEF5YIjPDbZ0HsbSjG6qCC2zZFPB9Iy+B0SUF8tz3h30oXFZRA\r\n184dRakLOJclIUI0fFLWuKsmT8Kustev5a3lHlAFXfSdhFbiACvSQzgiKRiK\r\n1VcJLQdYWQXnzfNegtfz9OaTtto27sbHspmXI9EKfofCyxKStSXrKqEP5f8V\r\ndiDf07HrAtwRvXv2uWSRp6TU9c2eCcANbhdOzaX3bSaFXduZ8oLRhrAshMK4\r\noMNrtZo//ZF78RblCnrWRn9myZ7YQCgXvRyOVLxQpSmyWyLCqYwxeqhQhNiK\r\nPWU8nfu7RrFWfOm7NOiTnWc33HYuLm5shb4WfjaZMgp7hBU6W68d7LiwAidZ\r\nB9tbnaWoE8YzkoasjJLcj77gh/y2cHL0Ni0G32/pzgrqSgDa/ekkEVmq08+V\r\nL5mR71oUwquZpTfO/pELWagJujMAXmVKL+c=\r\n=sJSL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8d864898c64440f0f5ad6f2fb6a27ec84efd005e","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test"},"_npmUser":{"name":"yorhodes","email":"email@yorke.dev"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.13.2","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.13.2","dependencies":{"ethers":"^5.6.8","@hyperlane-xyz/sdk":"1.0.0-beta1","@hyperlane-xyz/core":"1.0.0-beta1","@hyperlane-xyz/utils":"1.0.0-beta1","@openzeppelin/contracts-upgradeable":"^4.6.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.0.5","@nomiclabs/hardhat-waffle":"^2.0.2","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.0.0-beta1_1671219314646_0.7857851133281206","host":"s3://npm-registry-packages"}},"1.0.0-beta2":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.0.0-beta2","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.0.0-beta2","maintainers":[{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"ea4258f62d1a26343b99ac568dd42e85122818f9","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.0.0-beta2.tgz","fileCount":603,"integrity":"sha512-MkC9RJ4+rJ9nfABq1wKec8GZArmwW7dqF89h5KEm2zvHbPDmjM7fvp3qO01KDzWlbNJcdcH2/SYsL160QPleQw==","signatures":[{"sig":"MEYCIQCjpmNb8xckmih2/W+wTXEHem41BnMBnBL0FcjJySsykwIhALw1C+Orauc1dbkN5/PLEd5Y+Sl44QHA1+TZgwCoalJx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1992081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjoztOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpdmA/9FGoWN8kS6ltiaWc+KlhPJ4W7fzkgT1XjSBKA0LQAxw86GM6Q\r\n6YHxSvI74TJRlwRSAZYevCnNhuXdqWQAc9nK4Dedg2j+IpoI0uUHU8zVBFam\r\nwwie7LDNVSUcMY6fHs/h1XdjEB1LCMlHUCBdn3ploaDtKyLzIeVxABiGuKlj\r\nhd+Gk9ztfOGyFLPP3sA/crnsIA9ztMJOG/6nAJf8RdwkZhq88eBnnA+cxoBJ\r\nBE5r+knILB9YYjVJ2k/55UWDF4dKcC8/gIHfOaZ5btCgvIolyWwJpgTIwy6W\r\n3Hj8uBT4+B3+sbIu8XWP6T0Gw3p6N1EtkHJK/kMay9sXULeuhc4nzlwH5sur\r\nWwQNgo8YPSYmSEpPw8va/gBzNECuIwM1GtgCz7Ca0v8v214pSKoGHS9xOxo7\r\nRIt6BZB/sNhm5EHRafc8TonR6WXolMkOMyBsesqPW1mK6FxqYz7rUsETEDew\r\nc1GUCFoHL3tOWlORcBIgTy+zhQ8yPc62uY6KTSYiPMp59aCmJyT3PsDzB2iq\r\ny8y5m/+IJzuyPwd2L56YCejD+TivBnxFbnSi2GvkeWQQg071lOwHb+w3ONwB\r\niW/eVk35ukSJ6oBktik++9x7XhAsXpSdyknJr92ONN7UbBMjwAAqRzNOYxEs\r\nJfCdrR9NkDwg5W0OCixPyJv7RTRjzntHWjc=\r\n=RM8h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"9a662ffa7ee06330a6d841e8e8fcd58ca489ded9","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.6.8","@hyperlane-xyz/sdk":"1.0.0-beta2","@hyperlane-xyz/core":"1.0.0-beta2","@hyperlane-xyz/utils":"1.0.0-beta2","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.0.5","@nomiclabs/hardhat-waffle":"^2.0.2","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.0.0-beta2_1671641933744_0.11256394029883321","host":"s3://npm-registry-packages"}},"1.0.0-beta3":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.0.0-beta3","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.0.0-beta3","maintainers":[{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"84563491cc9e4f9dcd50cbb6a084ab419df6132d","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.0.0-beta3.tgz","fileCount":603,"integrity":"sha512-9mKXSyRMnkuvpZlCphP4dTM2w/NfQenDe6plTb9SJowJI7qaO+svMqDjmeOGDDXjpXc9l5WnbKjNZmffkavA4A==","signatures":[{"sig":"MEQCIFyfbRIOKFg4Z+e08/xXCI++GVgSE0Fsig95BSWSgOU8AiAXBsSOlUY4sV0tS+NeDIwhTOCxjB3MHGv0qT1kJG9x4g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2022651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjo9SdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpyVxAAhfRhkJPRpooBfU3r3xISkGwZqaW/535jCY7c5x1eCWLTeIWk\r\nx/3Rp2Mie/x1kxqn5wmNHZaDNdlz+v1B3M9HH4YkKaxKQRSj5hljYrf4ru0J\r\nzr3/ZUR3eu/4n2PHIwktELx+AvsdwTfzP0IPUinpdCms3N5sgRgT3o/9nY7W\r\nwNKW/KcYGIxhkqKTRmozbmUX+v44q2wcTk49sttvUb4NhY5w+2FlpNEhqoqB\r\nQlJSGHRtJhA4ILG3rhKGwfjevM1Vv3g2UJB6v6WWDbpn+OAdBFIXYPv8Vh8L\r\nVzKlS5T7ZftMDaypo999XmCtBxjX2qtNqRwJGLLkw9T3co3nXQT5aFoUiVNF\r\n9aSZ6BRPw1JaJzy6MbGNcK6OXLKbJc+fIwxEgZlWTY+RaTaaOkMMM1wRxDE9\r\nD/nAB7NTFetzTfmiJNhCOstbteefVuymSmXLPxdogvqLtN/rJq7JVqGh/aME\r\nLRSaFFd9By1/1BxyUxdq8HJ1BDo68XVRP2pIg6aRiJ+DxH85buW47RpeZgAr\r\nuf4UUUeemZmAF2Ixb/6KUJnHTmlKSCbCkauPnu2rhkq2EmW+2KxGzkPri+Ni\r\noQEEbtkUlw4PPTdT2njXySIEC0eshNG5bB84X7qzhmerPc8KCXENk7zylf57\r\nzd1ItDiHneFlDgLtkZkYD7wW/HjvIIhgpTA=\r\n=Bhjh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e224ba6ed6134dfdeda29bbc77842b929871a2ca","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test"},"_npmUser":{"name":"yorhodes","email":"email@yorke.dev"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.6.8","@hyperlane-xyz/sdk":"1.0.0-beta3","@hyperlane-xyz/core":"1.0.0-beta3","@hyperlane-xyz/utils":"1.0.0-beta3","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.0.0-beta2","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.0.5","@nomiclabs/hardhat-waffle":"^2.0.2","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.0.0-beta3_1671681181241_0.27501226720056393","host":"s3://npm-registry-packages"}},"1.0.0-beta5":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.0.0-beta5","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.0.0-beta5","maintainers":[{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"14ab1b2248daa786f9847c693c0a3fd3ecaf3159","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.0.0-beta5.tgz","fileCount":1193,"integrity":"sha512-LMm6Axkcr7eMyZRvTKR7T36+uHfOddX/t/OLCc4k4hgopFeaNZ7aVPItVz2tdDSyzbRKtdnqYYmZw6Z+tyX/nA==","signatures":[{"sig":"MEYCIQDvj7P2RQczsbrNwzi2gEWX3fmYryAPmV3h0SEcfe2XoAIhAJ2bXjARHx3o740uonVTxI3OhQxoclyIzjajhoNzaiVK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4407223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjs840ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/hw//X37HV/JUHVKlxqeO/yRHLtcWDuigBiaEAn4jaCKLf9YA/g5j\r\nKVcBUbOwOppsLcLl36+Rkn1C16xgvRYL9V8IJySEdZIvxD6Pr0I0aqqRWaGO\r\np3M0EWTPP757xhptQO+9bHYCh5InoForXUE4ITO5shuO9pp/t9ZIKUoJjuqA\r\nkPk+/GlpQYj79Rrt9sLgWfKL97gI639HhA8wjrBHDX4sbcqPsKswfDJWQb+r\r\n/lV5z8DC/5r6G0s1eWv/bb6djS7WPtlrvOm+1I8EV+YJgzI6hZMFYEDtZLuH\r\npsM8aMXB88fqRAKVu92Ka0+NNBwy+uAIzmEOrPSbbbIxow59Iwph3XPF0poK\r\nA7kHaIsKdFCjdtK0ZPatuPj4QstThgGMKp1P9Ey70t/8WvEjV5BmMITO85JW\r\nQ641U9U4tSN7ypytPfZvaJ8Zc6SD8KRnY0dtEsF9NZ7JljS0imBpxVLU7kdK\r\nVOqhcJULM4SzV2LpW8eNK2BOIiix6UAhBYk8thuUToJs5I78d0Ex+G3gYf2q\r\nj/wf9rzbmXqNvjbbc7GEH4gQI0VuwOj2pPtY2bgKMND5PDW1ks7hMhPNjb9E\r\nEXrJPq7tzhz8Yg5EL66hEJS96di2ERYphjl0XxZ3i6zZDHchQVtdt8NfHRKx\r\nOP1nvvpg2epIVPCO2/NxJyKigKRIczPRIqI=\r\n=c6Sa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"de69913a3236a526866bcafac22b7f7c684b6ee5","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","build:dev":"hardhat compile && tsc --project ./tsconfig.json","build:publish":"hardhat compile && tsc --project ./tsconfig.publish.json"},"_npmUser":{"name":"nambrot","email":"nambrot@googlemail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.0.0-beta5","@hyperlane-xyz/core":"1.0.0-beta5","@hyperlane-xyz/utils":"1.0.0-beta5","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.0.0-beta5_1672728115912_0.4829421232544795","host":"s3://npm-registry-packages"}},"1.0.0-beta6":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.0.0-beta6","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.0.0-beta6","maintainers":[{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"d154f605bfcdd52591f71fd7fdf7af0637fa8b3e","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.0.0-beta6.tgz","fileCount":597,"integrity":"sha512-2bkzRXEfgkwC6RIhOvLZyocOyOD+wztP/to1Sr+YyrCprwRJsSCvOcdpoyF4SuhvY7Uo8XHeQd8AYYlzKfi3UA==","signatures":[{"sig":"MEYCIQDc5wealzgJHPsyiLun0rHsu+iMJYkfUXU9zV8AYqF5ZwIhAIjmOKDpBLYd2Q8VFPTpInIknKaQFrm2n9X+S1TnXIml","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2202709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjtK7lACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqzKA//TMOfezzk46LgyeSeX8L/+iESM4BPqLLXLgsjEQK/yJP/wsCd\r\n3AEa1hDKYRn11QbVY11q3QZVssTEKp3nqvluiPeVv9A5io344fE4fYNugRrg\r\nvv25Etc3zKiv7nvLMSO4zfgThpg84JA4SIMfkaL0l+OnulQcuzrUP3qLY2T0\r\ntqcPPA0Xe4TTVqnYyOv0DJ6v+K4YZkzsfJuSSpiCJRLzTO9K9IwyrAkMsuT1\r\n28WDJi0VNcBpgN46lhy+qu5AkaQOoOgddtBWzMsoQEQShdQXUIST+Uvs3qDA\r\neJCFipsF9eQGt0soULGM3Zfq/APnXdBdp/pYDCShZuQmpmyjHFD6/DuZQWFd\r\nYM/JHx/TLGaZMcC1qVd2awKbNa6sFUVTraBGbJVjn1p8uIdBhSPK8e9lKnPd\r\nDa10zP2oxeEPccc12hKvMIdI/ncew9uCOYyKhik6VyOsnshphD5fRbGVeOZW\r\n4Dw5NNF/jyM5iSLgWNSBtsZc5aqWCGwhOg6dt0h+oFcudpJARcn5YNOvJKN6\r\nXWFbMLnIJPZ87xxuBezLYa7TdCjZ9bN/Ol9dYVnpWAZRLa/ar2M1DfKjHiGn\r\niltORHQ5GuFoXE690uhv3hN6r9Vmnw+y+gqTA4zm3awkCDo+t1ae+YgLp8LD\r\nCkUPulcG6XxBYWD+uB6JkbJ7IRJFKvN4dz8=\r\n=eZDE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5afcc623c346538e242ccb03b155dc696a3c53c3","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","build:dev":"hardhat compile && tsc --project ./tsconfig.json","build:publish":"hardhat compile && tsc --project ./tsconfig.publish.json"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.2","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.18.1","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.0.0-beta6","@hyperlane-xyz/core":"1.0.0-beta6","@hyperlane-xyz/utils":"1.0.0-beta6","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.0.0-beta6_1672785637540_0.11338090531691392","host":"s3://npm-registry-packages"}},"1.0.0-beta7":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.0.0-beta7","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.0.0-beta7","maintainers":[{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"c3f74fc9d4aed4e0e716160b01e52309ef5eee3a","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.0.0-beta7.tgz","fileCount":597,"integrity":"sha512-E5izpakWKzgTFprXxxMgUdICed1nGqjwJsXS7PLqhA9TyRGjBeQDfXAaOTHshHnqlKNaLBrxD9xfq/zKARuTMQ==","signatures":[{"sig":"MEQCICjMyVsI/mCvObk3HqLC5V7rFnxAL/D0WL4VfRxWPrk+AiBlGwZEXD0b006VwUi8EKQ+gVcW002mcX1/sYkfCXz6MA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2204668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvdUBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpjhw//ei2EKwYmyqGaeHwW7EgOM1kpr+/bi8Fh/XnLcgWd9KNb0xfz\r\n+pAa3sOpT+0UeOBypPPMLD9SU4LubJXQrXp6c3Zh8CuLH44lAgtrVouzHyrq\r\nwyCo6bKBUYNTuYfIe0Hp/p7DamcDg1+NStV9zK36oNFW7HpgUiBG0xpU0AyY\r\naNmGX8AAlybYP2o45HvpjyeTwA7PUnZyE/QbSc6KQ39T8fdoVWEcdC5XbakJ\r\nGZKmFwfM2tKDUs4KzStZlGZWOUsi/3ES3TMdHTdl7tiYahBlB3d65teW+iCW\r\nSnhLwli2Swk27b4ylfLU3ibtjlUPJomd35bzr636gIDJDphINJTG8/N38zCL\r\nSQeAPH+H8aZ4r21BiwvVd/7Bz8bs6FqVIQlDVEJYmlfT0TN8iQHuZr8JrVuO\r\n/tiYQKuSJWG+rsMEUYeUCpErw7LYrLi6rBzUAny7uM6yA49fcHe5rsXlXABl\r\nhuoN2Y8XdPdWUOp1Cs41I74jfvWWfC/h8IwO5tpde7iOkOXVTflulipZI4fO\r\nn9KhcRTHD/XQmEJey3IfZ49G2/2rUUEa6D5nFhAYj/4FVBYDRQSucbaFqScn\r\ncyx8TrOghyAoPANio2PUXly7GTsSx1wwSq3lMt6/oCFAf9KRliIefhefQWQw\r\nhayAdeo8MQMd6RtJsMY+q07oHajwSJ4ztiY=\r\n=2i7h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"befc8d4cc876a046d293737a4933b319b1fd3505","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test"},"_npmUser":{"name":"yorhodes","email":"email@yorke.dev"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.0.0-beta7","@hyperlane-xyz/core":"1.0.0-beta7","@hyperlane-xyz/utils":"1.0.0-beta7","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.0.0-beta6","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.0.0-beta7_1673385217632_0.3457988214329355","host":"s3://npm-registry-packages"}},"1.0.0-beta8":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.0.0-beta8","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.0.0-beta8","maintainers":[{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"4b0b7f2e023b8c6dca5610c855ca785027b19797","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.0.0-beta8.tgz","fileCount":597,"integrity":"sha512-daRJsG668Nx9q6EVcCqGd/8ObFFxNNQmA0s8ogfSlsQmKic0JXruSXBwbNsalKJigsTiy6GOFXdtFICNOCOVzA==","signatures":[{"sig":"MEQCIDWw6FFCyq2HV9n+QK4jE0puQ+NY66M8sRfbGq7lyED3AiA9cH+4c84EqGr/eChjZQTJ+a/dgC2p3zRTfEBaXSj3kA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2204668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvdaiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq0uA//WeD4WPQyPzIUIOHvIjrAj25xoz6YhPW7IEtyUP/uOx3uiKv3\r\nhPX6VeBgbQPzzuPOxA/doTDR++4TNDBAPHcO+BTgRi9RzIYiove5Y1ThN6j+\r\n1GsHKiL+OzTWGvrLTBtFaYfKPZp29inaqPN62Mgu28Mlh5CjMkxoaURnao95\r\ncVq/kPtkj0GIaGpusUGqacZPffDzdXw2O6ZUF6zpy3aZuPOCTyl4R7fgl2QS\r\nzOQkocZRfMwR5gwMcvYgN7n+cdvx40eVTcBwlOAxLREItDbMFkPJNY3R1ZI+\r\ndTm59z+KX1Plf6qpx85pyUC7vidm7pjoIUnRrdnva9wL5e3HgtWQENNYuG/k\r\nV4FrDXJnk5/GXZHw2/xiH5IZpW7k9XbtHw7ns8A+l9EpDpQfi0CAD3duMITE\r\n2yNK4kbZqU9Qu0sHKwLv+d4H1fOe/Q/oiWEVmyUuc/xL8W405xQ0C7q0DXjp\r\niI78PE5ed1jdKxaJ5rENaB9g0TP1ZW5zOQQK/BvGTFbUg7DFukZhw95o2/bp\r\nyU1mZtvRO6sRi9dxKLol4u+H6+i2QiT7QRVX0ihVJOAcNiF97XamZsqzxDxf\r\nvsVm2RcxxcPQgJmEl5AeNVc1chxpd9KJIvmNntq7F1PePHwOKqrmtQ5N638s\r\nBkpMhh1ulZ2VTA0XJNv1Zco0dOINcqjDGkE=\r\n=HWzS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"befc8d4cc876a046d293737a4933b319b1fd3505","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test"},"_npmUser":{"name":"yorhodes","email":"email@yorke.dev"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.0.0-beta8","@hyperlane-xyz/core":"1.0.0-beta8","@hyperlane-xyz/utils":"1.0.0-beta8","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.0.0-beta6","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.0.0-beta8_1673385634604_0.0005525226100704383","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.0.0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.0.0","maintainers":[{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"7d42718b1126e7b4e672da8cd684e884372de7f3","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.0.0.tgz","fileCount":597,"integrity":"sha512-s15Qd3Z0KY2uHCpq2ucVL85jK3qSePOyA+I17iSVoDqjp0kqYx+GX+xkleuchLhf81MjuFdr2639jb+7dOHiZA==","signatures":[{"sig":"MEUCIG2YCW2eKN7YrNJlED0T7hGo5vTXknWReL1CH1TKClhEAiEA/Za07ftX4OwnxqknLU+wS5Xs3jXFp5PChbUKRl09bs4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2206625,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjwGpuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp8mw//f93nxxC66eL4SKL2Nk9MDKB8sVI7nkmbYjqkOUgyf0hfwZpM\r\n/itq6LY4bYCl2A87l+SaeL20ICGGBYgIB6oSjtjDrmb8DgNf8BXTHnSOmMu5\r\nX5K0pd6eSMdXk8S/Xj0TiroREYhlE4Cn1QSuizFypwaEbHEDf0FhTlwnOSfs\r\n/ksEFyHb2q798+Uvk4mDHbTVkFZzVmL8VVmXhJDU5j3KyAV7ur4RBLECDOqS\r\ntmDBmoJMoepdDd+OZhpNkgFTG6gT6tVg+ex3Ilb1OyjgOieMhTKfkDSnhufe\r\n+QkLU2vV5pxrZqm2q8l7/mG1nB8mV3VzO7f0a2rq2CNZLYm+hHICKxfl05eZ\r\nHSWV2M0koNrhlo69psk3Yx0qpgqV6Fswy0Tbss4NDubuXJcq800/vL+5d4zQ\r\nNp+DnR3T5PLHUVTmmNclBI6ygm2LShZbTGaUdXj1xIA5KzL+56iL0sRX9iKs\r\nQEH/kxTqQkEzLjfYhmjarIuT0U55lYMpgWTq42a/xxABkL4bHxGGdMOXlx1l\r\nKAEuD9/2X3B8F75olvBey4337/woNqzkRPLQSrX7Mz+8+wjwMBEjBeA+Q5IW\r\nySsAukIZYJkJi2QO/06e4BAt6j2KtSG69pzm+rw5TrASWCAXeMC93FDKiUbg\r\nmbtGlFuwki3OpY1ndXAwmTGuS9bTcmCCsUo=\r\n=ZITW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"95c1b978b26e3ca17144c8ad207d223ae9e14968","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.2","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.18.1","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.0.0","@hyperlane-xyz/core":"1.0.0","@hyperlane-xyz/utils":"1.0.0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.0.0_1673554542517_0.9816634065036491","host":"s3://npm-registry-packages"}},"1.0.1-beta0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.0.1-beta0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.0.1-beta0","maintainers":[{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"d2ddcea86ad05f648f72d8310dc3db29a178cb3a","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.0.1-beta0.tgz","fileCount":597,"integrity":"sha512-evmon597NePMJtOnzrbqrieXVb7SU6cxgG04V9o/PhfF8YkL90bUqzpuZO/UvlivcTcl8Ux8EuDc4SrGuHcHgw==","signatures":[{"sig":"MEUCIQCPCIeg9VcEwy8IWyaPiljLJPpWW1ZPRSlYlsifOSPO4QIgXcWVowD89C6+qiSZ8PtNQg8U5jCusfyf7dCYVlDfi6o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2207410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0GP+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2gQ//S9Vh6Lwvi/BYO1GepwHY5bxScuvwH8BY0AX9AEyJEJlOz5TC\r\nKx/+oE5IPEFc4N60tA/wT6OqouCs2Ruz2NC0zKsB9x6eQ6vcwVkF8ZXngJFf\r\ndk21ifSQRAY0dwqlh74QcSWRmwSJBNanJJP/8fSHzR2cz/zm2rzoYCBMo0ke\r\niwX3EqVdY0OuhIv+oo9hqFC3gLRSFBKttrk3Rt6kKB0mcUR0eWojkw/xT292\r\n3yWvE2+euRf4NZU6jq1nKu1AhZoRknUOWp0MHVrIujKHZlY3+0EwjyRko7wP\r\nAkgOjsf8wt/nLDVZiCzePJybLKCy+nc3gJBqhDraJdaKln78XYlkzN7qMuOJ\r\nr69J4ROV2SDb3TQ+w+9dTXVxcnTBHfKl9eV//EIzlSITA4Rm6rFBltKbUkCV\r\nlNcUjVBn+qktBbwtdSt8PetzqfIMTtdU9R9I+Wfu0EtUOVFeevsO87a8hb7a\r\nCj004pfnMNbkcpjlrhOS0gQaEB2JSWpbRJz0V3Ud3A+8ooORUIKkm0Qze67T\r\n7Dz+c1CyROASX5LQESZspAJGAGJYeT1VxF0nSUfxdAOIRQ/G0o7aSJ3gUGbN\r\nFZgKzOtYaSPrpew4F+uJNG+tQHFIbvm7snqAfawsC7r+lUdILS+H77lsUTS5\r\nCWWdb+UlXFZ2T8U/mdh/Egy4IMQSL0crI0k=\r\n=86CP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","readme":"# Interchain tokens using Hyperlane\n\nThis repo showcases a Hyperlane ERC20 and ERC721 tokens (HypERC20 and HypERC721). These tokens extend the base standards with an additional `transferRemote` function.\n\n```mermaid\n%%{init: {'theme':'base'}}%%\ngraph TB\n    Alice((Alice))\n    Operator((Operator))\n\n    subgraph \"Ethereum\"\n        HYP_E[(HYP)]\n        O_E[/Outbox\\]\n    end\n\n    subgraph \"Polygon\"\n        HYP_P[(HYP)]\n        EthereumInbox[\\EthereumInbox/]\n    end\n\n    Bob((Bob))\n\n    Alice -- \"transferRemote(Polygon, Bob, 5)\" --> HYP_E\n    HYP_E -- \"dispatch(Polygon, (Bob, 5))\" --> O_E\n    Operator -- \"checkpoint()\" --> O_E\n    O_E-.->EthereumInbox\n    Operator -- \"relay()\" --> EthereumInbox\n    Operator -- \"process(Ethereum, (Bob, 5))\" --> EthereumInbox\n    EthereumInbox-->|\"handle(Ethereum, (Bob, 5))\"|HYP_P\n    HYP_P-.->Bob\n```\n\n## Setup\n\n```sh\n# Install dependencies\nyarn\n\n# Build source and generate types\nyarn build:dev\n```\n\n### (Optional) Using local core contracts\n\n```sh\n# yarn link does not work well with workspaces\nln -s ~/path/to/monorepo/solidity node_modules/@hyperlane-xyz/core\n```\n\n## Test\n\n```sh\n# Run all unit tests\nyarn test\n\n# Lint check code\nyarn lint\n```\n\n## Learn more\n\nFor more information, see the [Hyperlane documentation](https://docs.hyperlane.xyz/hyperlane-docs/developers/getting-started).\n","gitHead":"2ff64a890605ecdf4657dadb11a1ef8dc974541f","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.3","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.19.0","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.0.1-beta0","@hyperlane-xyz/core":"1.0.1-beta0","@hyperlane-xyz/utils":"1.0.1-beta0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","readmeFilename":"README.md","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.0.1-beta0_1674601469852_0.6577467909987404","host":"s3://npm-registry-packages"}},"1.1.0-beta0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.1.0-beta0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.1.0-beta0","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"811b03d2ca9e46161e1f3ecbf5c332d78a0a4a0a","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.1.0-beta0.tgz","fileCount":597,"integrity":"sha512-HklHsO9jRJEw75rSl4Mt+FuV03YQ1uMD66qT3plDPcSaD/IBY+vFM+bSBN0mDrrpu2DdrQiaVA3Bj1aow+7K6w==","signatures":[{"sig":"MEUCIQCCTP8JpvFhWOJKZ2v35o65f84Kq2NJv1WvSwTi4GqIqwIgQVVFZ+jYEDeeB8ObGsa0OXzOpFIvXijpdYCzA4af140=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2207443,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0WlCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrCMA//ToKAhHC16hXNLz5JeP5yTWBN3Ws2c53c7u9C0N78hob/BHuf\r\neHqxoX2wFEIxFptzkSUlTnJc6QaQOkSk/nNddQqf36TxPtPtEvC68yF2d3TC\r\nx/HmvfCtuBBa3YJAVpYUyPdYbIg4ZOixqW54+o5UJsCvMofgNEI4tsWhD/QG\r\nth7lArWBPkJBrR6MGTA8HV193BovUMzBeUDYbuDhrin5xnUUWKD8e/MvLJ2A\r\nRKvcToQndDs3ciNguzggeNoCiMeB1j8rPPE/04EDY0V+1Ycahy2DsSsoIRxc\r\nAq7eYBIIPgQ8hrTYEaWcssskPxvkWpG78xrIGSd+YdwgQh5t8u6P+LqdBe5k\r\nchrdmxRautjPYuUCuL0l//FCqDtncPYHoaOd+Y8ew8fCCw/40VOWlUKaHhne\r\ng0WPq2PJKEdK7nBISsbnGFYJckqrzHExvBf0d8Hd08nlqC7Y+zMlb1jWwpA0\r\n2bd5xPNlWprMR8R0iDFl+v3x/SrPa0e/P2v8IBm2KL/9fbiheuZhXLD5YQqk\r\ng8RJ2C2MfE1Ru3lnVYn/+uh3zQUfs24lufmYztzIaR8PB+RhETXS3hR2DGUq\r\nbq+7noscy7HevMqDJW2A/2Nz6XWW9W1LG8Th0FH3Dot+ukIprzL4u6eirZ4Z\r\n3IQfN+jUID7TS1WvL9XUG9Apg8f8k9hAaTU=\r\n=fsk3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"3a1285f98f4e98a3abbd57756c1c845387c382f3","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test"},"_npmUser":{"name":"tkporter","email":"trkporter@ucdavis.edu"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.1.0-beta0","@hyperlane-xyz/core":"1.1.0-beta0","@hyperlane-xyz/utils":"1.1.0-beta0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.0.1-beta0","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.1.0-beta0_1674668354696_0.7318394717144958","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.1.0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.1.0","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"c8c7665f2422241653a9e90c3c51a7cba193d496","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.1.0.tgz","fileCount":597,"integrity":"sha512-ZFBBXjrfrL3sldBhXYHh9bgtvKEf/oQY8cIN0DrPYSdlUFWDMNO6YfXUAoPxNS9ZEJMqAmpYYWdbLA7rHyIoeQ==","signatures":[{"sig":"MEUCIQDQ+zFuHL21nkzxHob9SjURQqQQsz+nRhE2R0/DdviONwIgXrOa2aJ6R1VaB9Boh8YGnLPpoEjKzoN7rS6QdS257kU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2207385,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0W4VACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrVAw//Yp22kE8a9nAylI+hCkvUPnBRCkUKnyijMOt5xGPVWtylL/ux\r\nY2klKxz2G+OHLBKZAnGd3K3E4ewPNqD9uamMhnZq+nvZRrGzMTXHO8UXQn/2\r\ndKrVVNvZ4IFJJFfzJ4apqkGNlOK/6eohgHHljbLu5LdI3JNmo9ukjgcBvNGm\r\n3Odjo/lX8jcQxHO2+ZjmAOolBP1XOLrHyY8HlT1QMfdoG6Peb1xMnotapnKa\r\nX7r031KYp2YldxgvdKfV9LbEW+TZCcunh1wsO255yVAvbnX3ZpjfF96vkrB2\r\nqwT1J657pORMAzFDVqbWz91cOEWSc3UdtM0O0Xi9hIeyq2Zr6gwxrUeYNq4o\r\nqkGA1G5flzhpKLm/R0+mdc7UPaKDFD3WwKciGU/hf+f+86uDrsRgDbiMa/BU\r\nVCThv2p9epNhNI9ruYfohXgW2E7g1SniKTNTp6WIIIKvyauyGIOPa62ggsWd\r\nGqsw/VSWWK/1YThDlDjLtAVgQNzqKN8qrjPol+t0mzQoC3oDIBeqKSc9Lc8u\r\nUkkP13xk9KMsMTzaQu2zDtCTz3i3iEyrtbAn7/GOolY1K23v8D3KG6qJM3rp\r\n4UISrrM4G92q5Y1YGoXIE1agC27PpqyDnk06TPn8Jbb3t/x2FYGVu4tVkMSa\r\nqMJDZuzVhP0SAi1GT1FaWChwnFQrpBKTXQ8=\r\n=FRvM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"3a1285f98f4e98a3abbd57756c1c845387c382f3","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test"},"_npmUser":{"name":"tkporter","email":"trkporter@ucdavis.edu"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.1.0","@hyperlane-xyz/core":"1.1.0","@hyperlane-xyz/utils":"1.1.0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.1.0_1674669589171_0.9064338471379538","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.1.1","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.1.1","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"b6a3eb5b17d341914a1daa3638b938c60b47b045","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.1.1.tgz","fileCount":597,"integrity":"sha512-BuFOBkJX1w1Mq9jxY4XO2XX23ZEAutaF9NcQajJHYXA1AH5jERzBci4fypQIPylTztAxP/aYFW77QyORfNUrcg==","signatures":[{"sig":"MEUCIQDrV0nOrIsvDQJY9s0YvSPO4HBM0dZ/6ZZ3yz3cYtAwXQIgD1uc3cFc122unLzuMPeLId6KLkH5i2nNHZVhTKH5bxM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2206625,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0rp3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpdVw/9F8gK6KaTc6w1Et0+AxrQBEH4tbc4Zk209yQSzDOcdlS33tqL\r\n0wq5riXIkwV0ynas9pLaW1g6G+P4WF9tdWaGtA1K7PcxNi+eTMGPuevhc1IH\r\nt6NfIb1vAljDqfW4RuNVcwj7k2DhplYduByhH4nL6sIzcB06TBMDd8EXXj6u\r\n7/QS/Ii+60ZTz85Mc1mnSPca5PkBz94pw453xYYoijx7HxXQRqWopq7Sc17x\r\nUMux5eK8yGzuQIWmIULDibpFa+pnRFI13lHEDbJEgHxTjB9kSObCIc6LXc/d\r\n9IbYlpibotoR1TM3+07tK/nDDG3cgzOSfvJonp8TY24zqvgDwGA3W+5sDCCp\r\nuZVt28z7Zz3ysuwtXLFfrROQ8dKq01It2wOfZhK4KXtpdVAXGw8nY4j3JrBI\r\nJXakOqYgBVQ19oHy1iJP5E/LGALDoKRggPK2rxkx10oJFv4pHEiLekiPxVTV\r\ncnO5AjC824Y7hIPa9vU9ZpfbNRgyx7G16KbCy1bi9Y+YlHZv7Fg157YCvHXI\r\naCzatHJK5e0Aon7spdp2iSGEjnY7QLu/z5mTn2lul/eufUyDuYJpnamIr9U3\r\nGiPV71Q4RJBNWs/DB/62OumkClIlfpHpzBe/4REVLFV2Gjki/hPuai+n6DK3\r\nzKWe4EuaH4FdLXGpqc3fndknhSUU0pfAuHA=\r\n=p3ac\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d95298907029d37184482cd050cea536f0f4f7c4","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test"},"_npmUser":{"name":"asaj","email":"asaoines@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.6.0","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.14.2","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.1.1","@hyperlane-xyz/core":"1.1.1","@hyperlane-xyz/utils":"1.1.1","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.1.1_1674754678991_0.47067799762027174","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.1.3","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.1.3","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"8af58b0009c39e65af34d92a0667e3f5cd47d782","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.1.3.tgz","fileCount":597,"integrity":"sha512-/8O+nHTLUiOjCAy8Vxzkd8sJvtA7dwGhnUY4vS0EpB59XRVXt7aI9JfNnC2oej7iDfJxncPt9E/W8kky481cFA==","signatures":[{"sig":"MEUCIQC7PB/F7//6ErkeLy2v1L3/xpzfQdMVpaAZb1HO9OX/KwIgPSJd/6vE0WHfaGWD6uptR1prb56i/1GEo3nsY1o8qPE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2207385,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj2XVKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp9MQ/9FHfeefmzR1atX6iwhaEjVDCaAZ1W+djwoOwiP5pSd6AE8u9A\r\nok2dAhksO+I7y86MRfVlGUCNmYmhkPPBJXQH8CDNJante1MJo5oMx8I5xBCh\r\nERTMPWl1r4YpDksb45P3GusufQZdcd1r/P1XuIhld7MVEsYC/BZaevow0Cqu\r\nDgnkpkNcnk8H33Mm/GXqVoxJufDLkRAPbzdhZ2tBsMtfHCcHE/YMix33xarW\r\noIDHh9vzGmQEsd0s57mdaDYvrC4Ya9E2p8YFK1RkDJRhiJ/t4zyiKsojA+J0\r\nlyCTQo7WFGOH4sV2UN4MjVxaLFKWiGKXbA/1S7UMlpuzgqC0bALZOmvb7fmw\r\nXThfr4BnWjOoTVszIHwMO9Dw8ljRblWcUGE40xnqCzwfBVaTT4tQPrS3KYLe\r\n4stNQjF8YNG93CYSg+UkE7WMVJhBjuZ5TouREvcyysSLLvuOtZwDNroJnBqh\r\neewDlXC8iCp07qSTYhYUAueK54LVBM9Ppz543bncvzWoViOIhspDsUGlGBPX\r\nII3iNINSWgu5ykkh5sJnIZZix3etqmobi3zsa5Negfh5O8VlcqWPyXvCVpu0\r\nHgILG9RZ8R498nGVwJW0CK7/v5/MybyyyLett3dtEqIFIq3TQ1vgz3BB1LFD\r\n3yng+8ChmVv9t8rlKh0PigYOH6SSE/iMwDg=\r\n=jZ0j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d95298907029d37184482cd050cea536f0f4f7c4","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test"},"_npmUser":{"name":"nambrot","email":"nambrot@googlemail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.1.1","@hyperlane-xyz/core":"1.1.1","@hyperlane-xyz/utils":"1.1.1","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.1.3_1675195721843_0.14665227966104077","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.2.0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.2.0","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"b3cfd871cfbe6ac15ef3c199205f3e7b41957b57","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.2.0.tgz","fileCount":630,"integrity":"sha512-i5avZ6fOOtUdWWTALwieDAiPpAv/ZmQvLAIeTGsSfa3UOZ2HIKF9VwV2edp0fipvZWJJxQYVAXuEERxumOc7UQ==","signatures":[{"sig":"MEQCIEgwdsJGHV/eczUDMOcS1ptKkolDJZNKsasdzKerGSLJAiBsDGFUEoMUiiKyDCwNZfclebvu1LsUvOs6EFGBooV9tw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2523239,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj961PACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqbKg//Ro/92MGfti0jaorMZU0WDFQsutoDkW6V2peF503XhHlvCtqD\r\nbXFzPeFaYtXpyjkeYuVc7/5BiUxswo9C2LX57r9jHofkJNRXPSwcM8nRTXBW\r\ntjG/Jwqy9XXVefPZF2BBYzmWrnxKXHD6t3otiOD+cYEdyV9aFk5jjfhgvOj8\r\nU2Zt1ZcF8C7why0egodtMH2IuSl9tPTwRJlkjcw0BXa8W7AJhg+fbVu2WYCe\r\nhehYBLroKWqira6i1Ae15Hhmtn8D9dq1V7JpdTqBu1mhyhqHB90BSd73g/hS\r\nCKxJSuJ6AHsNaco9del0ePrghbQNXOwNuKhv1Cyhgf7n8BPcjn3baAcdGheN\r\nFxxnNk5VmhpmKagpikzHZYNwtjzeFcskLG8Jf6fQWM8S7RvKLFcROdTKF4pF\r\nG+7qVX/TkMk21STy2lKAZvUjAFAcTJWCGCXrqppEWNlLzYq9QIShPUrN50sI\r\nV3N2a7kkKrwSy464cv54bGsxJH45d85DMGa3mQ5GVXhwMYwif4/ZTYL8Exow\r\nrKgEt6pbKLLptK5s4aof1sjcOlxS8kVWoy4XddJeuAOTT22EcCofp8wuSc5L\r\ncB7Ane93rbEBaIytKObfcKkgpKpN2Isidil0px0xPddJCVAo33YSp8Op9VH7\r\n3TYuH7Y9B+sQAN1qyAMJMxFXCmys6m6dhY4=\r\n=P97J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"6c2803ad0611a8355992f628af7faf7ac208c7c7","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.3","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.19.0","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.2.0","@hyperlane-xyz/core":"1.2.0","@hyperlane-xyz/utils":"1.2.0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.2.0_1677176143080_0.7819987270441202","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.2.1","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.2.1","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"21931b9bd49e201cd1b57eb1138ef9fd425a351f","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.2.1.tgz","fileCount":630,"integrity":"sha512-+CRfG01sqoYYwQBnWLM8sRR6EY0KG1pO4wtuUi7DQNWNuQOQ9T+RAfKg8lB+4Et2qr0umdd5Ibo2ZScRKoNufw==","signatures":[{"sig":"MEYCIQDx9EByVklyYsRcAQsuV4VP1vW8di8zmvFs50bJU4w5fwIhAJ/WFlc5eE8AfyyZIP+Os1FIzgr8Ovesy7TBrRVTeWas","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2525865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCbvNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoXqA/8D/6GbLndJ5lPyM3JE/UjR2WeAoS2yxV/x7XBhq3/aJ8Ams56\r\nuiFU6G6JZlnHbzIaAVi0wHJC5xH0rUMtw4XYYH1MzI+5djJ/PtH1onhcFqXV\r\nYavE+BA3Al2ftUiOcia5ENnUrun1G4/c7XZlRdxI5a0dTjqwIN4sSydmKbZY\r\nk/fxMNKAMyVeRGws8PyeHeug7FIJOeHtOVTM3PeJ+YBuH/ofH2OV2DaLEkzT\r\ngb1LYTJaEl5JX96ldFWhkWphlq5G5eLX+qnrYsTo/t26pZ0arZNSmYr8rJuH\r\n1/f6CpirF1yYCesV/JV9Of7yJbEOvmVx+jlTy3RUT3jYhggaThIqYglVcNPw\r\nUjF7GW2WpbfMjOXVu7lDDzfnc8Rf40SBXGnE+U91219uAg43GCGBT9gHJHVf\r\njUn/Akcqkgl+SE8JzIbWrfdMzicrsEGuGlSoWq1v0L0czWNe3f2GCRmRcEQQ\r\n+eayNbnoQOuSfBZcGFeGHVkFPi2vRHWpyNo9ziujSfpw9CZiQ64GZA0Q4QPl\r\nvllxBvNI2/cNbyRfNrBkKSAkEbfLuCaiS1cLM+HAMNF9/Ct6e+ZhdO026BcC\r\n5UhXOjL0fqeMBmmWJAaB0Vmr6I1weI6NTi0e9fbRIWtBLrWTQmPIYRqL9mIx\r\niLXaflFHkqNJJ65u20+5IP3yyP41nnI+zBM=\r\n=UU/b\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"61a09a6554f94a5c1f975f626de542578541d007","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.3","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.19.0","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.2.1","@hyperlane-xyz/core":"1.2.1","@hyperlane-xyz/utils":"1.2.1","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.2.1_1678359501462_0.9868246935781935","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.2.2","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.2.2","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"7a96f3ff0937c4b4cd08dd7eb5c75c298095a560","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.2.2.tgz","fileCount":630,"integrity":"sha512-NS+pseh3nul7z3swVkmSKxs2+epLLXeViOqj9XSvQyyq8QtMTIhkbQEUxPUmm2epVnHF5aSaqidRQuKlg4fjWQ==","signatures":[{"sig":"MEYCIQD2MHdFGReKoDt8ZFlo0GgELVOck28+lCQDThNqIS37jgIhAL9IR+RYnCmcKLUxzWr9mIAqYwaSBNS3Vaj/Pria23CV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2526661,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkD6IYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp+vQ//dZPMC6BotEsWi0irgPdvNOoRvt85n0JboyzbIl6+TWqjaBjZ\r\nu2SVNiuNCIG7yKX5ZuG6KQl+bgKXA0eh76kq52QAAXn7Zj8x3MeHrBBD2Iib\r\n00uYvc86mvkU2PZDm3nnyP/8cmF/nE+tsqO/XXGPGMd6MG6v8N0s4a8UNG6B\r\nxmmGSGXebRoPBIOaVsHrkNk4KHDlOlaJFCzjHXIE83hwHxVGHShcD+yrTdxU\r\n3Vycgt8C3EPoQMtns1w1TuB4zjXL3nSrom/T6i903XwkMPsAkYKePxYdf/Ic\r\nPwSA8NsMJLE9K8CUHk2UNbqUSh2KLjbiQJ5nrsZqMBLGIJM6RuD/LdUis37v\r\nhCYBLVv/r5P43LKZmEMwPqzcPj1DgkYcnzxMDZjcD4PFSxsQCTuQ8x5OgOZD\r\nKbhk6lLWAAKywCKl7kAMCJERnEo7QsQQgQrjRJlGU1njLzL9b4HyKzCVoLvV\r\nonww9hks9iy31PDZguB+1pt/FuCjkwL7Xj3LzQh4Sy+m1l6LyCkycDD8cnHM\r\n0lBWUzrRwpC7bb4AmEpCVvQeSAqkBmKfdfN1JXKAsMQLjyWUziwHghSx7Tyi\r\njJGCDwSl/ba5Hrg1X0f6LZErM4RsMrWW4R/aEt4j1y8aVRBZE3+CUd/1Eyav\r\nxaXPsLGWX23m6UcR79faUhFFEMRNVVqJFmc=\r\n=4lXx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"03002424e59ee2aaf5bd56f554e3ee561a1d51b4","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"nambrot","email":"nambrot@googlemail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.2.2","@hyperlane-xyz/core":"1.2.2","@hyperlane-xyz/utils":"1.2.2","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.2.2_1678746135958_0.7306012758965976","host":"s3://npm-registry-packages"}},"1.2.3":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.2.3","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.2.3","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"5ce4028a33bc49d5723ad3d3159a80e21ed0c5dd","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.2.3.tgz","fileCount":630,"integrity":"sha512-WhCVQ0FF5j+lmRsHE4lRf9dkX59LtCPd8qCeJSGYmn+GF9WBKRsb4Yj9DRyghBQ/lWDgN4j3SYw7yc/mMEQ/DQ==","signatures":[{"sig":"MEYCIQCmhKKx6tt6GsI44VUr3FRlzhAYVLccEoCLafON6P0fNgIhAKUCOtHJzeEM0nyxcoC5ydFPV7x8LOTRTbYPmw+I6BqB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2526661,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkGK+EACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/sQ/8DGx7kyTUrfIRiJmlZrGq0nGHzPyoa1b8gvGMZe7rorVv/2qE\r\nkKn5MnBv1UVfk9W6jgb8MJIu7TsuFcupxDFlxj4iOqGiSD2b6hmDONx1WahL\r\npLoOKPCDihkHcflPUYh1PjT72PnbUPst+SxZsSkuWRYEs5IcknSwHIepWe3F\r\nWxub11HiJj1Bh6j5gEGmLZEOO9cIedCV2FquZHd9dmc6g57TNuSzJ7S8w6c/\r\nw2PL8ZVuzZNNYPRwEGLypwTK7yp9uwhvYJwp+EsqLMywYZ7OjEcbNcLr8gII\r\nR80jc351Sq8ky6HL1rnA3i1baXQz8LTZrlBlAum2DexQ9rtUoqHJ/FnAAGib\r\n9DRdvi6i0DjpvLQVFapxF88yLcGcdYXBO+dBtSeCm3O53a68cNnq4oXlZF+2\r\n/0uwVAv6V38W8IXmZmueOHixqZpy+aTbRbEaKxA0aqS4SBBH0IV2D8mMTPLI\r\nhEYXtPX9WEE3n36syDRqClUannKFa3rFBMyp/04laCzxynJ+T7PtwUsakw34\r\nPmCItJ2QB3V4jyfFStkvM67kkwQscDzg6s8K+44d1gWRiahISuTxObIBN3Mb\r\nulzHtNGk4+5EWgTM5MHneH/zdZujVnwxkGqraBF32asR9E36R9vX7cCg/04U\r\nF8kL8h9dnphj6rJSJSuXMC8XLXqpzUPnSg4=\r\n=LOl/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"b009989328333a3d725979491b2897db2b9473b9","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"nambrot","email":"nambrot@googlemail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.2.3","@hyperlane-xyz/core":"1.2.3","@hyperlane-xyz/utils":"1.2.3","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.2.3_1679339396492_0.8870410684199928","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.3.0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.3.0","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"4acca7b737fe1cd00f85c70438a7b00887335714","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.3.0.tgz","fileCount":638,"integrity":"sha512-06p6rHFFU11H8tpKaPgWFjhbEEe41AHaUkc0Yfr5SUMFbQ/K7m/35qBnSwXpkrf+CLhz2UeIBs04tB2nOj5ewg==","signatures":[{"sig":"MEUCIQCBxo0FNP6mXQg7lr6mn0chI9Vub+/y38Tu9TttDGWUVQIgPz0VoUsucycAJj1LFQ8cDrqZxSNuV09tDxvDGTp+xcg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2561030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLPM9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoW8RAAklRH4mV0EjqosLDqzHAtbuTiPTQzWDEndakVn86iTtiI87dB\r\ngkA+9gCPPvJcbX81O3NwZd4BF9HBAIWZZRJaz42bnEcLvpB3OCYpYYg6haan\r\na6bv8AxG6ivZC9snfz/h0ujfszEkFZgxJ/Yli1+QQFkDEm7nOukFBXJ+Y/hK\r\niVJbzM6P/5oOdS+EMhEZiXLcj30XSrUErSxEf25NqhlLHDu8vtUFTUwJcHZF\r\n3mnqHFcawG3jp8ZLs8iPoxggpIQPuyS4iDsi1rrh3qJ2GQszPVjh78VSxPcZ\r\nhFUiYtf6bN+bKK+9ZRM68B1U4jIg/bQu/lkz/5PFhiFTSt5AxqTC7c1enwYi\r\nDpI3vGIV+v5cq33xjrq8+ZRS4jCP71+jw1KNA9ADJWoQPBzFy/wqpg0IAHjr\r\nfMN0U/FQb62zqqHT67geadpQVXuLkVhg69JSkgBCKH15Yk218wiz7PpiTq/o\r\nj4cKTZsN8MSvpKq7EWBWjmeiYu6nt1fYGcfSKTOL+kgqmXnlJPNLZhszpVUp\r\n0iz3N+6kfu9c0kWijO2+JahfZXpopxl6C3haDpDujVqfwXF+P4Uh0YklTT1A\r\nJupH60FyVt43ZJxPOepC5MCIDitjjtQiU3WkVUNA8OqHhM+d1Z5XGSmdfOgl\r\nVqVRvNy+k5tM9yi2pAKiPxyDbO/Is+5BnME=\r\n=97PW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5a6a753de614691fa0a509f4fe4c887443597474","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.3","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.19.0","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.3.0","@hyperlane-xyz/core":"1.3.0","@hyperlane-xyz/utils":"1.3.0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.3.0_1680667453032_0.687698736231571","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.3.1","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.3.1","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"317f729fd29b7eac6b73cd94887e94efafd6fab6","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.3.1.tgz","fileCount":654,"integrity":"sha512-T5GiSne1bTx4ZEo4rbcOLInBJmNdyEIX/RSroDGG/LO3t4RMoW2VDtv3wEatf1yPITiYli99P/uuFPzcr2s8fw==","signatures":[{"sig":"MEQCIHePbAVmqoUEVwodOMvRz17M4f+qK+FGG5fkgDoiar8cAiBA0sZQEKm9BJnbU1Lw4TFoh2+O6ZZwWurGzECekfnL8Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2697539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLsZ3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoofw/+NBA57OLN8rct6qmw8WRREu+++Jdz/IpjzzdAZSAt2Q3rUpoo\r\nEeosbYavpan+tlU/l0+pS4AINUcUOA8c8EjTXFRhj/tvlLMhKAJnCy+Lk+kY\r\nY6qnlUal5UFTFSfeXYYVyqGBqguN0d5Bsh6hDaiNVZaW2gkUzqsbrIuujhY3\r\nR01ktOQyAATNAws0JeJSWbWxKeQDSazTSHxGfNlUELmNl8xtTwf2eAVnzqns\r\n5SsC5qGrGmC0hN7CjkuR5d77qlE59vml0ilOehrIg2cZjNh9ruQ2XxUX6n1A\r\nOMRMHIRiNlHJbdjYCkfsyp5SI/NEPLTOndwxCDKrUWuagAoSGQsPLnCfUvR3\r\nh3wipXc6yVoXbmeDPTXR8g947Y2IAzF9aNsvqQn/wAZgvGGTfDf8pS0YWEuI\r\nv5BHot3e2QgKBDsBtvyN881J13KNbifwFbGzavjF7WEJzGIkoX5wUiY598yV\r\nC+wAUC8Sc1QoN2InY/pKROZ5Tupu/ACWF07ecVaDvSOCbcQ5J8CVv9/EC7GA\r\nu9cXwV0snZLWBjjNpQ8XlwVbGkfjkeRMjkpaiNtf71ldgtIrjgw7UJS0W2aT\r\nNMrNziFs+bT5iix2f4pwNDPZiY+aBbPdRrUYNoquh+BApQco3F9gzSg7hMMD\r\nUKY4Zp4rbA041qFQaJvbmqX10msTe419W8k=\r\n=iEbS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5af73e5caae5c9c35acb242240f245649f9e386a","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"yorhodes","email":"email@yorke.dev"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.3.1","@hyperlane-xyz/core":"1.3.1","@hyperlane-xyz/utils":"1.3.1","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.3.1_1680787062684_0.17474669896907113","host":"s3://npm-registry-packages"}},"1.3.2-beta":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.3.2-beta","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.3.2-beta","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"333904d3501f63c08559807ed512e8472d0d7fbd","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.3.2-beta.tgz","fileCount":710,"integrity":"sha512-7uAepwxcD5duw+BH1533EpJMCFzYs8eO1ULTaX6QmkImmGxaiCy4okToHcu7oL808PYUuIxscCteFghco9OliQ==","signatures":[{"sig":"MEQCIHKmV2dzOVEosyws4rVLQVrGTuKsiZ5pPcgggu4uQSLvAiAGCl2uRltdGBXMNlb4YR12HwZlMM+Uq48sISsJIqMA7A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2771389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOYWJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo7dxAAlH3mlwRQbH+J6apVYL7oeF9c8sGhkt0JbfNqmJndaT2QbKF1\r\nV60T1QiWXyiyeADUyec3DxGkjUAVNNLc2bmWoA/AB+QjvB8M8yCluZToNnzF\r\n+6mDAJa04B1cuYMKVOCRkLSk/DlvzJV5GS8LEWre2Fk+Do4Q2mTBKrYC8tPJ\r\nWroT/gntJAGWBGU5yOfRic/+HBtvvnQyB1Zk0ygXxDy5APXilmpae6leI6On\r\ngypE18nTZTboSMk5j5FDVW3/YYzM3NbMUzYtLgQbMUsBO9qh/wS7dLERPQPE\r\nq9n/ETXBHHYDUzY0gvl3HL8IlZuEygCkoyZEGCbVSzjRq1xGj/U3Vob6+G9x\r\nnKuXeS/v+hz599sO+n20QyEUmdU1v7wKWMikKsXZwo2tpn3phIuDFR+aIn2S\r\nxO6LdyyZgF4MqT7bz1iSkv70yJLFno+hXOELTFYwLBB2ki0Ew9yYfXTZ9WiJ\r\nyqRIC3KZjTiR2AhJlgALvI44fK18fklYvisvoc/GP4L5S7WqKGox026LmNUs\r\nYKtMQLY3Yh3kwsm7R2wiq5y2ybLQkJzbhh4OA7bkhKUge5y/d1TwCXLMH8h3\r\nZi2RGk36mKw8W0b5yU5FcJ0CJcPilvcAeO6s2sLTIFUus3OQMSj6zkmoJNh6\r\nUKN5WhMAM96V+3Dck3sDBFqJqTgnnkKNjqw=\r\n=TGet\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4beeed0ac8f204f749cd8b633ca84c341b324075","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"asaj","email":"asaoines@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"9.5.1","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.19.1","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.3.2","@hyperlane-xyz/core":"1.3.2","@hyperlane-xyz/utils":"1.3.2","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.3.2-beta_1681491336664_0.8837215987281934","host":"s3://npm-registry-packages"}},"1.3.3":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.3.3","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.3.3","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"3e78d3d3fc6eaaefce6544719be260071fd4a384","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.3.3.tgz","fileCount":654,"integrity":"sha512-GAI5fiZNSDCdvZNAhLJyCEnnGtlTjkQQ2d5MlJ5tqiowqKj2gukmDH0aFEHq1KQApRsnJ8dqtHmcThwe7YQUBw==","signatures":[{"sig":"MEUCIQD/Ak/zCWJvJMX2qqRvKc7q8iCXBw57Z1PeR9lSaDe4WQIgOn8UWQaSbDqqc7YJZtkhnBw3Sv6J9g6hGIiKNPidrwI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2703060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkRsPWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq6RRAAm8on5eh+2jhCEfF0tN2gUqUny4JeOlAkBLamr2Wsxs3Prmiw\r\nZ+1pGOjZMrVWKVfXhjVmU8kr5u7rYZJU5RvZFyv5ujDTELmojoBOXGI6B7rm\r\nNkaaN/GKKwAMdxNVat5GdOCcg2Z5n96xxEYbJsduNPpW57tTmMNgshKPvOAd\r\n5/Ph5yQskMtrLHgUxiw7S+K9FrXiE5QjY3QQptua5Nxaz1jvH3XTI/y3Gfi4\r\nEkPd8hpr5S60J1VzoVZHJlitZZBXd3jHveyIDQb7VBu9MkiOc+SH685ZEWjz\r\n8Ah640fx+6KI6cZl4jpvbeWWrZvsWqhPAg8TdN8pKlskhweOLq8N/SLdiJMP\r\nG7mCDUFMSsv78NkYETz/ldLjOD7VWbnVuvbQutRd1WpzXF7d5XCGYkgtr3Gv\r\nl4HUqB9nt4DgZKyfcuH8e0k/iJBCw9rYZkf0ZcFzqPzYenUGw2RhIzJ5h5tT\r\nktudMre5jIcswbDH1m5TsOmAEUwT7pojIqmlBXfdorlLgJLo/VuewO9fOnrw\r\neogqxTODJR4oShUpM9Jo9vApM4GDqOjHOMCq2Ce2neztPQBOKcO4LusHDBFo\r\noXUGIOhfWb+AyC8tHuq/Kg+hYLP/dLkqHA9+Byjp0qb3g4aSiUr7qbnBwuMk\r\n/omMF33/4eFtIoCXQQNKXQlvlBHKpFYCtko=\r\n=rnAT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d9a013573bfe179978dcf60bc7d7817474c2037d","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"asaj","email":"asaoines@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"9.5.1","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.19.1","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.3.3","@hyperlane-xyz/core":"1.3.3","@hyperlane-xyz/utils":"1.3.3","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.3.3_1682359253877_0.7960963374678283","host":"s3://npm-registry-packages"}},"1.3.4":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.3.4","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.3.4","maintainers":[{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"88d634f434b3e14cb191c50b1ab421a8adf70052","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.3.4.tgz","fileCount":654,"integrity":"sha512-7jVLf86GPe7BwIpHmXO05Sp3xWZos+j5vkvUUuGS+O/FWEWi7ONRfbmYRjcajdO1SG3Afca6JwZ6hsc+iSZ79g==","signatures":[{"sig":"MEUCIQDRO0p79TNoiALj6yOWwtBD2kHPl76T67wHklOEdRM/sAIgRLl2mHM3q8PwQPK0R+UOgbwCvqji6Ypimb67Z3W1TAw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2703893,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkUuL8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqnJA//eCyIeTzsjXuo66vDEscsYRMjUjwyOMMfbk0RSlIta/jTkXZz\r\n107aQ0zh0su/oWYIJO/zKcmJszpuGH3dCe3yGF1dHcgo2JtO/snkbLdefwcz\r\nN1Tp/PnSkTNr3C4wbyyb7XqTe33dfGy9D44MS/xZNt0AxLeb2baZiU3vqAv4\r\n3iCJDz5dRKDgCjypBtzXeSDlaP1uETfQfo47heMZxEjxECqeoC8tEtHmXwgZ\r\nCyiURMl1+XaL3eIMiScUp23mN/pJ5se+h2dFLQ4fKXlNi9Qig50Yl0roxR4A\r\nRj8S8TPMmeKrP+Jtdp6u9tUi269cI4A2kZiOLLIyxENS/opB2dzE/pkmJWNH\r\nXfF9GZagI9W0uQFrjoCzPed6s2A4yeSs0G74SKSr3SyE3UefcmiPHd/oR39X\r\nqYPNus6hI4QrTeWIl/kcHFrZhFttNfOzLpmbm8sNaouWkymIzwufzPIXIkvx\r\nxEU1g0cj03eU9By7PmPDr2zDTubgnFagvftFuo1WCAWu1k1UY+M+EDDetbqs\r\ntmzqOKgVPAEbCZ5I2cTNWLsma0mXolCs3UbnEvVUKsHjvvlUqsZn9FseeQFz\r\nrChyyZIpKARMwIkQ57oXu+ewQklMesYP5YzIn/rSEAVpq6AfMOGmZq1p5wBv\r\n6YMr58Ur0YZgP7G6VFQpWph/yqgblj0tiYM=\r\n=bDAM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"16c2c7eb7588f3aa20f54c448fc2ee0831889d96","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.3","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.19.0","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.3.4","@hyperlane-xyz/core":"1.3.4","@hyperlane-xyz/utils":"1.3.4","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.3.4_1683153660382_0.5484053505466124","host":"s3://npm-registry-packages"}},"1.3.5":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.3.5","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.3.5","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"bb1f980cc2304e54bfad5f0d0bf7b121b0b5f579","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.3.5.tgz","fileCount":654,"integrity":"sha512-F8TBv+4KwW/Ah/kXkKxNQJbfPfwOrIwWUf6v+OYYouLUkJfm3/azCu2tlWVaQVhQRQARhcQ1xTN9cygZOLdR0g==","signatures":[{"sig":"MEQCIH7bqfiABDhynwvdUnr0ejWdZpaUSgro6RFIz++rE54tAiBNXH6TWmrr88qLdrdxDlu9qb5trcZ1Z5liaJGh60uwCA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2703892},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e1055b86360a18259d2c4dcb77c7715106463f19","scripts":{"lint":"eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"tkporter","email":"trkporter@ucdavis.edu"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.3.5","@hyperlane-xyz/core":"1.3.5","@hyperlane-xyz/utils":"1.3.5","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.8.4","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.7.14","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.7","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.3.5_1687164939388_0.5104068238836639","host":"s3://npm-registry-packages"}},"1.3.6":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.3.6","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.3.6","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"319cf80e0b4bc4bb828c8f03cc11766f837e042a","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.3.6.tgz","fileCount":654,"integrity":"sha512-MlFbu0Edc2yI769tYk8yvfZ/HvH+ygTkvHyeLGAJIMUIhxtiETYZE07PRtc59bBf+EG0yqwig61Zw9rJ8xmOnQ==","signatures":[{"sig":"MEUCIQCUc/lvNeMAz2iNeRdWovpjE/CHYYV64LqMBJ7A0PL/LQIgKaN4L1mJDWE1tMAups5IYUisgF2ZnR4FWgyBYJbjFTo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2706094},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"dae1fd23568817de3db655a1d04e62ce4b762b46","scripts":{"lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"tkporter","email":"trkporter@ucdavis.edu"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.3.6","@hyperlane-xyz/core":"1.3.6","@hyperlane-xyz/utils":"1.3.6","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.3.6_1688033109561_0.799650334469874","host":"s3://npm-registry-packages"}},"1.3.7":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.3.7","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.3.7","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"39a237e75afb8f70261178032d8fc5b18192ef7c","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.3.7.tgz","fileCount":654,"integrity":"sha512-QbZtoL8a94Ejp8jcXeFCPWe21keC83jjlk/yaga7cRnBjTc0Wki4qOTxETXgw2TZAWyDbnaKZQpOwS/rnT8ILQ==","signatures":[{"sig":"MEQCIEFyxM+sVB/oVyt3WYW98K1i3gmufZpkmTW9RnNGsFmxAiAb8TjW2tOrWlnUBITanTswU3dyoPUzJLfDLMISyTrS0A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2706113},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"838c13fd1683dada0c6f52e3ec58d45355c69070","scripts":{"lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.3","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.19.0","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.3.7","@hyperlane-xyz/core":"1.3.7","@hyperlane-xyz/utils":"1.3.7","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.3.7_1688504576824_0.6423409149953023","host":"s3://npm-registry-packages"}},"1.3.8-beta0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.3.8-beta0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.3.8-beta0","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"04c5f7515fdc75ddee09c71b57c24c5b68234a6a","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.3.8-beta0.tgz","fileCount":674,"integrity":"sha512-D71yZ1RfgVN6ophKy/IGAca908dCQQ5cXNnjjCDsxx2PhjXlYThi9epYCdV+NDIYEHiEmvMosoEKYWv19HHf8g==","signatures":[{"sig":"MEUCIQCM+mrivmV33oL5q1QGQM2teV1j+YE4Ui+2VNpKSsULtwIgc+YAtMDn5qFFgVHnGUIYNsnuJx2bAmjommhj1ma/C3M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2737548},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"60f321f452052881dce4e22999022e11fc117456","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"yorhodes","email":"email@yorke.dev"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.3.8-beta0","@hyperlane-xyz/core":"1.3.8-beta0","@hyperlane-xyz/utils":"1.3.8-beta0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.3.7","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.3.8-beta0_1688595632284_0.17335924873980302","host":"s3://npm-registry-packages"}},"1.3.8":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.3.8","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.3.8","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"47fe1d8b08486bc9a37a64982cbbd78c042806d3","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.3.8.tgz","fileCount":674,"integrity":"sha512-NxYCnkuGNyl7IaAdY+1Uiif1AZz2KaIlHY2hFxGtNBJP3BGCF8TQWvy0VNDGlgDjK+TLxWjJ9yyKWPxvMaWGAQ==","signatures":[{"sig":"MEUCIQDf5dFO2iiaPb1lMB8lcjqxF2pRhS/a9Ngw6rpIXm/XpAIgB49CEjej6FhU02H+eNeR8iInOc9wTA/7nqB3B0woyvs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2737496},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"9ddb2d57eee4e70177a92f63f431c603e9a545f6","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"yorhodes","email":"email@yorke.dev"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.3.8","@hyperlane-xyz/core":"1.3.8","@hyperlane-xyz/utils":"1.3.8","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.3.8_1688767711729_0.7755441730393899","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.4.0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.4.0","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"9d9792e361b084dc97099cf6a225f0b516039685","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.4.0.tgz","fileCount":654,"integrity":"sha512-8F3i5Jojpu4yEImqinJv0eyxtPU0pfH9HCb1nPoL4aKunHezDaR5xR9vRfWrmvuvmL+FRLvoaYMbfRbP8IrPCA==","signatures":[{"sig":"MEQCIGW4F53MQe5/1DSSqdkB5uJnCjsHu9QNLTHELrnucNPrAiBeXwngzSR1sUFCLGeXIej84UMMrYE3xDGBnYDaxshjXw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2706362},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"0ae21dcf3f0fecf5a967ff3a49245ccd44a00d49","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.3","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.19.0","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.4.0","@hyperlane-xyz/core":"1.4.0","@hyperlane-xyz/utils":"1.4.0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.4.0_1689102652956_0.6817943639388273","host":"s3://npm-registry-packages"}},"1.4.1":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.4.1","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.4.1","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"4c7c1876afe7d3e1e9be01bb29b2544b7442e091","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.4.1.tgz","fileCount":654,"integrity":"sha512-0vMXQNSuPslfYV1gVSvZ8xjavVtGZPW7sskt06pim1gZeszupxBXBAMP9jZxD+EvfuTgc3/mnoT5cEwQ2wlPWw==","signatures":[{"sig":"MEQCICdqQOlrHAtx4ALVXi3Zkv8tYvr6+KoYyRxDiaUUy8pgAiB87m7R4vXomInW7oDwSInHD6xb2JQrnRIipCc4TbPUfA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2706362},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ac75605b8a6c247757cf69c3ba3408d7d12dc5a1","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.3","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.19.0","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.4.1","@hyperlane-xyz/core":"1.4.1","@hyperlane-xyz/utils":"1.4.1","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.4.1_1689179762158_0.6970897182048146","host":"s3://npm-registry-packages"}},"1.4.2":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.4.2","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.4.2","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"68347b7f6316233001f60e04c069f98274916737","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.4.2.tgz","fileCount":674,"integrity":"sha512-2NF1GPV9Gt17OqzjVwa7MiUr+WO1Llr5vYt5OzMiHZVDeDbFNcAxYxVG52uj+ScRM9+J9oLojpg7LEmxt8t33Q==","signatures":[{"sig":"MEYCIQCLkQdAHOdc3vqrdDPjoLJ5Jd3OBXaGjUAJmIaHDIrXzAIhALRWFvAr9mfAJJYjQyrshpYS2Tt5c1AeQZvg563Z4CBA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2737692},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"a5209dbd9b0f5eb34e0bc9df2ba157dda2b454d3","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"yorhodes","email":"email@yorke.dev"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.4.2","@hyperlane-xyz/core":"1.4.2","@hyperlane-xyz/utils":"1.4.2","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.4.2_1689190212156_0.9260468415704892","host":"s3://npm-registry-packages"}},"1.4.3-beta0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.4.3-beta0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.4.3-beta0","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"0dfc2af89de01f63fb61a89016fcc2994225518d","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.4.3-beta0.tgz","fileCount":654,"integrity":"sha512-WYXl8E3uEWxYb+G2O1sji2ey2XeSzdp+t+5nddu9S9ov4nxR7MVo6I7UOQ0RITfUvrW+P/VkeDlLZg4yIWSlzA==","signatures":[{"sig":"MEQCIFwdhRAq1TbBfNktPylQkMLv8VPud/g8ZH2Kb0Xn1Rs5AiATi/EVtl4QyYdOfsYCUtJNbwZQCUpiYSWCDws39qCc6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2700729},"main":"dist/index.js","types":"dist/index.d.ts","readme":"# Hyperlane Tokens and Warp Routes\n\nThis repo contains contracts and SDK tooling for Hyperlane-connected ERC20 and ERC721 tokens. The contracts herein can be used to create [Hyperlane Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route) across different chains.\n\nFor instructions on deploying Warp Routes, see [the deployment documentation](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route/deploy-a-warp-route) and the [Hyperlane-Deploy repository](https://github.com/hyperlane-xyz/hyperlane-deploy).\n\n## Warp Route Architecture\n\nA Warp Route is a collection of [`TokenRouter`](./contracts/libs/TokenRouter.sol) contracts deployed across a set of Hyperlane chains. These contracts leverage the `Router` pattern to implement access control and routing logic for remote token transfers. These contracts send and receive [`Messages`](./contracts/libs/Message.sol) which encode payloads containing a transfer `amount` and `recipient` address.\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph LR\n    subgraph \"Ethereum\"\n        HYP_E[TokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    subgraph \"Polygon\"\n        HYP_P[TokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n\n    subgraph \"Gnosis\"\n        HYP_G[TokenRouter]\n        style HYP_G fill:orange\n        Mailbox_G[(Mailbox)]\n    end\n\n    HYP_E -. \"router\" .- HYP_P -. \"router\" .- HYP_G\n\n```\n\nThe Token Router contract comes in several flavors and a warp route can be composed of a combination of these flavors.\n\n- [`Native`](./contracts/HypNative.sol) - for warping native assets (e.g. ETH) from the canonical chain\n- [`Collateral`](./contracts/HypERC20Collateral.sol) - for warping tokens, ERC20 or ERC721, from the canonical chain\n- [`Synthetic`](./contracts/HypERC20.sol) - for representing tokens, Native/ERC20 or ERC721, on a non-canonical chain\n\n## Interchain Security Models\n\nWarp routes are unique amongst token bridging solutions because they provide modular security. Because the `TokenRouter` implements the `IMessageRecipient` interface, it can be configured with a custom interchain security module. Please refer to the relevant guide to specifying interchain security modules on the [Messaging API receive docs](https://docs.hyperlane.xyz/docs/apis/messaging-api/receive#interchain-security-modules).\n\n## Remote Transfer Lifecycle Diagrams\n\nTo initiate a remote transfer, users call the `TokenRouter.transferRemote` function with the `destination` chain ID, `recipient` address, and transfer `amount`.\n\n```solidity\ninterface TokenRouter {\n  function transferRemote(\n    uint32 destination,\n    bytes32 recipient,\n    uint256 amount\n  ) public returns (bytes32 messageId);\n}\n\n```\n\n**NOTE:** The [Relayer](https://docs.hyperlane.xyz/docs/protocol/agents/relayer) shown below must be compensated. Please refer to the relevant guide on [paying for interchain gas](https://docs.hyperlane.xyz/docs/build-with-hyperlane/guides/paying-for-interchain-gas) on the `messageID` returned from the `transferRemote` call.\n\nDepending on the flavor of TokenRouter on the source and destination chain, this flow looks slightly different. The following diagrams illustrate these differences.\n\n### Transfer Alice's `amount` native ETH from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[NativeTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\\n{value: amount}\" ==> HYP_E\n    linkStyle 0 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 6 color:green;\n```\n\n### Transfer Alice's ERC20 `amount` from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Alice((Alice))\n    Bob((Bob))\n    style Alice fill:black\n    style Bob fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        Token_E[ERC20]\n        style Token_E fill:green\n        HYP_E[CollateralTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"approve(CollateralTokenRouter, infinity)\" ==> Token_E\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Token_E -- \"transferFrom(Alice, amount)\" --> HYP_E\n    linkStyle 2 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 8 color:green;\n```\n\n### Transfer Alice's `amount` synthetic MATIC from Ethereum back to Bob as native MATIC on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[SyntheticTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Alice -- \"burn(Alice, amount)\" --> HYP_E\n    linkStyle 1 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[NativeTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"transfer(){value: amount}\" --> Bob\n    linkStyle 7 color:green;\n```\n\n**NOTE:** ERC721 collateral variants are assumed to [enumerable](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Enumerable) and [metadata](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Metadata) compliant.\n\n## Versions\n\n| Git Ref                  | Release Date | Notes                          |\n| ------------------------ | ------------ | ------------------------------ |\n| [audit-v2-remediation]() | 2023-02-15   | Hyperlane V2 Audit remediation |\n| [main]()                 | ~            | Bleeding edge                  |\n\n## Setup for local development\n\n```sh\n# Install dependencies\nyarn\n\n# Build source and generate types\nyarn build:dev\n```\n\n## Unit testing\n\n```sh\n# Run all unit tests\nyarn test\n\n# Lint check code\nyarn lint\n```\n\n## Learn more\n\nFor more information, see the [Hyperlane introduction documentation](https://docs.hyperlane.xyz/docs/introduction/readme) or the [details about Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route).\n","gitHead":"91e42628743484ea1a42fb29f712718bd37d6a7d","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.3","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.19.0","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.4.3-beta0","@hyperlane-xyz/core":"1.4.3-beta0","@hyperlane-xyz/utils":"1.4.3-beta0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.4.2","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","readmeFilename":"README.md","devDependencies":{"chai":"^4.3.0","eslint":"^8.43.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.9.1","prettier":"^2.8.8","typechain":"8.0.0","typescript":"^5.1.6","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.8.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0","@trivago/prettier-plugin-sort-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.4.3-beta0_1690984948860_0.34133040570379447","host":"s3://npm-registry-packages"}},"1.4.3-beta1":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.4.3-beta1","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.4.3-beta1","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"ea0d86a6dd16d4a802a4662a695f49cfea683ebd","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.4.3-beta1.tgz","fileCount":654,"integrity":"sha512-04aQWmal7NwfNojEkihrnAOVOFMeVNwEUq0EN+Bb1TIhPPO/YVuBWR1k/yurDyXcMf/mlMQob9YHi648RtUVXQ==","signatures":[{"sig":"MEQCIGaDhHmOGKNc0WtPJvXxFTklHW6/EyKbY+wUgUiGuIG0AiAqUuWFe9MnfJJFuIX03Y8LPJ/4m+KJXJ0Z6yoc70MlrQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2710588},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"44757fa10bcb0a980012e9c0943d4b0cd60dde6a","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"tkporter","email":"trkporter@ucdavis.edu"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.4.3-beta1","@hyperlane-xyz/core":"1.4.3-beta1","@hyperlane-xyz/utils":"1.4.3-beta1","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.4.2","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.4.3-beta1_1691082088893_0.520598650166334","host":"s3://npm-registry-packages"}},"1.4.2-beta69":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.4.2-beta69","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.4.2-beta69","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"045a8032f12058e34b622121da6e05d9c3569e6c","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.4.2-beta69.tgz","fileCount":654,"integrity":"sha512-YP05iIw6bZnsXyqCH5mDI+Pq7VohKKwTs1LKuT1BJPhKa+BWjN3ytF867UxWRdNAPRx5kmlCBzeaBQmh7YSmwg==","signatures":[{"sig":"MEQCIFJltrykHW3p76tHyXgbkn69ZAfysAbe8NhLPB7fdR3RAiA4p4X8saImhahuAurX80uhy+7Dcs4NcMmudi2YpF2oeA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2710637},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"f5e98a745c879097607f9a97c03e9ae517bacce3","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"tkporter","email":"trkporter@ucdavis.edu"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.4.2-beta69","@hyperlane-xyz/core":"1.4.2-beta69","@hyperlane-xyz/utils":"1.4.2-beta69","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.4.2","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.4.2-beta69_1691082703910_0.10013447154745414","host":"s3://npm-registry-packages"}},"1.4.3-beta2":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.4.3-beta2","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.4.3-beta2","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"288d628f67cfb6eef3ff13e68c54d98630dce321","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.4.3-beta2.tgz","fileCount":654,"integrity":"sha512-HIuH/YTpFFBRCd43X0XHYORjxUhgMvQJQ3Kp2ZQtA9bmVNA+7LnER4XKoNs6eum/vO2WTmeMTWMAp5B6Q2364g==","signatures":[{"sig":"MEYCIQCUIDwWHlBfpI/FSY68l+4VA6XALGalfNKcv3Mb3ZJRBQIhALNoMVTMlO1PTc42c4GjtFy759nCQeI+cpp0bW5lZ4eX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2700679},"main":"dist/index.js","types":"dist/index.d.ts","readme":"# Hyperlane Tokens and Warp Routes\n\nThis repo contains contracts and SDK tooling for Hyperlane-connected ERC20 and ERC721 tokens. The contracts herein can be used to create [Hyperlane Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route) across different chains.\n\nFor instructions on deploying Warp Routes, see [the deployment documentation](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route/deploy-a-warp-route) and the [Hyperlane-Deploy repository](https://github.com/hyperlane-xyz/hyperlane-deploy).\n\n## Warp Route Architecture\n\nA Warp Route is a collection of [`TokenRouter`](./contracts/libs/TokenRouter.sol) contracts deployed across a set of Hyperlane chains. These contracts leverage the `Router` pattern to implement access control and routing logic for remote token transfers. These contracts send and receive [`Messages`](./contracts/libs/Message.sol) which encode payloads containing a transfer `amount` and `recipient` address.\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph LR\n    subgraph \"Ethereum\"\n        HYP_E[TokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    subgraph \"Polygon\"\n        HYP_P[TokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n\n    subgraph \"Gnosis\"\n        HYP_G[TokenRouter]\n        style HYP_G fill:orange\n        Mailbox_G[(Mailbox)]\n    end\n\n    HYP_E -. \"router\" .- HYP_P -. \"router\" .- HYP_G\n\n```\n\nThe Token Router contract comes in several flavors and a warp route can be composed of a combination of these flavors.\n\n- [`Native`](./contracts/HypNative.sol) - for warping native assets (e.g. ETH) from the canonical chain\n- [`Collateral`](./contracts/HypERC20Collateral.sol) - for warping tokens, ERC20 or ERC721, from the canonical chain\n- [`Synthetic`](./contracts/HypERC20.sol) - for representing tokens, Native/ERC20 or ERC721, on a non-canonical chain\n\n## Interchain Security Models\n\nWarp routes are unique amongst token bridging solutions because they provide modular security. Because the `TokenRouter` implements the `IMessageRecipient` interface, it can be configured with a custom interchain security module. Please refer to the relevant guide to specifying interchain security modules on the [Messaging API receive docs](https://docs.hyperlane.xyz/docs/apis/messaging-api/receive#interchain-security-modules).\n\n## Remote Transfer Lifecycle Diagrams\n\nTo initiate a remote transfer, users call the `TokenRouter.transferRemote` function with the `destination` chain ID, `recipient` address, and transfer `amount`.\n\n```solidity\ninterface TokenRouter {\n  function transferRemote(\n    uint32 destination,\n    bytes32 recipient,\n    uint256 amount\n  ) public returns (bytes32 messageId);\n}\n\n```\n\n**NOTE:** The [Relayer](https://docs.hyperlane.xyz/docs/protocol/agents/relayer) shown below must be compensated. Please refer to the relevant guide on [paying for interchain gas](https://docs.hyperlane.xyz/docs/build-with-hyperlane/guides/paying-for-interchain-gas) on the `messageID` returned from the `transferRemote` call.\n\nDepending on the flavor of TokenRouter on the source and destination chain, this flow looks slightly different. The following diagrams illustrate these differences.\n\n### Transfer Alice's `amount` native ETH from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[NativeTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\\n{value: amount}\" ==> HYP_E\n    linkStyle 0 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 6 color:green;\n```\n\n### Transfer Alice's ERC20 `amount` from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Alice((Alice))\n    Bob((Bob))\n    style Alice fill:black\n    style Bob fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        Token_E[ERC20]\n        style Token_E fill:green\n        HYP_E[CollateralTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"approve(CollateralTokenRouter, infinity)\" ==> Token_E\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Token_E -- \"transferFrom(Alice, amount)\" --> HYP_E\n    linkStyle 2 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 8 color:green;\n```\n\n### Transfer Alice's `amount` synthetic MATIC from Ethereum back to Bob as native MATIC on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[SyntheticTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Alice -- \"burn(Alice, amount)\" --> HYP_E\n    linkStyle 1 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[NativeTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"transfer(){value: amount}\" --> Bob\n    linkStyle 7 color:green;\n```\n\n**NOTE:** ERC721 collateral variants are assumed to [enumerable](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Enumerable) and [metadata](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Metadata) compliant.\n\n## Versions\n\n| Git Ref                  | Release Date | Notes                          |\n| ------------------------ | ------------ | ------------------------------ |\n| [audit-v2-remediation]() | 2023-02-15   | Hyperlane V2 Audit remediation |\n| [main]()                 | ~            | Bleeding edge                  |\n\n## Setup for local development\n\n```sh\n# Install dependencies\nyarn\n\n# Build source and generate types\nyarn build:dev\n```\n\n## Unit testing\n\n```sh\n# Run all unit tests\nyarn test\n\n# Lint check code\nyarn lint\n```\n\n## Learn more\n\nFor more information, see the [Hyperlane introduction documentation](https://docs.hyperlane.xyz/docs/introduction/readme) or the [details about Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route).\n","gitHead":"b5b8fabf89ad008ab628de1dfa6ae3ac12f46017","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.4","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.4.3-beta2","@hyperlane-xyz/core":"1.4.3-beta2","@hyperlane-xyz/utils":"1.4.3-beta2","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.4.2","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","readmeFilename":"README.md","devDependencies":{"chai":"^4.3.0","eslint":"^8.43.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.9.1","prettier":"^2.8.8","typechain":"8.0.0","typescript":"^5.1.6","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.8.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0","@trivago/prettier-plugin-sort-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.4.3-beta2_1691796930219_0.41195163090577336","host":"s3://npm-registry-packages"}},"1.4.2-beta70":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.4.2-beta70","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.4.2-beta70","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"14344da303d8e98df1cb086d95399bbe12702149","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.4.2-beta70.tgz","fileCount":691,"integrity":"sha512-B/wkIXhagx4hK5Lri3M+ZK7kwkWskBZtvccJ6YTdcp2ywLrVEzMUidqBmOo6ia9D7kEQjLo8U2yzf8SUApSLmA==","signatures":[{"sig":"MEUCIQDvKOd5e8GOmimhFEgZBVqexDP/y3GYCYnsR0EakLZpbQIgC+E6u0sGgXJfS8RNEJLvTCUGhZQfvOiutG+It4Vp5AQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2936059},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2a6d615209a58ef36c0cba7fed63c770f72cc290","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"forge test && hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"yorhodes","email":"email@yorke.dev"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.4.2-beta70","@hyperlane-xyz/core":"1.4.2-beta70","@hyperlane-xyz/utils":"1.4.2-beta70","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.4.2","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.4.2-beta70_1692062657730_0.5976126335478535","host":"s3://npm-registry-packages"}},"1.4.2-beta71":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.4.2-beta71","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.4.2-beta71","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"2bc884208014be856c2bde6f78d82a8388a74557","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.4.2-beta71.tgz","fileCount":691,"integrity":"sha512-upF+BflQni0qOiAtPzYAEPuw8UyqRPnKM8GJ6DV4Rb/KylHIbd+eg2+ED93/hwHA7jn+YE64qKbBcRbLo5dV/A==","signatures":[{"sig":"MEUCIQD9Sgm7wNizO0zkUa51hmVp8QjdZFy/evxCYlP7qhGmzAIgdtdsjDTUKcsT2tGPfNBSao9mfsnewL2NJnYOtWDrOCU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2939088},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2a6d615209a58ef36c0cba7fed63c770f72cc290","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"forge test && hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"yorhodes","email":"email@yorke.dev"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@hyperlane-xyz/sdk":"1.4.2-beta71","@hyperlane-xyz/core":"1.4.2-beta71","@hyperlane-xyz/utils":"1.4.2-beta71","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.4.2","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^4.7.2","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.27.0","@typescript-eslint/eslint-plugin":"^5.27.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.4.2-beta71_1692066979541_0.8647627001877967","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.5.0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.5.0","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"9edea4d3687da751cf02eee06b645726f7352de1","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.5.0.tgz","fileCount":662,"integrity":"sha512-AbLLGKbwVKyP2ezIpJLrZqQYbscAImeHG9Y32ZI0UACTedswpQnkTzG23aZx+xnsc9KyyZTOm1TbcgQgwjM7/w==","signatures":[{"sig":"MEYCIQCYkiK2OS0OkApEbT93vBlFyyaMZHRl4JtnKwECj4sKngIhAIkz16NL07F+TdQofjbyHAF11BY5pcAUvO7RYVFbiVkn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2744049},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"b2971f37dbd780420145752c99fbe5221ec8412c","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.4","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ethers":"^5.7.2","@solana/spl-token":"^0.3.8","@hyperlane-xyz/sdk":"1.5.0","@hyperlane-xyz/core":"1.5.0","@hyperlane-xyz/utils":"1.5.0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^5.1.6","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.5.0_1693857484607_0.15008762896646854","host":"s3://npm-registry-packages"}},"1.5.1-beta0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.5.1-beta0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.5.1-beta0","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"14706315fa22acc372f6cf557728a351c9a1a982","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.5.1-beta0.tgz","fileCount":666,"integrity":"sha512-bGwJragby18F+rJDIqHkXAXzLf6vb74oGTDInV2Gs4h/6oQ4401Rn+FzSPmn++wgsooVPnjmJ0AqRLask15XAg==","signatures":[{"sig":"MEQCIFrDMawI21rSMjcxjcKVADXRUUiikYlfl8aa1JiteANKAiBzKKJqniG+X3WGiNlM5CRrJn8cdmskPNpLevpTZbRZkw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2772061},"main":"dist/index.js","types":"dist/index.d.ts","readme":"# Hyperlane Tokens and Warp Routes\n\nThis repo contains contracts and SDK tooling for Hyperlane-connected ERC20 and ERC721 tokens. The contracts herein can be used to create [Hyperlane Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route) across different chains.\n\nFor instructions on deploying Warp Routes, see [the deployment documentation](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route/deploy-a-warp-route) and the [Hyperlane-Deploy repository](https://github.com/hyperlane-xyz/hyperlane-deploy).\n\n## Warp Route Architecture\n\nA Warp Route is a collection of [`TokenRouter`](./contracts/libs/TokenRouter.sol) contracts deployed across a set of Hyperlane chains. These contracts leverage the `Router` pattern to implement access control and routing logic for remote token transfers. These contracts send and receive [`Messages`](./contracts/libs/Message.sol) which encode payloads containing a transfer `amount` and `recipient` address.\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph LR\n    subgraph \"Ethereum\"\n        HYP_E[TokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    subgraph \"Polygon\"\n        HYP_P[TokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n\n    subgraph \"Gnosis\"\n        HYP_G[TokenRouter]\n        style HYP_G fill:orange\n        Mailbox_G[(Mailbox)]\n    end\n\n    HYP_E -. \"router\" .- HYP_P -. \"router\" .- HYP_G\n\n```\n\nThe Token Router contract comes in several flavors and a warp route can be composed of a combination of these flavors.\n\n- [`Native`](./contracts/HypNative.sol) - for warping native assets (e.g. ETH) from the canonical chain\n- [`Collateral`](./contracts/HypERC20Collateral.sol) - for warping tokens, ERC20 or ERC721, from the canonical chain\n- [`Synthetic`](./contracts/HypERC20.sol) - for representing tokens, Native/ERC20 or ERC721, on a non-canonical chain\n\n## Interchain Security Models\n\nWarp routes are unique amongst token bridging solutions because they provide modular security. Because the `TokenRouter` implements the `IMessageRecipient` interface, it can be configured with a custom interchain security module. Please refer to the relevant guide to specifying interchain security modules on the [Messaging API receive docs](https://docs.hyperlane.xyz/docs/apis/messaging-api/receive#interchain-security-modules).\n\n## Remote Transfer Lifecycle Diagrams\n\nTo initiate a remote transfer, users call the `TokenRouter.transferRemote` function with the `destination` chain ID, `recipient` address, and transfer `amount`.\n\n```solidity\ninterface TokenRouter {\n  function transferRemote(\n    uint32 destination,\n    bytes32 recipient,\n    uint256 amount\n  ) public returns (bytes32 messageId);\n}\n\n```\n\n**NOTE:** The [Relayer](https://docs.hyperlane.xyz/docs/protocol/agents/relayer) shown below must be compensated. Please refer to the relevant guide on [paying for interchain gas](https://docs.hyperlane.xyz/docs/build-with-hyperlane/guides/paying-for-interchain-gas) on the `messageID` returned from the `transferRemote` call.\n\nDepending on the flavor of TokenRouter on the source and destination chain, this flow looks slightly different. The following diagrams illustrate these differences.\n\n### Transfer Alice's `amount` native ETH from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[NativeTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\\n{value: amount}\" ==> HYP_E\n    linkStyle 0 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 6 color:green;\n```\n\n### Transfer Alice's ERC20 `amount` from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Alice((Alice))\n    Bob((Bob))\n    style Alice fill:black\n    style Bob fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        Token_E[ERC20]\n        style Token_E fill:green\n        HYP_E[CollateralTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"approve(CollateralTokenRouter, infinity)\" ==> Token_E\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Token_E -- \"transferFrom(Alice, amount)\" --> HYP_E\n    linkStyle 2 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 8 color:green;\n```\n\n### Transfer Alice's `amount` synthetic MATIC from Ethereum back to Bob as native MATIC on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[SyntheticTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Alice -- \"burn(Alice, amount)\" --> HYP_E\n    linkStyle 1 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[NativeTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"transfer(){value: amount}\" --> Bob\n    linkStyle 7 color:green;\n```\n\n**NOTE:** ERC721 collateral variants are assumed to [enumerable](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Enumerable) and [metadata](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Metadata) compliant.\n\n## Versions\n\n| Git Ref                  | Release Date | Notes                          |\n| ------------------------ | ------------ | ------------------------------ |\n| [audit-v2-remediation]() | 2023-02-15   | Hyperlane V2 Audit remediation |\n| [main]()                 | ~            | Bleeding edge                  |\n\n## Setup for local development\n\n```sh\n# Install dependencies\nyarn\n\n# Build source and generate types\nyarn build:dev\n```\n\n## Unit testing\n\n```sh\n# Run all unit tests\nyarn test\n\n# Lint check code\nyarn lint\n```\n\n## Learn more\n\nFor more information, see the [Hyperlane introduction documentation](https://docs.hyperlane.xyz/docs/introduction/readme) or the [details about Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route).\n","gitHead":"ebb5c10a8673d3b80801be81701bf34de8efad47","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.4","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ethers":"^5.7.2","@solana/spl-token":"^0.3.8","@hyperlane-xyz/sdk":"1.5.1-beta0","@hyperlane-xyz/core":"1.5.1-beta0","@hyperlane-xyz/utils":"1.5.1-beta0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.5.0","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","readmeFilename":"README.md","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^5.1.6","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.5.1-beta0_1694388087576_0.17441774119128528","host":"s3://npm-registry-packages"}},"1.5.1-beta1":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.5.1-beta1","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.5.1-beta1","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"009fac1641bd413c6f2ce701213d7655e3df9307","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.5.1-beta1.tgz","fileCount":666,"integrity":"sha512-rmPPb6/ytfJE2M+8sXiRYJOztIcO15BGF70lJfQl5AhnFPfNvTTj53CYnUC+NHJQmQsmNpxN9P/p716P9XHaig==","signatures":[{"sig":"MEYCIQC9ZRiIuKdalw9j++diDjzBUzjFyZ7LbUW2G1OM9xEpcgIhAICcBrR3hmLAQlKYjS5xzxFQCfWNTkYRM+RuAiJ0/1vF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2772063},"main":"dist/index.js","types":"dist/index.d.ts","readme":"# Hyperlane Tokens and Warp Routes\n\nThis repo contains contracts and SDK tooling for Hyperlane-connected ERC20 and ERC721 tokens. The contracts herein can be used to create [Hyperlane Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route) across different chains.\n\nFor instructions on deploying Warp Routes, see [the deployment documentation](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route/deploy-a-warp-route) and the [Hyperlane-Deploy repository](https://github.com/hyperlane-xyz/hyperlane-deploy).\n\n## Warp Route Architecture\n\nA Warp Route is a collection of [`TokenRouter`](./contracts/libs/TokenRouter.sol) contracts deployed across a set of Hyperlane chains. These contracts leverage the `Router` pattern to implement access control and routing logic for remote token transfers. These contracts send and receive [`Messages`](./contracts/libs/Message.sol) which encode payloads containing a transfer `amount` and `recipient` address.\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph LR\n    subgraph \"Ethereum\"\n        HYP_E[TokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    subgraph \"Polygon\"\n        HYP_P[TokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n\n    subgraph \"Gnosis\"\n        HYP_G[TokenRouter]\n        style HYP_G fill:orange\n        Mailbox_G[(Mailbox)]\n    end\n\n    HYP_E -. \"router\" .- HYP_P -. \"router\" .- HYP_G\n\n```\n\nThe Token Router contract comes in several flavors and a warp route can be composed of a combination of these flavors.\n\n- [`Native`](./contracts/HypNative.sol) - for warping native assets (e.g. ETH) from the canonical chain\n- [`Collateral`](./contracts/HypERC20Collateral.sol) - for warping tokens, ERC20 or ERC721, from the canonical chain\n- [`Synthetic`](./contracts/HypERC20.sol) - for representing tokens, Native/ERC20 or ERC721, on a non-canonical chain\n\n## Interchain Security Models\n\nWarp routes are unique amongst token bridging solutions because they provide modular security. Because the `TokenRouter` implements the `IMessageRecipient` interface, it can be configured with a custom interchain security module. Please refer to the relevant guide to specifying interchain security modules on the [Messaging API receive docs](https://docs.hyperlane.xyz/docs/apis/messaging-api/receive#interchain-security-modules).\n\n## Remote Transfer Lifecycle Diagrams\n\nTo initiate a remote transfer, users call the `TokenRouter.transferRemote` function with the `destination` chain ID, `recipient` address, and transfer `amount`.\n\n```solidity\ninterface TokenRouter {\n  function transferRemote(\n    uint32 destination,\n    bytes32 recipient,\n    uint256 amount\n  ) public returns (bytes32 messageId);\n}\n\n```\n\n**NOTE:** The [Relayer](https://docs.hyperlane.xyz/docs/protocol/agents/relayer) shown below must be compensated. Please refer to the relevant guide on [paying for interchain gas](https://docs.hyperlane.xyz/docs/build-with-hyperlane/guides/paying-for-interchain-gas) on the `messageID` returned from the `transferRemote` call.\n\nDepending on the flavor of TokenRouter on the source and destination chain, this flow looks slightly different. The following diagrams illustrate these differences.\n\n### Transfer Alice's `amount` native ETH from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[NativeTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\\n{value: amount}\" ==> HYP_E\n    linkStyle 0 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 6 color:green;\n```\n\n### Transfer Alice's ERC20 `amount` from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Alice((Alice))\n    Bob((Bob))\n    style Alice fill:black\n    style Bob fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        Token_E[ERC20]\n        style Token_E fill:green\n        HYP_E[CollateralTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"approve(CollateralTokenRouter, infinity)\" ==> Token_E\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Token_E -- \"transferFrom(Alice, amount)\" --> HYP_E\n    linkStyle 2 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 8 color:green;\n```\n\n### Transfer Alice's `amount` synthetic MATIC from Ethereum back to Bob as native MATIC on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[SyntheticTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Alice -- \"burn(Alice, amount)\" --> HYP_E\n    linkStyle 1 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[NativeTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"transfer(){value: amount}\" --> Bob\n    linkStyle 7 color:green;\n```\n\n**NOTE:** ERC721 collateral variants are assumed to [enumerable](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Enumerable) and [metadata](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Metadata) compliant.\n\n## Versions\n\n| Git Ref                  | Release Date | Notes                          |\n| ------------------------ | ------------ | ------------------------------ |\n| [audit-v2-remediation]() | 2023-02-15   | Hyperlane V2 Audit remediation |\n| [main]()                 | ~            | Bleeding edge                  |\n\n## Setup for local development\n\n```sh\n# Install dependencies\nyarn\n\n# Build source and generate types\nyarn build:dev\n```\n\n## Unit testing\n\n```sh\n# Run all unit tests\nyarn test\n\n# Lint check code\nyarn lint\n```\n\n## Learn more\n\nFor more information, see the [Hyperlane introduction documentation](https://docs.hyperlane.xyz/docs/introduction/readme) or the [details about Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route).\n","gitHead":"4d857f36ec97b9c17d8e591c43cbe9da02ad70b6","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.4","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ethers":"^5.7.2","@solana/spl-token":"^0.3.8","@hyperlane-xyz/sdk":"1.5.1-beta1","@hyperlane-xyz/core":"1.5.1-beta1","@hyperlane-xyz/utils":"1.5.1-beta1","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.5.0","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","readmeFilename":"README.md","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^5.1.6","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.5.1-beta1_1694458569368_0.6805568365123842","host":"s3://npm-registry-packages"}},"1.5.1":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.5.1","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.5.1","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"106c16dac8b2507f629c3c6ed2da865262058bbe","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.5.1.tgz","fileCount":675,"integrity":"sha512-GgH+JYprFyWEgE7XgjXRGpUGwbKfjtKbwjAIevIl/tEIR7nDdXGzBnpZFw+gHaKKuevKXMf17kYJTbrbrFlObw==","signatures":[{"sig":"MEYCIQCURQXQ5kjudnwzNey+xDmmMAbpAptrUmufknyyXm3UagIhANXAeMoeS3HpmLGT5rVj1L3uSW/W5JDv/CyHzKyPPzjd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2908170},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"3041b50c2820817bdd71d2a32462f6eaf43e0733","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.4","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ethers":"^5.7.2","@solana/spl-token":"^0.3.8","@hyperlane-xyz/sdk":"1.5.1","@hyperlane-xyz/core":"1.5.1","@hyperlane-xyz/utils":"1.5.1","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^5.1.6","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.5.1_1694633827466_0.1120870359177093","host":"s3://npm-registry-packages"}},"1.5.2-beta0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.5.2-beta0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.5.2-beta0","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"8a091123be9fd695803e7482158230d76b59235f","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.5.2-beta0.tgz","fileCount":675,"integrity":"sha512-QQQARqJQnSlFBdVlbV5Y478H/8x9OrXvznea0M+Hr7oGvfNbp+mLO1Z7OQ83tRNnjyagDl91cnRMSaVE/xAVLg==","signatures":[{"sig":"MEYCIQDDw3kNzmEQoTBwbECcYnRiulCVCTHeKAncKe5DL6/LsAIhAL/In9W9dib+Gbc/D92xGyJfV5Wk+sjLjXtnuRIYdpnE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2907397},"main":"dist/index.js","types":"dist/index.d.ts","readme":"# Hyperlane Tokens and Warp Routes\n\nThis repo contains contracts and SDK tooling for Hyperlane-connected ERC20 and ERC721 tokens. The contracts herein can be used to create [Hyperlane Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route) across different chains.\n\nFor instructions on deploying Warp Routes, see [the deployment documentation](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route/deploy-a-warp-route) and the [Hyperlane-Deploy repository](https://github.com/hyperlane-xyz/hyperlane-deploy).\n\n## Warp Route Architecture\n\nA Warp Route is a collection of [`TokenRouter`](./contracts/libs/TokenRouter.sol) contracts deployed across a set of Hyperlane chains. These contracts leverage the `Router` pattern to implement access control and routing logic for remote token transfers. These contracts send and receive [`Messages`](./contracts/libs/Message.sol) which encode payloads containing a transfer `amount` and `recipient` address.\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph LR\n    subgraph \"Ethereum\"\n        HYP_E[TokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    subgraph \"Polygon\"\n        HYP_P[TokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n\n    subgraph \"Gnosis\"\n        HYP_G[TokenRouter]\n        style HYP_G fill:orange\n        Mailbox_G[(Mailbox)]\n    end\n\n    HYP_E -. \"router\" .- HYP_P -. \"router\" .- HYP_G\n\n```\n\nThe Token Router contract comes in several flavors and a warp route can be composed of a combination of these flavors.\n\n- [`Native`](./contracts/HypNative.sol) - for warping native assets (e.g. ETH) from the canonical chain\n- [`Collateral`](./contracts/HypERC20Collateral.sol) - for warping tokens, ERC20 or ERC721, from the canonical chain\n- [`Synthetic`](./contracts/HypERC20.sol) - for representing tokens, Native/ERC20 or ERC721, on a non-canonical chain\n\n## Interchain Security Models\n\nWarp routes are unique amongst token bridging solutions because they provide modular security. Because the `TokenRouter` implements the `IMessageRecipient` interface, it can be configured with a custom interchain security module. Please refer to the relevant guide to specifying interchain security modules on the [Messaging API receive docs](https://docs.hyperlane.xyz/docs/apis/messaging-api/receive#interchain-security-modules).\n\n## Remote Transfer Lifecycle Diagrams\n\nTo initiate a remote transfer, users call the `TokenRouter.transferRemote` function with the `destination` chain ID, `recipient` address, and transfer `amount`.\n\n```solidity\ninterface TokenRouter {\n  function transferRemote(\n    uint32 destination,\n    bytes32 recipient,\n    uint256 amount\n  ) public returns (bytes32 messageId);\n}\n\n```\n\n**NOTE:** The [Relayer](https://docs.hyperlane.xyz/docs/protocol/agents/relayer) shown below must be compensated. Please refer to the relevant guide on [paying for interchain gas](https://docs.hyperlane.xyz/docs/build-with-hyperlane/guides/paying-for-interchain-gas) on the `messageID` returned from the `transferRemote` call.\n\nDepending on the flavor of TokenRouter on the source and destination chain, this flow looks slightly different. The following diagrams illustrate these differences.\n\n### Transfer Alice's `amount` native ETH from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[NativeTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\\n{value: amount}\" ==> HYP_E\n    linkStyle 0 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 6 color:green;\n```\n\n### Transfer Alice's ERC20 `amount` from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Alice((Alice))\n    Bob((Bob))\n    style Alice fill:black\n    style Bob fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        Token_E[ERC20]\n        style Token_E fill:green\n        HYP_E[CollateralTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"approve(CollateralTokenRouter, infinity)\" ==> Token_E\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Token_E -- \"transferFrom(Alice, amount)\" --> HYP_E\n    linkStyle 2 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 8 color:green;\n```\n\n### Transfer Alice's `amount` synthetic MATIC from Ethereum back to Bob as native MATIC on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[SyntheticTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Alice -- \"burn(Alice, amount)\" --> HYP_E\n    linkStyle 1 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[NativeTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"transfer(){value: amount}\" --> Bob\n    linkStyle 7 color:green;\n```\n\n**NOTE:** ERC721 collateral variants are assumed to [enumerable](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Enumerable) and [metadata](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Metadata) compliant.\n\n## Versions\n\n| Git Ref                  | Release Date | Notes                          |\n| ------------------------ | ------------ | ------------------------------ |\n| [audit-v2-remediation]() | 2023-02-15   | Hyperlane V2 Audit remediation |\n| [main]()                 | ~            | Bleeding edge                  |\n\n## Setup for local development\n\n```sh\n# Install dependencies\nyarn\n\n# Build source and generate types\nyarn build:dev\n```\n\n## Unit testing\n\n```sh\n# Run all unit tests\nyarn test\n\n# Lint check code\nyarn lint\n```\n\n## Learn more\n\nFor more information, see the [Hyperlane introduction documentation](https://docs.hyperlane.xyz/docs/introduction/readme) or the [details about Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route).\n","gitHead":"8c2a620da381d125f57934ca317e9dff620b194d","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.4","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ethers":"^5.7.2","@solana/spl-token":"^0.3.8","@hyperlane-xyz/sdk":"1.5.2-beta0","@hyperlane-xyz/core":"1.5.2-beta0","@hyperlane-xyz/utils":"1.5.2-beta0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.4.2","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","readmeFilename":"README.md","devDependencies":{"chai":"^4.3.0","eslint":"^8.43.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.9.1","prettier":"^2.8.8","typechain":"8.0.0","typescript":"^5.1.6","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.8.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0","@trivago/prettier-plugin-sort-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.5.2-beta0_1695346872519_0.940168488716026","host":"s3://npm-registry-packages"}},"1.5.1-beta2":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.5.1-beta2","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.5.1-beta2","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","dist":{"shasum":"876616590fed6f54e541c1fcf769e1d1cab47cda","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.5.1-beta2.tgz","fileCount":675,"integrity":"sha512-pN2BStmos+eEOVVl4IlIlLOugPTuNoxyrNunOJzIzkPny4ZMXPx3cL/xEDSWlbtDzEANGWs2zU9FGo4F2nRjOg==","signatures":[{"sig":"MEUCIQDYQVezXUEZ9R6bvRjXn0Q8xtDkTjKsbb/72P9Bme+zvAIgRjP67j4P9M/1iQIFCAHnHCdGkmEOg2RCWciB9QqBSB0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2908602},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"eea423ad049acfd15855465792147fb99bc8dd4d","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"tkporter","email":"trkporter@ucdavis.edu"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"https://github.com/hyperlane-xyz/hyperlane-token","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"dependencies":{"ethers":"^5.7.2","@solana/spl-token":"^0.3.8","@hyperlane-xyz/sdk":"1.5.1-beta2","@hyperlane-xyz/core":"1.5.1-beta2","@hyperlane-xyz/utils":"1.5.1-beta2","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.5.1","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.16.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.8.0","prettier":"^2.4.1","typechain":"8.0.0","typescript":"^5.1.6","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.5.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0","@trivago/prettier-plugin-sort-imports":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.5.1-beta2_1696330140384_0.8673237626529953","host":"s3://npm-registry-packages"}},"1.5.3":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.5.3","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.5.3","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"1ab39a679338a798d0ed44c0ff8de4026fd63e9c","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.5.3.tgz","fileCount":702,"integrity":"sha512-bM/kCjUtGIN5wDVPaW25XDcYYH/gHjMctfXuOKcJYr7vmqwqCfx1rR+DYItAjly815kL2OpCzs/QPjhodmV85A==","signatures":[{"sig":"MEYCIQDbEvVKZJCED1XmWFz1+CvIUqQXGCExUP04/BBINcVjjgIhAInRz4iUn+qPymkTPF3or+EA4NVwZUqGbHpvkrmuNFaZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3332478},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4795ca5ad3b9a27faf3379aec51701503261d9b6","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.4","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ethers":"^5.7.2","@solana/spl-token":"^0.3.8","@hyperlane-xyz/sdk":"1.5.3","@hyperlane-xyz/core":"1.5.3","@hyperlane-xyz/utils":"1.5.3","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.43.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.9.1","prettier":"^2.8.8","typechain":"8.0.0","typescript":"^5.1.6","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.8.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0","@trivago/prettier-plugin-sort-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.5.3_1696365701160_0.3379252553552805","host":"s3://npm-registry-packages"}},"1.5.4-beta0":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.5.4-beta0","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.5.4-beta0","maintainers":[{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"08a295b0fbf6b77d4a44743b59852bc26468a3f2","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.5.4-beta0.tgz","fileCount":702,"integrity":"sha512-dUCNbSWQGwKYWmizOt64oG44PKv7x0VyTABQ3XK6Ol1KkQZk/FPHPLvbNMMdryaYznhjJKXPC63GuQxgg58DwQ==","signatures":[{"sig":"MEYCIQChYI7sStk8/p5E93Drrx6Ys8bvcEtT1ypIQC4J8Me7bQIhAL7Hd8wX42QvTXTs7k4CMEtHM/TgIbi1jogoUtJdTjHX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3332530},"main":"dist/index.js","types":"dist/index.d.ts","readme":"# Hyperlane Tokens and Warp Routes\n\nThis repo contains contracts and SDK tooling for Hyperlane-connected ERC20 and ERC721 tokens. The contracts herein can be used to create [Hyperlane Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route) across different chains.\n\nFor instructions on deploying Warp Routes, see [the deployment documentation](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route/deploy-a-warp-route) and the [Hyperlane-Deploy repository](https://github.com/hyperlane-xyz/hyperlane-deploy).\n\n## Warp Route Architecture\n\nA Warp Route is a collection of [`TokenRouter`](./contracts/libs/TokenRouter.sol) contracts deployed across a set of Hyperlane chains. These contracts leverage the `Router` pattern to implement access control and routing logic for remote token transfers. These contracts send and receive [`Messages`](./contracts/libs/Message.sol) which encode payloads containing a transfer `amount` and `recipient` address.\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph LR\n    subgraph \"Ethereum\"\n        HYP_E[TokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    subgraph \"Polygon\"\n        HYP_P[TokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n\n    subgraph \"Gnosis\"\n        HYP_G[TokenRouter]\n        style HYP_G fill:orange\n        Mailbox_G[(Mailbox)]\n    end\n\n    HYP_E -. \"router\" .- HYP_P -. \"router\" .- HYP_G\n\n```\n\nThe Token Router contract comes in several flavors and a warp route can be composed of a combination of these flavors.\n\n- [`Native`](./contracts/HypNative.sol) - for warping native assets (e.g. ETH) from the canonical chain\n- [`Collateral`](./contracts/HypERC20Collateral.sol) - for warping tokens, ERC20 or ERC721, from the canonical chain\n- [`Synthetic`](./contracts/HypERC20.sol) - for representing tokens, Native/ERC20 or ERC721, on a non-canonical chain\n\n## Interchain Security Models\n\nWarp routes are unique amongst token bridging solutions because they provide modular security. Because the `TokenRouter` implements the `IMessageRecipient` interface, it can be configured with a custom interchain security module. Please refer to the relevant guide to specifying interchain security modules on the [Messaging API receive docs](https://docs.hyperlane.xyz/docs/apis/messaging-api/receive#interchain-security-modules).\n\n## Remote Transfer Lifecycle Diagrams\n\nTo initiate a remote transfer, users call the `TokenRouter.transferRemote` function with the `destination` chain ID, `recipient` address, and transfer `amount`.\n\n```solidity\ninterface TokenRouter {\n  function transferRemote(\n    uint32 destination,\n    bytes32 recipient,\n    uint256 amount\n  ) public returns (bytes32 messageId);\n}\n\n```\n\n**NOTE:** The [Relayer](https://docs.hyperlane.xyz/docs/protocol/agents/relayer) shown below must be compensated. Please refer to the relevant guide on [paying for interchain gas](https://docs.hyperlane.xyz/docs/build-with-hyperlane/guides/paying-for-interchain-gas) on the `messageID` returned from the `transferRemote` call.\n\nDepending on the flavor of TokenRouter on the source and destination chain, this flow looks slightly different. The following diagrams illustrate these differences.\n\n### Transfer Alice's `amount` native ETH from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[NativeTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\\n{value: amount}\" ==> HYP_E\n    linkStyle 0 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 6 color:green;\n```\n\n### Transfer Alice's ERC20 `amount` from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Alice((Alice))\n    Bob((Bob))\n    style Alice fill:black\n    style Bob fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        Token_E[ERC20]\n        style Token_E fill:green\n        HYP_E[CollateralTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"approve(CollateralTokenRouter, infinity)\" ==> Token_E\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Token_E -- \"transferFrom(Alice, amount)\" --> HYP_E\n    linkStyle 2 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 8 color:green;\n```\n\n### Transfer Alice's `amount` synthetic MATIC from Ethereum back to Bob as native MATIC on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[SyntheticTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Alice -- \"burn(Alice, amount)\" --> HYP_E\n    linkStyle 1 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[NativeTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"transfer(){value: amount}\" --> Bob\n    linkStyle 7 color:green;\n```\n\n**NOTE:** ERC721 collateral variants are assumed to [enumerable](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Enumerable) and [metadata](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Metadata) compliant.\n\n## Versions\n\n| Git Ref                  | Release Date | Notes                          |\n| ------------------------ | ------------ | ------------------------------ |\n| [audit-v2-remediation]() | 2023-02-15   | Hyperlane V2 Audit remediation |\n| [main]()                 | ~            | Bleeding edge                  |\n\n## Setup for local development\n\n```sh\n# Install dependencies\nyarn\n\n# Build source and generate types\nyarn build:dev\n```\n\n## Unit testing\n\n```sh\n# Run all unit tests\nyarn test\n\n# Lint check code\nyarn lint\n```\n\n## Learn more\n\nFor more information, see the [Hyperlane introduction documentation](https://docs.hyperlane.xyz/docs/introduction/readme) or the [details about Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route).\n","gitHead":"7f4fdeabb583ed451b8be382a828680b0062803e","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"8.19.4","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ethers":"^5.7.2","@solana/spl-token":"^0.3.8","@hyperlane-xyz/sdk":"1.5.4-beta0","@hyperlane-xyz/core":"1.5.4-beta0","@hyperlane-xyz/utils":"1.5.4-beta0","@openzeppelin/contracts-upgradeable":"^4.8.0"},"stableVersion":"1.5.3","_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","readmeFilename":"README.md","devDependencies":{"chai":"^4.3.0","eslint":"^8.43.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.9.1","prettier":"^2.8.8","typechain":"8.0.0","typescript":"^5.1.6","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.8.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0","@trivago/prettier-plugin-sort-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.5.4-beta0_1696796278432_0.6877111367012492","host":"s3://npm-registry-packages"}},"1.5.8":{"name":"@hyperlane-xyz/hyperlane-token","version":"1.5.8","keywords":["Hyperlane","Solidity","Token"],"license":"Apache-2.0","_id":"@hyperlane-xyz/hyperlane-token@1.5.8","maintainers":[{"name":"aroralanuk","email":"kunalarora1729@gmail.com"},{"name":"daniel-savu","email":"ioan.daniel.savu@gmail.com"},{"name":"tkporter","email":"trkporter@ucdavis.edu"},{"name":"yorhodes","email":"email@yorke.dev"},{"name":"nambrot","email":"nambrot@googlemail.com"},{"name":"jmrossy","email":"jm.rossy@gmail.com"},{"name":"asaj","email":"asaoines@gmail.com"}],"homepage":"https://www.hyperlane.xyz","bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"dist":{"shasum":"0d3628b610d1eb40cdb976b12186e7f8842c33ed","tarball":"https://registry.npmjs.org/@hyperlane-xyz/hyperlane-token/-/hyperlane-token-1.5.8.tgz","fileCount":702,"integrity":"sha512-4Fnwgd5pPcjcsiB46vLLYX6eYLvh8Fk0psN66Tirfmbw6XRdWVQo4Ravo2ldcER2OxcocsFXdYJGJbb6bnYdCQ==","signatures":[{"sig":"MEQCIArXqNv6tITSPpepYVObgGcr91Xuqey2Jv83sPxDDTr2AiBzVMf5GPXlZLB55yd3HDolxLdShmOqIYwFVUcbYbxwUg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3332478},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"dc89ee1558f437b5937f9f4694e04048330a990f","scripts":{"docs":"forge doc","lint":"solhint contracts/**/*.sol && eslint . --ext .ts","test":"hardhat test ./test/*.test.ts","build":"hardhat compile && tsc","clean":"hardhat clean && rm -rf dist cache src/types && forge clean","coverage":"hardhat coverage","prettier":"prettier --write ./contracts ./test","deploy-warp-route":"DEBUG=* ts-node scripts/deploy"},"_npmUser":{"name":"jmrossy","email":"jm.rossy@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"_npmVersion":"9.8.1","description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","directories":{},"_nodeVersion":"18.18.2","dependencies":{"ethers":"^5.7.2","@solana/spl-token":"^0.3.8","@hyperlane-xyz/sdk":"1.5.8","@hyperlane-xyz/core":"1.5.8","@hyperlane-xyz/utils":"1.5.8","@openzeppelin/contracts-upgradeable":"^4.8.0"},"_hasShrinkwrap":false,"packageManager":"yarn@3.2.0","devDependencies":{"chai":"^4.3.0","eslint":"^8.43.0","hardhat":"^2.16.1","solhint":"^3.3.2","ts-node":"^10.9.1","prettier":"^2.8.8","typechain":"8.0.0","typescript":"^5.1.6","@types/mocha":"^9.1.0","ethereum-waffle":"^3.4.4","solidity-coverage":"^0.8.3","@typechain/hardhat":"^6.0.0","@typechain/ethers-v5":"10.0.0","hardhat-gas-reporter":"^1.0.9","eslint-config-prettier":"^8.8.0","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.5","@nomiclabs/hardhat-ethers":"^2.2.1","@nomiclabs/hardhat-waffle":"^2.0.3","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0","@trivago/prettier-plugin-sort-imports":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hyperlane-token_1.5.8_1697465625524_0.40958272570413845","host":"s3://npm-registry-packages"}}},"time":{"created":"2022-12-16T19:35:14.584Z","modified":"2026-08-17T21:12:38.747Z","1.0.0-beta1":"2022-12-16T19:35:14.875Z","1.0.0-beta2":"2022-12-21T16:58:54.037Z","1.0.0-beta3":"2022-12-22T03:53:01.489Z","1.0.0-beta5":"2023-01-03T06:41:56.154Z","1.0.0-beta6":"2023-01-03T22:40:37.756Z","1.0.0-beta7":"2023-01-10T21:13:37.844Z","1.0.0-beta8":"2023-01-10T21:20:34.792Z","1.0.0":"2023-01-12T20:15:42.808Z","1.0.1-beta0":"2023-01-24T23:04:30.057Z","1.1.0-beta0":"2023-01-25T17:39:14.939Z","1.1.0":"2023-01-25T17:59:49.398Z","1.1.1":"2023-01-26T17:37:59.232Z","1.1.3":"2023-01-31T20:08:42.136Z","1.2.0":"2023-02-23T18:15:43.313Z","1.2.1":"2023-03-09T10:58:21.670Z","1.2.2":"2023-03-13T22:22:16.225Z","1.2.3":"2023-03-20T19:09:56.725Z","1.3.0":"2023-04-05T04:04:13.266Z","1.3.1":"2023-04-06T13:17:43.032Z","1.3.2":"2023-04-14T16:47:02.580Z","1.3.2-beta":"2023-04-14T16:55:36.984Z","1.3.3":"2023-04-24T18:00:54.197Z","1.3.4":"2023-05-03T22:41:00.694Z","1.3.5":"2023-06-19T08:55:39.653Z","1.3.6":"2023-06-29T10:05:09.911Z","1.3.7":"2023-07-04T21:02:57.263Z","1.3.8-beta0":"2023-07-05T22:20:32.644Z","1.3.8":"2023-07-07T22:08:32.056Z","1.4.0":"2023-07-11T19:10:53.242Z","1.4.1":"2023-07-12T16:36:02.395Z","1.4.2":"2023-07-12T19:30:12.453Z","1.4.3-beta0":"2023-08-02T14:02:29.094Z","1.4.3-beta1":"2023-08-03T17:01:29.232Z","1.4.2-beta69":"2023-08-03T17:11:44.209Z","1.4.3-beta2":"2023-08-11T23:35:30.455Z","1.4.2-beta70":"2023-08-15T01:24:18.111Z","1.4.2-beta71":"2023-08-15T02:36:19.805Z","1.5.0":"2023-09-04T19:58:04.836Z","1.5.1-beta0":"2023-09-10T23:21:27.906Z","1.5.1-beta1":"2023-09-11T18:56:09.689Z","1.5.1":"2023-09-13T19:37:07.837Z","1.5.2-beta0":"2023-09-22T01:41:12.824Z","1.5.1-beta2":"2023-10-03T10:49:00.734Z","1.5.3":"2023-10-03T20:41:41.535Z","1.5.4-beta0":"2023-10-08T20:17:58.777Z","1.5.8":"2023-10-16T14:13:45.785Z"},"bugs":{"url":"https://github.com/hyperlane-xyz/hyperlane-token/issues"},"license":"Apache-2.0","homepage":"https://www.hyperlane.xyz","keywords":["Hyperlane","Solidity","Token"],"repository":{"url":"git+https://github.com/hyperlane-xyz/hyperlane-token.git","type":"git"},"description":"A template for interchain ERC20 and ERC721 tokens using Hyperlane","maintainers":[{"email":"nambrot@googlemail.com","name":"nambrot"},{"email":"tkporter4@gmail.com","name":"tkporter"},{"email":"paulmonish@gmail.com","name":"paulbalaji"}],"readme":"# Hyperlane Tokens and Warp Routes\n\nThis repo contains contracts and SDK tooling for Hyperlane-connected ERC20 and ERC721 tokens. The contracts herein can be used to create [Hyperlane Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route) across different chains.\n\nFor instructions on deploying Warp Routes, see [the deployment documentation](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route/deploy-a-warp-route) and the [Hyperlane-Deploy repository](https://github.com/hyperlane-xyz/hyperlane-deploy).\n\n## Warp Route Architecture\n\nA Warp Route is a collection of [`TokenRouter`](./contracts/libs/TokenRouter.sol) contracts deployed across a set of Hyperlane chains. These contracts leverage the `Router` pattern to implement access control and routing logic for remote token transfers. These contracts send and receive [`Messages`](./contracts/libs/Message.sol) which encode payloads containing a transfer `amount` and `recipient` address.\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph LR\n    subgraph \"Ethereum\"\n        HYP_E[TokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    subgraph \"Polygon\"\n        HYP_P[TokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n\n    subgraph \"Gnosis\"\n        HYP_G[TokenRouter]\n        style HYP_G fill:orange\n        Mailbox_G[(Mailbox)]\n    end\n\n    HYP_E -. \"router\" .- HYP_P -. \"router\" .- HYP_G\n\n```\n\nThe Token Router contract comes in several flavors and a warp route can be composed of a combination of these flavors.\n\n- [`Native`](./contracts/HypNative.sol) - for warping native assets (e.g. ETH) from the canonical chain\n- [`Collateral`](./contracts/HypERC20Collateral.sol) - for warping tokens, ERC20 or ERC721, from the canonical chain\n- [`Synthetic`](./contracts/HypERC20.sol) - for representing tokens, Native/ERC20 or ERC721, on a non-canonical chain\n\n## Interchain Security Models\n\nWarp routes are unique amongst token bridging solutions because they provide modular security. Because the `TokenRouter` implements the `IMessageRecipient` interface, it can be configured with a custom interchain security module. Please refer to the relevant guide to specifying interchain security modules on the [Messaging API receive docs](https://docs.hyperlane.xyz/docs/apis/messaging-api/receive#interchain-security-modules).\n\n## Remote Transfer Lifecycle Diagrams\n\nTo initiate a remote transfer, users call the `TokenRouter.transferRemote` function with the `destination` chain ID, `recipient` address, and transfer `amount`.\n\n```solidity\ninterface TokenRouter {\n  function transferRemote(\n    uint32 destination,\n    bytes32 recipient,\n    uint256 amount\n  ) public returns (bytes32 messageId);\n}\n\n```\n\n**NOTE:** The [Relayer](https://docs.hyperlane.xyz/docs/protocol/agents/relayer) shown below must be compensated. Please refer to the relevant guide on [paying for interchain gas](https://docs.hyperlane.xyz/docs/build-with-hyperlane/guides/paying-for-interchain-gas) on the `messageID` returned from the `transferRemote` call.\n\nDepending on the flavor of TokenRouter on the source and destination chain, this flow looks slightly different. The following diagrams illustrate these differences.\n\n### Transfer Alice's `amount` native ETH from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[NativeTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\\n{value: amount}\" ==> HYP_E\n    linkStyle 0 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 6 color:green;\n```\n\n### Transfer Alice's ERC20 `amount` from Ethereum to Bob on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Alice((Alice))\n    Bob((Bob))\n    style Alice fill:black\n    style Bob fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        Token_E[ERC20]\n        style Token_E fill:green\n        HYP_E[CollateralTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"approve(CollateralTokenRouter, infinity)\" ==> Token_E\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Token_E -- \"transferFrom(Alice, amount)\" --> HYP_E\n    linkStyle 2 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[SyntheticRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"mint(Bob, amount)\" --> Bob\n    linkStyle 8 color:green;\n```\n\n### Transfer Alice's `amount` synthetic MATIC from Ethereum back to Bob as native MATIC on Polygon\n\n```mermaid\n%%{ init: {\n  \"theme\": \"neutral\",\n  \"themeVariables\": {\n    \"mainBkg\": \"#025AA1\",\n    \"textColor\": \"white\",\n    \"clusterBkg\": \"white\"\n  },\n  \"themeCSS\": \".edgeLabel { color: black }\"\n}}%%\n\ngraph TB\n    Bob((Bob))\n    style Bob fill:black\n    Alice((Alice))\n    style Alice fill:black\n\n    Relayer([Relayer])\n\n    subgraph \"Ethereum\"\n        HYP_E[SyntheticTokenRouter]\n        style HYP_E fill:orange\n        Mailbox_E[(Mailbox)]\n    end\n\n    Alice == \"transferRemote(Polygon, Bob, amount)\" ==> HYP_E\n    Alice -- \"burn(Alice, amount)\" --> HYP_E\n    linkStyle 1 color:green;\n    HYP_E -- \"dispatch(Polygon, (Bob, amount))\" --> Mailbox_E\n\n    subgraph \"Polygon\"\n        HYP_P[NativeTokenRouter]\n        style HYP_P fill:orange\n        Mailbox_P[(Mailbox)]\n    end\n\n    Mailbox_E -. \"indexing\" .-> Relayer\n\n    Relayer == \"process(Ethereum, (Bob, amount))\" ==> Mailbox_P\n    Mailbox_P -- \"handle(Ethereum, (Bob, amount))\" --> HYP_P\n\n    HYP_E -. \"router\" .- HYP_P\n    HYP_P -- \"transfer(){value: amount}\" --> Bob\n    linkStyle 7 color:green;\n```\n\n**NOTE:** ERC721 collateral variants are assumed to [enumerable](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Enumerable) and [metadata](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#IERC721Metadata) compliant.\n\n## Versions\n\n| Git Ref                  | Release Date | Notes                          |\n| ------------------------ | ------------ | ------------------------------ |\n| [audit-v2-remediation]() | 2023-02-15   | Hyperlane V2 Audit remediation |\n| [main]()                 | ~            | Bleeding edge                  |\n\n## Setup for local development\n\n```sh\n# Install dependencies\nyarn\n\n# Build source and generate types\nyarn build:dev\n```\n\n## Unit testing\n\n```sh\n# Run all unit tests\nyarn test\n\n# Lint check code\nyarn lint\n```\n\n## Learn more\n\nFor more information, see the [Hyperlane introduction documentation](https://docs.hyperlane.xyz/docs/introduction/readme) or the [details about Warp Routes](https://docs.hyperlane.xyz/docs/deploy/deploy-warp-route).\n","readmeFilename":"README.md"}