{"_id":"@1inch/token-plugins","_rev":"11-031b48d2530c1f0e311ab1d6f28cf966","name":"@1inch/token-plugins","dist-tags":{"latest":"1.3.0"},"versions":{"1.1.0":{"name":"@1inch/token-plugins","version":"1.1.0","author":{"name":"1inch"},"license":"MIT","_id":"@1inch/token-plugins@1.1.0","maintainers":[{"name":"k06a","email":"k06aaa@gmail.com"},{"name":"d.kotsiuba","email":"d.kotsiuba@1inch.io"},{"name":"artall641inch","email":"a.vorobev@1inch.io"},{"name":"zumzoom","email":"by.zumzoom@gmail.com"},{"name":"sevenswen","email":"tihonenko.v.v@gmail.com"},{"name":"zzomrot","email":"d.bukov@1inch.io"},{"name":"krboktv-inch","email":"kirill@1inch.io"}],"homepage":"https://github.com/1inch/token-plugins#readme","bugs":{"url":"https://github.com/1inch/token-plugins/issues"},"dist":{"shasum":"d6cf20b2f510c0c3e356f2d284c70431e7273d2c","tarball":"https://registry.npmjs.org/@1inch/token-plugins/-/token-plugins-1.1.0.tgz","fileCount":21,"integrity":"sha512-ufK4OZIwRCD6+7bowoHjS9uyN28KImN+l0AEF4vF2epBG+3a63iVFa2X2cxsh2R2tdpzUBFxERK1NK8Gn1qhGQ==","signatures":[{"sig":"MEUCIBnO7Qw1G4M3PBc2aEsPnfkwrghyHd19wi4fSBZXYNsoAiEAwSG8/9/Xwk8p/n76Tg9wZcT/49cPainoMmxP4WVs7B4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50804},"scripts":{"lint":"yarn run lint:js && yarn run lint:sol","test":"hardhat test --parallel","clean":"rimraf artifacts cache coverage coverage.json contracts/hardhat-dependency-compiler","deploy":"hardhat deploy --network","lint:js":"eslint .","test:ci":"hardhat test","coverage":"hardhat coverage","lint:fix":"yarn run lint:js:fix && yarn run lint:sol:fix","lint:sol":"solhint --max-warnings 0 \"contracts/**/*.sol\"","lint:js:fix":"eslint . --fix","lint:sol:fix":"solhint --max-warnings 0 \"contracts/**/*.sol\" --fix"},"_npmUser":{"name":"k06a","email":"k06aaa@gmail.com"},"repository":{"url":"git@github.com:1inch/token-plugins.git","type":"git"},"description":"ERC20 extension enabling external smart contract based plugins to track balances of those users who opted-in to those plugins","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2022-2023 1inch\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"@1inch/solidity-utils":"2.2.21","@openzeppelin/contracts":"4.8.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"4.3.7","dotenv":"16.0.3","eslint":"8.36.0","ethers":"5.7.2","rimraf":"4.4.0","hardhat":"2.13.0","solhint":"3.4.1","hardhat-deploy":"0.11.25","eslint-plugin-n":"15.6.1","solidity-coverage":"0.8.2","eslint-plugin-import":"2.27.5","hardhat-gas-reporter":"1.0.9","eslint-plugin-promise":"6.1.1","eslint-config-standard":"17.0.0","@nomiclabs/hardhat-ethers":"2.2.2","@openzeppelin/test-helpers":"0.5.16","@nomiclabs/hardhat-etherscan":"3.1.7","@nomicfoundation/hardhat-chai-matchers":"1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/token-plugins_1.1.0_1688981447572_0.5353381020338437","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@1inch/token-plugins","version":"1.1.1","author":{"name":"1inch"},"license":"MIT","_id":"@1inch/token-plugins@1.1.1","maintainers":[{"name":"k06a","email":"k06aaa@gmail.com"},{"name":"d.kotsiuba","email":"d.kotsiuba@1inch.io"},{"name":"artall641inch","email":"a.vorobev@1inch.io"},{"name":"zumzoom","email":"by.zumzoom@gmail.com"},{"name":"sevenswen","email":"tihonenko.v.v@gmail.com"},{"name":"zzomrot","email":"d.bukov@1inch.io"},{"name":"krboktv-inch","email":"kirill@1inch.io"}],"homepage":"https://github.com/1inch/token-plugins#readme","bugs":{"url":"https://github.com/1inch/token-plugins/issues"},"dist":{"shasum":"c86a5b543d9a8a82f5b3e5ecd839bf78a38d2334","tarball":"https://registry.npmjs.org/@1inch/token-plugins/-/token-plugins-1.1.1.tgz","fileCount":20,"integrity":"sha512-8fXNVD3uCMK8rleNBbfV/NXwlUL9jlcNZA9gqhdt2bS3esJU8pkDMoPHIuBDEiZfwCSoakkKl7AW+nzc+cG42g==","signatures":[{"sig":"MEYCIQCBmRIzKFfuEe3KoKy1qfpXnNeI3M5BAVR19ePxASE7xwIhAK0FxJT0mnTUJl/Y05TOaOLv7NtHxyIXZ8l0VtiaNR7g","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":44656},"scripts":{"lint":"yarn run lint:js && yarn run lint:sol","test":"hardhat test --parallel","clean":"rimraf artifacts cache coverage coverage.json contracts/hardhat-dependency-compiler","deploy":"hardhat deploy --network","lint:js":"eslint .","test:ci":"hardhat test","coverage":"hardhat coverage","lint:fix":"yarn run lint:js:fix && yarn run lint:sol:fix","lint:sol":"solhint --max-warnings 0 \"contracts/**/*.sol\"","lint:js:fix":"eslint . --fix","lint:sol:fix":"solhint --max-warnings 0 \"contracts/**/*.sol\" --fix"},"_npmUser":{"name":"zumzoom","email":"by.zumzoom@gmail.com"},"repository":{"url":"git@github.com:1inch/token-plugins.git","type":"git"},"description":"ERC20 extension enabling external smart contract based plugins to track balances of those users who opted-in to those plugins","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2022-2023 1inch\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"@1inch/solidity-utils":"2.2.21","@openzeppelin/contracts":"4.8.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"4.3.7","dotenv":"16.0.3","eslint":"8.36.0","ethers":"5.7.2","rimraf":"4.4.0","hardhat":"2.13.0","solhint":"3.4.1","hardhat-deploy":"0.11.25","eslint-plugin-n":"15.6.1","solidity-coverage":"0.8.2","eslint-plugin-import":"2.27.5","hardhat-gas-reporter":"1.0.9","eslint-plugin-promise":"6.1.1","eslint-config-standard":"17.0.0","@nomiclabs/hardhat-ethers":"2.2.2","@openzeppelin/test-helpers":"0.5.16","@nomiclabs/hardhat-etherscan":"3.1.7","@nomicfoundation/hardhat-chai-matchers":"1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/token-plugins_1.1.1_1689253026068_0.9539575323530143","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"@1inch/token-plugins","version":"1.1.2","author":{"name":"1inch"},"license":"MIT","_id":"@1inch/token-plugins@1.1.2","maintainers":[{"name":"1inch-robot","email":"devops@1inch.io"},{"name":"k06a","email":"k06aaa@gmail.com"},{"name":"d.kotsiuba","email":"d.kotsiuba@1inch.io"},{"name":"artall641inch","email":"a.vorobev@1inch.io"},{"name":"zumzoom","email":"by.zumzoom@gmail.com"},{"name":"sevenswen","email":"tihonenko.v.v@gmail.com"},{"name":"zzomrot","email":"d.bukov@1inch.io"},{"name":"krboktv-inch","email":"kirill@1inch.io"}],"homepage":"https://github.com/1inch/token-plugins#readme","bugs":{"url":"https://github.com/1inch/token-plugins/issues"},"dist":{"shasum":"5381f7156c6d98760da838cd1002c38cb1f45107","tarball":"https://registry.npmjs.org/@1inch/token-plugins/-/token-plugins-1.1.2.tgz","fileCount":20,"integrity":"sha512-ACstC+LpIbOdm7KwBG6KddjtaWHyhHfn6/2LpBdnx6PMPlgbR+IsHF3G61oah7mDtR2TurtMGQU1UCpTk2coyg==","signatures":[{"sig":"MEUCIQDgZTJOhbdI/oti+gcbR0zjM+gR1nVw3FGaxSziXzjl8QIgUJQ15DAp2yJ1XtiSjFUt5hSy41PBKRjO9D2Ty7lQZ08=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":48891},"scripts":{"lint":"yarn run lint:js && yarn run lint:sol","test":"hardhat test --parallel","clean":"rimraf artifacts cache coverage coverage.json contracts/hardhat-dependency-compiler","deploy":"hardhat deploy --network","lint:js":"eslint .","test:ci":"hardhat test","coverage":"hardhat coverage","lint:fix":"yarn run lint:js:fix && yarn run lint:sol:fix","lint:sol":"solhint --max-warnings 0 \"contracts/**/*.sol\"","lint:js:fix":"eslint . --fix","lint:sol:fix":"solhint --max-warnings 0 \"contracts/**/*.sol\" --fix"},"_npmUser":{"name":"zumzoom","email":"by.zumzoom@gmail.com"},"repository":{"url":"git@github.com:1inch/token-plugins.git","type":"git"},"description":"ERC20 extension enabling external smart contract based plugins to track balances of those users who opted-in to those plugins","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2022-2023 1inch\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"@1inch/solidity-utils":"3.0.1","@openzeppelin/contracts":"4.9.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"4.3.7","dotenv":"16.3.1","eslint":"8.45.0","ethers":"6.6.5","rimraf":"5.0.1","hardhat":"2.17.0","solhint":"3.4.1","hardhat-deploy":"0.11.34","eslint-plugin-n":"16.0.1","solidity-coverage":"0.8.4","eslint-plugin-import":"2.27.5","hardhat-gas-reporter":"1.0.9","eslint-plugin-promise":"6.1.1","eslint-config-standard":"17.1.0","@openzeppelin/test-helpers":"0.5.16","@nomicfoundation/hardhat-ethers":"3.0.4","@nomicfoundation/hardhat-verify":"1.0.4","@nomicfoundation/hardhat-chai-matchers":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/token-plugins_1.1.2_1690477023841_0.5588150668722565","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@1inch/token-plugins","version":"1.2.0","author":{"name":"1inch"},"license":"MIT","_id":"@1inch/token-plugins@1.2.0","maintainers":[{"name":"1inch-robot","email":"devops@1inch.io"},{"name":"k06a","email":"k06aaa@gmail.com"},{"name":"d.kotsiuba","email":"d.kotsiuba@1inch.io"},{"name":"artall641inch","email":"a.vorobev@1inch.io"},{"name":"zumzoom","email":"by.zumzoom@gmail.com"},{"name":"sevenswen","email":"tihonenko.v.v@gmail.com"},{"name":"zzomrot","email":"d.bukov@1inch.io"},{"name":"krboktv-inch","email":"kirill@1inch.io"}],"homepage":"https://github.com/1inch/token-plugins#readme","bugs":{"url":"https://github.com/1inch/token-plugins/issues"},"dist":{"shasum":"d073dba9ea2cdac11385fa112b7139b8269a2ddc","tarball":"https://registry.npmjs.org/@1inch/token-plugins/-/token-plugins-1.2.0.tgz","fileCount":20,"integrity":"sha512-zfCjPRy8rmtufVibVNTX5luz/iwoHYnkWBhx3kmbJU0A6I518RItX1kTRHwCKwMSe7u9YWcOU3XIRnnjkyXI7w==","signatures":[{"sig":"MEUCIQCxlyaB3NKG8VUaF/EsizLMIH0gFk7Z0PaoedSZ9sP07gIgbfiOveeQUev0/gNDUH8WLuL7M6W0fduSzGsij/gcEes=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49952},"scripts":{"lint":"yarn run lint:js && yarn run lint:sol","test":"hardhat test --parallel","clean":"rimraf artifacts cache coverage coverage.json contracts/hardhat-dependency-compiler","deploy":"hardhat deploy --network","lint:js":"eslint .","test:ci":"hardhat test","coverage":"hardhat coverage","lint:fix":"yarn run lint:js:fix && yarn run lint:sol:fix","lint:sol":"solhint --max-warnings 0 \"contracts/**/*.sol\"","lint:js:fix":"eslint . --fix","lint:sol:fix":"solhint --max-warnings 0 \"contracts/**/*.sol\" --fix"},"_npmUser":{"name":"zumzoom","email":"by.zumzoom@gmail.com"},"repository":{"url":"git@github.com:1inch/token-plugins.git","type":"git"},"description":"ERC20 extension enabling external smart contract based plugins to track balances of those users who opted-in to those plugins","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2022-2023 1inch\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"@1inch/solidity-utils":"3.0.1","@openzeppelin/contracts":"4.9.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"4.3.7","dotenv":"16.3.1","eslint":"8.45.0","ethers":"6.6.5","rimraf":"5.0.1","hardhat":"2.17.0","solhint":"3.4.1","hardhat-deploy":"0.11.34","eslint-plugin-n":"16.0.1","solidity-coverage":"0.8.4","eslint-plugin-import":"2.27.5","hardhat-gas-reporter":"1.0.9","eslint-plugin-promise":"6.1.1","eslint-config-standard":"17.1.0","@openzeppelin/test-helpers":"0.5.16","@nomicfoundation/hardhat-ethers":"3.0.4","@nomicfoundation/hardhat-verify":"1.0.4","@nomicfoundation/hardhat-chai-matchers":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/token-plugins_1.2.0_1692616113143_0.6205842983863048","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@1inch/token-plugins","version":"1.2.1","author":{"name":"1inch"},"license":"MIT","_id":"@1inch/token-plugins@1.2.1","maintainers":[{"name":"1inch-robot","email":"devops@1inch.io"},{"name":"k06a","email":"k06aaa@gmail.com"},{"name":"d.kotsiuba","email":"d.kotsiuba@1inch.io"},{"name":"artall641inch","email":"a.vorobev@1inch.io"},{"name":"zumzoom","email":"by.zumzoom@gmail.com"},{"name":"sevenswen","email":"tihonenko.v.v@gmail.com"},{"name":"zzomrot","email":"d.bukov@1inch.io"},{"name":"krboktv-inch","email":"kirill@1inch.io"}],"homepage":"https://github.com/1inch/token-plugins#readme","bugs":{"url":"https://github.com/1inch/token-plugins/issues"},"dist":{"shasum":"31b06b1d8a449100d006263d259e070e51f45d24","tarball":"https://registry.npmjs.org/@1inch/token-plugins/-/token-plugins-1.2.1.tgz","fileCount":20,"integrity":"sha512-A17X1ShPb3fl8rgYGcP6Nt7qcXpvcIDTZskub08KXhr5IGnU3e2bPX+Exnx3lEn5e/gGu8MZdcAZAd2bAEfQaw==","signatures":[{"sig":"MEUCIQCGAuz+XlLUy48Z1fFvr+/ZLcbgSB4dkfXbUpLMs6BsCwIgfqXc1cTrvG2rAdnM40BBRQboUCx0beoHCBVsIVg+jIg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50302},"scripts":{"lint":"yarn run lint:js && yarn run lint:sol","test":"hardhat test --parallel","clean":"rimraf artifacts cache coverage coverage.json contracts/hardhat-dependency-compiler","deploy":"hardhat deploy --network","lint:js":"eslint .","test:ci":"hardhat test","coverage":"hardhat coverage","lint:fix":"yarn run lint:js:fix && yarn run lint:sol:fix","lint:sol":"solhint --max-warnings 0 \"contracts/**/*.sol\"","lint:js:fix":"eslint . --fix","lint:sol:fix":"solhint --max-warnings 0 \"contracts/**/*.sol\" --fix"},"_npmUser":{"name":"zumzoom","email":"by.zumzoom@gmail.com"},"repository":{"url":"git@github.com:1inch/token-plugins.git","type":"git"},"description":"ERC20 extension enabling external smart contract based plugins to track balances of those users who opted-in to those plugins","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2022-2023 1inch\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"@1inch/solidity-utils":"3.0.1","@openzeppelin/contracts":"4.9.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"4.3.7","dotenv":"16.3.1","eslint":"8.45.0","ethers":"6.6.5","rimraf":"5.0.1","hardhat":"2.17.0","solhint":"3.4.1","hardhat-deploy":"0.11.34","eslint-plugin-n":"16.0.1","solidity-coverage":"0.8.4","eslint-plugin-import":"2.27.5","hardhat-gas-reporter":"1.0.9","eslint-plugin-promise":"6.1.1","eslint-config-standard":"17.1.0","@openzeppelin/test-helpers":"0.5.16","@nomicfoundation/hardhat-ethers":"3.0.4","@nomicfoundation/hardhat-verify":"1.0.4","@nomicfoundation/hardhat-chai-matchers":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/token-plugins_1.2.1_1693220117175_0.4027893173118178","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@1inch/token-plugins","version":"1.3.0","author":{"name":"1inch"},"license":"MIT","_id":"@1inch/token-plugins@1.3.0","maintainers":[{"name":"1inch-robot","email":"devops@1inch.io"},{"name":"k06a","email":"k06aaa@gmail.com"},{"name":"d.kotsiuba","email":"d.kotsiuba@1inch.io"},{"name":"artall641inch","email":"a.vorobev@1inch.io"},{"name":"zumzoom","email":"by.zumzoom@gmail.com"},{"name":"sevenswen","email":"tihonenko.v.v@gmail.com"},{"name":"zzomrot","email":"d.bukov@1inch.io"},{"name":"krboktv-inch","email":"kirill@1inch.io"}],"homepage":"https://github.com/1inch/token-plugins#readme","bugs":{"url":"https://github.com/1inch/token-plugins/issues"},"dist":{"shasum":"365d50d4953225816a4749301150c6612b13e874","tarball":"https://registry.npmjs.org/@1inch/token-plugins/-/token-plugins-1.3.0.tgz","fileCount":20,"integrity":"sha512-Um/8GKAC2Q2C6sITmGj+zr1xiJ3/jPtR/FllwMsDrdfEr7+AVbKH+GL755A7/MS8qz2Df10gSS8iz9Dj/N7/0g==","signatures":[{"sig":"MEUCIQCe/Rxj1pLniNq/EO/a0xTrDJZ2RQiMZr+BhnmVM23ibwIgIebLpLg17vVDHM3LQCtcmHd3jXMzOLh4iZBdsmto7WM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50483},"scripts":{"lint":"yarn run lint:js && yarn run lint:sol","test":"hardhat test --parallel","clean":"rimraf artifacts cache coverage coverage.json contracts/hardhat-dependency-compiler","deploy":"hardhat deploy --network","lint:js":"eslint .","test:ci":"hardhat test","coverage":"hardhat coverage","lint:fix":"yarn run lint:js:fix && yarn run lint:sol:fix","lint:sol":"solhint --max-warnings 0 \"contracts/**/*.sol\"","lint:js:fix":"eslint . --fix","lint:sol:fix":"solhint --max-warnings 0 \"contracts/**/*.sol\" --fix"},"_npmUser":{"name":"zumzoom","email":"by.zumzoom@gmail.com"},"repository":{"url":"git@github.com:1inch/token-plugins.git","type":"git"},"description":"ERC20 extension enabling external smart contract based plugins to track balances of those users who opted-in to those plugins","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2022-2023 1inch\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"@1inch/solidity-utils":"3.5.5","@openzeppelin/contracts":"5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"4.3.10","dotenv":"16.3.1","eslint":"8.56.0","ethers":"6.9.0","rimraf":"5.0.5","hardhat":"2.19.2","solhint":"3.6.2","hardhat-deploy":"0.11.45","eslint-plugin-n":"16.4.0","solidity-coverage":"0.8.5","eslint-plugin-import":"2.29.1","hardhat-gas-reporter":"1.0.9","eslint-plugin-promise":"6.1.1","eslint-config-standard":"17.1.0","@openzeppelin/test-helpers":"0.5.16","@nomicfoundation/hardhat-ethers":"3.0.5","@nomicfoundation/hardhat-verify":"2.0.2","@nomicfoundation/hardhat-chai-matchers":"2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/token-plugins_1.3.0_1702978031728_0.5656175037471085","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-07-10T09:30:47.520Z","modified":"2026-01-26T06:21:45.064Z","1.1.0":"2023-07-10T09:30:47.745Z","1.1.1":"2023-07-13T12:57:06.263Z","1.1.2":"2023-07-27T16:57:04.048Z","1.2.0":"2023-08-21T11:08:33.442Z","1.2.1":"2023-08-28T10:55:17.342Z","1.3.0":"2023-12-19T09:27:12.002Z"},"bugs":{"url":"https://github.com/1inch/token-plugins/issues"},"author":{"name":"1inch"},"license":"MIT","homepage":"https://github.com/1inch/token-plugins#readme","repository":{"url":"git@github.com:1inch/token-plugins.git","type":"git"},"description":"ERC20 extension enabling external smart contract based plugins to track balances of those users who opted-in to those plugins","maintainers":[{"email":"phantom@ydn.ru","name":"phantomydn"},{"email":"kirill@1inch.io","name":"krboktv-inch"},{"email":"tihonenko.v.v@gmail.com","name":"sevenswen"},{"email":"devops@1inch.io","name":"1inch-robot"}],"readme":"# Token Plugins\n\n[![Build Status](https://github.com/1inch/token-plugins/workflows/CI/badge.svg)](https://github.com/1inch/token-plugins/actions)\n[![Coverage Status](https://codecov.io/gh/1inch/token-plugins/branch/master/graph/badge.svg?token=Z3D5O3XUYV)](https://codecov.io/gh/1inch/token-plugins)\n[![NPM Package](https://img.shields.io/npm/v/@1inch/token-plugins.svg)](https://www.npmjs.org/package/@1inch/token-plugins)\n\n## Overview\n\nThis library introduces an extendable and secure system for ERC20-based tokens, inspired by the plugin concept widely used in the web 2.0 world. By subscribing an account to various plugins, users can dynamically enhance the functionality of their tokens.\n\nTechnically plugins are a collection of smart contracts that track changes in ERC20 token balances and perform supplementary accounting tasks for those balances. They are particularly useful when you need to track, for example, token shares without actually transferring tokens to an accounting contract.\n\n## How does it work and what can I extend?\n\nEach time a balance of a connected account changes, the token contract notifies all plugins that the account has subscribed to. Each plugin implements the `_updateBalances` function, which is called on mint, burn and transfer, and includes change information like from and to addresses and amount. This way a plugin can perform necessary actions according to its logic to extend the base token functionality.\n\nKeep in mind that the plugin's processing logic consumes additional gas, and operations that change an account balance will be more expensive in terms of gas. To reduce the gas impact the library implements a limit on the amount of gas that a plugin can spend and an account owner can choose which plugins to subscribe his account to.\n\n<img src='./src/img/scheme-n1.png' width='320' height='396'>\n\nPicture 1. Possible interactions\n\n## Implementation examples\n\nThe examples of already implemented token-plugins\n\n- [FarmingPlugin](https://github.com/1inch/farming) - *The 1inch staking reward farming is based on this plugin.*\nThis plugin introduces farming without the need for asset transfer or locking on a farm. An account owner can join the farm by simply adding this plugin to their account. The plugin handles all necessary accounting for joined farmers and distributes rewards based on the actual farming token balance of the account during the farming period. This is particularly useful for non-transferable tokens, for example such as debt tokens in lending protocols.\n- [DelegatingPlugin](https://github.com/1inch/delegating) - *The 1inch fusion mode resolver delegation is based on this plugin.*\nThis plugin allows an account balance to be delegated to another address. This can be beneficial for governance tokens if an account owner wants to delegate their voting power to another account without a physical token transfer. The owner can recall or redelegate their delegation at any time without locking their tokens in a governance contract.\n\n## Security and limitations\n\nThe plugin system operates under the assumption that an account may subscribe to a malicious plugin. That is the reason why the following restrictions apply:\n\n- If a plugin fails its execution and reverts, it won't impact the main flow. The failed plugin is bypassed, and execution continues.\n- Each plugin has a gas limit set by the parent contract. If there is insufficient gas, it won't affect the main flow's execution.\n- An account can have a limited number of plugins connected, set by host contract.\n- Plugins are executed in the context specified in their contract (parent contract uses a call, not delegatecall).\n- Plugins cannot alter the calling contract state\n- Plugins cannot be reentered\n\n## Integrating plugin support in your token implementation\n\nTo integrate plugins in a smart contract, a \"mothership\" or parent contract have to be used to manage all related pods. This includes adding, removing, and viewing pods, as well as connecting multiple pods. The parent contract calls the `updateBalance` function for each pod on every update of an account’s balance. The pod then executes its logic based on the updated balance information. And then an account has to connect plugin to the account to utilize its logic. \n\n1. Inherit token: `contract MyToken is ERC20Plugins { ... }`\n    \n    Or wrap it: `contract MyWrapper is ERC20Wrapper, ERC20Plugins { ... }`\n    \n    This will add support for the plugin infrastructure.\n    \n2. Wallets can plugin: `MyToken.addPlugin(plugin)`, where `plugin` is address of your and third-party deployed plugin.\n3. Now every time wallet balance is change the plugin will know about it\n\n## How to create your own plugin\n\nTo create your own plugin it is necessary to inherit `Plugin` contract and implement its abstract function `_updateBalances`.\n\n1. Inherit plugin: `contract MyPlugin is Plugin { ... }`\n2. Implement `_updateBalances` function to process wallet balance changes\n\n## Examples of token and plugin\n\nBelow is the example of token implementing plugin support and a simple plugin that mints and burns its own token based on the parent’s token balance\n\n\n```solidity\n// Simple token contract with plugin support\ncontract HostTokenExample is ERC20Plugins {\n    constructor(string memory name, string memory symbol, uint256 maxPluginsPerAccount, uint256 pluginCallGasLimit)\n        ERC20(name, symbol)\n        ERC20Plugins(maxPluginsPerAccount, pluginCallGasLimit)\n    {} // solhint-disable-line no-empty-blocks\n\n    function mint(address account, uint256 amount) external {\n        _mint(account, amount);\n    }\n}\n\n// Simple plugin\ncontract PluginExample is ERC20, Plugin {\n    constructor(string memory name, string memory symbol, IERC20Plugins token_)\n        ERC20(name, symbol)\n        Plugin(token_)\n    {} // solhint-disable-line no-empty-blocks\n\n    function _updateBalances(address from, address to, uint256 amount) internal override {\n        if (from == address(0)) {\n            _mint(to, amount);\n        } else if (to == address(0)) {\n            _burn(from, amount);\n        } else {\n            _transfer(from, to, amount);\n        }\n    }\n}\n```\n","readmeFilename":"README.md"}